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-jsffi.cabal b/ghcjs-dom-jsffi.cabal
new file mode 100644
--- /dev/null
+++ b/ghcjs-dom-jsffi.cabal
@@ -0,0 +1,1087 @@
+name: ghcjs-dom-jsffi
+version: 0.3.1.0
+cabal-version: >=1.22
+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
+data-dir: ""
+category: Web
+
+Source-Repository head
+  type:         git
+  location:     https://github.com/ghcjs/ghcjs-dom
+  subdir:       ghcjs-dom-jsffi
+
+library
+    build-depends: base <5,
+                   transformers >=0.2 && <0.6,
+                   text >= 0.11.0.6 && < 1.3,
+                   ghcjs-base >=0.2.0.0 && <0.3,
+                   ghcjs-prim,
+                   ghc-prim
+
+    default-language: Haskell2010
+
+    hs-source-dirs: src
+    cpp-options: -DUSE_JAVASCRIPTFFI
+    exposed: True
+    if impl(ghcjs)
+        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.JSFFI.AudioContext
+          GHCJS.DOM.JSFFI.Database
+          GHCJS.DOM.JSFFI.DOMError
+          GHCJS.DOM.JSFFI.Geolocation
+          GHCJS.DOM.JSFFI.FormData
+          GHCJS.DOM.JSFFI.MediaStreamTrack
+          GHCJS.DOM.JSFFI.Navigator
+          GHCJS.DOM.JSFFI.NavigatorUserMediaError
+          GHCJS.DOM.JSFFI.PositionError
+          GHCJS.DOM.JSFFI.RTCPeerConnection
+          GHCJS.DOM.JSFFI.RTCPeerConnectionError
+          GHCJS.DOM.JSFFI.SQLError
+          GHCJS.DOM.JSFFI.SQLTransaction
+          GHCJS.DOM.JSFFI.Window
+          GHCJS.DOM.JSFFI.XMLHttpRequest
+
+          GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays
+          GHCJS.DOM.JSFFI.Generated.AbstractView
+          GHCJS.DOM.JSFFI.Generated.AbstractWorker
+          GHCJS.DOM.JSFFI.Generated.AllAudioCapabilities
+          GHCJS.DOM.JSFFI.Generated.AllVideoCapabilities
+          GHCJS.DOM.JSFFI.Generated.AnalyserNode
+          GHCJS.DOM.JSFFI.Generated.AnimationEvent
+          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.AudioStreamTrack
+          GHCJS.DOM.JSFFI.Generated.AudioTrack
+          GHCJS.DOM.JSFFI.Generated.AudioTrackList
+          GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent
+          GHCJS.DOM.JSFFI.Generated.BarProp
+          GHCJS.DOM.JSFFI.Generated.BatteryManager
+          GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent
+          GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
+          GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
+          GHCJS.DOM.JSFFI.Generated.Blob
+          GHCJS.DOM.JSFFI.Generated.CSSCharsetRule
+          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.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.CanvasGradient
+          GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext
+          GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
+          GHCJS.DOM.JSFFI.Generated.CapabilityRange
+          GHCJS.DOM.JSFFI.Generated.CharacterData
+          GHCJS.DOM.JSFFI.Generated.ChildNode
+          GHCJS.DOM.JSFFI.Generated.ClientRect
+          GHCJS.DOM.JSFFI.Generated.ClientRectList
+          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.Counter
+          GHCJS.DOM.JSFFI.Generated.Crypto
+          GHCJS.DOM.JSFFI.Generated.CryptoKey
+          GHCJS.DOM.JSFFI.Generated.CryptoKeyPair
+          GHCJS.DOM.JSFFI.Generated.CustomEvent
+          GHCJS.DOM.JSFFI.Generated.ApplicationCache
+          GHCJS.DOM.JSFFI.Generated.DOMError
+          GHCJS.DOM.JSFFI.Generated.FormData
+          GHCJS.DOM.JSFFI.Generated.DOMImplementation
+          GHCJS.DOM.JSFFI.Generated.MimeType
+          GHCJS.DOM.JSFFI.Generated.MimeTypeArray
+          GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection
+          GHCJS.DOM.JSFFI.Generated.DOMParser
+          GHCJS.DOM.JSFFI.Generated.Path2D
+          GHCJS.DOM.JSFFI.Generated.Plugin
+          GHCJS.DOM.JSFFI.Generated.PluginArray
+          GHCJS.DOM.JSFFI.Generated.SecurityPolicy
+          GHCJS.DOM.JSFFI.Generated.Selection
+          GHCJS.DOM.JSFFI.Generated.DOMSettableTokenList
+          GHCJS.DOM.JSFFI.Generated.DOMStringList
+          GHCJS.DOM.JSFFI.Generated.DOMTokenList
+          GHCJS.DOM.JSFFI.Generated.URL
+          GHCJS.DOM.JSFFI.Generated.Window
+          GHCJS.DOM.JSFFI.Generated.CSS
+          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.DocumentFragment
+          GHCJS.DOM.JSFFI.Generated.DocumentType
+          GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode
+          GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax
+          GHCJS.DOM.JSFFI.Generated.EXTsRGB
+          GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic
+          GHCJS.DOM.JSFFI.Generated.Element
+          GHCJS.DOM.JSFFI.Generated.Entity
+          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.FileList
+          GHCJS.DOM.JSFFI.Generated.FileReader
+          GHCJS.DOM.JSFFI.Generated.FileReaderSync
+          GHCJS.DOM.JSFFI.Generated.FocusEvent
+          GHCJS.DOM.JSFFI.Generated.FontLoader
+          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.HTMLAllCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
+          GHCJS.DOM.JSFFI.Generated.HTMLAppletElement
+          GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBRElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBaseFontElement
+          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.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.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.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.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.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.InspectorFrontendHost
+          GHCJS.DOM.JSFFI.Generated.InternalSettings
+          GHCJS.DOM.JSFFI.Generated.Internals
+          GHCJS.DOM.JSFFI.Generated.KeyboardEvent
+          GHCJS.DOM.JSFFI.Generated.Location
+          GHCJS.DOM.JSFFI.Generated.MallocStatistics
+          GHCJS.DOM.JSFFI.Generated.MediaController
+          GHCJS.DOM.JSFFI.Generated.MediaControlsHost
+          GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
+          GHCJS.DOM.JSFFI.Generated.MediaError
+          GHCJS.DOM.JSFFI.Generated.MediaKeyError
+          GHCJS.DOM.JSFFI.Generated.MediaKeyEvent
+          GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
+          GHCJS.DOM.JSFFI.Generated.MediaKeyNeededEvent
+          GHCJS.DOM.JSFFI.Generated.MediaKeySession
+          GHCJS.DOM.JSFFI.Generated.MediaKeys
+          GHCJS.DOM.JSFFI.Generated.MediaList
+          GHCJS.DOM.JSFFI.Generated.MediaQueryList
+          GHCJS.DOM.JSFFI.Generated.MediaQueryListListener
+          GHCJS.DOM.JSFFI.Generated.MediaSource
+          GHCJS.DOM.JSFFI.Generated.MediaSourceStates
+          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.MediaStreamTrackSourcesCallback
+          GHCJS.DOM.JSFFI.Generated.MediaTrackConstraints
+          GHCJS.DOM.JSFFI.Generated.MemoryInfo
+          GHCJS.DOM.JSFFI.Generated.MessageChannel
+          GHCJS.DOM.JSFFI.Generated.MessageEvent
+          GHCJS.DOM.JSFFI.Generated.MessagePort
+          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.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.Notification
+          GHCJS.DOM.JSFFI.Generated.NotificationCenter
+          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.OverflowEvent
+          GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
+          GHCJS.DOM.JSFFI.Generated.PannerNode
+          GHCJS.DOM.JSFFI.Generated.Performance
+          GHCJS.DOM.JSFFI.Generated.PerformanceEntry
+          GHCJS.DOM.JSFFI.Generated.PerformanceEntryList
+          GHCJS.DOM.JSFFI.Generated.PerformanceNavigation
+          GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
+          GHCJS.DOM.JSFFI.Generated.PerformanceTiming
+          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.QuickTimePluginReplacement
+          GHCJS.DOM.JSFFI.Generated.RGBColor
+          GHCJS.DOM.JSFFI.Generated.RTCConfiguration
+          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.RTCIceServer
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnection
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionErrorCallback
+          GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
+          GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionCallback
+          GHCJS.DOM.JSFFI.Generated.RTCStatsCallback
+          GHCJS.DOM.JSFFI.Generated.RTCStatsReport
+          GHCJS.DOM.JSFFI.Generated.RTCStatsResponse
+          GHCJS.DOM.JSFFI.Generated.RadioNodeList
+          GHCJS.DOM.JSFFI.Generated.Range
+          GHCJS.DOM.JSFFI.Generated.ReadableStream
+          GHCJS.DOM.JSFFI.Generated.Rect
+          GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback
+          GHCJS.DOM.JSFFI.Generated.SQLError
+          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.SVGColor
+          GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement
+          GHCJS.DOM.JSFFI.Generated.SVGCursorElement
+          GHCJS.DOM.JSFFI.Generated.SVGDocument
+          GHCJS.DOM.JSFFI.Generated.SVGElement
+          GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
+          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.SVGPaint
+          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.SVGScriptElement
+          GHCJS.DOM.JSFFI.Generated.SVGSVGElement
+          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.ScriptProfile
+          GHCJS.DOM.JSFFI.Generated.ScriptProfileNode
+          GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
+          GHCJS.DOM.JSFFI.Generated.SourceBuffer
+          GHCJS.DOM.JSFFI.Generated.SourceBufferList
+          GHCJS.DOM.JSFFI.Generated.SourceInfo
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
+          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.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.TypeConversions
+          GHCJS.DOM.JSFFI.Generated.UIEvent
+          GHCJS.DOM.JSFFI.Generated.UIRequestEvent
+          GHCJS.DOM.JSFFI.Generated.URLUtils
+          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.VideoStreamTrack
+          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.WebGLContextAttributes
+          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.WebKitAnimationEvent
+          GHCJS.DOM.JSFFI.Generated.WebKitCSSFilterValue
+          GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix
+          GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule
+          GHCJS.DOM.JSFFI.Generated.WebKitCSSTransformValue
+          GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule
+          GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow
+          GHCJS.DOM.JSFFI.Generated.WebKitNamespace
+          GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent
+          GHCJS.DOM.JSFFI.Generated.WebKitPoint
+          GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent
+          GHCJS.DOM.JSFFI.Generated.WebSocket
+          GHCJS.DOM.JSFFI.Generated.WheelEvent
+          GHCJS.DOM.JSFFI.Generated.WindowBase64
+          GHCJS.DOM.JSFFI.Generated.WindowTimers
+          GHCJS.DOM.JSFFI.Generated.Worker
+          GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.WorkerLocation
+          GHCJS.DOM.JSFFI.Generated.WorkerNavigator
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequest
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequestUpload
+          GHCJS.DOM.JSFFI.Generated.XMLSerializer
+          GHCJS.DOM.JSFFI.Generated.XPathEvaluator
+          GHCJS.DOM.JSFFI.Generated.XPathExpression
+          GHCJS.DOM.JSFFI.Generated.XPathNSResolver
+          GHCJS.DOM.JSFFI.Generated.XPathResult
+          GHCJS.DOM.JSFFI.Generated.XSLTProcessor
+
+    reexported-modules:
+          -- Generated by domconv-webkit-jsffi
+            GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays as GHCJS.DOM.ANGLEInstancedArrays
+          , GHCJS.DOM.JSFFI.Generated.AbstractView as GHCJS.DOM.AbstractView
+          , GHCJS.DOM.JSFFI.Generated.AbstractWorker as GHCJS.DOM.AbstractWorker
+          , GHCJS.DOM.JSFFI.Generated.AllAudioCapabilities as GHCJS.DOM.AllAudioCapabilities
+          , GHCJS.DOM.JSFFI.Generated.AllVideoCapabilities as GHCJS.DOM.AllVideoCapabilities
+          , GHCJS.DOM.JSFFI.Generated.AnalyserNode as GHCJS.DOM.AnalyserNode
+          , GHCJS.DOM.JSFFI.Generated.AnimationEvent as GHCJS.DOM.AnimationEvent
+          , 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.AudioStreamTrack as GHCJS.DOM.AudioStreamTrack
+          , 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.BatteryManager as GHCJS.DOM.BatteryManager
+          , 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.CSS as GHCJS.DOM.CSS
+          , GHCJS.DOM.JSFFI.Generated.CSSCharsetRule as GHCJS.DOM.CSSCharsetRule
+          , 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.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.CanvasGradient as GHCJS.DOM.CanvasGradient
+          , GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext as GHCJS.DOM.CanvasRenderingContext
+          , GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D as GHCJS.DOM.CanvasRenderingContext2D
+          , GHCJS.DOM.JSFFI.Generated.CapabilityRange as GHCJS.DOM.CapabilityRange
+          , GHCJS.DOM.JSFFI.Generated.CharacterData as GHCJS.DOM.CharacterData
+          , GHCJS.DOM.JSFFI.Generated.ChildNode as GHCJS.DOM.ChildNode
+          , GHCJS.DOM.JSFFI.Generated.ClientRect as GHCJS.DOM.ClientRect
+          , GHCJS.DOM.JSFFI.Generated.ClientRectList as GHCJS.DOM.ClientRectList
+          , 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.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.CryptoKeyPair as GHCJS.DOM.CryptoKeyPair
+          , GHCJS.DOM.JSFFI.Generated.CustomEvent as GHCJS.DOM.CustomEvent
+          , GHCJS.DOM.JSFFI.DOMError as GHCJS.DOM.DOMError
+          , 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.DOMSettableTokenList as GHCJS.DOM.DOMSettableTokenList
+          , GHCJS.DOM.JSFFI.Generated.DOMStringList as GHCJS.DOM.DOMStringList
+          , 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.DocumentFragment as GHCJS.DOM.DocumentFragment
+          , 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.Entity as GHCJS.DOM.Entity
+          , 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.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.FontLoader as GHCJS.DOM.FontLoader
+          , GHCJS.DOM.JSFFI.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.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.HTMLBRElement as GHCJS.DOM.HTMLBRElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLBaseElement as GHCJS.DOM.HTMLBaseElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLBaseFontElement as GHCJS.DOM.HTMLBaseFontElement
+          , 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.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.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.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.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.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.InspectorFrontendHost as GHCJS.DOM.InspectorFrontendHost
+          , GHCJS.DOM.JSFFI.Generated.InternalSettings as GHCJS.DOM.InternalSettings
+          , GHCJS.DOM.JSFFI.Generated.Internals as GHCJS.DOM.Internals
+          , GHCJS.DOM.JSFFI.Generated.KeyboardEvent as GHCJS.DOM.KeyboardEvent
+          , GHCJS.DOM.JSFFI.Generated.Location as GHCJS.DOM.Location
+          , GHCJS.DOM.JSFFI.Generated.MallocStatistics as GHCJS.DOM.MallocStatistics
+          , GHCJS.DOM.JSFFI.Generated.MediaController as GHCJS.DOM.MediaController
+          , GHCJS.DOM.JSFFI.Generated.MediaControlsHost as GHCJS.DOM.MediaControlsHost
+          , GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode as GHCJS.DOM.MediaElementAudioSourceNode
+          , GHCJS.DOM.JSFFI.Generated.MediaError as GHCJS.DOM.MediaError
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyError as GHCJS.DOM.MediaKeyError
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyEvent as GHCJS.DOM.MediaKeyEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent as GHCJS.DOM.MediaKeyMessageEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyNeededEvent as GHCJS.DOM.MediaKeyNeededEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaKeySession as GHCJS.DOM.MediaKeySession
+          , 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.MediaSource as GHCJS.DOM.MediaSource
+          , GHCJS.DOM.JSFFI.Generated.MediaSourceStates as GHCJS.DOM.MediaSourceStates
+          , 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.MediaStreamTrack as GHCJS.DOM.MediaStreamTrack
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent as GHCJS.DOM.MediaStreamTrackEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackSourcesCallback as GHCJS.DOM.MediaStreamTrackSourcesCallback
+          , GHCJS.DOM.JSFFI.Generated.MediaTrackConstraints as GHCJS.DOM.MediaTrackConstraints
+          , GHCJS.DOM.JSFFI.Generated.MemoryInfo as GHCJS.DOM.MemoryInfo
+          , 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.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.Notification as GHCJS.DOM.Notification
+          , GHCJS.DOM.JSFFI.Generated.NotificationCenter as GHCJS.DOM.NotificationCenter
+          , 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.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.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.PerformanceEntryList as GHCJS.DOM.PerformanceEntryList
+          , GHCJS.DOM.JSFFI.Generated.PerformanceNavigation as GHCJS.DOM.PerformanceNavigation
+          , 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.QuickTimePluginReplacement as GHCJS.DOM.QuickTimePluginReplacement
+          , GHCJS.DOM.JSFFI.Generated.RGBColor as GHCJS.DOM.RGBColor
+          , GHCJS.DOM.JSFFI.Generated.RTCConfiguration as GHCJS.DOM.RTCConfiguration
+          , 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.RTCIceServer as GHCJS.DOM.RTCIceServer
+          , GHCJS.DOM.JSFFI.RTCPeerConnection as GHCJS.DOM.RTCPeerConnection
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionErrorCallback as GHCJS.DOM.RTCPeerConnectionErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.RTCSessionDescription as GHCJS.DOM.RTCSessionDescription
+          , GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionCallback as GHCJS.DOM.RTCSessionDescriptionCallback
+          , GHCJS.DOM.JSFFI.Generated.RTCStatsCallback as GHCJS.DOM.RTCStatsCallback
+          , GHCJS.DOM.JSFFI.Generated.RTCStatsReport as GHCJS.DOM.RTCStatsReport
+          , GHCJS.DOM.JSFFI.Generated.RTCStatsResponse as GHCJS.DOM.RTCStatsResponse
+          , GHCJS.DOM.JSFFI.Generated.RadioNodeList as GHCJS.DOM.RadioNodeList
+          , GHCJS.DOM.JSFFI.Generated.Range as GHCJS.DOM.Range
+          , GHCJS.DOM.JSFFI.Generated.ReadableStream as GHCJS.DOM.ReadableStream
+          , GHCJS.DOM.JSFFI.Generated.Rect as GHCJS.DOM.Rect
+          , GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback as GHCJS.DOM.RequestAnimationFrameCallback
+          , GHCJS.DOM.JSFFI.SQLError as GHCJS.DOM.SQLError
+          , 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.SVGColor as GHCJS.DOM.SVGColor
+          , GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement as GHCJS.DOM.SVGComponentTransferFunctionElement
+          , GHCJS.DOM.JSFFI.Generated.SVGCursorElement as GHCJS.DOM.SVGCursorElement
+          , GHCJS.DOM.JSFFI.Generated.SVGDocument as GHCJS.DOM.SVGDocument
+          , GHCJS.DOM.JSFFI.Generated.SVGElement as GHCJS.DOM.SVGElement
+          , GHCJS.DOM.JSFFI.Generated.SVGEllipseElement as GHCJS.DOM.SVGEllipseElement
+          , 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.SVGPaint as GHCJS.DOM.SVGPaint
+          , 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.ScriptProfile as GHCJS.DOM.ScriptProfile
+          , GHCJS.DOM.JSFFI.Generated.ScriptProfileNode as GHCJS.DOM.ScriptProfileNode
+          , GHCJS.DOM.JSFFI.Generated.SecurityPolicy as GHCJS.DOM.SecurityPolicy
+          , GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent as GHCJS.DOM.SecurityPolicyViolationEvent
+          , GHCJS.DOM.JSFFI.Generated.Selection as GHCJS.DOM.Selection
+          , GHCJS.DOM.JSFFI.Generated.SourceBuffer as GHCJS.DOM.SourceBuffer
+          , GHCJS.DOM.JSFFI.Generated.SourceBufferList as GHCJS.DOM.SourceBufferList
+          , GHCJS.DOM.JSFFI.Generated.SourceInfo as GHCJS.DOM.SourceInfo
+          , 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.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.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.TypeConversions as GHCJS.DOM.TypeConversions
+          , GHCJS.DOM.JSFFI.Generated.UIEvent as GHCJS.DOM.UIEvent
+          , GHCJS.DOM.JSFFI.Generated.UIRequestEvent as GHCJS.DOM.UIRequestEvent
+          , GHCJS.DOM.JSFFI.Generated.URL as GHCJS.DOM.URL
+          , GHCJS.DOM.JSFFI.Generated.URLUtils as GHCJS.DOM.URLUtils
+          , 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.VideoStreamTrack as GHCJS.DOM.VideoStreamTrack
+          , 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.WebGLContextAttributes as GHCJS.DOM.WebGLContextAttributes
+          , 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.WebKitAnimationEvent as GHCJS.DOM.WebKitAnimationEvent
+          , GHCJS.DOM.JSFFI.Generated.WebKitCSSFilterValue as GHCJS.DOM.WebKitCSSFilterValue
+          , GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix as GHCJS.DOM.WebKitCSSMatrix
+          , GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule as GHCJS.DOM.WebKitCSSRegionRule
+          , GHCJS.DOM.JSFFI.Generated.WebKitCSSTransformValue as GHCJS.DOM.WebKitCSSTransformValue
+          , GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule as GHCJS.DOM.WebKitCSSViewportRule
+          , 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.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.WindowBase64 as GHCJS.DOM.WindowBase64
+          , GHCJS.DOM.JSFFI.Generated.WindowTimers as GHCJS.DOM.WindowTimers
+          , 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.XMLHttpRequest as GHCJS.DOM.XMLHttpRequest
+          , GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent as GHCJS.DOM.XMLHttpRequestProgressEvent
+          , GHCJS.DOM.JSFFI.Generated.XMLHttpRequestUpload as GHCJS.DOM.XMLHttpRequestUpload
+          , GHCJS.DOM.JSFFI.Generated.XMLSerializer as GHCJS.DOM.XMLSerializer
+          , GHCJS.DOM.JSFFI.Generated.XPathEvaluator as GHCJS.DOM.XPathEvaluator
+          , 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,167 @@
+{-# LANGUAGE CPP, ForeignFunctionInterface, OverloadedStrings #-}
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+{-# LANGUAGE JavaScriptFFI #-}
+#endif
+module GHCJS.DOM (
+  currentWindow
+, currentDocument
+, WebView(..)
+, webViewGetDomDocument
+, runWebGUI
+, enableInspector
+, postGUISync
+, postGUIAsync
+) where
+
+import qualified Data.Text as T
+import Data.Monoid ((<>))
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.Types (JSVal(..))
+import Control.Applicative ((<$>))
+#else
+import Graphics.UI.Gtk.WebKit.WebView
+       (webViewSetWebSettings, webViewGetWebSettings, loadStarted,
+        webViewLoadUri, loadFinished, webViewNew, webViewGetDomDocument,
+        webViewGetInspector)
+import Graphics.UI.Gtk.WebKit.WebInspector
+       (showWindow, inspectWebView)
+import Graphics.UI.Gtk
+       (timeoutAddFull, widgetShowAll, mainQuit, objectDestroy,
+        WindowPosition(..), containerAdd, scrolledWindowNew,
+        windowSetPosition, windowSetDefaultSize, windowNew, mainGUI,
+        initGUI, postGUISync, postGUIAsync)
+import System.Glib.Signals (on)
+import System.Glib.Attributes (get, AttrOp(..), set)
+import System.Glib.FFI (maybeNull)
+import System.Glib.MainLoop (priorityLow)
+import Graphics.UI.Gtk.WebKit.WebSettings
+       (webSettingsMonospaceFontFamily, webSettingsUserAgent,
+        webSettingsEnableDeveloperExtras)
+import Control.Monad.IO.Class (liftIO)
+#endif
+
+import GHCJS.DOM.Types
+import GHCJS.DOM.JSFFI.Generated.Window (getNavigator, getDocument)
+import GHCJS.DOM.JSFFI.Generated.Navigator (getUserAgent)
+import Foreign (ForeignPtr, nullPtr, Ptr)
+import Control.Monad (unless, forever, liftM)
+import Control.Concurrent
+       (yield, threadDelay, takeMVar, newEmptyMVar)
+import System.Environment (getArgs)
+import Data.List (isSuffixOf)
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+postGUIAsync :: IO () -> IO ()
+postGUIAsync = id
+
+postGUISync :: IO a -> IO a
+postGUISync = id
+
+#ifdef ghcjs_HOST_OS
+foreign import javascript unsafe "$r = window"
+  ghcjs_currentWindow :: IO (Nullable Window)
+foreign import javascript unsafe "$r = document"
+  ghcjs_currentDocument :: IO (Nullable Document)
+#else
+ghcjs_currentWindow :: IO (Nullable Window)
+ghcjs_currentWindow = undefined
+ghcjs_currentDocument :: IO (Nullable Document)
+ghcjs_currentDocument = undefined
+#endif
+
+currentWindow :: IO (Maybe Window)
+currentWindow = nullableToMaybe <$> ghcjs_currentWindow
+currentDocument :: IO (Maybe Document)
+currentDocument = nullableToMaybe <$> ghcjs_currentDocument
+
+type WebView = Window
+castToWebView = id
+
+webViewGetDomDocument :: Window -> IO (Maybe Document)
+webViewGetDomDocument = getDocument
+#else
+foreign import ccall safe "ghcjs_currentWindow"
+  ghcjs_currentWindow :: IO (Ptr Window)
+
+currentWindow :: IO (Maybe Window)
+currentWindow = maybeNull (makeNewGObject mkWindow) ghcjs_currentWindow
+
+foreign import ccall unsafe "ghcjs_currentDocument"
+  ghcjs_currentDocument :: IO (Ptr Document)
+
+currentDocument :: IO (Maybe Document)
+currentDocument = maybeNull (makeNewGObject mkDocument) ghcjs_currentDocument
+#endif
+
+runWebGUI :: (WebView -> IO ()) -> IO ()
+runWebGUI = runWebGUI' "GHCJS"
+
+runWebGUI' :: T.Text -> (WebView -> IO ()) -> IO ()
+runWebGUI' userAgentKey main = do
+  -- Are we in a java script inside some kind of browser
+  mbWindow <- currentWindow
+  case mbWindow of
+    Just window -> do
+      -- Check if we are running in javascript inside the the native version
+      Just n <- getNavigator window
+      agent <- getUserAgent n
+      unless ((" " <> userAgentKey) `T.isSuffixOf` agent) $ main (castToWebView window)
+    Nothing -> do
+      makeDefaultWebView userAgentKey main
+
+makeDefaultWebView :: T.Text -> (WebView -> IO ()) -> IO ()
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+makeDefaultWebView _ _ = error "Unsupported makeDefaultWebView"
+#else
+makeDefaultWebView userAgentKey main = do
+  initGUI
+  window <- windowNew
+  timeoutAddFull (yield >> return True) priorityLow 10
+  windowSetDefaultSize window 900 600
+  windowSetPosition window WinPosCenter
+  scrollWin <- scrolledWindowNew Nothing Nothing
+  webView <- webViewNew
+  settings <- webViewGetWebSettings webView
+  userAgent <- settings `get` webSettingsUserAgent
+  settings `set` [webSettingsUserAgent := userAgent <> " " <> userAgentKey]
+  webViewSetWebSettings webView settings
+  window `containerAdd` scrollWin
+  scrollWin `containerAdd` webView
+  on window objectDestroy . liftIO $ mainQuit
+  widgetShowAll window
+  webView `on` loadFinished $ \frame -> do
+    main webView
+  args <- getArgs
+  case args of
+    uri:_ -> webViewLoadUri webView (T.pack uri)
+    []    -> do
+      main webView
+  mainGUI
+#endif
+
+enableInspector :: WebView -> IO ()
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+enableInspector _ = return ()
+#else
+enableInspector webView = do
+  settings <- webViewGetWebSettings webView
+  settings `set` [webSettingsEnableDeveloperExtras := True]
+  webViewSetWebSettings webView settings
+  inspector <- webViewGetInspector webView
+  window <- windowNew
+  windowSetDefaultSize window 900 300
+  scrollWin <- scrolledWindowNew Nothing Nothing
+  inspector `on` inspectWebView $ \view -> do
+    inspectorView <- webViewNew
+    settings <- webViewGetWebSettings inspectorView
+    settings `set` [webSettingsMonospaceFontFamily := ("Consolas" :: String)]
+    webViewSetWebSettings inspectorView settings
+    scrollWin `containerAdd` inspectorView
+    window `containerAdd` scrollWin
+    widgetShowAll window
+    return inspectorView
+  inspector `on` showWindow $ do
+    widgetShowAll window
+    return True
+  return ()
+#endif
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,297 @@
+{-# LANGUAGE ConstraintKinds #-}
+module GHCJS.DOM.EventM
+(
+  EventM(..)
+, SaferEventListener(..)
+, EventName
+, newListener
+, newListenerSync
+, newListenerAsync
+, addListener
+, removeListener
+, releaseListener
+, on
+, event
+, eventTarget
+, target
+, eventCurrentTarget
+, eventPhase
+, bubbles
+, cancelable
+, timeStamp
+, stopPropagation
+, preventDefault
+, defaultPrevented
+, stopImmediatePropagation
+, srcElement
+, getCancelBubble
+, cancelBubble
+, getReturnValue
+, returnValue
+, uiView
+, uiDetail
+, uiKeyCode
+, uiCharCode
+, uiLayerX
+, uiLayerY
+, uiLayerXY
+, uiPageX
+, uiPageY
+, uiPageXY
+, uiWhich
+, 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.MouseEvent as MouseEvent
+import           GHCJS.DOM.JSFFI.Generated.EventTarget
+import           GHCJS.DOM.EventTargetClosures
+import           Data.Word (Word)
+import           Data.Foldable (forM_)
+
+type EventM t e = ReaderT e IO
+
+newListener :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListener f = SaferEventListener <$> eventListenerNew (runReaderT f)
+
+newListenerSync :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListenerSync f = SaferEventListener <$> eventListenerNewSync (runReaderT f)
+
+newListenerAsync :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListenerAsync f = SaferEventListener <$> eventListenerNewAsync (runReaderT f)
+
+addListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> IO ()
+addListener target (EventName eventName) (SaferEventListener l) useCapture =
+    addEventListener target eventName (Just l) useCapture
+
+removeListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> IO ()
+removeListener target (EventName eventName) (SaferEventListener l) useCapture =
+    removeEventListener target eventName (Just l) useCapture
+
+releaseListener :: (IsEventTarget t, IsEvent e) => SaferEventListener t e -> IO ()
+releaseListener (SaferEventListener l) = eventListenerRelease l
+
+on :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> EventM t e () -> IO (IO ())
+on target eventName callback = do
+    l <- newListener callback
+    addListener target eventName l False
+    return (removeListener target eventName l False >> releaseListener l)
+
+onThese :: (IsEventTarget t, IsEvent e) => [(t, EventName t e)] -> EventM t e () -> IO (IO ())
+onThese targetsAndEventNames callback = do
+    l <- newListener 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
+
+target :: (IsEvent e, IsGObject t) => EventM t e (Maybe t)
+target = (fmap (unsafeCastGObject . toGObject)) <$> eventTarget
+
+eventCurrentTarget :: IsEvent e => EventM t e (Maybe EventTarget)
+eventCurrentTarget = event >>= Event.getCurrentTarget
+
+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 (Maybe 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 (Maybe Window)
+uiView = event >>= UIEvent.getView
+
+uiDetail :: IsUIEvent e => EventM t e Int
+uiDetail = event >>= UIEvent.getDetail
+
+uiKeyCode :: IsUIEvent e => EventM t e Int
+uiKeyCode = event >>= UIEvent.getKeyCode
+
+uiCharCode :: IsUIEvent e => EventM t e Int
+uiCharCode = event >>= UIEvent.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,37 @@
+{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface #-}
+module GHCJS.DOM.EventTargetClosures
+       (EventName(..), SaferEventListener(..), unsafeEventName, eventListenerNew, eventListenerNewSync, eventListenerNewAsync, eventListenerRelease) where
+
+import Control.Applicative ((<$>))
+import GHCJS.Types
+import GHCJS.Foreign.Callback.Internal
+import GHCJS.Foreign.Callback
+import GHCJS.Marshal.Pure
+import GHCJS.DOM.Types
+import GHCJS.Foreign.Callback.Internal
+
+newtype EventName t e = EventName DOMString
+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 #-}
+
+unsafeEventName :: DOMString -> EventName t e
+unsafeEventName = EventName
+
+eventListenerNew :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNew callback = (EventListener . jsval) <$> syncCallback1 ContinueAsync (callback . unsafeCastGObject . GObject)
+
+eventListenerNewSync :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNewSync callback = (EventListener . jsval) <$> syncCallback1 ThrowWouldBlock (callback . unsafeCastGObject . GObject)
+
+eventListenerNewAsync :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNewAsync callback = (EventListener . jsval) <$> asyncCallback1 (callback . unsafeCastGObject . GObject)
+
+eventListenerRelease :: EventListener -> IO ()
+eventListenerRelease (EventListener ref) = releaseCallback (Callback ref)
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 GHCJS.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 GHCJS.Foreign.Callback (OnBlocked(..))
+import GHCJS.Marshal (fromJSVal)
+import GHCJS.Marshal.Pure (pToJSVal)
+import GHCJS.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 . fromJust)) (\(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/FormData.hs b/src/GHCJS/DOM/JSFFI/FormData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/FormData.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.FormData (
+    module Generated
+  , js_append
+  , js_append3
+  , append
+  , appendBlob
+) where
+
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Marshal.Internal (PToJSVal(..))
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.Generated.FormData as Generated hiding (js_append, append)
+
+foreign import javascript unsafe "$1[\"append\"]($2, $3)"
+        js_append :: FormData -> JSString -> JSVal -> IO ()
+
+foreign import javascript unsafe "$1[\"append\"]($2, $3, $4)"
+        js_append3 :: FormData -> JSString -> JSVal -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData/append Mozilla FormData.append documentation>
+append
+  :: (MonadIO m, ToJSString name, ToJSString str)
+  => FormData -> name -> str -> m ()
+append self name str
+  = liftIO $ js_append self (toJSString name) (pToJSVal str)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData/append Mozilla FormData.append documentation>
+appendBlob
+  :: (MonadIO m, ToJSString name, IsBlob blob, ToJSString filename)
+  => FormData -> name -> blob -> Maybe filename -> m ()
+appendBlob self name blob mfilename
+  = let jsname = toJSString name
+        jsblob = unBlob $ toBlob blob
+    in liftIO $ case mfilename of
+         Just filename -> js_append3 self jsname jsblob $ toJSString filename
+         Nothing -> js_append self jsname jsblob
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,63 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays
+       (js_drawArraysInstancedANGLE, drawArraysInstancedANGLE,
+        js_drawElementsInstancedANGLE, drawElementsInstancedANGLE,
+        js_vertexAttribDivisorANGLE, vertexAttribDivisorANGLE,
+        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE, ANGLEInstancedArrays,
+        castToANGLEInstancedArrays, gTypeANGLEInstancedArrays)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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/AbstractView.hs b/src/GHCJS/DOM/JSFFI/Generated/AbstractView.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AbstractView.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AbstractView
+       (js_getDocument, getDocument, js_getStyleMedia, getStyleMedia,
+        AbstractView, castToAbstractView, gTypeAbstractView)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"document\"]" js_getDocument
+        :: AbstractView -> IO (Nullable Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.document Mozilla AbstractView.document documentation> 
+getDocument :: (MonadIO m) => AbstractView -> m (Maybe Document)
+getDocument self
+  = liftIO (nullableToMaybe <$> (js_getDocument (self)))
+ 
+foreign import javascript unsafe "$1[\"styleMedia\"]"
+        js_getStyleMedia :: AbstractView -> IO (Nullable StyleMedia)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.styleMedia Mozilla AbstractView.styleMedia documentation> 
+getStyleMedia ::
+              (MonadIO m) => AbstractView -> m (Maybe StyleMedia)
+getStyleMedia self
+  = liftIO (nullableToMaybe <$> (js_getStyleMedia (self)))
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,22 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AbstractWorker
+       (error, AbstractWorker, castToAbstractWorker, gTypeAbstractWorker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker.onerror Mozilla AbstractWorker.onerror documentation> 
+error :: EventName AbstractWorker UIEvent
+error = unsafeEventName (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AllAudioCapabilities.hs b/src/GHCJS/DOM/JSFFI/Generated/AllAudioCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AllAudioCapabilities.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AllAudioCapabilities
+       (js_getSourceId, getSourceId, js_getVolume, getVolume,
+        AllAudioCapabilities, castToAllAudioCapabilities,
+        gTypeAllAudioCapabilities)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"sourceId\"]" js_getSourceId
+        :: AllAudioCapabilities -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities.sourceId Mozilla AllAudioCapabilities.sourceId documentation> 
+getSourceId ::
+            (MonadIO m, FromJSString result) =>
+              AllAudioCapabilities -> m [result]
+getSourceId self
+  = liftIO ((js_getSourceId (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"volume\"]" js_getVolume ::
+        AllAudioCapabilities -> IO (Nullable CapabilityRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities.volume Mozilla AllAudioCapabilities.volume documentation> 
+getVolume ::
+          (MonadIO m) => AllAudioCapabilities -> m (Maybe CapabilityRange)
+getVolume self = liftIO (nullableToMaybe <$> (js_getVolume (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AllVideoCapabilities.hs b/src/GHCJS/DOM/JSFFI/Generated/AllVideoCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AllVideoCapabilities.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AllVideoCapabilities
+       (js_getSourceType, getSourceType, js_getSourceId, getSourceId,
+        js_getWidth, getWidth, js_getHeight, getHeight, js_getFrameRate,
+        getFrameRate, js_getAspectRatio, getAspectRatio, js_getFacingMode,
+        getFacingMode, AllVideoCapabilities, castToAllVideoCapabilities,
+        gTypeAllVideoCapabilities)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"sourceType\"]"
+        js_getSourceType :: AllVideoCapabilities -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.sourceType Mozilla AllVideoCapabilities.sourceType documentation> 
+getSourceType ::
+              (MonadIO m, FromJSString result) =>
+                AllVideoCapabilities -> m [result]
+getSourceType self
+  = liftIO ((js_getSourceType (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"sourceId\"]" js_getSourceId
+        :: AllVideoCapabilities -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.sourceId Mozilla AllVideoCapabilities.sourceId documentation> 
+getSourceId ::
+            (MonadIO m, FromJSString result) =>
+              AllVideoCapabilities -> m [result]
+getSourceId self
+  = liftIO ((js_getSourceId (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        AllVideoCapabilities -> IO (Nullable CapabilityRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.width Mozilla AllVideoCapabilities.width documentation> 
+getWidth ::
+         (MonadIO m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        AllVideoCapabilities -> IO (Nullable CapabilityRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.height Mozilla AllVideoCapabilities.height documentation> 
+getHeight ::
+          (MonadIO m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
+getHeight self = liftIO (nullableToMaybe <$> (js_getHeight (self)))
+ 
+foreign import javascript unsafe "$1[\"frameRate\"]"
+        js_getFrameRate ::
+        AllVideoCapabilities -> IO (Nullable CapabilityRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.frameRate Mozilla AllVideoCapabilities.frameRate documentation> 
+getFrameRate ::
+             (MonadIO m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
+getFrameRate self
+  = liftIO (nullableToMaybe <$> (js_getFrameRate (self)))
+ 
+foreign import javascript unsafe "$1[\"aspectRatio\"]"
+        js_getAspectRatio ::
+        AllVideoCapabilities -> IO (Nullable CapabilityRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.aspectRatio Mozilla AllVideoCapabilities.aspectRatio documentation> 
+getAspectRatio ::
+               (MonadIO m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
+getAspectRatio self
+  = liftIO (nullableToMaybe <$> (js_getAspectRatio (self)))
+ 
+foreign import javascript unsafe "$1[\"facingMode\"]"
+        js_getFacingMode :: AllVideoCapabilities -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.facingMode Mozilla AllVideoCapabilities.facingMode documentation> 
+getFacingMode ::
+              (MonadIO m, FromJSString result) =>
+                AllVideoCapabilities -> m [result]
+getFacingMode self
+  = liftIO ((js_getFacingMode (self)) >>= fromJSValUnchecked)
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,133 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToAnalyserNode, gTypeAnalyserNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getFloatFrequencyData\"]($2)" js_getFloatFrequencyData ::
+        AnalyserNode -> Nullable 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)
+         (maybeToNullable (fmap toFloat32Array array)))
+ 
+foreign import javascript unsafe "$1[\"getByteFrequencyData\"]($2)"
+        js_getByteFrequencyData ::
+        AnalyserNode -> Nullable 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)
+         (maybeToNullable (fmap toUint8Array array)))
+ 
+foreign import javascript unsafe
+        "$1[\"getByteTimeDomainData\"]($2)" js_getByteTimeDomainData ::
+        AnalyserNode -> Nullable 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)
+         (maybeToNullable (fmap toUint8Array array)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe
+        "$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[\"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/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,36 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AnimationEvent
+       (js_getAnimationName, getAnimationName, js_getElapsedTime,
+        getElapsedTime, AnimationEvent, castToAnimationEvent,
+        gTypeAnimationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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/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,89 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToApplicationCache, gTypeApplicationCache)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 unsafe "$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[\"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[\"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 = unsafeEventName (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 = unsafeEventName (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,67 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Attr
+       (js_getName, getName, js_getSpecified, getSpecified, js_setValue,
+        setValue, js_getValue, getValue, js_getOwnerElement,
+        getOwnerElement, js_getIsId, getIsId, Attr, castToAttr, gTypeAttr)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        Attr -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.name Mozilla Attr.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => Attr -> m (Maybe result)
+getName self = liftIO (fromMaybeJSString <$> (js_getName (self)))
+ 
+foreign import javascript unsafe "($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))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: Attr -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => Attr -> Maybe val -> m ()
+setValue self val
+  = liftIO (js_setValue (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        Attr -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => Attr -> m (Maybe result)
+getValue self = liftIO (fromMaybeJSString <$> (js_getValue (self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "($1[\"isId\"] ? 1 : 0)"
+        js_getIsId :: Attr -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.isId Mozilla Attr.isId documentation> 
+getIsId :: (MonadIO m) => Attr -> m Bool
+getIsId self = liftIO (js_getIsId (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,75 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AudioBuffer
+       (js_getChannelData, getChannelData, js_getLength, getLength,
+        js_getDuration, getDuration, js_getSampleRate, getSampleRate,
+        js_setGain, setGain, js_getGain, getGain, js_getNumberOfChannels,
+        getNumberOfChannels, AudioBuffer, castToAudioBuffer,
+        gTypeAudioBuffer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getChannelData\"]($2)"
+        js_getChannelData ::
+        AudioBuffer -> Word -> IO (Nullable Float32Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
+getChannelData ::
+               (MonadIO m) => AudioBuffer -> Word -> m (Maybe Float32Array)
+getChannelData self channelIndex
+  = liftIO
+      (nullableToMaybe <$> (js_getChannelData (self) channelIndex))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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,55 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
+newAudioBufferCallback ::
+                       (MonadIO m) =>
+                         (Maybe 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) =>
+                             (Maybe 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) =>
+                              (Maybe 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,180 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode
+       (js_start, start, js_stop, stop, js_noteOn, noteOn, js_noteGrainOn,
+        noteGrainOn, js_noteOff, noteOff, pattern UNSCHEDULED_STATE,
+        pattern SCHEDULED_STATE, pattern PLAYING_STATE,
+        pattern FINISHED_STATE, js_setBuffer, setBuffer, js_getBuffer,
+        getBuffer, 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, js_setLooping, setLooping,
+        js_getLooping, getLooping, ended, AudioBufferSourceNode,
+        castToAudioBufferSourceNode, gTypeAudioBufferSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"start\"]($2, $3, $4)"
+        js_start ::
+        AudioBufferSourceNode -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.start Mozilla AudioBufferSourceNode.start documentation> 
+start ::
+      (MonadIO m) =>
+        AudioBufferSourceNode -> Double -> Double -> Double -> m ()
+start self when grainOffset grainDuration
+  = liftIO (js_start (self) when grainOffset grainDuration)
+ 
+foreign import javascript unsafe "$1[\"stop\"]($2)" js_stop ::
+        AudioBufferSourceNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.stop Mozilla AudioBufferSourceNode.stop documentation> 
+stop :: (MonadIO m) => AudioBufferSourceNode -> Double -> m ()
+stop self when = liftIO (js_stop (self) when)
+ 
+foreign import javascript unsafe "$1[\"noteOn\"]($2)" js_noteOn ::
+        AudioBufferSourceNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.noteOn Mozilla AudioBufferSourceNode.noteOn documentation> 
+noteOn :: (MonadIO m) => AudioBufferSourceNode -> Double -> m ()
+noteOn self when = liftIO (js_noteOn (self) when)
+ 
+foreign import javascript unsafe "$1[\"noteGrainOn\"]($2, $3, $4)"
+        js_noteGrainOn ::
+        AudioBufferSourceNode -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.noteGrainOn Mozilla AudioBufferSourceNode.noteGrainOn documentation> 
+noteGrainOn ::
+            (MonadIO m) =>
+              AudioBufferSourceNode -> Double -> Double -> Double -> m ()
+noteGrainOn self when grainOffset grainDuration
+  = liftIO (js_noteGrainOn (self) when grainOffset grainDuration)
+ 
+foreign import javascript unsafe "$1[\"noteOff\"]($2)" js_noteOff
+        :: AudioBufferSourceNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.noteOff Mozilla AudioBufferSourceNode.noteOff documentation> 
+noteOff :: (MonadIO m) => AudioBufferSourceNode -> Double -> m ()
+noteOff self when = liftIO (js_noteOff (self) when)
+pattern UNSCHEDULED_STATE = 0
+pattern SCHEDULED_STATE = 1
+pattern PLAYING_STATE = 2
+pattern FINISHED_STATE = 3
+ 
+foreign import javascript unsafe "$1[\"buffer\"] = $2;"
+        js_setBuffer ::
+        AudioBufferSourceNode -> Nullable 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) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"gain\"]" js_getGain ::
+        AudioBufferSourceNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.gain Mozilla AudioBufferSourceNode.gain documentation> 
+getGain ::
+        (MonadIO m) => AudioBufferSourceNode -> m (Maybe AudioParam)
+getGain self = liftIO (nullableToMaybe <$> (js_getGain (self)))
+ 
+foreign import javascript unsafe "$1[\"playbackRate\"]"
+        js_getPlaybackRate ::
+        AudioBufferSourceNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackRate Mozilla AudioBufferSourceNode.playbackRate documentation> 
+getPlaybackRate ::
+                (MonadIO m) => AudioBufferSourceNode -> m (Maybe AudioParam)
+getPlaybackRate self
+  = liftIO (nullableToMaybe <$> (js_getPlaybackRate (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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))
+ 
+foreign import javascript unsafe "$1[\"looping\"] = $2;"
+        js_setLooping :: AudioBufferSourceNode -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.looping Mozilla AudioBufferSourceNode.looping documentation> 
+setLooping :: (MonadIO m) => AudioBufferSourceNode -> Bool -> m ()
+setLooping self val = liftIO (js_setLooping (self) val)
+ 
+foreign import javascript unsafe "($1[\"looping\"] ? 1 : 0)"
+        js_getLooping :: AudioBufferSourceNode -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.looping Mozilla AudioBufferSourceNode.looping documentation> 
+getLooping :: (MonadIO m) => AudioBufferSourceNode -> m Bool
+getLooping self = liftIO (js_getLooping (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,424 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AudioContext
+       (js_newAudioContext, newAudioContext, js_createBuffer,
+        createBuffer, js_createBufferFromArrayBuffer,
+        createBufferFromArrayBuffer, js_decodeAudioData, decodeAudioData,
+        js_createBufferSource, createBufferSource,
+        js_createMediaElementSource, createMediaElementSource,
+        js_createMediaStreamSource, createMediaStreamSource,
+        js_createMediaStreamDestination, createMediaStreamDestination,
+        js_createGain, createGain, js_createDelay, createDelay,
+        js_createBiquadFilter, createBiquadFilter, js_createWaveShaper,
+        createWaveShaper, js_createPanner, createPanner,
+        js_createConvolver, createConvolver, js_createDynamicsCompressor,
+        createDynamicsCompressor, js_createAnalyser, createAnalyser,
+        js_createScriptProcessor, createScriptProcessor,
+        js_createOscillator, createOscillator, js_createPeriodicWave,
+        createPeriodicWave, js_createChannelSplitter,
+        createChannelSplitter, js_createChannelMerger, createChannelMerger,
+        js_startRendering, startRendering, js_createGainNode,
+        createGainNode, js_createDelayNode, createDelayNode,
+        js_createJavaScriptNode, createJavaScriptNode, js_getDestination,
+        getDestination, js_getCurrentTime, getCurrentTime,
+        js_getSampleRate, getSampleRate, js_getListener, getListener,
+        js_getActiveSourceCount, getActiveSourceCount, complete,
+        AudioContext, castToAudioContext, gTypeAudioContext,
+        IsAudioContext, toAudioContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "$1[\"createBuffer\"]($2, $3, $4)"
+        js_createBuffer ::
+        AudioContext -> Word -> Word -> Float -> IO (Nullable 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 (Maybe AudioBuffer)
+createBuffer self numberOfChannels numberOfFrames sampleRate
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createBuffer (toAudioContext self) numberOfChannels
+            numberOfFrames
+            sampleRate))
+ 
+foreign import javascript unsafe "$1[\"createBuffer\"]($2, $3)"
+        js_createBufferFromArrayBuffer ::
+        AudioContext ->
+          Nullable ArrayBuffer -> Bool -> IO (Nullable AudioBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBufferFromArrayBuffer ::
+                            (MonadIO m, IsAudioContext self, IsArrayBuffer buffer) =>
+                              self -> Maybe buffer -> Bool -> m (Maybe AudioBuffer)
+createBufferFromArrayBuffer self buffer mixToMono
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createBufferFromArrayBuffer (toAudioContext self)
+            (maybeToNullable (fmap toArrayBuffer buffer))
+            mixToMono))
+ 
+foreign import javascript unsafe
+        "$1[\"decodeAudioData\"]($2, $3,\n$4)" js_decodeAudioData ::
+        AudioContext ->
+          Nullable ArrayBuffer ->
+            Nullable AudioBufferCallback ->
+              Nullable 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 ->
+                    Maybe audioData ->
+                      Maybe AudioBufferCallback -> Maybe AudioBufferCallback -> m ()
+decodeAudioData self audioData successCallback errorCallback
+  = liftIO
+      (js_decodeAudioData (toAudioContext self)
+         (maybeToNullable (fmap toArrayBuffer audioData))
+         (maybeToNullable successCallback)
+         (maybeToNullable errorCallback))
+ 
+foreign import javascript unsafe "$1[\"createBufferSource\"]()"
+        js_createBufferSource ::
+        AudioContext -> IO (Nullable AudioBufferSourceNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
+createBufferSource ::
+                   (MonadIO m, IsAudioContext self) =>
+                     self -> m (Maybe AudioBufferSourceNode)
+createBufferSource self
+  = liftIO
+      (nullableToMaybe <$> (js_createBufferSource (toAudioContext self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createMediaElementSource\"]($2)" js_createMediaElementSource
+        ::
+        AudioContext ->
+          Nullable HTMLMediaElement ->
+            IO (Nullable MediaElementAudioSourceNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
+createMediaElementSource ::
+                         (MonadIO m, IsAudioContext self,
+                          IsHTMLMediaElement mediaElement) =>
+                           self -> Maybe mediaElement -> m (Maybe MediaElementAudioSourceNode)
+createMediaElementSource self mediaElement
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createMediaElementSource (toAudioContext self)
+            (maybeToNullable (fmap toHTMLMediaElement mediaElement))))
+ 
+foreign import javascript unsafe
+        "$1[\"createMediaStreamSource\"]($2)" js_createMediaStreamSource ::
+        AudioContext ->
+          Nullable MediaStream -> IO (Nullable MediaStreamAudioSourceNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
+createMediaStreamSource ::
+                        (MonadIO m, IsAudioContext self) =>
+                          self -> Maybe MediaStream -> m (Maybe MediaStreamAudioSourceNode)
+createMediaStreamSource self mediaStream
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createMediaStreamSource (toAudioContext self)
+            (maybeToNullable mediaStream)))
+ 
+foreign import javascript unsafe
+        "$1[\"createMediaStreamDestination\"]()"
+        js_createMediaStreamDestination ::
+        AudioContext -> IO (Nullable MediaStreamAudioDestinationNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
+createMediaStreamDestination ::
+                             (MonadIO m, IsAudioContext self) =>
+                               self -> m (Maybe MediaStreamAudioDestinationNode)
+createMediaStreamDestination self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createMediaStreamDestination (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"createGain\"]()"
+        js_createGain :: AudioContext -> IO (Nullable GainNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
+createGain ::
+           (MonadIO m, IsAudioContext self) => self -> m (Maybe GainNode)
+createGain self
+  = liftIO
+      (nullableToMaybe <$> (js_createGain (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"createDelay\"]($2)"
+        js_createDelay :: AudioContext -> Double -> IO (Nullable DelayNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
+createDelay ::
+            (MonadIO m, IsAudioContext self) =>
+              self -> Double -> m (Maybe DelayNode)
+createDelay self maxDelayTime
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createDelay (toAudioContext self) maxDelayTime))
+ 
+foreign import javascript unsafe "$1[\"createBiquadFilter\"]()"
+        js_createBiquadFilter ::
+        AudioContext -> IO (Nullable BiquadFilterNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
+createBiquadFilter ::
+                   (MonadIO m, IsAudioContext self) =>
+                     self -> m (Maybe BiquadFilterNode)
+createBiquadFilter self
+  = liftIO
+      (nullableToMaybe <$> (js_createBiquadFilter (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"createWaveShaper\"]()"
+        js_createWaveShaper :: AudioContext -> IO (Nullable WaveShaperNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
+createWaveShaper ::
+                 (MonadIO m, IsAudioContext self) =>
+                   self -> m (Maybe WaveShaperNode)
+createWaveShaper self
+  = liftIO
+      (nullableToMaybe <$> (js_createWaveShaper (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"createPanner\"]()"
+        js_createPanner :: AudioContext -> IO (Nullable PannerNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
+createPanner ::
+             (MonadIO m, IsAudioContext self) => self -> m (Maybe PannerNode)
+createPanner self
+  = liftIO
+      (nullableToMaybe <$> (js_createPanner (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"createConvolver\"]()"
+        js_createConvolver :: AudioContext -> IO (Nullable ConvolverNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
+createConvolver ::
+                (MonadIO m, IsAudioContext self) => self -> m (Maybe ConvolverNode)
+createConvolver self
+  = liftIO
+      (nullableToMaybe <$> (js_createConvolver (toAudioContext self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createDynamicsCompressor\"]()" js_createDynamicsCompressor ::
+        AudioContext -> IO (Nullable DynamicsCompressorNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
+createDynamicsCompressor ::
+                         (MonadIO m, IsAudioContext self) =>
+                           self -> m (Maybe DynamicsCompressorNode)
+createDynamicsCompressor self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createDynamicsCompressor (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"createAnalyser\"]()"
+        js_createAnalyser :: AudioContext -> IO (Nullable AnalyserNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
+createAnalyser ::
+               (MonadIO m, IsAudioContext self) => self -> m (Maybe AnalyserNode)
+createAnalyser self
+  = liftIO
+      (nullableToMaybe <$> (js_createAnalyser (toAudioContext self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createScriptProcessor\"]($2,\n$3, $4)"
+        js_createScriptProcessor ::
+        AudioContext ->
+          Word -> Word -> Word -> IO (Nullable ScriptProcessorNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
+createScriptProcessor ::
+                      (MonadIO m, IsAudioContext self) =>
+                        self -> Word -> Word -> Word -> m (Maybe ScriptProcessorNode)
+createScriptProcessor self bufferSize numberOfInputChannels
+  numberOfOutputChannels
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createScriptProcessor (toAudioContext self) bufferSize
+            numberOfInputChannels
+            numberOfOutputChannels))
+ 
+foreign import javascript unsafe "$1[\"createOscillator\"]()"
+        js_createOscillator :: AudioContext -> IO (Nullable OscillatorNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
+createOscillator ::
+                 (MonadIO m, IsAudioContext self) =>
+                   self -> m (Maybe OscillatorNode)
+createOscillator self
+  = liftIO
+      (nullableToMaybe <$> (js_createOscillator (toAudioContext self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createPeriodicWave\"]($2, $3)" js_createPeriodicWave ::
+        AudioContext ->
+          Nullable Float32Array ->
+            Nullable Float32Array -> IO (Nullable 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 -> Maybe real -> Maybe imag -> m (Maybe PeriodicWave)
+createPeriodicWave self real imag
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createPeriodicWave (toAudioContext self)
+            (maybeToNullable (fmap toFloat32Array real))
+            (maybeToNullable (fmap toFloat32Array imag))))
+ 
+foreign import javascript unsafe
+        "$1[\"createChannelSplitter\"]($2)" js_createChannelSplitter ::
+        AudioContext -> Word -> IO (Nullable ChannelSplitterNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
+createChannelSplitter ::
+                      (MonadIO m, IsAudioContext self) =>
+                        self -> Word -> m (Maybe ChannelSplitterNode)
+createChannelSplitter self numberOfOutputs
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createChannelSplitter (toAudioContext self) numberOfOutputs))
+ 
+foreign import javascript unsafe "$1[\"createChannelMerger\"]($2)"
+        js_createChannelMerger ::
+        AudioContext -> Word -> IO (Nullable ChannelMergerNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
+createChannelMerger ::
+                    (MonadIO m, IsAudioContext self) =>
+                      self -> Word -> m (Maybe ChannelMergerNode)
+createChannelMerger self numberOfInputs
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createChannelMerger (toAudioContext self) numberOfInputs))
+ 
+foreign import javascript unsafe "$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[\"createGainNode\"]()"
+        js_createGainNode :: AudioContext -> IO (Nullable GainNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGainNode Mozilla AudioContext.createGainNode documentation> 
+createGainNode ::
+               (MonadIO m, IsAudioContext self) => self -> m (Maybe GainNode)
+createGainNode self
+  = liftIO
+      (nullableToMaybe <$> (js_createGainNode (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"createDelayNode\"]($2)"
+        js_createDelayNode ::
+        AudioContext -> Double -> IO (Nullable DelayNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelayNode Mozilla AudioContext.createDelayNode documentation> 
+createDelayNode ::
+                (MonadIO m, IsAudioContext self) =>
+                  self -> Double -> m (Maybe DelayNode)
+createDelayNode self maxDelayTime
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createDelayNode (toAudioContext self) maxDelayTime))
+ 
+foreign import javascript unsafe
+        "$1[\"createJavaScriptNode\"]($2,\n$3, $4)" js_createJavaScriptNode
+        ::
+        AudioContext ->
+          Word -> Word -> Word -> IO (Nullable ScriptProcessorNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createJavaScriptNode Mozilla AudioContext.createJavaScriptNode documentation> 
+createJavaScriptNode ::
+                     (MonadIO m, IsAudioContext self) =>
+                       self -> Word -> Word -> Word -> m (Maybe ScriptProcessorNode)
+createJavaScriptNode self bufferSize numberOfInputChannels
+  numberOfOutputChannels
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createJavaScriptNode (toAudioContext self) bufferSize
+            numberOfInputChannels
+            numberOfOutputChannels))
+ 
+foreign import javascript unsafe "$1[\"destination\"]"
+        js_getDestination ::
+        AudioContext -> IO (Nullable AudioDestinationNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.destination Mozilla AudioContext.destination documentation> 
+getDestination ::
+               (MonadIO m, IsAudioContext self) =>
+                 self -> m (Maybe AudioDestinationNode)
+getDestination self
+  = liftIO
+      (nullableToMaybe <$> (js_getDestination (toAudioContext self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"listener\"]" js_getListener
+        :: AudioContext -> IO (Nullable AudioListener)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.listener Mozilla AudioContext.listener documentation> 
+getListener ::
+            (MonadIO m, IsAudioContext self) => self -> m (Maybe AudioListener)
+getListener self
+  = liftIO
+      (nullableToMaybe <$> (js_getListener (toAudioContext self)))
+ 
+foreign import javascript unsafe "$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,26 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AudioDestinationNode
+       (js_getMaxChannelCount, getMaxChannelCount, AudioDestinationNode,
+        castToAudioDestinationNode, gTypeAudioDestinationNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,80 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToAudioListener, gTypeAudioListener)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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,151 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToAudioNode, gTypeAudioNode, IsAudioNode, toAudioNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"connect\"]($2, $3, $4)"
+        js_connect ::
+        AudioNode -> Nullable AudioNode -> Word -> 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 -> Maybe destination -> Word -> Word -> m ()
+connect self destination output input
+  = liftIO
+      (js_connect (toAudioNode self)
+         (maybeToNullable (fmap toAudioNode destination))
+         output
+         input)
+ 
+foreign import javascript unsafe "$1[\"connect\"]($2, $3)"
+        js_connectParam ::
+        AudioNode -> Nullable AudioParam -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
+connectParam ::
+             (MonadIO m, IsAudioNode self) =>
+               self -> Maybe AudioParam -> Word -> m ()
+connectParam self destination output
+  = liftIO
+      (js_connectParam (toAudioNode self) (maybeToNullable destination)
+         output)
+ 
+foreign import javascript unsafe "$1[\"disconnect\"]($2)"
+        js_disconnect :: AudioNode -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.disconnect Mozilla AudioNode.disconnect documentation> 
+disconnect :: (MonadIO m, IsAudioNode self) => self -> Word -> m ()
+disconnect self output
+  = liftIO (js_disconnect (toAudioNode self) output)
+ 
+foreign import javascript unsafe "$1[\"context\"]" js_getContext ::
+        AudioNode -> IO (Nullable AudioContext)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.context Mozilla AudioNode.context documentation> 
+getContext ::
+           (MonadIO m, IsAudioNode self) => self -> m (Maybe AudioContext)
+getContext self
+  = liftIO (nullableToMaybe <$> (js_getContext (toAudioNode self)))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe
+        "$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[\"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,152 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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_setTargetValueAtTime, setTargetValueAtTime, js_setValue,
+        setValue, js_getValue, getValue, js_getMinValue, getMinValue,
+        js_getMaxValue, getMaxValue, js_getDefaultValue, getDefaultValue,
+        js_getName, getName, js_getUnits, getUnits, AudioParam,
+        castToAudioParam, gTypeAudioParam)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"setValueCurveAtTime\"]($2,\n$3, $4)" js_setValueCurveAtTime
+        :: AudioParam -> Nullable 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)
+         (maybeToNullable (fmap toFloat32Array values))
+         time
+         duration)
+ 
+foreign import javascript unsafe
+        "$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[\"setTargetValueAtTime\"]($2,\n$3, $4)" js_setTargetValueAtTime
+        :: AudioParam -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setTargetValueAtTime Mozilla AudioParam.setTargetValueAtTime documentation> 
+setTargetValueAtTime ::
+                     (MonadIO m) => AudioParam -> Float -> Float -> Float -> m ()
+setTargetValueAtTime self targetValue time timeConstant
+  = liftIO
+      (js_setTargetValueAtTime (self) targetValue time timeConstant)
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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,48 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent
+       (js_getPlaybackTime, getPlaybackTime, js_getInputBuffer,
+        getInputBuffer, js_getOutputBuffer, getOutputBuffer,
+        AudioProcessingEvent, castToAudioProcessingEvent,
+        gTypeAudioProcessingEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"inputBuffer\"]"
+        js_getInputBuffer ::
+        AudioProcessingEvent -> IO (Nullable AudioBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.inputBuffer Mozilla AudioProcessingEvent.inputBuffer documentation> 
+getInputBuffer ::
+               (MonadIO m) => AudioProcessingEvent -> m (Maybe AudioBuffer)
+getInputBuffer self
+  = liftIO (nullableToMaybe <$> (js_getInputBuffer (self)))
+ 
+foreign import javascript unsafe "$1[\"outputBuffer\"]"
+        js_getOutputBuffer ::
+        AudioProcessingEvent -> IO (Nullable AudioBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.outputBuffer Mozilla AudioProcessingEvent.outputBuffer documentation> 
+getOutputBuffer ::
+                (MonadIO m) => AudioProcessingEvent -> m (Maybe AudioBuffer)
+getOutputBuffer self
+  = liftIO (nullableToMaybe <$> (js_getOutputBuffer (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioStreamTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioStreamTrack.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AudioStreamTrack
+       (js_newAudioStreamTrack, newAudioStreamTrack, AudioStreamTrack,
+        castToAudioStreamTrack, gTypeAudioStreamTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"AudioStreamTrack\"]($1)" js_newAudioStreamTrack ::
+        Nullable Dictionary -> IO AudioStreamTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioStreamTrack Mozilla AudioStreamTrack documentation> 
+newAudioStreamTrack ::
+                    (MonadIO m, IsDictionary audioConstraints) =>
+                      Maybe audioConstraints -> m AudioStreamTrack
+newAudioStreamTrack audioConstraints
+  = liftIO
+      (js_newAudioStreamTrack
+         (maybeToNullable (fmap toDictionary audioConstraints)))
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,93 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToAudioTrack,
+        gTypeAudioTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"sourceBuffer\"]"
+        js_getSourceBuffer :: AudioTrack -> IO (Nullable SourceBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.sourceBuffer Mozilla AudioTrack.sourceBuffer documentation> 
+getSourceBuffer ::
+                (MonadIO m) => AudioTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self
+  = liftIO (nullableToMaybe <$> (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,60 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AudioTrackList
+       (js_item, item, js_getTrackById, getTrackById, js_getLength,
+        getLength, change, addTrack, removeTrack, AudioTrackList,
+        castToAudioTrackList, gTypeAudioTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        AudioTrackList -> Word -> IO (Nullable AudioTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
+item ::
+     (MonadIO m) => AudioTrackList -> Word -> m (Maybe AudioTrack)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"getTrackById\"]($2)"
+        js_getTrackById ::
+        AudioTrackList -> JSString -> IO (Nullable AudioTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadIO m, ToJSString id) =>
+               AudioTrackList -> id -> m (Maybe AudioTrack)
+getTrackById self id
+  = liftIO
+      (nullableToMaybe <$> (js_getTrackById (self) (toJSString id)))
+ 
+foreign import javascript unsafe "$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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent
+       (js_getReason, getReason, AutocompleteErrorEvent,
+        castToAutocompleteErrorEvent, gTypeAutocompleteErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,25 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.BarProp
+       (js_getVisible, getVisible, BarProp, castToBarProp, gTypeBarProp)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "($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/BatteryManager.hs b/src/GHCJS/DOM/JSFFI/Generated/BatteryManager.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BatteryManager.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.BatteryManager
+       (js_getCharging, getCharging, js_getChargingTime, getChargingTime,
+        js_getDischargingTime, getDischargingTime, js_getLevel, getLevel,
+        chargingChange, chargingTimeChange, dischargingTimeChange,
+        levelChange, BatteryManager, castToBatteryManager,
+        gTypeBatteryManager)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "($1[\"charging\"] ? 1 : 0)"
+        js_getCharging :: BatteryManager -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.charging Mozilla BatteryManager.charging documentation> 
+getCharging :: (MonadIO m) => BatteryManager -> m Bool
+getCharging self = liftIO (js_getCharging (self))
+ 
+foreign import javascript unsafe "$1[\"chargingTime\"]"
+        js_getChargingTime :: BatteryManager -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.chargingTime Mozilla BatteryManager.chargingTime documentation> 
+getChargingTime :: (MonadIO m) => BatteryManager -> m Double
+getChargingTime self = liftIO (js_getChargingTime (self))
+ 
+foreign import javascript unsafe "$1[\"dischargingTime\"]"
+        js_getDischargingTime :: BatteryManager -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.dischargingTime Mozilla BatteryManager.dischargingTime documentation> 
+getDischargingTime :: (MonadIO m) => BatteryManager -> m Double
+getDischargingTime self = liftIO (js_getDischargingTime (self))
+ 
+foreign import javascript unsafe "$1[\"level\"]" js_getLevel ::
+        BatteryManager -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.level Mozilla BatteryManager.level documentation> 
+getLevel :: (MonadIO m) => BatteryManager -> m Double
+getLevel self = liftIO (js_getLevel (self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.onchargingchange Mozilla BatteryManager.onchargingchange documentation> 
+chargingChange :: EventName BatteryManager Event
+chargingChange = unsafeEventName (toJSString "chargingchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.onchargingtimechange Mozilla BatteryManager.onchargingtimechange documentation> 
+chargingTimeChange :: EventName BatteryManager Event
+chargingTimeChange
+  = unsafeEventName (toJSString "chargingtimechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.ondischargingtimechange Mozilla BatteryManager.ondischargingtimechange documentation> 
+dischargingTimeChange :: EventName BatteryManager Event
+dischargingTimeChange
+  = unsafeEventName (toJSString "dischargingtimechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.onlevelchange Mozilla BatteryManager.onlevelchange documentation> 
+levelChange :: EventName BatteryManager Event
+levelChange = unsafeEventName (toJSString "levelchange")
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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent
+       (js_getUrl, getUrl, BeforeLoadEvent, castToBeforeLoadEvent,
+        gTypeBeforeLoadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
+       (js_setReturnValue, setReturnValue, js_getReturnValue,
+        getReturnValue, BeforeUnloadEvent, castToBeforeUnloadEvent,
+        gTypeBeforeUnloadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,100 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
+       (js_getFrequencyResponse, getFrequencyResponse, pattern LOWPASS,
+        pattern HIGHPASS, pattern BANDPASS, pattern LOWSHELF,
+        pattern HIGHSHELF, pattern PEAKING, pattern NOTCH, pattern ALLPASS,
+        js_setType, setType, js_getType, getType, js_getFrequency,
+        getFrequency, js_getDetune, getDetune, js_getQ, getQ, js_getGain,
+        getGain, BiquadFilterNode, castToBiquadFilterNode,
+        gTypeBiquadFilterNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getFrequencyResponse\"]($2,\n$3, $4)" js_getFrequencyResponse
+        ::
+        BiquadFilterNode ->
+          Nullable Float32Array ->
+            Nullable Float32Array -> Nullable 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)
+         (maybeToNullable (fmap toFloat32Array frequencyHz))
+         (maybeToNullable (fmap toFloat32Array magResponse))
+         (maybeToNullable (fmap toFloat32Array phaseResponse)))
+pattern LOWPASS = 0
+pattern HIGHPASS = 1
+pattern BANDPASS = 2
+pattern LOWSHELF = 3
+pattern HIGHSHELF = 4
+pattern PEAKING = 5
+pattern NOTCH = 6
+pattern ALLPASS = 7
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        BiquadFilterNode -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => BiquadFilterNode -> val -> m ()
+setType self val = liftIO (js_setType (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        BiquadFilterNode -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => BiquadFilterNode -> m result
+getType self = liftIO (fromJSString <$> (js_getType (self)))
+ 
+foreign import javascript unsafe "$1[\"frequency\"]"
+        js_getFrequency :: BiquadFilterNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.frequency Mozilla BiquadFilterNode.frequency documentation> 
+getFrequency ::
+             (MonadIO m) => BiquadFilterNode -> m (Maybe AudioParam)
+getFrequency self
+  = liftIO (nullableToMaybe <$> (js_getFrequency (self)))
+ 
+foreign import javascript unsafe "$1[\"detune\"]" js_getDetune ::
+        BiquadFilterNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.detune Mozilla BiquadFilterNode.detune documentation> 
+getDetune ::
+          (MonadIO m) => BiquadFilterNode -> m (Maybe AudioParam)
+getDetune self = liftIO (nullableToMaybe <$> (js_getDetune (self)))
+ 
+foreign import javascript unsafe "$1[\"Q\"]" js_getQ ::
+        BiquadFilterNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.Q Mozilla BiquadFilterNode.Q documentation> 
+getQ :: (MonadIO m) => BiquadFilterNode -> m (Maybe AudioParam)
+getQ self = liftIO (nullableToMaybe <$> (js_getQ (self)))
+ 
+foreign import javascript unsafe "$1[\"gain\"]" js_getGain ::
+        BiquadFilterNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
+getGain :: (MonadIO m) => BiquadFilterNode -> m (Maybe AudioParam)
+getGain self = liftIO (nullableToMaybe <$> (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,68 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Blob
+       (js_newBlob, newBlob, js_newBlob', newBlob', js_slice, slice,
+        js_getSize, getSize, js_getType, getType, Blob, castToBlob,
+        gTypeBlob, IsBlob, toBlob)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"Blob\"]()"
+        js_newBlob :: IO Blob
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
+newBlob :: (MonadIO m) => m Blob
+newBlob = liftIO (js_newBlob)
+ 
+foreign import javascript unsafe "new window[\"Blob\"]($1, $2)"
+        js_newBlob' :: JSVal -> Nullable BlobPropertyBag -> IO Blob
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
+newBlob' ::
+         (MonadIO m, IsBlobPropertyBag options) =>
+           [JSVal] -> Maybe options -> m Blob
+newBlob' blobParts options
+  = liftIO
+      (toJSVal blobParts >>= \ blobParts' -> js_newBlob' blobParts'
+         (maybeToNullable (fmap toBlobPropertyBag options)))
+ 
+foreign import javascript unsafe "$1[\"slice\"]($2, $3, $4)"
+        js_slice ::
+        Blob -> Double -> Double -> Nullable JSString -> IO (Nullable Blob)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
+slice ::
+      (MonadIO m, IsBlob self, ToJSString contentType) =>
+        self -> Int64 -> Int64 -> Maybe contentType -> m (Maybe Blob)
+slice self start end contentType
+  = liftIO
+      (nullableToMaybe <$>
+         (js_slice (toBlob self) (fromIntegral start) (fromIntegral end)
+            (toMaybeJSString contentType)))
+ 
+foreign import javascript unsafe "$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[\"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/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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSS
+       (js_supports2, supports2, js_supports, supports, CSS, castToCSS,
+        gTypeCSS)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"supports\"]($2, $3) ? 1 : 0)" js_supports2 ::
+        CSS -> 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) =>
+            CSS -> property -> value -> m Bool
+supports2 self property value
+  = liftIO
+      (js_supports2 (self) (toJSString property) (toJSString value))
+ 
+foreign import javascript unsafe "($1[\"supports\"]($2) ? 1 : 0)"
+        js_supports :: CSS -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
+supports ::
+         (MonadIO m, ToJSString conditionText) =>
+           CSS -> conditionText -> m Bool
+supports self conditionText
+  = liftIO (js_supports (self) (toJSString conditionText))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSCharsetRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSCharsetRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSCharsetRule.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSCharsetRule
+       (js_setEncoding, setEncoding, js_getEncoding, getEncoding,
+        CSSCharsetRule, castToCSSCharsetRule, gTypeCSSCharsetRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"encoding\"] = $2;"
+        js_setEncoding :: CSSCharsetRule -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule.encoding Mozilla CSSCharsetRule.encoding documentation> 
+setEncoding ::
+            (MonadIO m, ToJSString val) => CSSCharsetRule -> Maybe val -> m ()
+setEncoding self val
+  = liftIO (js_setEncoding (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"encoding\"]" js_getEncoding
+        :: CSSCharsetRule -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule.encoding Mozilla CSSCharsetRule.encoding documentation> 
+getEncoding ::
+            (MonadIO m, FromJSString result) =>
+              CSSCharsetRule -> m (Maybe result)
+getEncoding self
+  = liftIO (fromMaybeJSString <$> (js_getEncoding (self)))
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,37 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent
+       (js_getFontface, getFontface, js_getError, getError,
+        CSSFontFaceLoadEvent, castToCSSFontFaceLoadEvent,
+        gTypeCSSFontFaceLoadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule
+       (js_getStyle, getStyle, CSSFontFaceRule, castToCSSFontFaceRule,
+        gTypeCSSFontFaceRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        CSSFontFaceRule -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
+getStyle ::
+         (MonadIO m) => CSSFontFaceRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftIO (nullableToMaybe <$> (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,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSImportRule
+       (js_getHref, getHref, js_getMedia, getMedia, js_getStyleSheet,
+        getStyleSheet, CSSImportRule, castToCSSImportRule,
+        gTypeCSSImportRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        CSSImportRule -> IO (Nullable MediaList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.media Mozilla CSSImportRule.media documentation> 
+getMedia :: (MonadIO m) => CSSImportRule -> m (Maybe MediaList)
+getMedia self = liftIO (nullableToMaybe <$> (js_getMedia (self)))
+ 
+foreign import javascript unsafe "$1[\"styleSheet\"]"
+        js_getStyleSheet :: CSSImportRule -> IO (Nullable CSSStyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.styleSheet Mozilla CSSImportRule.styleSheet documentation> 
+getStyleSheet ::
+              (MonadIO m) => CSSImportRule -> m (Maybe CSSStyleSheet)
+getStyleSheet self
+  = liftIO (nullableToMaybe <$> (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,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule
+       (js_setKeyText, setKeyText, js_getKeyText, getKeyText, js_getStyle,
+        getStyle, CSSKeyframeRule, castToCSSKeyframeRule,
+        gTypeCSSKeyframeRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"style\"]" js_getStyle ::
+        CSSKeyframeRule -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.style Mozilla CSSKeyframeRule.style documentation> 
+getStyle ::
+         (MonadIO m) => CSSKeyframeRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftIO (nullableToMaybe <$> (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,97 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule
+       (js_insertRule, insertRule, js_appendRule, appendRule,
+        js_deleteRule, deleteRule, js_findRule, findRule, js__get, _get,
+        js_setName, setName, js_getName, getName, js_getCssRules,
+        getCssRules, CSSKeyframesRule, castToCSSKeyframesRule,
+        gTypeCSSKeyframesRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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)))
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        CSSKeyframesRule -> Word -> IO (Nullable CSSKeyframeRule)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule._get Mozilla CSSKeyframesRule._get documentation> 
+_get ::
+     (MonadIO m) =>
+       CSSKeyframesRule -> Word -> m (Maybe CSSKeyframeRule)
+_get self index
+  = liftIO (nullableToMaybe <$> (js__get (self) index))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        CSSKeyframesRule -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) =>
+          CSSKeyframesRule -> Maybe val -> m ()
+setName self val = liftIO (js_setName (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        CSSKeyframesRule -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) =>
+          CSSKeyframesRule -> m (Maybe result)
+getName self = liftIO (fromMaybeJSString <$> (js_getName (self)))
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: CSSKeyframesRule -> IO (Nullable CSSRuleList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.cssRules Mozilla CSSKeyframesRule.cssRules documentation> 
+getCssRules ::
+            (MonadIO m) => CSSKeyframesRule -> m (Maybe CSSRuleList)
+getCssRules self
+  = liftIO (nullableToMaybe <$> (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,52 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSMediaRule
+       (js_insertRule, insertRule, js_deleteRule, deleteRule, js_getMedia,
+        getMedia, js_getCssRules, getCssRules, CSSMediaRule,
+        castToCSSMediaRule, gTypeCSSMediaRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
+        js_insertRule :: CSSMediaRule -> JSString -> Word -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
+insertRule ::
+           (MonadIO m, ToJSString rule) =>
+             CSSMediaRule -> rule -> Word -> m Word
+insertRule self rule index
+  = liftIO (js_insertRule (self) (toJSString rule) index)
+ 
+foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
+        js_deleteRule :: CSSMediaRule -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.deleteRule Mozilla CSSMediaRule.deleteRule documentation> 
+deleteRule :: (MonadIO m) => CSSMediaRule -> Word -> m ()
+deleteRule self index = liftIO (js_deleteRule (self) index)
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        CSSMediaRule -> IO (Nullable MediaList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.media Mozilla CSSMediaRule.media documentation> 
+getMedia :: (MonadIO m) => CSSMediaRule -> m (Maybe MediaList)
+getMedia self = liftIO (nullableToMaybe <$> (js_getMedia (self)))
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: CSSMediaRule -> IO (Nullable CSSRuleList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.cssRules Mozilla CSSMediaRule.cssRules documentation> 
+getCssRules :: (MonadIO m) => CSSMediaRule -> m (Maybe CSSRuleList)
+getCssRules self
+  = liftIO (nullableToMaybe <$> (js_getCssRules (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,46 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSPageRule
+       (js_setSelectorText, setSelectorText, js_getSelectorText,
+        getSelectorText, js_getStyle, getStyle, CSSPageRule,
+        castToCSSPageRule, gTypeCSSPageRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"selectorText\"] = $2;"
+        js_setSelectorText :: CSSPageRule -> Nullable 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) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        CSSPageRule -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.style Mozilla CSSPageRule.style documentation> 
+getStyle ::
+         (MonadIO m) => CSSPageRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftIO (nullableToMaybe <$> (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,133 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue
+       (js_setFloatValue, setFloatValue, js_getFloatValue, getFloatValue,
+        js_setStringValue, setStringValue, js_getStringValue,
+        getStringValue, js_getCounterValue, getCounterValue,
+        js_getRectValue, getRectValue, js_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,
+        castToCSSPrimitiveValue, gTypeCSSPrimitiveValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setFloatValue\"]($2, $3)"
+        js_setFloatValue :: CSSPrimitiveValue -> Word -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setFloatValue Mozilla CSSPrimitiveValue.setFloatValue documentation> 
+setFloatValue ::
+              (MonadIO m) => CSSPrimitiveValue -> Word -> Float -> m ()
+setFloatValue self unitType floatValue
+  = liftIO (js_setFloatValue (self) unitType floatValue)
+ 
+foreign import javascript unsafe "$1[\"getFloatValue\"]($2)"
+        js_getFloatValue :: CSSPrimitiveValue -> Word -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
+getFloatValue ::
+              (MonadIO m) => CSSPrimitiveValue -> Word -> m Float
+getFloatValue self unitType
+  = liftIO (js_getFloatValue (self) unitType)
+ 
+foreign import javascript unsafe "$1[\"setStringValue\"]($2, $3)"
+        js_setStringValue :: CSSPrimitiveValue -> Word -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setStringValue Mozilla CSSPrimitiveValue.setStringValue documentation> 
+setStringValue ::
+               (MonadIO m, ToJSString stringValue) =>
+                 CSSPrimitiveValue -> Word -> stringValue -> m ()
+setStringValue self stringType stringValue
+  = liftIO
+      (js_setStringValue (self) stringType (toJSString stringValue))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"getCounterValue\"]()"
+        js_getCounterValue :: CSSPrimitiveValue -> IO (Nullable Counter)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
+getCounterValue ::
+                (MonadIO m) => CSSPrimitiveValue -> m (Maybe Counter)
+getCounterValue self
+  = liftIO (nullableToMaybe <$> (js_getCounterValue (self)))
+ 
+foreign import javascript unsafe "$1[\"getRectValue\"]()"
+        js_getRectValue :: CSSPrimitiveValue -> IO (Nullable Rect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
+getRectValue :: (MonadIO m) => CSSPrimitiveValue -> m (Maybe Rect)
+getRectValue self
+  = liftIO (nullableToMaybe <$> (js_getRectValue (self)))
+ 
+foreign import javascript unsafe "$1[\"getRGBColorValue\"]()"
+        js_getRGBColorValue :: CSSPrimitiveValue -> IO (Nullable RGBColor)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
+getRGBColorValue ::
+                 (MonadIO m) => CSSPrimitiveValue -> m (Maybe RGBColor)
+getRGBColorValue self
+  = liftIO (nullableToMaybe <$> (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[\"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,86 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 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, js_getParentStyleSheet,
+        getParentStyleSheet, js_getParentRule, getParentRule, CSSRule,
+        castToCSSRule, gTypeCSSRule, IsCSSRule, toCSSRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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 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[\"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 unsafe "$1[\"cssText\"] = $2;"
+        js_setCssText :: CSSRule -> Nullable 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) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
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,34 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSRuleList
+       (js_item, item, js_getLength, getLength, CSSRuleList,
+        castToCSSRuleList, gTypeCSSRuleList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        CSSRuleList -> Word -> IO (Nullable CSSRule)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
+item :: (MonadIO m) => CSSRuleList -> Word -> m (Maybe CSSRule)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$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,163 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration
+       (js_getPropertyValue, getPropertyValue, js_getPropertyCSSValue,
+        getPropertyCSSValue, js_removeProperty, removeProperty,
+        js_getPropertyPriority, getPropertyPriority, js_setProperty,
+        setProperty, js_item, item, js_getPropertyShorthand,
+        getPropertyShorthand, js_isPropertyImplicit, isPropertyImplicit,
+        js_setCssText, setCssText, js_getCssText, getCssText, js_getLength,
+        getLength, js_getParentRule, getParentRule, CSSStyleDeclaration,
+        castToCSSStyleDeclaration, gTypeCSSStyleDeclaration)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getPropertyValue\"]($2)"
+        js_getPropertyValue ::
+        CSSStyleDeclaration -> JSString -> IO (Nullable 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 (Maybe result)
+getPropertyValue self propertyName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getPropertyValue (self) (toJSString propertyName)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"removeProperty\"]($2)"
+        js_removeProperty ::
+        CSSStyleDeclaration -> JSString -> IO (Nullable 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 (Maybe result)
+removeProperty self propertyName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_removeProperty (self) (toJSString propertyName)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"setProperty\"]($2, $3, $4)"
+        js_setProperty ::
+        CSSStyleDeclaration ->
+          JSString -> Nullable JSString -> 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 -> Maybe value -> priority -> m ()
+setProperty self propertyName value priority
+  = liftIO
+      (js_setProperty (self) (toJSString propertyName)
+         (toMaybeJSString value)
+         (toJSString priority))
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$1[\"getPropertyShorthand\"]($2)"
+        js_getPropertyShorthand ::
+        CSSStyleDeclaration -> 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 -> propertyName -> m (Maybe result)
+getPropertyShorthand self propertyName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getPropertyShorthand (self) (toJSString propertyName)))
+ 
+foreign import javascript unsafe
+        "($1[\"isPropertyImplicit\"]($2) ? 1 : 0)" js_isPropertyImplicit ::
+        CSSStyleDeclaration -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.isPropertyImplicit Mozilla CSSStyleDeclaration.isPropertyImplicit documentation> 
+isPropertyImplicit ::
+                   (MonadIO m, ToJSString propertyName) =>
+                     CSSStyleDeclaration -> propertyName -> m Bool
+isPropertyImplicit self propertyName
+  = liftIO (js_isPropertyImplicit (self) (toJSString propertyName))
+ 
+foreign import javascript unsafe "$1[\"cssText\"] = $2;"
+        js_setCssText :: CSSStyleDeclaration -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
+setCssText ::
+           (MonadIO m, ToJSString val) =>
+             CSSStyleDeclaration -> Maybe val -> m ()
+setCssText self val
+  = liftIO (js_setCssText (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"cssText\"]" js_getCssText ::
+        CSSStyleDeclaration -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
+getCssText ::
+           (MonadIO m, FromJSString result) =>
+             CSSStyleDeclaration -> m (Maybe result)
+getCssText self
+  = liftIO (fromMaybeJSString <$> (js_getCssText (self)))
+ 
+foreign import javascript unsafe "$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[\"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)))
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,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSStyleRule
+       (js_setSelectorText, setSelectorText, js_getSelectorText,
+        getSelectorText, js_getStyle, getStyle, CSSStyleRule,
+        castToCSSStyleRule, gTypeCSSStyleRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"selectorText\"] = $2;"
+        js_setSelectorText :: CSSStyleRule -> Nullable 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) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        CSSStyleRule -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.style Mozilla CSSStyleRule.style documentation> 
+getStyle ::
+         (MonadIO m) => CSSStyleRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftIO (nullableToMaybe <$> (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,81 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSStyleSheet
+       (js_insertRule, insertRule, js_deleteRule, deleteRule, js_addRule,
+        addRule, js_removeRule, removeRule, js_getOwnerRule, getOwnerRule,
+        js_getCssRules, getCssRules, js_getRules, getRules, CSSStyleSheet,
+        castToCSSStyleSheet, gTypeCSSStyleSheet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
+        js_insertRule :: CSSStyleSheet -> JSString -> Word -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
+insertRule ::
+           (MonadIO m, ToJSString rule) =>
+             CSSStyleSheet -> rule -> Word -> m Word
+insertRule self rule index
+  = liftIO (js_insertRule (self) (toJSString rule) index)
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"addRule\"]($2, $3, $4)"
+        js_addRule ::
+        CSSStyleSheet -> JSString -> JSString -> 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 -> selector -> style -> Word -> m Int
+addRule self selector style index
+  = liftIO
+      (js_addRule (self) (toJSString selector) (toJSString style) index)
+ 
+foreign import javascript unsafe "$1[\"removeRule\"]($2)"
+        js_removeRule :: CSSStyleSheet -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.removeRule Mozilla CSSStyleSheet.removeRule documentation> 
+removeRule :: (MonadIO m) => CSSStyleSheet -> Word -> m ()
+removeRule self index = liftIO (js_removeRule (self) index)
+ 
+foreign import javascript unsafe "$1[\"ownerRule\"]"
+        js_getOwnerRule :: CSSStyleSheet -> IO (Nullable CSSRule)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.ownerRule Mozilla CSSStyleSheet.ownerRule documentation> 
+getOwnerRule :: (MonadIO m) => CSSStyleSheet -> m (Maybe CSSRule)
+getOwnerRule self
+  = liftIO (nullableToMaybe <$> (js_getOwnerRule (self)))
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: CSSStyleSheet -> IO (Nullable CSSRuleList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.cssRules Mozilla CSSStyleSheet.cssRules documentation> 
+getCssRules ::
+            (MonadIO m) => CSSStyleSheet -> m (Maybe CSSRuleList)
+getCssRules self
+  = liftIO (nullableToMaybe <$> (js_getCssRules (self)))
+ 
+foreign import javascript unsafe "$1[\"rules\"]" js_getRules ::
+        CSSStyleSheet -> IO (Nullable CSSRuleList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.rules Mozilla CSSStyleSheet.rules documentation> 
+getRules :: (MonadIO m) => CSSStyleSheet -> m (Maybe CSSRuleList)
+getRules self = liftIO (nullableToMaybe <$> (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,55 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSSupportsRule
+       (js_insertRule, insertRule, js_deleteRule, deleteRule,
+        js_getCssRules, getCssRules, js_getConditionText, getConditionText,
+        CSSSupportsRule, castToCSSSupportsRule, gTypeCSSSupportsRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)
+ 
+foreign import javascript unsafe "$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[\"cssRules\"]" js_getCssRules
+        :: CSSSupportsRule -> IO (Nullable CSSRuleList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.cssRules Mozilla CSSSupportsRule.cssRules documentation> 
+getCssRules ::
+            (MonadIO m) => CSSSupportsRule -> m (Maybe CSSRuleList)
+getCssRules self
+  = liftIO (nullableToMaybe <$> (js_getCssRules (self)))
+ 
+foreign import javascript unsafe "$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,54 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, js_getCssValueType,
+        getCssValueType, CSSValue, castToCSSValue, gTypeCSSValue,
+        IsCSSValue, toCSSValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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 unsafe "$1[\"cssText\"] = $2;"
+        js_setCssText :: CSSValue -> Nullable 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) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CSSValueList
+       (js_item, item, js_getLength, getLength, CSSValueList,
+        castToCSSValueList, gTypeCSSValueList, IsCSSValueList,
+        toCSSValueList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        CSSValueList -> Word -> IO (Nullable CSSValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
+item ::
+     (MonadIO m, IsCSSValueList self) =>
+       self -> Word -> m (Maybe CSSValue)
+item self index
+  = liftIO
+      (nullableToMaybe <$> (js_item (toCSSValueList self) index))
+ 
+foreign import javascript unsafe "$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, IsCSSValueList self) => self -> m Word
+getLength self = liftIO (js_getLength (toCSSValueList 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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CanvasGradient
+       (js_addColorStop, addColorStop, CanvasGradient,
+        castToCanvasGradient, gTypeCanvasGradient)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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/CanvasRenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext
+       (js_getCanvas, getCanvas, CanvasRenderingContext,
+        castToCanvasRenderingContext, gTypeCanvasRenderingContext,
+        IsCanvasRenderingContext, toCanvasRenderingContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"canvas\"]" js_getCanvas ::
+        CanvasRenderingContext -> IO (Nullable HTMLCanvasElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext.canvas Mozilla CanvasRenderingContext.canvas documentation> 
+getCanvas ::
+          (MonadIO m, IsCanvasRenderingContext self) =>
+            self -> m (Maybe HTMLCanvasElement)
+getCanvas self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getCanvas (toCanvasRenderingContext self)))
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,1489 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
+       (js_save, save, js_restore, restore, js_scale, scale, js_rotate,
+        rotate, js_translate, translate, js_transform, transform,
+        js_setTransform, setTransform, js_createLinearGradient,
+        createLinearGradient, js_createRadialGradient,
+        createRadialGradient, js_setLineDash, setLineDash, js_getLineDash,
+        getLineDash, js_clearRect, clearRect, js_fillRect, fillRect,
+        js_beginPath, beginPath, 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_fillPath, fillPath, js_strokePath, strokePath,
+        js_clipPath, clipPath, js_fill, fill, js_stroke, stroke, js_clip,
+        clip, js_isPointInPathPath, isPointInPathPath,
+        js_isPointInStrokePath, isPointInStrokePath, js_isPointInPath,
+        isPointInPath, js_isPointInStroke, isPointInStroke, js_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_drawImageFromCanvas, drawImageFromCanvas,
+        js_drawImageFromCanvasScaled, drawImageFromCanvasScaled,
+        js_drawImageFromCanvasPart, drawImageFromCanvasPart,
+        js_drawImageFromVideo, drawImageFromVideo,
+        js_drawImageFromVideoScaled, drawImageFromVideoScaled,
+        js_drawImageFromVideoPart, drawImageFromVideoPart,
+        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_createPatternFromCanvas,
+        createPatternFromCanvas, js_createPattern, createPattern,
+        js_createImageData, createImageData, js_createImageDataSize,
+        createImageDataSize, js_getImageData, getImageData,
+        js_webkitGetImageDataHD, webkitGetImageDataHD,
+        js_drawFocusIfNeeded, drawFocusIfNeeded, js_drawFocusIfNeededPath,
+        drawFocusIfNeededPath, 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_setWebkitImageSmoothingEnabled,
+        setWebkitImageSmoothingEnabled, js_getWebkitImageSmoothingEnabled,
+        getWebkitImageSmoothingEnabled, CanvasRenderingContext2D,
+        castToCanvasRenderingContext2D, gTypeCanvasRenderingContext2D)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"createLinearGradient\"]($2,\n$3, $4, $5)"
+        js_createLinearGradient ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO (Nullable 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 (Maybe CanvasGradient)
+createLinearGradient self x0 y0 x1 y1
+  = liftIO
+      (nullableToMaybe <$> (js_createLinearGradient (self) x0 y0 x1 y1))
+ 
+foreign import javascript unsafe
+        "$1[\"createRadialGradient\"]($2,\n$3, $4, $5, $6, $7)"
+        js_createRadialGradient ::
+        CanvasRenderingContext2D ->
+          Float ->
+            Float ->
+              Float -> Float -> Float -> Float -> IO (Nullable 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 (Maybe CanvasGradient)
+createRadialGradient self x0 y0 r0 x1 y1 r1
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createRadialGradient (self) x0 y0 r0 x1 y1 r1))
+ 
+foreign import javascript unsafe "$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[\"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)
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"closePath\"]()" js_closePath
+        :: CanvasRenderingContext2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.closePath Mozilla CanvasRenderingContext2D.closePath documentation> 
+closePath :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+closePath self = liftIO (js_closePath (self))
+ 
+foreign import javascript unsafe "$1[\"moveTo\"]($2, $3)" js_moveTo
+        :: CanvasRenderingContext2D -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.moveTo Mozilla CanvasRenderingContext2D.moveTo documentation> 
+moveTo ::
+       (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+moveTo self x y = liftIO (js_moveTo (self) x y)
+ 
+foreign import javascript unsafe "$1[\"lineTo\"]($2, $3)" js_lineTo
+        :: CanvasRenderingContext2D -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineTo Mozilla CanvasRenderingContext2D.lineTo documentation> 
+lineTo ::
+       (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+lineTo self x y = liftIO (js_lineTo (self) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"quadraticCurveTo\"]($2, $3,\n$4, $5)" js_quadraticCurveTo ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.quadraticCurveTo Mozilla CanvasRenderingContext2D.quadraticCurveTo documentation> 
+quadraticCurveTo ::
+                 (MonadIO m) =>
+                   CanvasRenderingContext2D ->
+                     Float -> Float -> Float -> Float -> m ()
+quadraticCurveTo self cpx cpy x y
+  = liftIO (js_quadraticCurveTo (self) cpx cpy x y)
+ 
+foreign import javascript unsafe
+        "$1[\"bezierCurveTo\"]($2, $3, $4,\n$5, $6, $7)" js_bezierCurveTo
+        ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.bezierCurveTo Mozilla CanvasRenderingContext2D.bezierCurveTo documentation> 
+bezierCurveTo ::
+              (MonadIO m) =>
+                CanvasRenderingContext2D ->
+                  Float -> Float -> Float -> Float -> Float -> Float -> m ()
+bezierCurveTo self cp1x cp1y cp2x cp2y x y
+  = liftIO (js_bezierCurveTo (self) cp1x cp1y cp2x cp2y x y)
+ 
+foreign import javascript unsafe
+        "$1[\"arcTo\"]($2, $3, $4, $5, $6)" js_arcTo ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.arcTo Mozilla CanvasRenderingContext2D.arcTo documentation> 
+arcTo ::
+      (MonadIO m) =>
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> m ()
+arcTo self x1 y1 x2 y2 radius
+  = liftIO (js_arcTo (self) x1 y1 x2 y2 radius)
+ 
+foreign import javascript unsafe "$1[\"rect\"]($2, $3, $4, $5)"
+        js_rect ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.rect Mozilla CanvasRenderingContext2D.rect documentation> 
+rect ::
+     (MonadIO m) =>
+       CanvasRenderingContext2D ->
+         Float -> Float -> Float -> Float -> m ()
+rect self x y width height
+  = liftIO (js_rect (self) x y width height)
+ 
+foreign import javascript unsafe
+        "$1[\"arc\"]($2, $3, $4, $5, $6,\n$7)" js_arc ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.arc Mozilla CanvasRenderingContext2D.arc documentation> 
+arc ::
+    (MonadIO m) =>
+      CanvasRenderingContext2D ->
+        Float -> Float -> Float -> Float -> Float -> Bool -> m ()
+arc self x y radius startAngle endAngle anticlockwise
+  = liftIO
+      (js_arc (self) x y radius startAngle endAngle anticlockwise)
+ 
+foreign import javascript unsafe "$1[\"fill\"]($2, $3)" js_fillPath
+        :: CanvasRenderingContext2D -> Nullable Path2D -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
+fillPath ::
+         (MonadIO m) =>
+           CanvasRenderingContext2D ->
+             Maybe Path2D -> CanvasWindingRule -> m ()
+fillPath self path winding
+  = liftIO
+      (js_fillPath (self) (maybeToNullable path) (pToJSVal winding))
+ 
+foreign import javascript unsafe "$1[\"stroke\"]($2)" js_strokePath
+        :: CanvasRenderingContext2D -> Nullable Path2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
+strokePath ::
+           (MonadIO m) => CanvasRenderingContext2D -> Maybe Path2D -> m ()
+strokePath self path
+  = liftIO (js_strokePath (self) (maybeToNullable path))
+ 
+foreign import javascript unsafe "$1[\"clip\"]($2, $3)" js_clipPath
+        :: CanvasRenderingContext2D -> Nullable Path2D -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
+clipPath ::
+         (MonadIO m) =>
+           CanvasRenderingContext2D ->
+             Maybe Path2D -> CanvasWindingRule -> m ()
+clipPath self path winding
+  = liftIO
+      (js_clipPath (self) (maybeToNullable path) (pToJSVal winding))
+ 
+foreign import javascript unsafe "$1[\"fill\"]($2)" js_fill ::
+        CanvasRenderingContext2D -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
+fill ::
+     (MonadIO m) =>
+       CanvasRenderingContext2D -> CanvasWindingRule -> m ()
+fill self winding = liftIO (js_fill (self) (pToJSVal winding))
+ 
+foreign import javascript unsafe "$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[\"clip\"]($2)" js_clip ::
+        CanvasRenderingContext2D -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
+clip ::
+     (MonadIO m) =>
+       CanvasRenderingContext2D -> CanvasWindingRule -> m ()
+clip self winding = liftIO (js_clip (self) (pToJSVal winding))
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInPath\"]($2, $3, $4,\n$5) ? 1 : 0)"
+        js_isPointInPathPath ::
+        CanvasRenderingContext2D ->
+          Nullable Path2D -> Float -> Float -> JSVal -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
+isPointInPathPath ::
+                  (MonadIO m) =>
+                    CanvasRenderingContext2D ->
+                      Maybe Path2D -> Float -> Float -> CanvasWindingRule -> m Bool
+isPointInPathPath self path x y winding
+  = liftIO
+      (js_isPointInPathPath (self) (maybeToNullable path) x y
+         (pToJSVal winding))
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInStroke\"]($2, $3,\n$4) ? 1 : 0)"
+        js_isPointInStrokePath ::
+        CanvasRenderingContext2D ->
+          Nullable Path2D -> Float -> Float -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
+isPointInStrokePath ::
+                    (MonadIO m) =>
+                      CanvasRenderingContext2D ->
+                        Maybe Path2D -> Float -> Float -> m Bool
+isPointInStrokePath self path x y
+  = liftIO (js_isPointInStrokePath (self) (maybeToNullable path) x y)
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInPath\"]($2, $3,\n$4) ? 1 : 0)" js_isPointInPath ::
+        CanvasRenderingContext2D -> Float -> Float -> JSVal -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
+isPointInPath ::
+              (MonadIO m) =>
+                CanvasRenderingContext2D ->
+                  Float -> Float -> CanvasWindingRule -> m Bool
+isPointInPath self x y winding
+  = liftIO (js_isPointInPath (self) x y (pToJSVal winding))
+ 
+foreign import javascript unsafe
+        "($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)
+ 
+foreign import javascript unsafe "$1[\"measureText\"]($2)"
+        js_measureText ::
+        CanvasRenderingContext2D -> JSString -> IO (Nullable TextMetrics)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
+measureText ::
+            (MonadIO m, ToJSString text) =>
+              CanvasRenderingContext2D -> text -> m (Maybe TextMetrics)
+measureText self text
+  = liftIO
+      (nullableToMaybe <$> (js_measureText (self) (toJSString text)))
+ 
+foreign import javascript unsafe "$1[\"setAlpha\"]($2)" js_setAlpha
+        :: CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setAlpha Mozilla CanvasRenderingContext2D.setAlpha documentation> 
+setAlpha ::
+         (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setAlpha self alpha = liftIO (js_setAlpha (self) alpha)
+ 
+foreign import javascript unsafe
+        "$1[\"setCompositeOperation\"]($2)" js_setCompositeOperation ::
+        CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setCompositeOperation Mozilla CanvasRenderingContext2D.setCompositeOperation documentation> 
+setCompositeOperation ::
+                      (MonadIO m, ToJSString compositeOperation) =>
+                        CanvasRenderingContext2D -> compositeOperation -> m ()
+setCompositeOperation self compositeOperation
+  = liftIO
+      (js_setCompositeOperation (self) (toJSString compositeOperation))
+ 
+foreign import javascript unsafe "$1[\"setLineWidth\"]($2)"
+        js_setLineWidthFunction ::
+        CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineWidth Mozilla CanvasRenderingContext2D.setLineWidth documentation> 
+setLineWidthFunction ::
+                     (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setLineWidthFunction self width
+  = liftIO (js_setLineWidthFunction (self) width)
+ 
+foreign import javascript unsafe "$1[\"setLineCap\"]($2)"
+        js_setLineCapFunction ::
+        CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineCap Mozilla CanvasRenderingContext2D.setLineCap documentation> 
+setLineCapFunction ::
+                   (MonadIO m, ToJSString cap) =>
+                     CanvasRenderingContext2D -> cap -> m ()
+setLineCapFunction self cap
+  = liftIO (js_setLineCapFunction (self) (toJSString cap))
+ 
+foreign import javascript unsafe "$1[\"setLineJoin\"]($2)"
+        js_setLineJoinFunction ::
+        CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineJoin Mozilla CanvasRenderingContext2D.setLineJoin documentation> 
+setLineJoinFunction ::
+                    (MonadIO m, ToJSString join) =>
+                      CanvasRenderingContext2D -> join -> m ()
+setLineJoinFunction self join
+  = liftIO (js_setLineJoinFunction (self) (toJSString join))
+ 
+foreign import javascript unsafe "$1[\"setMiterLimit\"]($2)"
+        js_setMiterLimitFunction ::
+        CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setMiterLimit Mozilla CanvasRenderingContext2D.setMiterLimit documentation> 
+setMiterLimitFunction ::
+                      (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setMiterLimitFunction self limit
+  = liftIO (js_setMiterLimitFunction (self) limit)
+ 
+foreign import javascript unsafe "$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[\"fillText\"]($2, $3, $4, $5)"
+        js_fillText ::
+        CanvasRenderingContext2D ->
+          JSString -> Float -> Float -> 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 -> Float -> m ()
+fillText self text x y maxWidth
+  = liftIO (js_fillText (self) (toJSString text) x y maxWidth)
+ 
+foreign import javascript unsafe
+        "$1[\"strokeText\"]($2, $3, $4, $5)" js_strokeText ::
+        CanvasRenderingContext2D ->
+          JSString -> Float -> Float -> 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 -> Float -> m ()
+strokeText self text x y maxWidth
+  = liftIO (js_strokeText (self) (toJSString text) x y maxWidth)
+ 
+foreign import javascript unsafe "$1[\"setStrokeColor\"]($2, $3)"
+        js_setStrokeColor ::
+        CanvasRenderingContext2D -> JSString -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColor ::
+               (MonadIO m, ToJSString color) =>
+                 CanvasRenderingContext2D -> color -> Float -> m ()
+setStrokeColor self color alpha
+  = liftIO (js_setStrokeColor (self) (toJSString color) alpha)
+ 
+foreign import javascript unsafe "$1[\"setStrokeColor\"]($2, $3)"
+        js_setStrokeColorGray ::
+        CanvasRenderingContext2D -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColorGray ::
+                   (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+setStrokeColorGray self grayLevel alpha
+  = liftIO (js_setStrokeColorGray (self) grayLevel alpha)
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"setFillColor\"]($2, $3)"
+        js_setFillColor ::
+        CanvasRenderingContext2D -> JSString -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColor ::
+             (MonadIO m, ToJSString color) =>
+               CanvasRenderingContext2D -> color -> Float -> m ()
+setFillColor self color alpha
+  = liftIO (js_setFillColor (self) (toJSString color) alpha)
+ 
+foreign import javascript unsafe "$1[\"setFillColor\"]($2, $3)"
+        js_setFillColorGray ::
+        CanvasRenderingContext2D -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColorGray ::
+                 (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+setFillColorGray self grayLevel alpha
+  = liftIO (js_setFillColorGray (self) grayLevel alpha)
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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 unsafe "$1[\"drawImage\"]($2, $3, $4)"
+        js_drawImage ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLImageElement -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImage ::
+          (MonadIO m) =>
+            CanvasRenderingContext2D ->
+              Maybe HTMLImageElement -> Float -> Float -> m ()
+drawImage self image x y
+  = liftIO (js_drawImage (self) (maybeToNullable image) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6)" js_drawImageScaled ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLImageElement ->
+            Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageScaled ::
+                (MonadIO m) =>
+                  CanvasRenderingContext2D ->
+                    Maybe HTMLImageElement -> Float -> Float -> Float -> Float -> m ()
+drawImageScaled self image x y width height
+  = liftIO
+      (js_drawImageScaled (self) (maybeToNullable image) x y width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
+        js_drawImagePart ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLImageElement ->
+            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) =>
+                CanvasRenderingContext2D ->
+                  Maybe HTMLImageElement ->
+                    Float ->
+                      Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+drawImagePart self image sx sy sw sh dx dy dw dh
+  = liftIO
+      (js_drawImagePart (self) (maybeToNullable image) sx sy sw sh dx dy
+         dw
+         dh)
+ 
+foreign import javascript unsafe "$1[\"drawImage\"]($2, $3, $4)"
+        js_drawImageFromCanvas ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLCanvasElement -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromCanvas ::
+                    (MonadIO m) =>
+                      CanvasRenderingContext2D ->
+                        Maybe HTMLCanvasElement -> Float -> Float -> m ()
+drawImageFromCanvas self canvas x y
+  = liftIO
+      (js_drawImageFromCanvas (self) (maybeToNullable canvas) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6)"
+        js_drawImageFromCanvasScaled ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLCanvasElement ->
+            Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromCanvasScaled ::
+                          (MonadIO m) =>
+                            CanvasRenderingContext2D ->
+                              Maybe HTMLCanvasElement -> Float -> Float -> Float -> Float -> m ()
+drawImageFromCanvasScaled self canvas x y width height
+  = liftIO
+      (js_drawImageFromCanvasScaled (self) (maybeToNullable canvas) x y
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
+        js_drawImageFromCanvasPart ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLCanvasElement ->
+            Float ->
+              Float ->
+                Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromCanvasPart ::
+                        (MonadIO m) =>
+                          CanvasRenderingContext2D ->
+                            Maybe HTMLCanvasElement ->
+                              Float ->
+                                Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+drawImageFromCanvasPart self canvas sx sy sw sh dx dy dw dh
+  = liftIO
+      (js_drawImageFromCanvasPart (self) (maybeToNullable canvas) sx sy
+         sw
+         sh
+         dx
+         dy
+         dw
+         dh)
+ 
+foreign import javascript unsafe "$1[\"drawImage\"]($2, $3, $4)"
+        js_drawImageFromVideo ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLVideoElement -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromVideo ::
+                   (MonadIO m) =>
+                     CanvasRenderingContext2D ->
+                       Maybe HTMLVideoElement -> Float -> Float -> m ()
+drawImageFromVideo self video x y
+  = liftIO (js_drawImageFromVideo (self) (maybeToNullable video) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6)"
+        js_drawImageFromVideoScaled ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLVideoElement ->
+            Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromVideoScaled ::
+                         (MonadIO m) =>
+                           CanvasRenderingContext2D ->
+                             Maybe HTMLVideoElement -> Float -> Float -> Float -> Float -> m ()
+drawImageFromVideoScaled self video x y width height
+  = liftIO
+      (js_drawImageFromVideoScaled (self) (maybeToNullable video) x y
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
+        js_drawImageFromVideoPart ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLVideoElement ->
+            Float ->
+              Float ->
+                Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageFromVideoPart ::
+                       (MonadIO m) =>
+                         CanvasRenderingContext2D ->
+                           Maybe HTMLVideoElement ->
+                             Float ->
+                               Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+drawImageFromVideoPart self video sx sy sw sh dx dy dw dh
+  = liftIO
+      (js_drawImageFromVideoPart (self) (maybeToNullable video) sx sy sw
+         sh
+         dx
+         dy
+         dw
+         dh)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImageFromRect\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11)"
+        js_drawImageFromRect ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLImageElement ->
+            Float ->
+              Float ->
+                Float ->
+                  Float -> Float -> Float -> Float -> Float -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImageFromRect Mozilla CanvasRenderingContext2D.drawImageFromRect documentation> 
+drawImageFromRect ::
+                  (MonadIO m, ToJSString compositeOperation) =>
+                    CanvasRenderingContext2D ->
+                      Maybe HTMLImageElement ->
+                        Float ->
+                          Float ->
+                            Float ->
+                              Float ->
+                                Float -> Float -> Float -> Float -> compositeOperation -> m ()
+drawImageFromRect self image sx sy sw sh dx dy dw dh
+  compositeOperation
+  = liftIO
+      (js_drawImageFromRect (self) (maybeToNullable image) sx sy sw sh dx
+         dy
+         dw
+         dh
+         (toJSString compositeOperation))
+ 
+foreign import javascript unsafe
+        "$1[\"setShadow\"]($2, $3, $4, $5,\n$6)" js_setShadow ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> JSString -> 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 -> color -> Float -> m ()
+setShadow self width height blur color alpha
+  = liftIO
+      (js_setShadow (self) width height blur (toJSString color) alpha)
+ 
+foreign import javascript unsafe
+        "$1[\"setShadow\"]($2, $3, $4, $5,\n$6)" js_setShadowGray ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> 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 -> Float -> m ()
+setShadowGray self width height blur grayLevel alpha
+  = liftIO
+      (js_setShadowGray (self) width height blur grayLevel alpha)
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"putImageData\"]($2, $3, $4)"
+        js_putImageData ::
+        CanvasRenderingContext2D ->
+          Nullable ImageData -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
+putImageData ::
+             (MonadIO m) =>
+               CanvasRenderingContext2D ->
+                 Maybe ImageData -> Float -> Float -> m ()
+putImageData self imagedata dx dy
+  = liftIO (js_putImageData (self) (maybeToNullable imagedata) dx dy)
+ 
+foreign import javascript unsafe
+        "$1[\"putImageData\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_putImageDataDirty ::
+        CanvasRenderingContext2D ->
+          Nullable 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 ->
+                      Maybe ImageData ->
+                        Float -> Float -> Float -> Float -> Float -> Float -> m ()
+putImageDataDirty self imagedata dx dy dirtyX dirtyY dirtyWidth
+  dirtyHeight
+  = liftIO
+      (js_putImageDataDirty (self) (maybeToNullable imagedata) dx dy
+         dirtyX
+         dirtyY
+         dirtyWidth
+         dirtyHeight)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitPutImageDataHD\"]($2,\n$3, $4)" js_webkitPutImageDataHD
+        ::
+        CanvasRenderingContext2D ->
+          Nullable ImageData -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
+webkitPutImageDataHD ::
+                     (MonadIO m) =>
+                       CanvasRenderingContext2D ->
+                         Maybe ImageData -> Float -> Float -> m ()
+webkitPutImageDataHD self imagedata dx dy
+  = liftIO
+      (js_webkitPutImageDataHD (self) (maybeToNullable imagedata) dx dy)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitPutImageDataHD\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_webkitPutImageDataHDDirty ::
+        CanvasRenderingContext2D ->
+          Nullable 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 ->
+                              Maybe ImageData ->
+                                Float -> Float -> Float -> Float -> Float -> Float -> m ()
+webkitPutImageDataHDDirty self imagedata dx dy dirtyX dirtyY
+  dirtyWidth dirtyHeight
+  = liftIO
+      (js_webkitPutImageDataHDDirty (self) (maybeToNullable imagedata) dx
+         dy
+         dirtyX
+         dirtyY
+         dirtyWidth
+         dirtyHeight)
+ 
+foreign import javascript unsafe "$1[\"createPattern\"]($2, $3)"
+        js_createPatternFromCanvas ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLCanvasElement ->
+            Nullable JSString -> IO (Nullable CanvasPattern)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPatternFromCanvas ::
+                        (MonadIO m, ToJSString repetitionType) =>
+                          CanvasRenderingContext2D ->
+                            Maybe HTMLCanvasElement ->
+                              Maybe repetitionType -> m (Maybe CanvasPattern)
+createPatternFromCanvas self canvas repetitionType
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createPatternFromCanvas (self) (maybeToNullable canvas)
+            (toMaybeJSString repetitionType)))
+ 
+foreign import javascript unsafe "$1[\"createPattern\"]($2, $3)"
+        js_createPattern ::
+        CanvasRenderingContext2D ->
+          Nullable HTMLImageElement ->
+            Nullable JSString -> IO (Nullable CanvasPattern)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPattern ::
+              (MonadIO m, ToJSString repetitionType) =>
+                CanvasRenderingContext2D ->
+                  Maybe HTMLImageElement ->
+                    Maybe repetitionType -> m (Maybe CanvasPattern)
+createPattern self image repetitionType
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createPattern (self) (maybeToNullable image)
+            (toMaybeJSString repetitionType)))
+ 
+foreign import javascript unsafe "$1[\"createImageData\"]($2)"
+        js_createImageData ::
+        CanvasRenderingContext2D ->
+          Nullable ImageData -> IO (Nullable ImageData)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageData ::
+                (MonadIO m) =>
+                  CanvasRenderingContext2D -> Maybe ImageData -> m (Maybe ImageData)
+createImageData self imagedata
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createImageData (self) (maybeToNullable imagedata)))
+ 
+foreign import javascript unsafe "$1[\"createImageData\"]($2, $3)"
+        js_createImageDataSize ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> IO (Nullable ImageData)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageDataSize ::
+                    (MonadIO m) =>
+                      CanvasRenderingContext2D -> Float -> Float -> m (Maybe ImageData)
+createImageDataSize self sw sh
+  = liftIO
+      (nullableToMaybe <$> (js_createImageDataSize (self) sw sh))
+ 
+foreign import javascript unsafe
+        "$1[\"getImageData\"]($2, $3, $4,\n$5)" js_getImageData ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO (Nullable 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 (Maybe ImageData)
+getImageData self sx sy sw sh
+  = liftIO (nullableToMaybe <$> (js_getImageData (self) sx sy sw sh))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetImageDataHD\"]($2,\n$3, $4, $5)"
+        js_webkitGetImageDataHD ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO (Nullable 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 (Maybe ImageData)
+webkitGetImageDataHD self sx sy sw sh
+  = liftIO
+      (nullableToMaybe <$> (js_webkitGetImageDataHD (self) sx sy sw sh))
+ 
+foreign import javascript unsafe "$1[\"drawFocusIfNeeded\"]($2)"
+        js_drawFocusIfNeeded ::
+        CanvasRenderingContext2D -> Nullable Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
+drawFocusIfNeeded ::
+                  (MonadIO m, IsElement element) =>
+                    CanvasRenderingContext2D -> Maybe element -> m ()
+drawFocusIfNeeded self element
+  = liftIO
+      (js_drawFocusIfNeeded (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "$1[\"drawFocusIfNeeded\"]($2, $3)" js_drawFocusIfNeededPath ::
+        CanvasRenderingContext2D ->
+          Nullable Path2D -> Nullable Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
+drawFocusIfNeededPath ::
+                      (MonadIO m, IsElement element) =>
+                        CanvasRenderingContext2D -> Maybe Path2D -> Maybe element -> m ()
+drawFocusIfNeededPath self path element
+  = liftIO
+      (js_drawFocusIfNeededPath (self) (maybeToNullable path)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe "$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[\"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[\"globalCompositeOperation\"] = $2;"
+        js_setGlobalCompositeOperation ::
+        CanvasRenderingContext2D -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
+setGlobalCompositeOperation ::
+                            (MonadIO m, ToJSString val) =>
+                              CanvasRenderingContext2D -> Maybe val -> m ()
+setGlobalCompositeOperation self val
+  = liftIO
+      (js_setGlobalCompositeOperation (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"globalCompositeOperation\"]"
+        js_getGlobalCompositeOperation ::
+        CanvasRenderingContext2D -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
+getGlobalCompositeOperation ::
+                            (MonadIO m, FromJSString result) =>
+                              CanvasRenderingContext2D -> m (Maybe result)
+getGlobalCompositeOperation self
+  = liftIO
+      (fromMaybeJSString <$> (js_getGlobalCompositeOperation (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"lineCap\"] = $2;"
+        js_setLineCap ::
+        CanvasRenderingContext2D -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
+setLineCap ::
+           (MonadIO m, ToJSString val) =>
+             CanvasRenderingContext2D -> Maybe val -> m ()
+setLineCap self val
+  = liftIO (js_setLineCap (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"lineCap\"]" js_getLineCap ::
+        CanvasRenderingContext2D -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
+getLineCap ::
+           (MonadIO m, FromJSString result) =>
+             CanvasRenderingContext2D -> m (Maybe result)
+getLineCap self
+  = liftIO (fromMaybeJSString <$> (js_getLineCap (self)))
+ 
+foreign import javascript unsafe "$1[\"lineJoin\"] = $2;"
+        js_setLineJoin ::
+        CanvasRenderingContext2D -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
+setLineJoin ::
+            (MonadIO m, ToJSString val) =>
+              CanvasRenderingContext2D -> Maybe val -> m ()
+setLineJoin self val
+  = liftIO (js_setLineJoin (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"lineJoin\"]" js_getLineJoin
+        :: CanvasRenderingContext2D -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
+getLineJoin ::
+            (MonadIO m, FromJSString result) =>
+              CanvasRenderingContext2D -> m (Maybe result)
+getLineJoin self
+  = liftIO (fromMaybeJSString <$> (js_getLineJoin (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"shadowColor\"] = $2;"
+        js_setShadowColor ::
+        CanvasRenderingContext2D -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
+setShadowColor ::
+               (MonadIO m, ToJSString val) =>
+                 CanvasRenderingContext2D -> Maybe val -> m ()
+setShadowColor self val
+  = liftIO (js_setShadowColor (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"shadowColor\"]"
+        js_getShadowColor ::
+        CanvasRenderingContext2D -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
+getShadowColor ::
+               (MonadIO m, FromJSString result) =>
+                 CanvasRenderingContext2D -> m (Maybe result)
+getShadowColor self
+  = liftIO (fromMaybeJSString <$> (js_getShadowColor (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"webkitLineDash\"] = $2;"
+        js_setWebkitLineDash ::
+        CanvasRenderingContext2D -> Nullable Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
+setWebkitLineDash ::
+                  (MonadIO m, IsArray val) =>
+                    CanvasRenderingContext2D -> Maybe val -> m ()
+setWebkitLineDash self val
+  = liftIO
+      (js_setWebkitLineDash (self) (maybeToNullable (fmap toArray val)))
+ 
+foreign import javascript unsafe "$1[\"webkitLineDash\"]"
+        js_getWebkitLineDash ::
+        CanvasRenderingContext2D -> IO (Nullable Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
+getWebkitLineDash ::
+                  (MonadIO m) => CanvasRenderingContext2D -> m (Maybe Array)
+getWebkitLineDash self
+  = liftIO (nullableToMaybe <$> (js_getWebkitLineDash (self)))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"strokeStyle\"] = $2;"
+        js_setStrokeStyle ::
+        CanvasRenderingContext2D -> Nullable CanvasStyle -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
+setStrokeStyle ::
+               (MonadIO m, IsCanvasStyle val) =>
+                 CanvasRenderingContext2D -> Maybe val -> m ()
+setStrokeStyle self val
+  = liftIO
+      (js_setStrokeStyle (self)
+         (maybeToNullable (fmap toCanvasStyle val)))
+ 
+foreign import javascript unsafe "$1[\"strokeStyle\"]"
+        js_getStrokeStyle ::
+        CanvasRenderingContext2D -> IO (Nullable CanvasStyle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
+getStrokeStyle ::
+               (MonadIO m) => CanvasRenderingContext2D -> m (Maybe CanvasStyle)
+getStrokeStyle self
+  = liftIO (nullableToMaybe <$> (js_getStrokeStyle (self)))
+ 
+foreign import javascript unsafe "$1[\"fillStyle\"] = $2;"
+        js_setFillStyle ::
+        CanvasRenderingContext2D -> Nullable CanvasStyle -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
+setFillStyle ::
+             (MonadIO m, IsCanvasStyle val) =>
+               CanvasRenderingContext2D -> Maybe val -> m ()
+setFillStyle self val
+  = liftIO
+      (js_setFillStyle (self) (maybeToNullable (fmap toCanvasStyle val)))
+ 
+foreign import javascript unsafe "$1[\"fillStyle\"]"
+        js_getFillStyle ::
+        CanvasRenderingContext2D -> IO (Nullable CanvasStyle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
+getFillStyle ::
+             (MonadIO m) => CanvasRenderingContext2D -> m (Maybe CanvasStyle)
+getFillStyle self
+  = liftIO (nullableToMaybe <$> (js_getFillStyle (self)))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CapabilityRange.hs b/src/GHCJS/DOM/JSFFI/Generated/CapabilityRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CapabilityRange.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CapabilityRange
+       (js_getMax, getMax, js_getMin, getMin, js_getSupported,
+        getSupported, CapabilityRange, castToCapabilityRange,
+        gTypeCapabilityRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"max\"]" js_getMax ::
+        CapabilityRange -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.max Mozilla CapabilityRange.max documentation> 
+getMax :: (MonadIO m) => CapabilityRange -> m JSVal
+getMax self = liftIO (js_getMax (self))
+ 
+foreign import javascript unsafe "$1[\"min\"]" js_getMin ::
+        CapabilityRange -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.min Mozilla CapabilityRange.min documentation> 
+getMin :: (MonadIO m) => CapabilityRange -> m JSVal
+getMin self = liftIO (js_getMin (self))
+ 
+foreign import javascript unsafe "($1[\"supported\"] ? 1 : 0)"
+        js_getSupported :: CapabilityRange -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.supported Mozilla CapabilityRange.supported documentation> 
+getSupported :: (MonadIO m) => CapabilityRange -> m Bool
+getSupported self = liftIO (js_getSupported (self))
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,107 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CharacterData
+       (js_substringData, substringData, js_appendData, appendData,
+        js_insertData, insertData, js_deleteData, deleteData,
+        js_replaceData, replaceData, js_setData, setData, js_getData,
+        getData, js_getLength, getLength, CharacterData,
+        castToCharacterData, gTypeCharacterData, IsCharacterData,
+        toCharacterData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"substringData\"]($2, $3)"
+        js_substringData ::
+        CharacterData -> Word -> Word -> IO (Nullable 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 (Maybe result)
+substringData self offset length
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_substringData (toCharacterData self) offset length))
+ 
+foreign import javascript unsafe "$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 unsafe "$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 unsafe "$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 length
+  = liftIO (js_deleteData (toCharacterData self) offset length)
+ 
+foreign import javascript unsafe "$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 length data'
+  = liftIO
+      (js_replaceData (toCharacterData self) offset length
+         (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"data\"] = $2;" js_setData ::
+        CharacterData -> Nullable 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 -> Maybe val -> m ()
+setData self val
+  = liftIO (js_setData (toCharacterData self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"data\"]" js_getData ::
+        CharacterData -> IO (Nullable 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 (Maybe result)
+getData self
+  = liftIO
+      (fromMaybeJSString <$> (js_getData (toCharacterData self)))
+ 
+foreign import javascript unsafe "$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,25 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ChildNode
+       (js_remove, remove, ChildNode, castToChildNode, gTypeChildNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"remove\"]()" js_remove ::
+        ChildNode -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove Mozilla ChildNode.remove documentation> 
+remove :: (MonadIO m) => ChildNode -> m ()
+remove self = liftIO (js_remove (self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClientRect.hs b/src/GHCJS/DOM/JSFFI/Generated/ClientRect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClientRect.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ClientRect
+       (js_getTop, getTop, js_getRight, getRight, js_getBottom, getBottom,
+        js_getLeft, getLeft, js_getWidth, getWidth, js_getHeight,
+        getHeight, ClientRect, castToClientRect, gTypeClientRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"top\"]" js_getTop ::
+        ClientRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.top Mozilla ClientRect.top documentation> 
+getTop :: (MonadIO m) => ClientRect -> m Float
+getTop self = liftIO (js_getTop (self))
+ 
+foreign import javascript unsafe "$1[\"right\"]" js_getRight ::
+        ClientRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.right Mozilla ClientRect.right documentation> 
+getRight :: (MonadIO m) => ClientRect -> m Float
+getRight self = liftIO (js_getRight (self))
+ 
+foreign import javascript unsafe "$1[\"bottom\"]" js_getBottom ::
+        ClientRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.bottom Mozilla ClientRect.bottom documentation> 
+getBottom :: (MonadIO m) => ClientRect -> m Float
+getBottom self = liftIO (js_getBottom (self))
+ 
+foreign import javascript unsafe "$1[\"left\"]" js_getLeft ::
+        ClientRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.left Mozilla ClientRect.left documentation> 
+getLeft :: (MonadIO m) => ClientRect -> m Float
+getLeft self = liftIO (js_getLeft (self))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        ClientRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.width Mozilla ClientRect.width documentation> 
+getWidth :: (MonadIO m) => ClientRect -> m Float
+getWidth self = liftIO (js_getWidth (self))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        ClientRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.height Mozilla ClientRect.height documentation> 
+getHeight :: (MonadIO m) => ClientRect -> m Float
+getHeight self = liftIO (js_getHeight (self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClientRectList.hs b/src/GHCJS/DOM/JSFFI/Generated/ClientRectList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClientRectList.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ClientRectList
+       (js_item, item, js_getLength, getLength, ClientRectList,
+        castToClientRectList, gTypeClientRectList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        ClientRectList -> Word -> IO (Nullable ClientRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList.item Mozilla ClientRectList.item documentation> 
+item ::
+     (MonadIO m) => ClientRectList -> Word -> m (Maybe ClientRect)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        ClientRectList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList.length Mozilla ClientRectList.length documentation> 
+getLength :: (MonadIO m) => ClientRectList -> m Word
+getLength self = liftIO (js_getLength (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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CloseEvent
+       (js_getWasClean, getWasClean, js_getCode, getCode, js_getReason,
+        getReason, CloseEvent, castToCloseEvent, gTypeCloseEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "($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[\"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[\"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,87 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost
+       (js_clearConsoleMessages, clearConsoleMessages, js_copyText,
+        copyText, js_inspect, inspect, js_inspectedObject, inspectedObject,
+        js_getEventListeners, getEventListeners, js_databaseId, databaseId,
+        js_storageId, storageId, CommandLineAPIHost,
+        castToCommandLineAPIHost, gTypeCommandLineAPIHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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) => CommandLineAPIHost -> JSVal -> JSVal -> m ()
+inspect self objectId hints
+  = liftIO (js_inspect (self) objectId hints)
+ 
+foreign import javascript unsafe "$1[\"inspectedObject\"]($2)"
+        js_inspectedObject :: CommandLineAPIHost -> Int -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
+inspectedObject ::
+                (MonadIO m) => CommandLineAPIHost -> Int -> m JSVal
+inspectedObject self num = liftIO (js_inspectedObject (self) num)
+ 
+foreign import javascript unsafe "$1[\"getEventListeners\"]($2)"
+        js_getEventListeners ::
+        CommandLineAPIHost -> Nullable Node -> IO (Nullable Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
+getEventListeners ::
+                  (MonadIO m, IsNode node) =>
+                    CommandLineAPIHost -> Maybe node -> m (Maybe Array)
+getEventListeners self node
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getEventListeners (self) (maybeToNullable (fmap toNode node))))
+ 
+foreign import javascript unsafe "$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, FromJSString result) =>
+             CommandLineAPIHost -> JSVal -> m result
+databaseId self database
+  = liftIO (fromJSString <$> (js_databaseId (self) database))
+ 
+foreign import javascript unsafe "$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, FromJSString result) =>
+            CommandLineAPIHost -> JSVal -> m result
+storageId self storage
+  = liftIO (fromJSString <$> (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,25 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Comment
+       (js_newComment, newComment, Comment, castToComment, gTypeComment)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"Comment\"]($1)"
+        js_newComment :: JSString -> IO Comment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation> 
+newComment :: (MonadIO m, ToJSString data') => data' -> m Comment
+newComment data' = liftIO (js_newComment (toJSString 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,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CompositionEvent
+       (js_initCompositionEvent, initCompositionEvent, js_getData,
+        getData, CompositionEvent, castToCompositionEvent,
+        gTypeCompositionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initCompositionEvent\"]($2,\n$3, $4, $5, $6)"
+        js_initCompositionEvent ::
+        CompositionEvent ->
+          JSString -> Bool -> Bool -> Nullable Window -> 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 ->
+                         typeArg -> Bool -> Bool -> Maybe Window -> dataArg -> m ()
+initCompositionEvent self typeArg canBubbleArg cancelableArg
+  viewArg dataArg
+  = liftIO
+      (js_initCompositionEvent (self) (toJSString typeArg) canBubbleArg
+         cancelableArg
+         (maybeToNullable viewArg)
+         (toJSString dataArg))
+ 
+foreign import javascript unsafe "$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,50 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ConvolverNode
+       (js_setBuffer, setBuffer, js_getBuffer, getBuffer, js_setNormalize,
+        setNormalize, js_getNormalize, getNormalize, ConvolverNode,
+        castToConvolverNode, gTypeConvolverNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"buffer\"] = $2;"
+        js_setBuffer :: ConvolverNode -> Nullable 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) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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,76 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Coordinates
+       (js_getLatitude, getLatitude, js_getLongitude, getLongitude,
+        js_getAltitude, getAltitude, js_getAccuracy, getAccuracy,
+        js_getAltitudeAccuracy, getAltitudeAccuracy, js_getHeading,
+        getHeading, js_getSpeed, getSpeed, Coordinates, castToCoordinates,
+        gTypeCoordinates)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"altitude\"]" js_getAltitude
+        :: Coordinates -> IO JSVal
+
+-- | <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 ((js_getAltitude (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$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[\"altitudeAccuracy\"]"
+        js_getAltitudeAccuracy :: Coordinates -> IO JSVal
+
+-- | <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 ((js_getAltitudeAccuracy (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"heading\"]" js_getHeading ::
+        Coordinates -> IO JSVal
+
+-- | <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 ((js_getHeading (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"speed\"]" js_getSpeed ::
+        Coordinates -> IO JSVal
+
+-- | <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 ((js_getSpeed (self)) >>= fromJSValUnchecked)
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,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Counter
+       (js_getIdentifier, getIdentifier, js_getListStyle, getListStyle,
+        js_getSeparator, getSeparator, Counter, castToCounter,
+        gTypeCounter)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Crypto
+       (js_getRandomValues, getRandomValues, js_getWebkitSubtle,
+        getWebkitSubtle, Crypto, castToCrypto, gTypeCrypto)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getRandomValues\"]($2)"
+        js_getRandomValues ::
+        Crypto -> Nullable ArrayBufferView -> IO (Nullable ArrayBufferView)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
+getRandomValues ::
+                (MonadIO m, IsArrayBufferView array) =>
+                  Crypto -> Maybe array -> m (Maybe ArrayBufferView)
+getRandomValues self array
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getRandomValues (self)
+            (maybeToNullable (fmap toArrayBufferView array))))
+ 
+foreign import javascript unsafe "$1[\"webkitSubtle\"]"
+        js_getWebkitSubtle :: Crypto -> IO (Nullable SubtleCrypto)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.webkitSubtle Mozilla Crypto.webkitSubtle documentation> 
+getWebkitSubtle :: (MonadIO m) => Crypto -> m (Maybe SubtleCrypto)
+getWebkitSubtle self
+  = liftIO (nullableToMaybe <$> (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,50 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CryptoKey
+       (js_getType, getType, js_getExtractable, getExtractable,
+        js_getAlgorithm, getAlgorithm, js_getUsages, getUsages, CryptoKey,
+        castToCryptoKey, gTypeCryptoKey)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"algorithm\"]"
+        js_getAlgorithm :: CryptoKey -> IO (Nullable Algorithm)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.algorithm Mozilla CryptoKey.algorithm documentation> 
+getAlgorithm :: (MonadIO m) => CryptoKey -> m (Maybe Algorithm)
+getAlgorithm self
+  = liftIO (nullableToMaybe <$> (js_getAlgorithm (self)))
+ 
+foreign import javascript unsafe "$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 [KeyUsage]
+getUsages self
+  = liftIO ((js_getUsages (self)) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CryptoKeyPair.hs b/src/GHCJS/DOM/JSFFI/Generated/CryptoKeyPair.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CryptoKeyPair.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CryptoKeyPair
+       (js_getPublicKey, getPublicKey, js_getPrivateKey, getPrivateKey,
+        CryptoKeyPair, castToCryptoKeyPair, gTypeCryptoKeyPair)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"publicKey\"]"
+        js_getPublicKey :: CryptoKeyPair -> IO (Nullable CryptoKey)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.publicKey Mozilla CryptoKeyPair.publicKey documentation> 
+getPublicKey :: (MonadIO m) => CryptoKeyPair -> m (Maybe CryptoKey)
+getPublicKey self
+  = liftIO (nullableToMaybe <$> (js_getPublicKey (self)))
+ 
+foreign import javascript unsafe "$1[\"privateKey\"]"
+        js_getPrivateKey :: CryptoKeyPair -> IO (Nullable CryptoKey)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.privateKey Mozilla CryptoKeyPair.privateKey documentation> 
+getPrivateKey ::
+              (MonadIO m) => CryptoKeyPair -> m (Maybe CryptoKey)
+getPrivateKey self
+  = liftIO (nullableToMaybe <$> (js_getPrivateKey (self)))
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,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.CustomEvent
+       (js_initCustomEvent, initCustomEvent, js_getDetail, getDetail,
+        CustomEvent, castToCustomEvent, gTypeCustomEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initCustomEvent\"]($2, $3,\n$4, $5)" js_initCustomEvent ::
+        CustomEvent -> JSString -> Bool -> Bool -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.initCustomEvent Mozilla CustomEvent.initCustomEvent documentation> 
+initCustomEvent ::
+                (MonadIO m, ToJSString typeArg) =>
+                  CustomEvent -> typeArg -> Bool -> Bool -> JSVal -> m ()
+initCustomEvent self typeArg canBubbleArg cancelableArg detailArg
+  = liftIO
+      (js_initCustomEvent (self) (toJSString typeArg) canBubbleArg
+         cancelableArg
+         detailArg)
+ 
+foreign import javascript unsafe "$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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DOMError
+       (js_getName, getName, DOMError, castToDOMError, gTypeDOMError,
+        IsDOMError, toDOMError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
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,104 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DOMImplementation
+       (js_hasFeature, hasFeature, js_createDocumentType,
+        createDocumentType, js_createDocument, createDocument,
+        js_createCSSStyleSheet, createCSSStyleSheet, js_createHTMLDocument,
+        createHTMLDocument, DOMImplementation, castToDOMImplementation,
+        gTypeDOMImplementation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"hasFeature\"]($2,\n$3) ? 1 : 0)" js_hasFeature ::
+        DOMImplementation -> JSString -> Nullable JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
+hasFeature ::
+           (MonadIO m, ToJSString feature, ToJSString version) =>
+             DOMImplementation -> feature -> Maybe version -> m Bool
+hasFeature self feature version
+  = liftIO
+      (js_hasFeature (self) (toJSString feature)
+         (toMaybeJSString version))
+ 
+foreign import javascript unsafe
+        "$1[\"createDocumentType\"]($2, $3,\n$4)" js_createDocumentType ::
+        DOMImplementation ->
+          Nullable JSString ->
+            Nullable JSString ->
+              Nullable JSString -> IO (Nullable 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 ->
+                       Maybe qualifiedName ->
+                         Maybe publicId -> Maybe systemId -> m (Maybe DocumentType)
+createDocumentType self qualifiedName publicId systemId
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createDocumentType (self) (toMaybeJSString qualifiedName)
+            (toMaybeJSString publicId)
+            (toMaybeJSString systemId)))
+ 
+foreign import javascript unsafe
+        "$1[\"createDocument\"]($2, $3, $4)" js_createDocument ::
+        DOMImplementation ->
+          Nullable JSString ->
+            Nullable JSString ->
+              Nullable DocumentType -> IO (Nullable Document)
+
+-- | <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 ->
+                     Maybe qualifiedName -> Maybe DocumentType -> m (Maybe Document)
+createDocument self namespaceURI qualifiedName doctype
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createDocument (self) (toMaybeJSString namespaceURI)
+            (toMaybeJSString qualifiedName)
+            (maybeToNullable doctype)))
+ 
+foreign import javascript unsafe
+        "$1[\"createCSSStyleSheet\"]($2,\n$3)" js_createCSSStyleSheet ::
+        DOMImplementation ->
+          JSString -> JSString -> IO (Nullable CSSStyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createCSSStyleSheet Mozilla DOMImplementation.createCSSStyleSheet documentation> 
+createCSSStyleSheet ::
+                    (MonadIO m, ToJSString title, ToJSString media) =>
+                      DOMImplementation -> title -> media -> m (Maybe CSSStyleSheet)
+createCSSStyleSheet self title media
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createCSSStyleSheet (self) (toJSString title)
+            (toJSString media)))
+ 
+foreign import javascript unsafe "$1[\"createHTMLDocument\"]($2)"
+        js_createHTMLDocument ::
+        DOMImplementation -> JSString -> IO (Nullable HTMLDocument)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
+createHTMLDocument ::
+                   (MonadIO m, ToJSString title) =>
+                     DOMImplementation -> title -> m (Maybe HTMLDocument)
+createHTMLDocument self title
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createHTMLDocument (self) (toJSString title)))
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,49 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection
+       (js_item, item, js_namedItem, namedItem, js_getLength, getLength,
+        DOMNamedFlowCollection, castToDOMNamedFlowCollection,
+        gTypeDOMNamedFlowCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($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)))
+ 
+foreign import javascript unsafe "$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,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DOMParser
+       (js_newDOMParser, newDOMParser, js_parseFromString,
+        parseFromString, DOMParser, castToDOMParser, gTypeDOMParser)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "$1[\"parseFromString\"]($2, $3)"
+        js_parseFromString ::
+        DOMParser -> JSString -> JSString -> IO (Nullable Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
+parseFromString ::
+                (MonadIO m, ToJSString str, ToJSString contentType) =>
+                  DOMParser -> str -> contentType -> m (Maybe Document)
+parseFromString self str contentType
+  = liftIO
+      (nullableToMaybe <$>
+         (js_parseFromString (self) (toJSString str)
+            (toJSString contentType)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMSettableTokenList.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMSettableTokenList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMSettableTokenList.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DOMSettableTokenList
+       (js__get, _get, js_setValue, setValue, js_getValue, getValue,
+        DOMSettableTokenList, castToDOMSettableTokenList,
+        gTypeDOMSettableTokenList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        DOMSettableTokenList -> Word -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList._get Mozilla DOMSettableTokenList._get documentation> 
+_get ::
+     (MonadIO m, FromJSString result) =>
+       DOMSettableTokenList -> Word -> m (Maybe result)
+_get self index
+  = liftIO (fromMaybeJSString <$> (js__get (self) index))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: DOMSettableTokenList -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList.value Mozilla DOMSettableTokenList.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => DOMSettableTokenList -> val -> m ()
+setValue self val = liftIO (js_setValue (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        DOMSettableTokenList -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList.value Mozilla DOMSettableTokenList.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) =>
+           DOMSettableTokenList -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue (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,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DOMStringList
+       (js_item, item, js_contains, contains, js_getLength, getLength,
+        DOMStringList, castToDOMStringList, gTypeDOMStringList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "($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))
+ 
+foreign import javascript unsafe "$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/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,95 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DOMTokenList
+       (js_item, item, js_contains, contains, js_add, add, js_remove,
+        remove, js_toggle, toggle, js_toString, toString, js_getLength,
+        getLength, DOMTokenList, castToDOMTokenList, gTypeDOMTokenList,
+        IsDOMTokenList, toDOMTokenList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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, IsDOMTokenList self, FromJSString result) =>
+       self -> Word -> m (Maybe result)
+item self index
+  = liftIO
+      (fromMaybeJSString <$> (js_item (toDOMTokenList self) index))
+ 
+foreign import javascript unsafe "($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, IsDOMTokenList self, ToJSString token) =>
+           self -> token -> m Bool
+contains self token
+  = liftIO (js_contains (toDOMTokenList self) (toJSString token))
+ 
+foreign import javascript unsafe "$1[\"add\"].apply($1, $2)" js_add
+        :: DOMTokenList -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.add Mozilla DOMTokenList.add documentation> 
+add ::
+    (MonadIO m, IsDOMTokenList self, ToJSString tokens,
+     ToJSVal tokens) =>
+      self -> [tokens] -> m ()
+add self tokens
+  = liftIO
+      (toJSVal tokens >>=
+         \ tokens' -> js_add (toDOMTokenList self) tokens')
+ 
+foreign import javascript unsafe "$1[\"remove\"].apply($1, $2)"
+        js_remove :: DOMTokenList -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.remove Mozilla DOMTokenList.remove documentation> 
+remove ::
+       (MonadIO m, IsDOMTokenList self, ToJSString tokens,
+        ToJSVal tokens) =>
+         self -> [tokens] -> m ()
+remove self tokens
+  = liftIO
+      (toJSVal tokens >>=
+         \ tokens' -> js_remove (toDOMTokenList self) tokens')
+ 
+foreign import javascript unsafe "($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, IsDOMTokenList self, ToJSString token) =>
+         self -> token -> Bool -> m Bool
+toggle self token force
+  = liftIO (js_toggle (toDOMTokenList self) (toJSString token) force)
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: DOMTokenList -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toString Mozilla DOMTokenList.toString documentation> 
+toString ::
+         (MonadIO m, IsDOMTokenList self, FromJSString result) =>
+           self -> m result
+toString self
+  = liftIO (fromJSString <$> (js_toString (toDOMTokenList self)))
+ 
+foreign import javascript unsafe "$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, IsDOMTokenList self) => self -> m Word
+getLength self = liftIO (js_getLength (toDOMTokenList 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,78 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToDataCue,
+        gTypeDataCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"WebKitDataCue\"]()"
+        js_newDataCue :: IO DataCue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
+newDataCue :: (MonadIO m) => m DataCue
+newDataCue = liftIO (js_newDataCue)
+ 
+foreign import javascript unsafe
+        "new window[\"WebKitDataCue\"]($1,\n$2, $3, $4)" js_newDataCue' ::
+        Double -> Double -> JSVal -> JSString -> IO DataCue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
+newDataCue' ::
+            (MonadIO m, ToJSString type') =>
+              Double -> Double -> JSVal -> type' -> m DataCue
+newDataCue' startTime endTime value type'
+  = liftIO
+      (js_newDataCue' startTime endTime value (toJSString type'))
+ 
+foreign import javascript unsafe "$1[\"data\"] = $2;" js_setData ::
+        DataCue -> Nullable ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
+setData ::
+        (MonadIO m, IsArrayBuffer val) => DataCue -> Maybe val -> m ()
+setData self val
+  = liftIO
+      (js_setData (self) (maybeToNullable (fmap toArrayBuffer val)))
+ 
+foreign import javascript unsafe "$1[\"data\"]" js_getData ::
+        DataCue -> IO (Nullable ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
+getData :: (MonadIO m) => DataCue -> m (Maybe ArrayBuffer)
+getData self = liftIO (nullableToMaybe <$> (js_getData (self)))
+ 
+foreign import javascript unsafe "$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) => DataCue -> JSVal -> m ()
+setValue self val = liftIO (js_setValue (self) val)
+ 
+foreign import javascript unsafe "$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[\"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,123 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DataTransfer
+       (js_clearData, clearData, js_getData, getData, js_setData, setData,
+        js_setDragImage, setDragImage, js_setDropEffect, setDropEffect,
+        js_getDropEffect, getDropEffect, js_setEffectAllowed,
+        setEffectAllowed, js_getEffectAllowed, getEffectAllowed,
+        js_getTypes, getTypes, js_getFiles, getFiles, js_getItems,
+        getItems, DataTransfer, castToDataTransfer, gTypeDataTransfer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"clearData\"]($2)"
+        js_clearData :: DataTransfer -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.clearData Mozilla DataTransfer.clearData documentation> 
+clearData ::
+          (MonadIO m, ToJSString type') => DataTransfer -> type' -> m ()
+clearData self type'
+  = liftIO (js_clearData (self) (toJSString type'))
+ 
+foreign import javascript unsafe "$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 type', FromJSString result) =>
+          DataTransfer -> type' -> m result
+getData self type'
+  = liftIO (fromJSString <$> (js_getData (self) (toJSString type')))
+ 
+foreign import javascript unsafe "$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 type', ToJSString data') =>
+          DataTransfer -> type' -> data' -> m ()
+setData self type' data'
+  = liftIO (js_setData (self) (toJSString type') (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"setDragImage\"]($2, $3, $4)"
+        js_setDragImage ::
+        DataTransfer -> Nullable 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) (maybeToNullable (fmap toElement image)) x
+         y)
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"types\"]" js_getTypes ::
+        DataTransfer -> IO (Nullable Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.types Mozilla DataTransfer.types documentation> 
+getTypes :: (MonadIO m) => DataTransfer -> m (Maybe Array)
+getTypes self = liftIO (nullableToMaybe <$> (js_getTypes (self)))
+ 
+foreign import javascript unsafe "$1[\"files\"]" js_getFiles ::
+        DataTransfer -> IO (Nullable FileList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.files Mozilla DataTransfer.files documentation> 
+getFiles :: (MonadIO m) => DataTransfer -> m (Maybe FileList)
+getFiles self = liftIO (nullableToMaybe <$> (js_getFiles (self)))
+ 
+foreign import javascript unsafe "$1[\"items\"]" js_getItems ::
+        DataTransfer -> IO (Nullable DataTransferItemList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.items Mozilla DataTransfer.items documentation> 
+getItems ::
+         (MonadIO m) => DataTransfer -> m (Maybe DataTransferItemList)
+getItems self = liftIO (nullableToMaybe <$> (js_getItems (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,54 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DataTransferItem
+       (js_getAsString, getAsString, js_getAsFile, getAsFile, js_getKind,
+        getKind, js_getType, getType, DataTransferItem,
+        castToDataTransferItem, gTypeDataTransferItem)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getAsString\"]($2)"
+        js_getAsString ::
+        DataTransferItem -> Nullable (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) (maybeToNullable callback))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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,63 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DataTransferItemList
+       (js_item, item, js_clear, clear, js_addFile, addFile, js_add, add,
+        js_getLength, getLength, DataTransferItemList,
+        castToDataTransferItemList, gTypeDataTransferItemList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        DataTransferItemList -> Word -> IO (Nullable DataTransferItem)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
+item ::
+     (MonadIO m) =>
+       DataTransferItemList -> Word -> m (Maybe DataTransferItem)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$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[\"add\"]($2)" js_addFile ::
+        DataTransferItemList -> Nullable 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) (maybeToNullable file))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+        DataTransferItemList -> JSString -> 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 -> data' -> type' -> m ()
+add self data' type'
+  = liftIO (js_add (self) (toJSString data') (toJSString type'))
+ 
+foreign import javascript unsafe "$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,92 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Database
+       (js_changeVersion, changeVersion, js_transaction, transaction,
+        js_readTransaction, readTransaction, js_getVersion, getVersion,
+        Database, castToDatabase, gTypeDatabase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"changeVersion\"]($2, $3, $4,\n$5, $6)" js_changeVersion ::
+        Database ->
+          JSString ->
+            JSString ->
+              Nullable SQLTransactionCallback ->
+                Nullable SQLTransactionErrorCallback ->
+                  Nullable 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)
+         (maybeToNullable callback)
+         (maybeToNullable errorCallback)
+         (maybeToNullable successCallback))
+ 
+foreign import javascript unsafe "$1[\"transaction\"]($2, $3, $4)"
+        js_transaction ::
+        Database ->
+          Nullable SQLTransactionCallback ->
+            Nullable SQLTransactionErrorCallback ->
+              Nullable VoidCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation> 
+transaction ::
+            (MonadIO m) =>
+              Database ->
+                Maybe SQLTransactionCallback ->
+                  Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
+transaction self callback errorCallback successCallback
+  = liftIO
+      (js_transaction (self) (maybeToNullable callback)
+         (maybeToNullable errorCallback)
+         (maybeToNullable successCallback))
+ 
+foreign import javascript unsafe
+        "$1[\"readTransaction\"]($2, $3,\n$4)" js_readTransaction ::
+        Database ->
+          Nullable SQLTransactionCallback ->
+            Nullable SQLTransactionErrorCallback ->
+              Nullable VoidCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation> 
+readTransaction ::
+                (MonadIO m) =>
+                  Database ->
+                    Maybe SQLTransactionCallback ->
+                      Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
+readTransaction self callback errorCallback successCallback
+  = liftIO
+      (js_readTransaction (self) (maybeToNullable callback)
+         (maybeToNullable errorCallback)
+         (maybeToNullable successCallback))
+ 
+foreign import javascript unsafe "$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,49 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
+newDatabaseCallback ::
+                    (MonadIO m) => (Maybe 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) => (Maybe 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) => (Maybe 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,36 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope
+       (js_postMessage, postMessage, message, DedicatedWorkerGlobalScope,
+        castToDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2, $3)"
+        js_postMessage ::
+        DedicatedWorkerGlobalScope -> JSVal -> Nullable Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.postMessage Mozilla DedicatedWorkerGlobalScope.postMessage documentation> 
+postMessage ::
+            (MonadIO m, IsArray messagePorts) =>
+              DedicatedWorkerGlobalScope -> JSVal -> Maybe messagePorts -> m ()
+postMessage self message messagePorts
+  = liftIO
+      (js_postMessage (self) message
+         (maybeToNullable (fmap toArray messagePorts)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.onmessage Mozilla DedicatedWorkerGlobalScope.onmessage documentation> 
+message :: EventName DedicatedWorkerGlobalScope MessageEvent
+message = unsafeEventName (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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DelayNode
+       (js_getDelayTime, getDelayTime, DelayNode, castToDelayNode,
+        gTypeDelayNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"delayTime\"]"
+        js_getDelayTime :: DelayNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
+getDelayTime :: (MonadIO m) => DelayNode -> m (Maybe AudioParam)
+getDelayTime self
+  = liftIO (nullableToMaybe <$> (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,95 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent
+       (js_initDeviceMotionEvent, initDeviceMotionEvent,
+        js_getAcceleration, getAcceleration,
+        js_getAccelerationIncludingGravity,
+        getAccelerationIncludingGravity, js_getRotationRate,
+        getRotationRate, js_getInterval, getInterval, DeviceMotionEvent,
+        castToDeviceMotionEvent, gTypeDeviceMotionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initDeviceMotionEvent\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_initDeviceMotionEvent ::
+        DeviceMotionEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                Nullable Acceleration ->
+                  Nullable Acceleration -> Nullable RotationRate -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.initDeviceMotionEvent Mozilla DeviceMotionEvent.initDeviceMotionEvent documentation> 
+initDeviceMotionEvent ::
+                      (MonadIO m, ToJSString type', IsAcceleration acceleration,
+                       IsAcceleration accelerationIncludingGravity,
+                       IsRotationRate rotationRate) =>
+                        DeviceMotionEvent ->
+                          type' ->
+                            Bool ->
+                              Bool ->
+                                Maybe acceleration ->
+                                  Maybe accelerationIncludingGravity ->
+                                    Maybe rotationRate -> Double -> m ()
+initDeviceMotionEvent self type' bubbles cancelable acceleration
+  accelerationIncludingGravity rotationRate interval
+  = liftIO
+      (js_initDeviceMotionEvent (self) (toJSString type') bubbles
+         cancelable
+         (maybeToNullable (fmap toAcceleration acceleration))
+         (maybeToNullable
+            (fmap toAcceleration accelerationIncludingGravity))
+         (maybeToNullable (fmap toRotationRate rotationRate))
+         interval)
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe
+        "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"interval\"]" js_getInterval
+        :: DeviceMotionEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
+getInterval :: (MonadIO m) => DeviceMotionEvent -> m Double
+getInterval self = liftIO (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,71 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent
+       (js_initDeviceOrientationEvent, initDeviceOrientationEvent,
+        js_getAlpha, getAlpha, js_getBeta, getBeta, js_getGamma, getGamma,
+        js_getAbsolute, getAbsolute, DeviceOrientationEvent,
+        castToDeviceOrientationEvent, gTypeDeviceOrientationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initDeviceOrientationEvent\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_initDeviceOrientationEvent ::
+        DeviceOrientationEvent ->
+          JSString ->
+            Bool -> Bool -> Double -> Double -> Double -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.initDeviceOrientationEvent Mozilla DeviceOrientationEvent.initDeviceOrientationEvent documentation> 
+initDeviceOrientationEvent ::
+                           (MonadIO m, ToJSString type') =>
+                             DeviceOrientationEvent ->
+                               type' -> Bool -> Bool -> Double -> Double -> Double -> Bool -> m ()
+initDeviceOrientationEvent self type' bubbles cancelable alpha beta
+  gamma absolute
+  = liftIO
+      (js_initDeviceOrientationEvent (self) (toJSString type') bubbles
+         cancelable
+         alpha
+         beta
+         gamma
+         absolute)
+ 
+foreign import javascript unsafe "$1[\"alpha\"]" js_getAlpha ::
+        DeviceOrientationEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
+getAlpha :: (MonadIO m) => DeviceOrientationEvent -> m Double
+getAlpha self = liftIO (js_getAlpha (self))
+ 
+foreign import javascript unsafe "$1[\"beta\"]" js_getBeta ::
+        DeviceOrientationEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
+getBeta :: (MonadIO m) => DeviceOrientationEvent -> m Double
+getBeta self = liftIO (js_getBeta (self))
+ 
+foreign import javascript unsafe "$1[\"gamma\"]" js_getGamma ::
+        DeviceOrientationEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
+getGamma :: (MonadIO m) => DeviceOrientationEvent -> m Double
+getGamma self = liftIO (js_getGamma (self))
+ 
+foreign import javascript unsafe "($1[\"absolute\"] ? 1 : 0)"
+        js_getAbsolute :: DeviceOrientationEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
+getAbsolute :: (MonadIO m) => DeviceOrientationEvent -> m Bool
+getAbsolute self = liftIO (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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent
+       (js_getValue, getValue, js_getMin, getMin, js_getMax, getMax,
+        DeviceProximityEvent, castToDeviceProximityEvent,
+        gTypeDeviceProximityEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,1565 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Document
+       (js_newDocument, newDocument, js_createElement, createElement,
+        js_createDocumentFragment, createDocumentFragment,
+        js_createTextNode, createTextNode, js_createComment, createComment,
+        js_createCDATASection, createCDATASection,
+        js_createProcessingInstruction, createProcessingInstruction,
+        js_createAttribute, createAttribute, js_createEntityReference,
+        createEntityReference, js_getElementsByTagName,
+        getElementsByTagName, js_importNode, importNode,
+        js_createElementNS, createElementNS, js_createAttributeNS,
+        createAttributeNS, js_getElementsByTagNameNS,
+        getElementsByTagNameNS, js_getElementById, getElementById,
+        js_adoptNode, adoptNode, js_createEvent, createEvent,
+        js_createRange, createRange, js_createNodeIterator,
+        createNodeIterator, js_createTreeWalker, createTreeWalker,
+        js_getOverrideStyle, getOverrideStyle, js_createExpression,
+        createExpression, js_createNSResolver, createNSResolver,
+        js_evaluate, evaluate, js_execCommand, execCommand,
+        js_queryCommandEnabled, queryCommandEnabled,
+        js_queryCommandIndeterm, queryCommandIndeterm,
+        js_queryCommandState, queryCommandState, js_queryCommandSupported,
+        queryCommandSupported, js_queryCommandValue, queryCommandValue,
+        js_getElementsByName, getElementsByName, js_elementFromPoint,
+        elementFromPoint, js_caretRangeFromPoint, caretRangeFromPoint,
+        js_getSelection, getSelection, js_getCSSCanvasContext,
+        getCSSCanvasContext, js_getElementsByClassName,
+        getElementsByClassName, js_hasFocus, hasFocus, js_querySelector,
+        querySelector, js_querySelectorAll, querySelectorAll,
+        js_webkitCancelFullScreen, webkitCancelFullScreen,
+        js_webkitExitFullscreen, webkitExitFullscreen, js_exitPointerLock,
+        exitPointerLock, js_webkitGetNamedFlows, webkitGetNamedFlows,
+        js_createTouch, createTouch, js_createTouchList, createTouchList,
+        js_getDoctype, getDoctype, js_getImplementation, getImplementation,
+        js_getDocumentElement, getDocumentElement, js_getInputEncoding,
+        getInputEncoding, js_getXmlEncoding, getXmlEncoding,
+        js_setXmlVersion, setXmlVersion, js_getXmlVersion, getXmlVersion,
+        js_setXmlStandalone, setXmlStandalone, js_getXmlStandalone,
+        getXmlStandalone, js_getDocumentURI, getDocumentURI,
+        js_getDefaultView, getDefaultView, js_getStyleSheets,
+        getStyleSheets, js_getContentType, getContentType, js_setTitle,
+        setTitle, js_getTitle, getTitle, js_getReferrer, getReferrer,
+        js_setDomain, setDomain, js_getDomain, getDomain, js_getURL,
+        getURL, js_setCookie, setCookie, js_getCookie, getCookie,
+        js_setBody, setBody, js_getBody, getBody, js_getHead, getHead,
+        js_getImages, getImages, js_getApplets, getApplets, js_getLinks,
+        getLinks, js_getForms, getForms, js_getAnchors, getAnchors,
+        js_getLastModified, getLastModified, js_setLocation, setLocation,
+        js_getLocation, getLocation, js_setCharset, setCharset,
+        js_getCharset, getCharset, js_getDefaultCharset, getDefaultCharset,
+        js_getReadyState, getReadyState, js_getCharacterSet,
+        getCharacterSet, js_getPreferredStylesheetSet,
+        getPreferredStylesheetSet, js_setSelectedStylesheetSet,
+        setSelectedStylesheetSet, js_getSelectedStylesheetSet,
+        getSelectedStylesheetSet, js_getActiveElement, getActiveElement,
+        js_getCompatMode, getCompatMode, js_getWebkitIsFullScreen,
+        getWebkitIsFullScreen, js_getWebkitFullScreenKeyboardInputAllowed,
+        getWebkitFullScreenKeyboardInputAllowed,
+        js_getWebkitCurrentFullScreenElement,
+        getWebkitCurrentFullScreenElement, js_getWebkitFullscreenEnabled,
+        getWebkitFullscreenEnabled, js_getWebkitFullscreenElement,
+        getWebkitFullscreenElement, js_getPointerLockElement,
+        getPointerLockElement, js_getFonts, getFonts, abort, blur, change,
+        click, contextMenu, dblClick, drag, dragEnd, dragEnter, dragLeave,
+        dragOver, dragStart, drop, error, focus, input, invalid, keyDown,
+        keyPress, keyUp, load, mouseDown, mouseEnter, mouseLeave,
+        mouseMove, mouseOut, mouseOver, mouseUp, mouseWheel,
+        readyStateChange, scroll, select, submit, wheel, beforeCut, cut,
+        beforeCopy, copy, beforePaste, paste, reset, search, selectStart,
+        selectionchange, touchStart, touchMove, touchEnd, touchCancel,
+        webKitFullscreenChange, webKitFullscreenError, pointerlockchange,
+        pointerlockerror, securitypolicyviolation, webKitWillRevealBottom,
+        webKitWillRevealLeft, webKitWillRevealRight, webKitWillRevealTop,
+        js_getVisibilityState, getVisibilityState, js_getHidden, getHidden,
+        js_getSecurityPolicy, getSecurityPolicy, js_getCurrentScript,
+        getCurrentScript, js_getOrigin, getOrigin, Document,
+        castToDocument, gTypeDocument, IsDocument, toDocument)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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[\"createElement\"]($2)"
+        js_createElement ::
+        Document -> Nullable JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
+createElement ::
+              (MonadIO m, IsDocument self, ToJSString tagName) =>
+                self -> Maybe tagName -> m (Maybe Element)
+createElement self tagName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createElement (toDocument self) (toMaybeJSString tagName)))
+ 
+foreign import javascript unsafe "$1[\"createDocumentFragment\"]()"
+        js_createDocumentFragment ::
+        Document -> IO (Nullable DocumentFragment)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
+createDocumentFragment ::
+                       (MonadIO m, IsDocument self) => self -> m (Maybe DocumentFragment)
+createDocumentFragment self
+  = liftIO
+      (nullableToMaybe <$> (js_createDocumentFragment (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"createTextNode\"]($2)"
+        js_createTextNode :: Document -> JSString -> IO (Nullable 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 (Maybe Text)
+createTextNode self data'
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createTextNode (toDocument self) (toJSString data')))
+ 
+foreign import javascript unsafe "$1[\"createComment\"]($2)"
+        js_createComment :: Document -> JSString -> IO (Nullable 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 (Maybe Comment)
+createComment self data'
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createComment (toDocument self) (toJSString data')))
+ 
+foreign import javascript unsafe "$1[\"createCDATASection\"]($2)"
+        js_createCDATASection ::
+        Document -> JSString -> IO (Nullable 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 (Maybe CDATASection)
+createCDATASection self data'
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createCDATASection (toDocument self) (toJSString data')))
+ 
+foreign import javascript unsafe
+        "$1[\"createProcessingInstruction\"]($2,\n$3)"
+        js_createProcessingInstruction ::
+        Document ->
+          JSString -> JSString -> IO (Nullable 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 (Maybe ProcessingInstruction)
+createProcessingInstruction self target data'
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createProcessingInstruction (toDocument self)
+            (toJSString target)
+            (toJSString data')))
+ 
+foreign import javascript unsafe "$1[\"createAttribute\"]($2)"
+        js_createAttribute :: Document -> JSString -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
+createAttribute ::
+                (MonadIO m, IsDocument self, ToJSString name) =>
+                  self -> name -> m (Maybe Attr)
+createAttribute self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createAttribute (toDocument self) (toJSString name)))
+ 
+foreign import javascript unsafe
+        "$1[\"createEntityReference\"]($2)" js_createEntityReference ::
+        Document -> JSString -> IO (Nullable EntityReference)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEntityReference Mozilla Document.createEntityReference documentation> 
+createEntityReference ::
+                      (MonadIO m, IsDocument self, ToJSString name) =>
+                        self -> name -> m (Maybe EntityReference)
+createEntityReference self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createEntityReference (toDocument self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"getElementsByTagName\"]($2)"
+        js_getElementsByTagName ::
+        Document -> JSString -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
+getElementsByTagName ::
+                     (MonadIO m, IsDocument self, ToJSString tagname) =>
+                       self -> tagname -> m (Maybe NodeList)
+getElementsByTagName self tagname
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementsByTagName (toDocument self) (toJSString tagname)))
+ 
+foreign import javascript unsafe "$1[\"importNode\"]($2, $3)"
+        js_importNode ::
+        Document -> Nullable Node -> Bool -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
+importNode ::
+           (MonadIO m, IsDocument self, IsNode importedNode) =>
+             self -> Maybe importedNode -> Bool -> m (Maybe Node)
+importNode self importedNode deep
+  = liftIO
+      (nullableToMaybe <$>
+         (js_importNode (toDocument self)
+            (maybeToNullable (fmap toNode importedNode))
+            deep))
+ 
+foreign import javascript unsafe "$1[\"createElementNS\"]($2, $3)"
+        js_createElementNS ::
+        Document ->
+          Nullable JSString -> Nullable JSString -> IO (Nullable 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 -> Maybe qualifiedName -> m (Maybe Element)
+createElementNS self namespaceURI qualifiedName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createElementNS (toDocument self)
+            (toMaybeJSString namespaceURI)
+            (toMaybeJSString qualifiedName)))
+ 
+foreign import javascript unsafe
+        "$1[\"createAttributeNS\"]($2, $3)" js_createAttributeNS ::
+        Document ->
+          Nullable JSString -> Nullable JSString -> IO (Nullable 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 -> Maybe qualifiedName -> m (Maybe Attr)
+createAttributeNS self namespaceURI qualifiedName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createAttributeNS (toDocument self)
+            (toMaybeJSString namespaceURI)
+            (toMaybeJSString qualifiedName)))
+ 
+foreign import javascript unsafe
+        "$1[\"getElementsByTagNameNS\"]($2,\n$3)" js_getElementsByTagNameNS
+        ::
+        Document -> Nullable JSString -> JSString -> IO (Nullable NodeList)
+
+-- | <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 (Maybe NodeList)
+getElementsByTagNameNS self namespaceURI localName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementsByTagNameNS (toDocument self)
+            (toMaybeJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe "$1[\"getElementById\"]($2)"
+        js_getElementById :: Document -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementById Mozilla Document.getElementById documentation> 
+getElementById ::
+               (MonadIO m, IsDocument self, ToJSString elementId) =>
+                 self -> elementId -> m (Maybe Element)
+getElementById self elementId
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementById (toDocument self) (toJSString elementId)))
+ 
+foreign import javascript unsafe "$1[\"adoptNode\"]($2)"
+        js_adoptNode :: Document -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
+adoptNode ::
+          (MonadIO m, IsDocument self, IsNode source) =>
+            self -> Maybe source -> m (Maybe Node)
+adoptNode self source
+  = liftIO
+      (nullableToMaybe <$>
+         (js_adoptNode (toDocument self)
+            (maybeToNullable (fmap toNode source))))
+ 
+foreign import javascript unsafe "$1[\"createEvent\"]($2)"
+        js_createEvent :: Document -> JSString -> IO (Nullable Event)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
+createEvent ::
+            (MonadIO m, IsDocument self, ToJSString eventType) =>
+              self -> eventType -> m (Maybe Event)
+createEvent self eventType
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createEvent (toDocument self) (toJSString eventType)))
+ 
+foreign import javascript unsafe "$1[\"createRange\"]()"
+        js_createRange :: Document -> IO (Nullable Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
+createRange ::
+            (MonadIO m, IsDocument self) => self -> m (Maybe Range)
+createRange self
+  = liftIO (nullableToMaybe <$> (js_createRange (toDocument self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createNodeIterator\"]($2, $3,\n$4, $5)" js_createNodeIterator
+        ::
+        Document ->
+          Nullable Node ->
+            Word -> Nullable NodeFilter -> Bool -> IO (Nullable NodeIterator)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
+createNodeIterator ::
+                   (MonadIO m, IsDocument self, IsNode root) =>
+                     self ->
+                       Maybe root ->
+                         Word -> Maybe NodeFilter -> Bool -> m (Maybe NodeIterator)
+createNodeIterator self root whatToShow filter
+  expandEntityReferences
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createNodeIterator (toDocument self)
+            (maybeToNullable (fmap toNode root))
+            whatToShow
+            (maybeToNullable filter)
+            expandEntityReferences))
+ 
+foreign import javascript unsafe
+        "$1[\"createTreeWalker\"]($2, $3,\n$4, $5)" js_createTreeWalker ::
+        Document ->
+          Nullable Node ->
+            Word -> Nullable NodeFilter -> Bool -> IO (Nullable TreeWalker)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
+createTreeWalker ::
+                 (MonadIO m, IsDocument self, IsNode root) =>
+                   self ->
+                     Maybe root ->
+                       Word -> Maybe NodeFilter -> Bool -> m (Maybe TreeWalker)
+createTreeWalker self root whatToShow filter expandEntityReferences
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createTreeWalker (toDocument self)
+            (maybeToNullable (fmap toNode root))
+            whatToShow
+            (maybeToNullable filter)
+            expandEntityReferences))
+ 
+foreign import javascript unsafe "$1[\"getOverrideStyle\"]($2, $3)"
+        js_getOverrideStyle ::
+        Document ->
+          Nullable Element -> JSString -> IO (Nullable 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 -> pseudoElement -> m (Maybe CSSStyleDeclaration)
+getOverrideStyle self element pseudoElement
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getOverrideStyle (toDocument self)
+            (maybeToNullable (fmap toElement element))
+            (toJSString pseudoElement)))
+ 
+foreign import javascript unsafe "$1[\"createExpression\"]($2, $3)"
+        js_createExpression ::
+        Document ->
+          JSString ->
+            Nullable XPathNSResolver -> IO (Nullable XPathExpression)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
+createExpression ::
+                 (MonadIO m, IsDocument self, ToJSString expression) =>
+                   self ->
+                     expression -> Maybe XPathNSResolver -> m (Maybe XPathExpression)
+createExpression self expression resolver
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createExpression (toDocument self) (toJSString expression)
+            (maybeToNullable resolver)))
+ 
+foreign import javascript unsafe "$1[\"createNSResolver\"]($2)"
+        js_createNSResolver ::
+        Document -> Nullable Node -> IO (Nullable 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 (Maybe XPathNSResolver)
+createNSResolver self nodeResolver
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createNSResolver (toDocument self)
+            (maybeToNullable (fmap toNode nodeResolver))))
+ 
+foreign import javascript unsafe
+        "$1[\"evaluate\"]($2, $3, $4, $5,\n$6)" js_evaluate ::
+        Document ->
+          JSString ->
+            Nullable Node ->
+              Nullable XPathNSResolver ->
+                Word -> Nullable XPathResult -> IO (Nullable 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 ->
+             expression ->
+               Maybe contextNode ->
+                 Maybe XPathNSResolver ->
+                   Word -> Maybe XPathResult -> m (Maybe XPathResult)
+evaluate self expression contextNode resolver type' inResult
+  = liftIO
+      (nullableToMaybe <$>
+         (js_evaluate (toDocument self) (toJSString expression)
+            (maybeToNullable (fmap toNode contextNode))
+            (maybeToNullable resolver)
+            type'
+            (maybeToNullable inResult)))
+ 
+foreign import javascript unsafe
+        "($1[\"execCommand\"]($2, $3,\n$4) ? 1 : 0)" js_execCommand ::
+        Document -> JSString -> Bool -> Nullable JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.execCommand Mozilla Document.execCommand documentation> 
+execCommand ::
+            (MonadIO m, IsDocument self, ToJSString command,
+             ToJSString value) =>
+              self -> command -> Bool -> Maybe value -> m Bool
+execCommand self command userInterface value
+  = liftIO
+      (js_execCommand (toDocument self) (toJSString command)
+         userInterface
+         (toMaybeJSString value))
+ 
+foreign import javascript unsafe
+        "($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 command) =>
+                      self -> command -> m Bool
+queryCommandEnabled self command
+  = liftIO
+      (js_queryCommandEnabled (toDocument self) (toJSString command))
+ 
+foreign import javascript unsafe
+        "($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 command) =>
+                       self -> command -> m Bool
+queryCommandIndeterm self command
+  = liftIO
+      (js_queryCommandIndeterm (toDocument self) (toJSString command))
+ 
+foreign import javascript unsafe
+        "($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 command) =>
+                    self -> command -> m Bool
+queryCommandState self command
+  = liftIO
+      (js_queryCommandState (toDocument self) (toJSString command))
+ 
+foreign import javascript unsafe
+        "($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 command) =>
+                        self -> command -> m Bool
+queryCommandSupported self command
+  = liftIO
+      (js_queryCommandSupported (toDocument self) (toJSString command))
+ 
+foreign import javascript unsafe "$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 command,
+                   FromJSString result) =>
+                    self -> command -> m result
+queryCommandValue self command
+  = liftIO
+      (fromJSString <$>
+         (js_queryCommandValue (toDocument self) (toJSString command)))
+ 
+foreign import javascript unsafe "$1[\"getElementsByName\"]($2)"
+        js_getElementsByName ::
+        Document -> JSString -> IO (Nullable 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 (Maybe NodeList)
+getElementsByName self elementName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementsByName (toDocument self) (toJSString elementName)))
+ 
+foreign import javascript unsafe "$1[\"elementFromPoint\"]($2, $3)"
+        js_elementFromPoint ::
+        Document -> Int -> Int -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.elementFromPoint Mozilla Document.elementFromPoint documentation> 
+elementFromPoint ::
+                 (MonadIO m, IsDocument self) =>
+                   self -> Int -> Int -> m (Maybe Element)
+elementFromPoint self x y
+  = liftIO
+      (nullableToMaybe <$> (js_elementFromPoint (toDocument self) x y))
+ 
+foreign import javascript unsafe
+        "$1[\"caretRangeFromPoint\"]($2,\n$3)" js_caretRangeFromPoint ::
+        Document -> Int -> Int -> IO (Nullable Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
+caretRangeFromPoint ::
+                    (MonadIO m, IsDocument self) =>
+                      self -> Int -> Int -> m (Maybe Range)
+caretRangeFromPoint self x y
+  = liftIO
+      (nullableToMaybe <$>
+         (js_caretRangeFromPoint (toDocument self) x y))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe
+        "$1[\"getCSSCanvasContext\"]($2,\n$3, $4, $5)"
+        js_getCSSCanvasContext ::
+        Document ->
+          JSString ->
+            JSString -> Int -> Int -> IO (Nullable CanvasRenderingContext)
+
+-- | <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 (Maybe CanvasRenderingContext)
+getCSSCanvasContext self contextId name width height
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getCSSCanvasContext (toDocument self) (toJSString contextId)
+            (toJSString name)
+            width
+            height))
+ 
+foreign import javascript unsafe
+        "$1[\"getElementsByClassName\"]($2)" js_getElementsByClassName ::
+        Document -> JSString -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
+getElementsByClassName ::
+                       (MonadIO m, IsDocument self, ToJSString tagname) =>
+                         self -> tagname -> m (Maybe NodeList)
+getElementsByClassName self tagname
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementsByClassName (toDocument self) (toJSString tagname)))
+ 
+foreign import javascript unsafe "($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))
+ 
+foreign import javascript unsafe "$1[\"querySelector\"]($2)"
+        js_querySelector :: Document -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelector Mozilla Document.querySelector documentation> 
+querySelector ::
+              (MonadIO m, IsDocument self, ToJSString selectors) =>
+                self -> selectors -> m (Maybe Element)
+querySelector self selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_querySelector (toDocument self) (toJSString selectors)))
+ 
+foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
+        js_querySelectorAll ::
+        Document -> JSString -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll Mozilla Document.querySelectorAll documentation> 
+querySelectorAll ::
+                 (MonadIO m, IsDocument self, ToJSString selectors) =>
+                   self -> selectors -> m (Maybe NodeList)
+querySelectorAll self selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_querySelectorAll (toDocument self) (toJSString selectors)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"webkitGetNamedFlows\"]()"
+        js_webkitGetNamedFlows ::
+        Document -> IO (Nullable DOMNamedFlowCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
+webkitGetNamedFlows ::
+                    (MonadIO m, IsDocument self) =>
+                      self -> m (Maybe DOMNamedFlowCollection)
+webkitGetNamedFlows self
+  = liftIO
+      (nullableToMaybe <$> (js_webkitGetNamedFlows (toDocument self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createTouch\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12)"
+        js_createTouch ::
+        Document ->
+          Nullable Window ->
+            Nullable EventTarget ->
+              Int ->
+                Int ->
+                  Int ->
+                    Int -> Int -> Int -> Int -> Float -> Float -> IO (Nullable 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 ->
+                    Int ->
+                      Int ->
+                        Int ->
+                          Int -> Int -> Int -> Int -> Float -> Float -> m (Maybe Touch)
+createTouch self window target identifier pageX pageY screenX
+  screenY webkitRadiusX webkitRadiusY webkitRotationAngle webkitForce
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createTouch (toDocument self) (maybeToNullable window)
+            (maybeToNullable (fmap toEventTarget target))
+            identifier
+            pageX
+            pageY
+            screenX
+            screenY
+            webkitRadiusX
+            webkitRadiusY
+            webkitRotationAngle
+            webkitForce))
+ 
+foreign import javascript unsafe "$1[\"createTouchList\"]()"
+        js_createTouchList :: Document -> IO (Nullable TouchList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
+createTouchList ::
+                (MonadIO m, IsDocument self) => self -> m (Maybe TouchList)
+createTouchList self
+  = liftIO
+      (nullableToMaybe <$> (js_createTouchList (toDocument self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"implementation\"]"
+        js_getImplementation :: Document -> IO (Nullable DOMImplementation)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.implementation Mozilla Document.implementation documentation> 
+getImplementation ::
+                  (MonadIO m, IsDocument self) => self -> m (Maybe DOMImplementation)
+getImplementation self
+  = liftIO
+      (nullableToMaybe <$> (js_getImplementation (toDocument self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"inputEncoding\"]"
+        js_getInputEncoding :: Document -> IO (Nullable 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 (Maybe result)
+getInputEncoding self
+  = liftIO
+      (fromMaybeJSString <$> (js_getInputEncoding (toDocument self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"xmlVersion\"] = $2;"
+        js_setXmlVersion :: Document -> Nullable 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) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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))
+ 
+foreign import javascript unsafe "$1[\"documentURI\"]"
+        js_getDocumentURI :: Document -> IO (Nullable 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 (Maybe result)
+getDocumentURI self
+  = liftIO
+      (fromMaybeJSString <$> (js_getDocumentURI (toDocument self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"styleSheets\"]"
+        js_getStyleSheets :: Document -> IO (Nullable StyleSheetList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.styleSheets Mozilla Document.styleSheets documentation> 
+getStyleSheets ::
+               (MonadIO m, IsDocument self) => self -> m (Maybe StyleSheetList)
+getStyleSheets self
+  = liftIO
+      (nullableToMaybe <$> (js_getStyleSheets (toDocument self)))
+ 
+foreign import javascript unsafe "$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[\"title\"] = $2;" js_setTitle
+        :: Document -> Nullable 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 -> Maybe val -> m ()
+setTitle self val
+  = liftIO (js_setTitle (toDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"title\"]" js_getTitle ::
+        Document -> IO (Nullable 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 (Maybe result)
+getTitle self
+  = liftIO (fromMaybeJSString <$> (js_getTitle (toDocument self)))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"domain\"] = $2;"
+        js_setDomain :: Document -> Nullable 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 -> Maybe val -> m ()
+setDomain self val
+  = liftIO (js_setDomain (toDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"domain\"]" js_getDomain ::
+        Document -> IO (Nullable 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 (Maybe result)
+getDomain self
+  = liftIO (fromMaybeJSString <$> (js_getDomain (toDocument self)))
+ 
+foreign import javascript unsafe "$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[\"cookie\"] = $2;"
+        js_setCookie :: Document -> Nullable 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 -> Maybe val -> m ()
+setCookie self val
+  = liftIO (js_setCookie (toDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"cookie\"]" js_getCookie ::
+        Document -> IO (Nullable 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 (Maybe result)
+getCookie self
+  = liftIO (fromMaybeJSString <$> (js_getCookie (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"body\"] = $2;" js_setBody ::
+        Document -> Nullable 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)
+         (maybeToNullable (fmap toHTMLElement val)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"images\"]" js_getImages ::
+        Document -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.images Mozilla Document.images documentation> 
+getImages ::
+          (MonadIO m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getImages self
+  = liftIO (nullableToMaybe <$> (js_getImages (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"applets\"]" js_getApplets ::
+        Document -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.applets Mozilla Document.applets documentation> 
+getApplets ::
+           (MonadIO m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getApplets self
+  = liftIO (nullableToMaybe <$> (js_getApplets (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"links\"]" js_getLinks ::
+        Document -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.links Mozilla Document.links documentation> 
+getLinks ::
+         (MonadIO m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getLinks self
+  = liftIO (nullableToMaybe <$> (js_getLinks (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"forms\"]" js_getForms ::
+        Document -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.forms Mozilla Document.forms documentation> 
+getForms ::
+         (MonadIO m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getForms self
+  = liftIO (nullableToMaybe <$> (js_getForms (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"anchors\"]" js_getAnchors ::
+        Document -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.anchors Mozilla Document.anchors documentation> 
+getAnchors ::
+           (MonadIO m, IsDocument self) => self -> m (Maybe HTMLCollection)
+getAnchors self
+  = liftIO (nullableToMaybe <$> (js_getAnchors (toDocument self)))
+ 
+foreign import javascript unsafe "$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[\"location\"] = $2;"
+        js_setLocation :: Document -> Nullable Location -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
+setLocation ::
+            (MonadIO m, IsDocument self) => self -> Maybe Location -> m ()
+setLocation self val
+  = liftIO (js_setLocation (toDocument self) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"charset\"] = $2;"
+        js_setCharset :: Document -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.charset Mozilla Document.charset documentation> 
+setCharset ::
+           (MonadIO m, IsDocument self, ToJSString val) =>
+             self -> Maybe val -> m ()
+setCharset self val
+  = liftIO (js_setCharset (toDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"charset\"]" js_getCharset ::
+        Document -> IO (Nullable 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 (Maybe result)
+getCharset self
+  = liftIO (fromMaybeJSString <$> (js_getCharset (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"defaultCharset\"]"
+        js_getDefaultCharset :: Document -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultCharset Mozilla Document.defaultCharset documentation> 
+getDefaultCharset ::
+                  (MonadIO m, IsDocument self, FromJSString result) =>
+                    self -> m (Maybe result)
+getDefaultCharset self
+  = liftIO
+      (fromMaybeJSString <$> (js_getDefaultCharset (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: Document -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.readyState Mozilla Document.readyState documentation> 
+getReadyState ::
+              (MonadIO m, IsDocument self, FromJSString result) =>
+                self -> m (Maybe result)
+getReadyState self
+  = liftIO
+      (fromMaybeJSString <$> (js_getReadyState (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"characterSet\"]"
+        js_getCharacterSet :: Document -> IO (Nullable 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 (Maybe result)
+getCharacterSet self
+  = liftIO
+      (fromMaybeJSString <$> (js_getCharacterSet (toDocument self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe
+        "$1[\"selectedStylesheetSet\"] = $2;" js_setSelectedStylesheetSet
+        :: Document -> Nullable 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)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"activeElement\"]"
+        js_getActiveElement :: Document -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.activeElement Mozilla Document.activeElement documentation> 
+getActiveElement ::
+                 (MonadIO m, IsDocument self) => self -> m (Maybe Element)
+getActiveElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getActiveElement (toDocument self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"webkitCurrentFullScreenElement\"]"
+        js_getWebkitCurrentFullScreenElement ::
+        Document -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCurrentFullScreenElement Mozilla Document.webkitCurrentFullScreenElement documentation> 
+getWebkitCurrentFullScreenElement ::
+                                  (MonadIO m, IsDocument self) => self -> m (Maybe Element)
+getWebkitCurrentFullScreenElement self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getWebkitCurrentFullScreenElement (toDocument self)))
+ 
+foreign import javascript unsafe
+        "($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[\"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)))
+ 
+foreign import javascript unsafe "$1[\"pointerLockElement\"]"
+        js_getPointerLockElement :: Document -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.pointerLockElement Mozilla Document.pointerLockElement documentation> 
+getPointerLockElement ::
+                      (MonadIO m, IsDocument self) => self -> m (Maybe Element)
+getPointerLockElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getPointerLockElement (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"fonts\"]" js_getFonts ::
+        Document -> IO (Nullable FontLoader)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.fonts Mozilla Document.fonts documentation> 
+getFonts ::
+         (MonadIO m, IsDocument self) => self -> m (Maybe FontLoader)
+getFonts self
+  = liftIO (nullableToMaybe <$> (js_getFonts (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onabort Mozilla Document.onabort documentation> 
+abort ::
+      (IsDocument self, IsEventTarget self) => EventName self UIEvent
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onblur Mozilla Document.onblur documentation> 
+blur ::
+     (IsDocument self, IsEventTarget self) => EventName self FocusEvent
+blur = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onchange Mozilla Document.onchange documentation> 
+change ::
+       (IsDocument self, IsEventTarget self) => EventName self Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onclick Mozilla Document.onclick documentation> 
+click ::
+      (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+click = unsafeEventName (toJSString "click")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oncontextmenu Mozilla Document.oncontextmenu documentation> 
+contextMenu ::
+            (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+contextMenu = unsafeEventName (toJSString "contextmenu")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondblclick Mozilla Document.ondblclick documentation> 
+dblClick ::
+         (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dblClick = unsafeEventName (toJSString "dblclick")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondrag Mozilla Document.ondrag documentation> 
+drag ::
+     (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+drag = unsafeEventName (toJSString "drag")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragend Mozilla Document.ondragend documentation> 
+dragEnd ::
+        (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragEnd = unsafeEventName (toJSString "dragend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragenter Mozilla Document.ondragenter documentation> 
+dragEnter ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragEnter = unsafeEventName (toJSString "dragenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragleave Mozilla Document.ondragleave documentation> 
+dragLeave ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragLeave = unsafeEventName (toJSString "dragleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragover Mozilla Document.ondragover documentation> 
+dragOver ::
+         (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragOver = unsafeEventName (toJSString "dragover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondragstart Mozilla Document.ondragstart documentation> 
+dragStart ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+dragStart = unsafeEventName (toJSString "dragstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ondrop Mozilla Document.ondrop documentation> 
+drop ::
+     (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+drop = unsafeEventName (toJSString "drop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onerror Mozilla Document.onerror documentation> 
+error ::
+      (IsDocument self, IsEventTarget self) => EventName self UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onfocus Mozilla Document.onfocus documentation> 
+focus ::
+      (IsDocument self, IsEventTarget self) => EventName self FocusEvent
+focus = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oninput Mozilla Document.oninput documentation> 
+input ::
+      (IsDocument self, IsEventTarget self) => EventName self Event
+input = unsafeEventName (toJSString "input")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oninvalid Mozilla Document.oninvalid documentation> 
+invalid ::
+        (IsDocument self, IsEventTarget self) => EventName self Event
+invalid = unsafeEventName (toJSString "invalid")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onkeydown Mozilla Document.onkeydown documentation> 
+keyDown ::
+        (IsDocument self, IsEventTarget self) =>
+          EventName self KeyboardEvent
+keyDown = unsafeEventName (toJSString "keydown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onkeypress Mozilla Document.onkeypress documentation> 
+keyPress ::
+         (IsDocument self, IsEventTarget self) =>
+           EventName self KeyboardEvent
+keyPress = unsafeEventName (toJSString "keypress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onkeyup Mozilla Document.onkeyup documentation> 
+keyUp ::
+      (IsDocument self, IsEventTarget self) =>
+        EventName self KeyboardEvent
+keyUp = unsafeEventName (toJSString "keyup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onload Mozilla Document.onload documentation> 
+load ::
+     (IsDocument self, IsEventTarget self) => EventName self UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmousedown Mozilla Document.onmousedown documentation> 
+mouseDown ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseDown = unsafeEventName (toJSString "mousedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseenter Mozilla Document.onmouseenter documentation> 
+mouseEnter ::
+           (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseEnter = unsafeEventName (toJSString "mouseenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseleave Mozilla Document.onmouseleave documentation> 
+mouseLeave ::
+           (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseLeave = unsafeEventName (toJSString "mouseleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmousemove Mozilla Document.onmousemove documentation> 
+mouseMove ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseMove = unsafeEventName (toJSString "mousemove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseout Mozilla Document.onmouseout documentation> 
+mouseOut ::
+         (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseOut = unsafeEventName (toJSString "mouseout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseover Mozilla Document.onmouseover documentation> 
+mouseOver ::
+          (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseOver = unsafeEventName (toJSString "mouseover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmouseup Mozilla Document.onmouseup documentation> 
+mouseUp ::
+        (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseUp = unsafeEventName (toJSString "mouseup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onmousewheel Mozilla Document.onmousewheel documentation> 
+mouseWheel ::
+           (IsDocument self, IsEventTarget self) => EventName self MouseEvent
+mouseWheel = unsafeEventName (toJSString "mousewheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onreadystatechange Mozilla Document.onreadystatechange documentation> 
+readyStateChange ::
+                 (IsDocument self, IsEventTarget self) => EventName self Event
+readyStateChange = unsafeEventName (toJSString "readystatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onscroll Mozilla Document.onscroll documentation> 
+scroll ::
+       (IsDocument self, IsEventTarget self) => EventName self UIEvent
+scroll = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onselect Mozilla Document.onselect documentation> 
+select ::
+       (IsDocument self, IsEventTarget self) => EventName self UIEvent
+select = unsafeEventName (toJSString "select")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onsubmit Mozilla Document.onsubmit documentation> 
+submit ::
+       (IsDocument self, IsEventTarget self) => EventName self Event
+submit = unsafeEventName (toJSString "submit")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwheel Mozilla Document.onwheel documentation> 
+wheel ::
+      (IsDocument self, IsEventTarget self) => EventName self WheelEvent
+wheel = unsafeEventName (toJSString "wheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onbeforecut Mozilla Document.onbeforecut documentation> 
+beforeCut ::
+          (IsDocument self, IsEventTarget self) => EventName self Event
+beforeCut = unsafeEventName (toJSString "beforecut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oncut Mozilla Document.oncut documentation> 
+cut ::
+    (IsDocument self, IsEventTarget self) => EventName self Event
+cut = unsafeEventName (toJSString "cut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onbeforecopy Mozilla Document.onbeforecopy documentation> 
+beforeCopy ::
+           (IsDocument self, IsEventTarget self) => EventName self Event
+beforeCopy = unsafeEventName (toJSString "beforecopy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.oncopy Mozilla Document.oncopy documentation> 
+copy ::
+     (IsDocument self, IsEventTarget self) => EventName self Event
+copy = unsafeEventName (toJSString "copy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onbeforepaste Mozilla Document.onbeforepaste documentation> 
+beforePaste ::
+            (IsDocument self, IsEventTarget self) => EventName self Event
+beforePaste = unsafeEventName (toJSString "beforepaste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onpaste Mozilla Document.onpaste documentation> 
+paste ::
+      (IsDocument self, IsEventTarget self) => EventName self Event
+paste = unsafeEventName (toJSString "paste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onreset Mozilla Document.onreset documentation> 
+reset ::
+      (IsDocument self, IsEventTarget self) => EventName self Event
+reset = unsafeEventName (toJSString "reset")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onsearch Mozilla Document.onsearch documentation> 
+search ::
+       (IsDocument self, IsEventTarget self) => EventName self Event
+search = unsafeEventName (toJSString "search")
+
+-- | <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")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ontouchstart Mozilla Document.ontouchstart documentation> 
+touchStart ::
+           (IsDocument self, IsEventTarget self) => EventName self TouchEvent
+touchStart = unsafeEventName (toJSString "touchstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ontouchmove Mozilla Document.ontouchmove documentation> 
+touchMove ::
+          (IsDocument self, IsEventTarget self) => EventName self TouchEvent
+touchMove = unsafeEventName (toJSString "touchmove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ontouchend Mozilla Document.ontouchend documentation> 
+touchEnd ::
+         (IsDocument self, IsEventTarget self) => EventName self TouchEvent
+touchEnd = unsafeEventName (toJSString "touchend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.ontouchcancel Mozilla Document.ontouchcancel documentation> 
+touchCancel ::
+            (IsDocument self, IsEventTarget self) => EventName self TouchEvent
+touchCancel = unsafeEventName (toJSString "touchcancel")
+
+-- | <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")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onsecuritypolicyviolation Mozilla Document.onsecuritypolicyviolation documentation> 
+securitypolicyviolation ::
+                        (IsDocument self, IsEventTarget self) =>
+                          EventName self onsecuritypolicyviolation
+securitypolicyviolation
+  = unsafeEventName (toJSString "securitypolicyviolation")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitwillrevealbottom Mozilla Document.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom ::
+                       (IsDocument self, IsEventTarget self) => EventName self Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitwillrevealleft Mozilla Document.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft ::
+                     (IsDocument self, IsEventTarget self) => EventName self Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitwillrevealright Mozilla Document.onwebkitwillrevealright documentation> 
+webKitWillRevealRight ::
+                      (IsDocument self, IsEventTarget self) => EventName self Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitwillrevealtop Mozilla Document.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop ::
+                    (IsDocument self, IsEventTarget self) => EventName self Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
+ 
+foreign import javascript unsafe "$1[\"visibilityState\"]"
+        js_getVisibilityState :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.visibilityState Mozilla Document.visibilityState documentation> 
+getVisibilityState ::
+                   (MonadIO m, IsDocument self, FromJSString result) =>
+                     self -> m result
+getVisibilityState self
+  = liftIO
+      (fromJSString <$> (js_getVisibilityState (toDocument self)))
+ 
+foreign import javascript unsafe "($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[\"securityPolicy\"]"
+        js_getSecurityPolicy :: Document -> IO (Nullable SecurityPolicy)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.securityPolicy Mozilla Document.securityPolicy documentation> 
+getSecurityPolicy ::
+                  (MonadIO m, IsDocument self) => self -> m (Maybe SecurityPolicy)
+getSecurityPolicy self
+  = liftIO
+      (nullableToMaybe <$> (js_getSecurityPolicy (toDocument self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
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,54 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DocumentFragment
+       (js_newDocumentFragment, newDocumentFragment, js_querySelector,
+        querySelector, js_querySelectorAll, querySelectorAll,
+        DocumentFragment, castToDocumentFragment, gTypeDocumentFragment)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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)
+ 
+foreign import javascript unsafe "$1[\"querySelector\"]($2)"
+        js_querySelector ::
+        DocumentFragment -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.querySelector Mozilla DocumentFragment.querySelector documentation> 
+querySelector ::
+              (MonadIO m, ToJSString selectors) =>
+                DocumentFragment -> selectors -> m (Maybe Element)
+querySelector self selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_querySelector (self) (toJSString selectors)))
+ 
+foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
+        js_querySelectorAll ::
+        DocumentFragment -> JSString -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.querySelectorAll Mozilla DocumentFragment.querySelectorAll documentation> 
+querySelectorAll ::
+                 (MonadIO m, ToJSString selectors) =>
+                   DocumentFragment -> selectors -> m (Maybe NodeList)
+querySelectorAll self selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_querySelectorAll (self) (toJSString selectors)))
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,77 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.DocumentType
+       (js_getName, getName, js_getEntities, getEntities, js_getNotations,
+        getNotations, js_getPublicId, getPublicId, js_getSystemId,
+        getSystemId, js_getInternalSubset, getInternalSubset, DocumentType,
+        castToDocumentType, gTypeDocumentType)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"entities\"]" js_getEntities
+        :: DocumentType -> IO (Nullable NamedNodeMap)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.entities Mozilla DocumentType.entities documentation> 
+getEntities ::
+            (MonadIO m) => DocumentType -> m (Maybe NamedNodeMap)
+getEntities self
+  = liftIO (nullableToMaybe <$> (js_getEntities (self)))
+ 
+foreign import javascript unsafe "$1[\"notations\"]"
+        js_getNotations :: DocumentType -> IO (Nullable NamedNodeMap)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.notations Mozilla DocumentType.notations documentation> 
+getNotations ::
+             (MonadIO m) => DocumentType -> m (Maybe NamedNodeMap)
+getNotations self
+  = liftIO (nullableToMaybe <$> (js_getNotations (self)))
+ 
+foreign import javascript unsafe "$1[\"publicId\"]" js_getPublicId
+        :: DocumentType -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.publicId Mozilla DocumentType.publicId documentation> 
+getPublicId ::
+            (MonadIO m, FromJSString result) =>
+              DocumentType -> m (Maybe result)
+getPublicId self
+  = liftIO (fromMaybeJSString <$> (js_getPublicId (self)))
+ 
+foreign import javascript unsafe "$1[\"systemId\"]" js_getSystemId
+        :: DocumentType -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.systemId Mozilla DocumentType.systemId documentation> 
+getSystemId ::
+            (MonadIO m, FromJSString result) =>
+              DocumentType -> m (Maybe result)
+getSystemId self
+  = liftIO (fromMaybeJSString <$> (js_getSystemId (self)))
+ 
+foreign import javascript unsafe "$1[\"internalSubset\"]"
+        js_getInternalSubset :: DocumentType -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.internalSubset Mozilla DocumentType.internalSubset documentation> 
+getInternalSubset ::
+                  (MonadIO m, FromJSString result) =>
+                    DocumentType -> m (Maybe result)
+getInternalSubset self
+  = liftIO (fromMaybeJSString <$> (js_getInternalSubset (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,74 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToDynamicsCompressorNode, gTypeDynamicsCompressorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"threshold\"]"
+        js_getThreshold ::
+        DynamicsCompressorNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
+getThreshold ::
+             (MonadIO m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getThreshold self
+  = liftIO (nullableToMaybe <$> (js_getThreshold (self)))
+ 
+foreign import javascript unsafe "$1[\"knee\"]" js_getKnee ::
+        DynamicsCompressorNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.knee Mozilla DynamicsCompressorNode.knee documentation> 
+getKnee ::
+        (MonadIO m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getKnee self = liftIO (nullableToMaybe <$> (js_getKnee (self)))
+ 
+foreign import javascript unsafe "$1[\"ratio\"]" js_getRatio ::
+        DynamicsCompressorNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.ratio Mozilla DynamicsCompressorNode.ratio documentation> 
+getRatio ::
+         (MonadIO m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getRatio self = liftIO (nullableToMaybe <$> (js_getRatio (self)))
+ 
+foreign import javascript unsafe "$1[\"reduction\"]"
+        js_getReduction ::
+        DynamicsCompressorNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.reduction Mozilla DynamicsCompressorNode.reduction documentation> 
+getReduction ::
+             (MonadIO m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getReduction self
+  = liftIO (nullableToMaybe <$> (js_getReduction (self)))
+ 
+foreign import javascript unsafe "$1[\"attack\"]" js_getAttack ::
+        DynamicsCompressorNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.attack Mozilla DynamicsCompressorNode.attack documentation> 
+getAttack ::
+          (MonadIO m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getAttack self = liftIO (nullableToMaybe <$> (js_getAttack (self)))
+ 
+foreign import javascript unsafe "$1[\"release\"]" js_getRelease ::
+        DynamicsCompressorNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.release Mozilla DynamicsCompressorNode.release documentation> 
+getRelease ::
+           (MonadIO m) => DynamicsCompressorNode -> m (Maybe AudioParam)
+getRelease self
+  = liftIO (nullableToMaybe <$> (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,21 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax
+       (pattern MIN_EXT, pattern MAX_EXT, EXTBlendMinMax,
+        castToEXTBlendMinMax, gTypeEXTBlendMinMax)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,23 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic
+       (pattern TEXTURE_MAX_ANISOTROPY_EXT,
+        pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT,
+        EXTTextureFilterAnisotropic, castToEXTTextureFilterAnisotropic,
+        gTypeEXTTextureFilterAnisotropic)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,25 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.EXTsRGB
+       (pattern SRGB_EXT, pattern SRGB_ALPHA_EXT,
+        pattern SRGB8_ALPHA8_EXT,
+        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT, EXTsRGB,
+        castToEXTsRGB, gTypeEXTsRGB)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,1045 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Element
+       (js_getAttribute, getAttribute, js_setAttribute, setAttribute,
+        js_removeAttribute, removeAttribute, js_getAttributeNode,
+        getAttributeNode, js_setAttributeNode, setAttributeNode,
+        js_removeAttributeNode, removeAttributeNode,
+        js_getElementsByTagName, getElementsByTagName, js_hasAttributes,
+        hasAttributes, js_getAttributeNS, getAttributeNS,
+        js_setAttributeNS, setAttributeNS, js_removeAttributeNS,
+        removeAttributeNS, js_getElementsByTagNameNS,
+        getElementsByTagNameNS, js_getAttributeNodeNS, getAttributeNodeNS,
+        js_setAttributeNodeNS, setAttributeNodeNS, js_hasAttribute,
+        hasAttribute, js_hasAttributeNS, hasAttributeNS, js_focus, focus,
+        js_blur, blur, js_scrollIntoView, scrollIntoView,
+        js_scrollIntoViewIfNeeded, scrollIntoViewIfNeeded,
+        js_scrollByLines, scrollByLines, js_scrollByPages, scrollByPages,
+        js_getElementsByClassName, getElementsByClassName,
+        js_querySelector, querySelector, js_querySelectorAll,
+        querySelectorAll, js_matches, matches, js_closest, closest,
+        js_webkitMatchesSelector, webkitMatchesSelector, js_getClientRects,
+        getClientRects, js_getBoundingClientRect, getBoundingClientRect,
+        js_webkitRequestFullScreen, webkitRequestFullScreen,
+        js_webkitRequestFullscreen, webkitRequestFullscreen,
+        js_requestPointerLock, requestPointerLock,
+        js_webkitGetRegionFlowRanges, webkitGetRegionFlowRanges,
+        pattern ALLOW_KEYBOARD_INPUT, js_getTagName, getTagName,
+        js_getAttributes, getAttributes, js_getStyle, getStyle, js_setId,
+        setId, js_getId, getId, js_getOffsetLeft, getOffsetLeft,
+        js_getOffsetTop, getOffsetTop, js_getOffsetWidth, getOffsetWidth,
+        js_getOffsetHeight, getOffsetHeight, js_getClientLeft,
+        getClientLeft, js_getClientTop, getClientTop, js_getClientWidth,
+        getClientWidth, js_getClientHeight, getClientHeight,
+        js_setScrollLeft, setScrollLeft, js_getScrollLeft, getScrollLeft,
+        js_setScrollTop, setScrollTop, js_getScrollTop, getScrollTop,
+        js_getScrollWidth, getScrollWidth, js_getScrollHeight,
+        getScrollHeight, js_getOffsetParent, getOffsetParent,
+        js_setInnerHTML, setInnerHTML, js_getInnerHTML, getInnerHTML,
+        js_setOuterHTML, setOuterHTML, js_getOuterHTML, getOuterHTML,
+        js_setClassName, setClassName, js_getClassName, getClassName,
+        js_getClassList, getClassList, js_getDataset, getDataset,
+        js_getFirstElementChild, getFirstElementChild,
+        js_getLastElementChild, getLastElementChild,
+        js_getPreviousElementSibling, getPreviousElementSibling,
+        js_getNextElementSibling, getNextElementSibling,
+        js_getChildElementCount, getChildElementCount, js_setUiactions,
+        setUiactions, js_getUiactions, getUiactions,
+        js_getWebkitRegionOverset, getWebkitRegionOverset, abort,
+        blurEvent, change, click, contextMenu, dblClick, drag, dragEnd,
+        dragEnter, dragLeave, dragOver, dragStart, drop, error, focusEvent,
+        input, invalid, keyDown, keyPress, keyUp, load, mouseDown,
+        mouseEnter, mouseLeave, mouseMove, mouseOut, mouseOver, mouseUp,
+        mouseWheel, scroll, select, submit, wheel, beforeCut, cut,
+        beforeCopy, copy, beforePaste, paste, reset, search, selectStart,
+        touchStart, touchMove, touchEnd, touchCancel,
+        webKitFullscreenChange, webKitFullscreenError,
+        webKitWillRevealBottom, webKitWillRevealLeft,
+        webKitWillRevealRight, webKitWillRevealTop, Element, castToElement,
+        gTypeElement, IsElement, toElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 name,
+              FromJSString result) =>
+               self -> name -> m (Maybe result)
+getAttribute self name
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getAttribute (toElement self) (toJSString name)))
+ 
+foreign import javascript unsafe "$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 name, ToJSString value) =>
+               self -> name -> value -> m ()
+setAttribute self name value
+  = liftIO
+      (js_setAttribute (toElement self) (toJSString name)
+         (toJSString value))
+ 
+foreign import javascript unsafe "$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 name) =>
+                  self -> name -> m ()
+removeAttribute self name
+  = liftIO (js_removeAttribute (toElement self) (toJSString name))
+ 
+foreign import javascript unsafe "$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 name) =>
+                   self -> name -> m (Maybe Attr)
+getAttributeNode self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getAttributeNode (toElement self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"setAttributeNode\"]($2)"
+        js_setAttributeNode ::
+        Element -> Nullable 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 -> Maybe Attr -> m (Maybe Attr)
+setAttributeNode self newAttr
+  = liftIO
+      (nullableToMaybe <$>
+         (js_setAttributeNode (toElement self) (maybeToNullable newAttr)))
+ 
+foreign import javascript unsafe "$1[\"removeAttributeNode\"]($2)"
+        js_removeAttributeNode ::
+        Element -> Nullable Attr -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
+removeAttributeNode ::
+                    (MonadIO m, IsElement self) => self -> Maybe Attr -> m (Maybe Attr)
+removeAttributeNode self oldAttr
+  = liftIO
+      (nullableToMaybe <$>
+         (js_removeAttributeNode (toElement self)
+            (maybeToNullable oldAttr)))
+ 
+foreign import javascript unsafe "$1[\"getElementsByTagName\"]($2)"
+        js_getElementsByTagName ::
+        Element -> JSString -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
+getElementsByTagName ::
+                     (MonadIO m, IsElement self, ToJSString name) =>
+                       self -> name -> m (Maybe NodeList)
+getElementsByTagName self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementsByTagName (toElement self) (toJSString name)))
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"getAttributeNS\"]($2, $3)"
+        js_getAttributeNS ::
+        Element -> Nullable JSString -> JSString -> IO 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 result
+getAttributeNS self namespaceURI localName
+  = liftIO
+      (fromJSString <$>
+         (js_getAttributeNS (toElement self) (toMaybeJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe
+        "$1[\"setAttributeNS\"]($2, $3, $4)" js_setAttributeNS ::
+        Element -> Nullable 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) (toMaybeJSString namespaceURI)
+         (toJSString qualifiedName)
+         (toJSString value))
+ 
+foreign import javascript unsafe
+        "$1[\"removeAttributeNS\"]($2, $3)" js_removeAttributeNS ::
+        Element -> Nullable 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)
+         (toMaybeJSString namespaceURI)
+         (toJSString localName))
+ 
+foreign import javascript unsafe
+        "$1[\"getElementsByTagNameNS\"]($2,\n$3)" js_getElementsByTagNameNS
+        ::
+        Element -> Nullable JSString -> JSString -> IO (Nullable NodeList)
+
+-- | <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 (Maybe NodeList)
+getElementsByTagNameNS self namespaceURI localName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementsByTagNameNS (toElement self)
+            (toMaybeJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe
+        "$1[\"getAttributeNodeNS\"]($2, $3)" js_getAttributeNodeNS ::
+        Element -> Nullable 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)
+            (toMaybeJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe "$1[\"setAttributeNodeNS\"]($2)"
+        js_setAttributeNodeNS ::
+        Element -> Nullable 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 -> Maybe Attr -> m (Maybe Attr)
+setAttributeNodeNS self newAttr
+  = liftIO
+      (nullableToMaybe <$>
+         (js_setAttributeNodeNS (toElement self) (maybeToNullable newAttr)))
+ 
+foreign import javascript unsafe
+        "($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 name) =>
+               self -> name -> m Bool
+hasAttribute self name
+  = liftIO (js_hasAttribute (toElement self) (toJSString name))
+ 
+foreign import javascript unsafe
+        "($1[\"hasAttributeNS\"]($2,\n$3) ? 1 : 0)" js_hasAttributeNS ::
+        Element -> Nullable 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) (toMaybeJSString namespaceURI)
+         (toJSString localName))
+ 
+foreign import javascript unsafe "$1[\"focus\"]()" js_focus ::
+        Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.focus Mozilla Element.focus documentation> 
+focus :: (MonadIO m, IsElement self) => self -> m ()
+focus self = liftIO (js_focus (toElement self))
+ 
+foreign import javascript unsafe "$1[\"blur\"]()" js_blur ::
+        Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.blur Mozilla Element.blur documentation> 
+blur :: (MonadIO m, IsElement self) => self -> m ()
+blur self = liftIO (js_blur (toElement self))
+ 
+foreign import javascript unsafe "$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[\"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[\"scrollByLines\"]($2)"
+        js_scrollByLines :: Element -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollByLines Mozilla Element.scrollByLines documentation> 
+scrollByLines :: (MonadIO m, IsElement self) => self -> Int -> m ()
+scrollByLines self lines
+  = liftIO (js_scrollByLines (toElement self) lines)
+ 
+foreign import javascript unsafe "$1[\"scrollByPages\"]($2)"
+        js_scrollByPages :: Element -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollByPages Mozilla Element.scrollByPages documentation> 
+scrollByPages :: (MonadIO m, IsElement self) => self -> Int -> m ()
+scrollByPages self pages
+  = liftIO (js_scrollByPages (toElement self) pages)
+ 
+foreign import javascript unsafe
+        "$1[\"getElementsByClassName\"]($2)" js_getElementsByClassName ::
+        Element -> JSString -> IO (Nullable NodeList)
+
+-- | <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 (Maybe NodeList)
+getElementsByClassName self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementsByClassName (toElement self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"querySelector\"]($2)"
+        js_querySelector :: Element -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelector Mozilla Element.querySelector documentation> 
+querySelector ::
+              (MonadIO m, IsElement self, ToJSString selectors) =>
+                self -> selectors -> m (Maybe Element)
+querySelector self selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_querySelector (toElement self) (toJSString selectors)))
+ 
+foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
+        js_querySelectorAll ::
+        Element -> JSString -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelectorAll Mozilla Element.querySelectorAll documentation> 
+querySelectorAll ::
+                 (MonadIO m, IsElement self, ToJSString selectors) =>
+                   self -> selectors -> m (Maybe NodeList)
+querySelectorAll self selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_querySelectorAll (toElement self) (toJSString selectors)))
+ 
+foreign import javascript unsafe "($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))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"getClientRects\"]()"
+        js_getClientRects :: Element -> IO (Nullable ClientRectList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
+getClientRects ::
+               (MonadIO m, IsElement self) => self -> m (Maybe ClientRectList)
+getClientRects self
+  = liftIO (nullableToMaybe <$> (js_getClientRects (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"getBoundingClientRect\"]()"
+        js_getBoundingClientRect :: Element -> IO (Nullable ClientRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
+getBoundingClientRect ::
+                      (MonadIO m, IsElement self) => self -> m (Maybe ClientRect)
+getBoundingClientRect self
+  = liftIO
+      (nullableToMaybe <$> (js_getBoundingClientRect (toElement self)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitRequestFullScreen\"]($2)" js_webkitRequestFullScreen ::
+        Element -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullScreen Mozilla Element.webkitRequestFullScreen documentation> 
+webkitRequestFullScreen ::
+                        (MonadIO m, IsElement self) => self -> Word -> m ()
+webkitRequestFullScreen self flags
+  = liftIO (js_webkitRequestFullScreen (toElement self) flags)
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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)
+pattern ALLOW_KEYBOARD_INPUT = 1
+ 
+foreign import javascript unsafe "$1[\"tagName\"]" js_getTagName ::
+        Element -> IO (Nullable 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 (Maybe result)
+getTagName self
+  = liftIO (fromMaybeJSString <$> (js_getTagName (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"attributes\"]"
+        js_getAttributes :: Element -> IO (Nullable NamedNodeMap)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attributes Mozilla Element.attributes documentation> 
+getAttributes ::
+              (MonadIO m, IsElement self) => self -> m (Maybe NamedNodeMap)
+getAttributes self
+  = liftIO (nullableToMaybe <$> (js_getAttributes (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        Element -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.style Mozilla Element.style documentation> 
+getStyle ::
+         (MonadIO m, IsElement self) =>
+           self -> m (Maybe CSSStyleDeclaration)
+getStyle self
+  = liftIO (nullableToMaybe <$> (js_getStyle (toElement self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"offsetLeft\"]"
+        js_getOffsetLeft :: Element -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetLeft Mozilla Element.offsetLeft documentation> 
+getOffsetLeft :: (MonadIO m, IsElement self) => self -> m Double
+getOffsetLeft self = liftIO (js_getOffsetLeft (toElement self))
+ 
+foreign import javascript unsafe "$1[\"offsetTop\"]"
+        js_getOffsetTop :: Element -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetTop Mozilla Element.offsetTop documentation> 
+getOffsetTop :: (MonadIO m, IsElement self) => self -> m Double
+getOffsetTop self = liftIO (js_getOffsetTop (toElement self))
+ 
+foreign import javascript unsafe "$1[\"offsetWidth\"]"
+        js_getOffsetWidth :: Element -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetWidth Mozilla Element.offsetWidth documentation> 
+getOffsetWidth :: (MonadIO m, IsElement self) => self -> m Double
+getOffsetWidth self = liftIO (js_getOffsetWidth (toElement self))
+ 
+foreign import javascript unsafe "$1[\"offsetHeight\"]"
+        js_getOffsetHeight :: Element -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetHeight Mozilla Element.offsetHeight documentation> 
+getOffsetHeight :: (MonadIO m, IsElement self) => self -> m Double
+getOffsetHeight self = liftIO (js_getOffsetHeight (toElement self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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 unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"offsetParent\"]"
+        js_getOffsetParent :: Element -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetParent Mozilla Element.offsetParent documentation> 
+getOffsetParent ::
+                (MonadIO m, IsElement self) => self -> m (Maybe Element)
+getOffsetParent self
+  = liftIO
+      (nullableToMaybe <$> (js_getOffsetParent (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"innerHTML\"] = $2;"
+        js_setInnerHTML :: Element -> Nullable 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 -> Maybe val -> m ()
+setInnerHTML self val
+  = liftIO (js_setInnerHTML (toElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"innerHTML\"]"
+        js_getInnerHTML :: Element -> IO (Nullable 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 (Maybe result)
+getInnerHTML self
+  = liftIO (fromMaybeJSString <$> (js_getInnerHTML (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"outerHTML\"] = $2;"
+        js_setOuterHTML :: Element -> Nullable 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 -> Maybe val -> m ()
+setOuterHTML self val
+  = liftIO (js_setOuterHTML (toElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"outerHTML\"]"
+        js_getOuterHTML :: Element -> IO (Nullable 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 (Maybe result)
+getOuterHTML self
+  = liftIO (fromMaybeJSString <$> (js_getOuterHTML (toElement self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"classList\"]"
+        js_getClassList :: Element -> IO (Nullable DOMTokenList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.classList Mozilla Element.classList documentation> 
+getClassList ::
+             (MonadIO m, IsElement self) => self -> m (Maybe DOMTokenList)
+getClassList self
+  = liftIO (nullableToMaybe <$> (js_getClassList (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"dataset\"]" js_getDataset ::
+        Element -> IO (Nullable DOMStringMap)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.dataset Mozilla Element.dataset documentation> 
+getDataset ::
+           (MonadIO m, IsElement self) => self -> m (Maybe DOMStringMap)
+getDataset self
+  = liftIO (nullableToMaybe <$> (js_getDataset (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"firstElementChild\"]"
+        js_getFirstElementChild :: Element -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.firstElementChild Mozilla Element.firstElementChild documentation> 
+getFirstElementChild ::
+                     (MonadIO m, IsElement self) => self -> m (Maybe Element)
+getFirstElementChild self
+  = liftIO
+      (nullableToMaybe <$> (js_getFirstElementChild (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"lastElementChild\"]"
+        js_getLastElementChild :: Element -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.lastElementChild Mozilla Element.lastElementChild documentation> 
+getLastElementChild ::
+                    (MonadIO m, IsElement self) => self -> m (Maybe Element)
+getLastElementChild self
+  = liftIO
+      (nullableToMaybe <$> (js_getLastElementChild (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"previousElementSibling\"]"
+        js_getPreviousElementSibling :: Element -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.previousElementSibling Mozilla Element.previousElementSibling documentation> 
+getPreviousElementSibling ::
+                          (MonadIO m, IsElement self) => self -> m (Maybe Element)
+getPreviousElementSibling self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getPreviousElementSibling (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"nextElementSibling\"]"
+        js_getNextElementSibling :: Element -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.nextElementSibling Mozilla Element.nextElementSibling documentation> 
+getNextElementSibling ::
+                      (MonadIO m, IsElement self) => self -> m (Maybe Element)
+getNextElementSibling self
+  = liftIO
+      (nullableToMaybe <$> (js_getNextElementSibling (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"childElementCount\"]"
+        js_getChildElementCount :: Element -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.childElementCount Mozilla Element.childElementCount documentation> 
+getChildElementCount ::
+                     (MonadIO m, IsElement self) => self -> m Word
+getChildElementCount self
+  = liftIO (js_getChildElementCount (toElement self))
+ 
+foreign import javascript unsafe "$1[\"uiactions\"] = $2;"
+        js_setUiactions :: Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.uiactions Mozilla Element.uiactions documentation> 
+setUiactions ::
+             (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
+setUiactions self val
+  = liftIO (js_setUiactions (toElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"uiactions\"]"
+        js_getUiactions :: Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.uiactions Mozilla Element.uiactions documentation> 
+getUiactions ::
+             (MonadIO m, IsElement self, FromJSString result) =>
+               self -> m result
+getUiactions self
+  = liftIO (fromJSString <$> (js_getUiactions (toElement self)))
+ 
+foreign import javascript unsafe "$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.onabort Mozilla Element.onabort documentation> 
+abort ::
+      (IsElement self, IsEventTarget self) => EventName self UIEvent
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onblur Mozilla Element.onblur documentation> 
+blurEvent ::
+          (IsElement self, IsEventTarget self) => EventName self FocusEvent
+blurEvent = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onchange Mozilla Element.onchange documentation> 
+change ::
+       (IsElement self, IsEventTarget self) => EventName self Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onclick Mozilla Element.onclick documentation> 
+click ::
+      (IsElement self, IsEventTarget self) => EventName self MouseEvent
+click = unsafeEventName (toJSString "click")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oncontextmenu Mozilla Element.oncontextmenu documentation> 
+contextMenu ::
+            (IsElement self, IsEventTarget self) => EventName self MouseEvent
+contextMenu = unsafeEventName (toJSString "contextmenu")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondblclick Mozilla Element.ondblclick documentation> 
+dblClick ::
+         (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dblClick = unsafeEventName (toJSString "dblclick")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondrag Mozilla Element.ondrag documentation> 
+drag ::
+     (IsElement self, IsEventTarget self) => EventName self MouseEvent
+drag = unsafeEventName (toJSString "drag")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragend Mozilla Element.ondragend documentation> 
+dragEnd ::
+        (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragEnd = unsafeEventName (toJSString "dragend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragenter Mozilla Element.ondragenter documentation> 
+dragEnter ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragEnter = unsafeEventName (toJSString "dragenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragleave Mozilla Element.ondragleave documentation> 
+dragLeave ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragLeave = unsafeEventName (toJSString "dragleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragover Mozilla Element.ondragover documentation> 
+dragOver ::
+         (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragOver = unsafeEventName (toJSString "dragover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondragstart Mozilla Element.ondragstart documentation> 
+dragStart ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+dragStart = unsafeEventName (toJSString "dragstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ondrop Mozilla Element.ondrop documentation> 
+drop ::
+     (IsElement self, IsEventTarget self) => EventName self MouseEvent
+drop = unsafeEventName (toJSString "drop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onerror Mozilla Element.onerror documentation> 
+error ::
+      (IsElement self, IsEventTarget self) => EventName self UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onfocus Mozilla Element.onfocus documentation> 
+focusEvent ::
+           (IsElement self, IsEventTarget self) => EventName self FocusEvent
+focusEvent = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oninput Mozilla Element.oninput documentation> 
+input ::
+      (IsElement self, IsEventTarget self) => EventName self Event
+input = unsafeEventName (toJSString "input")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oninvalid Mozilla Element.oninvalid documentation> 
+invalid ::
+        (IsElement self, IsEventTarget self) => EventName self Event
+invalid = unsafeEventName (toJSString "invalid")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onkeydown Mozilla Element.onkeydown documentation> 
+keyDown ::
+        (IsElement self, IsEventTarget self) =>
+          EventName self KeyboardEvent
+keyDown = unsafeEventName (toJSString "keydown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onkeypress Mozilla Element.onkeypress documentation> 
+keyPress ::
+         (IsElement self, IsEventTarget self) =>
+           EventName self KeyboardEvent
+keyPress = unsafeEventName (toJSString "keypress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onkeyup Mozilla Element.onkeyup documentation> 
+keyUp ::
+      (IsElement self, IsEventTarget self) =>
+        EventName self KeyboardEvent
+keyUp = unsafeEventName (toJSString "keyup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onload Mozilla Element.onload documentation> 
+load ::
+     (IsElement self, IsEventTarget self) => EventName self UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmousedown Mozilla Element.onmousedown documentation> 
+mouseDown ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseDown = unsafeEventName (toJSString "mousedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseenter Mozilla Element.onmouseenter documentation> 
+mouseEnter ::
+           (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseEnter = unsafeEventName (toJSString "mouseenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseleave Mozilla Element.onmouseleave documentation> 
+mouseLeave ::
+           (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseLeave = unsafeEventName (toJSString "mouseleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmousemove Mozilla Element.onmousemove documentation> 
+mouseMove ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseMove = unsafeEventName (toJSString "mousemove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseout Mozilla Element.onmouseout documentation> 
+mouseOut ::
+         (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseOut = unsafeEventName (toJSString "mouseout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseover Mozilla Element.onmouseover documentation> 
+mouseOver ::
+          (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseOver = unsafeEventName (toJSString "mouseover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmouseup Mozilla Element.onmouseup documentation> 
+mouseUp ::
+        (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseUp = unsafeEventName (toJSString "mouseup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onmousewheel Mozilla Element.onmousewheel documentation> 
+mouseWheel ::
+           (IsElement self, IsEventTarget self) => EventName self MouseEvent
+mouseWheel = unsafeEventName (toJSString "mousewheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onscroll Mozilla Element.onscroll documentation> 
+scroll ::
+       (IsElement self, IsEventTarget self) => EventName self UIEvent
+scroll = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onselect Mozilla Element.onselect documentation> 
+select ::
+       (IsElement self, IsEventTarget self) => EventName self UIEvent
+select = unsafeEventName (toJSString "select")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onsubmit Mozilla Element.onsubmit documentation> 
+submit ::
+       (IsElement self, IsEventTarget self) => EventName self Event
+submit = unsafeEventName (toJSString "submit")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwheel Mozilla Element.onwheel documentation> 
+wheel ::
+      (IsElement self, IsEventTarget self) => EventName self WheelEvent
+wheel = unsafeEventName (toJSString "wheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onbeforecut Mozilla Element.onbeforecut documentation> 
+beforeCut ::
+          (IsElement self, IsEventTarget self) => EventName self Event
+beforeCut = unsafeEventName (toJSString "beforecut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oncut Mozilla Element.oncut documentation> 
+cut :: (IsElement self, IsEventTarget self) => EventName self Event
+cut = unsafeEventName (toJSString "cut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onbeforecopy Mozilla Element.onbeforecopy documentation> 
+beforeCopy ::
+           (IsElement self, IsEventTarget self) => EventName self Event
+beforeCopy = unsafeEventName (toJSString "beforecopy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.oncopy Mozilla Element.oncopy documentation> 
+copy ::
+     (IsElement self, IsEventTarget self) => EventName self Event
+copy = unsafeEventName (toJSString "copy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onbeforepaste Mozilla Element.onbeforepaste documentation> 
+beforePaste ::
+            (IsElement self, IsEventTarget self) => EventName self Event
+beforePaste = unsafeEventName (toJSString "beforepaste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onpaste Mozilla Element.onpaste documentation> 
+paste ::
+      (IsElement self, IsEventTarget self) => EventName self Event
+paste = unsafeEventName (toJSString "paste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onreset Mozilla Element.onreset documentation> 
+reset ::
+      (IsElement self, IsEventTarget self) => EventName self Event
+reset = unsafeEventName (toJSString "reset")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onsearch Mozilla Element.onsearch documentation> 
+search ::
+       (IsElement self, IsEventTarget self) => EventName self Event
+search = unsafeEventName (toJSString "search")
+
+-- | <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.ontouchstart Mozilla Element.ontouchstart documentation> 
+touchStart ::
+           (IsElement self, IsEventTarget self) => EventName self TouchEvent
+touchStart = unsafeEventName (toJSString "touchstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ontouchmove Mozilla Element.ontouchmove documentation> 
+touchMove ::
+          (IsElement self, IsEventTarget self) => EventName self TouchEvent
+touchMove = unsafeEventName (toJSString "touchmove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ontouchend Mozilla Element.ontouchend documentation> 
+touchEnd ::
+         (IsElement self, IsEventTarget self) => EventName self TouchEvent
+touchEnd = unsafeEventName (toJSString "touchend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ontouchcancel Mozilla Element.ontouchcancel documentation> 
+touchCancel ::
+            (IsElement self, IsEventTarget self) => EventName self TouchEvent
+touchCancel = unsafeEventName (toJSString "touchcancel")
+
+-- | <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.onwebkitwillrevealbottom Mozilla Element.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom ::
+                       (IsElement self, IsEventTarget self) => EventName self Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitwillrevealleft Mozilla Element.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft ::
+                     (IsElement self, IsEventTarget self) => EventName self Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitwillrevealright Mozilla Element.onwebkitwillrevealright documentation> 
+webKitWillRevealRight ::
+                      (IsElement self, IsEventTarget self) => EventName self Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitwillrevealtop Mozilla Element.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop ::
+                    (IsElement self, IsEventTarget self) => EventName self Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Entity.hs b/src/GHCJS/DOM/JSFFI/Generated/Entity.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Entity.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Entity
+       (js_getPublicId, getPublicId, js_getSystemId, getSystemId,
+        js_getNotationName, getNotationName, Entity, castToEntity,
+        gTypeEntity)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"publicId\"]" js_getPublicId
+        :: Entity -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.publicId Mozilla Entity.publicId documentation> 
+getPublicId ::
+            (MonadIO m, FromJSString result) => Entity -> m (Maybe result)
+getPublicId self
+  = liftIO (fromMaybeJSString <$> (js_getPublicId (self)))
+ 
+foreign import javascript unsafe "$1[\"systemId\"]" js_getSystemId
+        :: Entity -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.systemId Mozilla Entity.systemId documentation> 
+getSystemId ::
+            (MonadIO m, FromJSString result) => Entity -> m (Maybe result)
+getSystemId self
+  = liftIO (fromMaybeJSString <$> (js_getSystemId (self)))
+ 
+foreign import javascript unsafe "$1[\"notationName\"]"
+        js_getNotationName :: Entity -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.notationName Mozilla Entity.notationName documentation> 
+getNotationName ::
+                (MonadIO m, FromJSString result) => Entity -> m (Maybe result)
+getNotationName self
+  = liftIO (fromMaybeJSString <$> (js_getNotationName (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,771 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Enums
+       (KeyType(..), PToJSVal, ToJSVal, PFromJSVal, FromJSVal,
+        js_KeyTypeSecret, js_KeyTypePublic, js_KeyTypePrivate,
+        KeyUsage(..), js_KeyUsageEncrypt, js_KeyUsageDecrypt,
+        js_KeyUsageSign, js_KeyUsageVerify, js_KeyUsageDeriveKey,
+        js_KeyUsageDeriveBits, js_KeyUsageWrapKey, js_KeyUsageUnwrapKey,
+        CanvasWindingRule(..), js_CanvasWindingRuleNonzero,
+        js_CanvasWindingRuleEvenodd, VideoPresentationMode(..),
+        js_VideoPresentationModeFullscreen,
+        js_VideoPresentationModeOptimized, js_VideoPresentationModeInline,
+        TextTrackMode(..), js_TextTrackModeDisabled,
+        js_TextTrackModeHidden, js_TextTrackModeShowing, TextTrackKind(..),
+        js_TextTrackKindSubtitles, js_TextTrackKindCaptions,
+        js_TextTrackKindDescriptions, js_TextTrackKindChapters,
+        js_TextTrackKindMetadata, DeviceType(..), js_DeviceTypeNone,
+        js_DeviceTypeAirplay, js_DeviceTypeTvout, MediaUIPartID(..),
+        js_MediaUIPartIDOptimizedFullscreenButton,
+        js_MediaUIPartIDOptimizedFullscreenPlaceholder,
+        EndOfStreamError(..), js_EndOfStreamErrorNetwork,
+        js_EndOfStreamErrorDecode, AppendMode(..), js_AppendModeSegments,
+        js_AppendModeSequence, SourceTypeEnum(..), js_SourceTypeEnumNone,
+        js_SourceTypeEnumCamera, js_SourceTypeEnumMicrophone,
+        VideoFacingModeEnum(..), js_VideoFacingModeEnumUser,
+        js_VideoFacingModeEnumEnvironment, js_VideoFacingModeEnumLeft,
+        js_VideoFacingModeEnumRight, MediaStreamTrackState(..),
+        js_MediaStreamTrackStateNew, js_MediaStreamTrackStateLive,
+        js_MediaStreamTrackStateEnded, RTCIceTransportsEnum(..),
+        js_RTCIceTransportsEnumNone, js_RTCIceTransportsEnumRelay,
+        js_RTCIceTransportsEnumAll, RTCIdentityOptionEnum(..),
+        js_RTCIdentityOptionEnumYes, js_RTCIdentityOptionEnumNo,
+        js_RTCIdentityOptionEnumIfconfigured, ReadableStreamStateType(..),
+        js_ReadableStreamStateTypeReadable,
+        js_ReadableStreamStateTypeWaiting,
+        js_ReadableStreamStateTypeClosed,
+        js_ReadableStreamStateTypeErrored, OverSampleType(..),
+        js_OverSampleTypeNone, js_OverSampleType2x, js_OverSampleType4x,
+        PageOverlayType(..), js_PageOverlayTypeView,
+        js_PageOverlayTypeDocument, 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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+ 
+data KeyType = KeyTypeSecret
+             | KeyTypePublic
+             | KeyTypePrivate
+             deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal KeyType where
+        pToJSVal KeyTypeSecret = js_KeyTypeSecret
+        pToJSVal KeyTypePublic = js_KeyTypePublic
+        pToJSVal KeyTypePrivate = js_KeyTypePrivate
+ 
+instance ToJSVal KeyType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal KeyType where
+        pFromJSVal x | x `js_eq` js_KeyTypeSecret = KeyTypeSecret
+        pFromJSVal x | x `js_eq` js_KeyTypePublic = KeyTypePublic
+        pFromJSVal x | x `js_eq` js_KeyTypePrivate = KeyTypePrivate
+ 
+instance FromJSVal KeyType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"secret\"" js_KeyTypeSecret ::
+        JSVal
+ 
+foreign import javascript unsafe "\"public\"" js_KeyTypePublic ::
+        JSVal
+ 
+foreign import javascript unsafe "\"private\"" js_KeyTypePrivate ::
+        JSVal
+ 
+data KeyUsage = KeyUsageEncrypt
+              | KeyUsageDecrypt
+              | KeyUsageSign
+              | KeyUsageVerify
+              | KeyUsageDeriveKey
+              | KeyUsageDeriveBits
+              | KeyUsageWrapKey
+              | KeyUsageUnwrapKey
+              deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal KeyUsage where
+        pToJSVal KeyUsageEncrypt = js_KeyUsageEncrypt
+        pToJSVal KeyUsageDecrypt = js_KeyUsageDecrypt
+        pToJSVal KeyUsageSign = js_KeyUsageSign
+        pToJSVal KeyUsageVerify = js_KeyUsageVerify
+        pToJSVal KeyUsageDeriveKey = js_KeyUsageDeriveKey
+        pToJSVal KeyUsageDeriveBits = js_KeyUsageDeriveBits
+        pToJSVal KeyUsageWrapKey = js_KeyUsageWrapKey
+        pToJSVal KeyUsageUnwrapKey = js_KeyUsageUnwrapKey
+ 
+instance ToJSVal KeyUsage where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal KeyUsage where
+        pFromJSVal x | x `js_eq` js_KeyUsageEncrypt = KeyUsageEncrypt
+        pFromJSVal x | x `js_eq` js_KeyUsageDecrypt = KeyUsageDecrypt
+        pFromJSVal x | x `js_eq` js_KeyUsageSign = KeyUsageSign
+        pFromJSVal x | x `js_eq` js_KeyUsageVerify = KeyUsageVerify
+        pFromJSVal x | x `js_eq` js_KeyUsageDeriveKey = KeyUsageDeriveKey
+        pFromJSVal x | x `js_eq` js_KeyUsageDeriveBits = KeyUsageDeriveBits
+        pFromJSVal x | x `js_eq` js_KeyUsageWrapKey = KeyUsageWrapKey
+        pFromJSVal x | x `js_eq` js_KeyUsageUnwrapKey = KeyUsageUnwrapKey
+ 
+instance FromJSVal KeyUsage where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"encrypt\"" js_KeyUsageEncrypt
+        :: JSVal
+ 
+foreign import javascript unsafe "\"decrypt\"" js_KeyUsageDecrypt
+        :: JSVal
+ 
+foreign import javascript unsafe "\"sign\"" js_KeyUsageSign ::
+        JSVal
+ 
+foreign import javascript unsafe "\"verify\"" js_KeyUsageVerify ::
+        JSVal
+ 
+foreign import javascript unsafe "\"deriveKey\""
+        js_KeyUsageDeriveKey :: JSVal
+ 
+foreign import javascript unsafe "\"deriveBits\""
+        js_KeyUsageDeriveBits :: JSVal
+ 
+foreign import javascript unsafe "\"wrapKey\"" js_KeyUsageWrapKey
+        :: JSVal
+ 
+foreign import javascript unsafe "\"unwrapKey\""
+        js_KeyUsageUnwrapKey :: 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 "\"nonzero\""
+        js_CanvasWindingRuleNonzero :: JSVal
+ 
+foreign import javascript unsafe "\"evenodd\""
+        js_CanvasWindingRuleEvenodd :: JSVal
+ 
+data VideoPresentationMode = VideoPresentationModeFullscreen
+                           | VideoPresentationModeOptimized
+                           | VideoPresentationModeInline
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal VideoPresentationMode where
+        pToJSVal VideoPresentationModeFullscreen
+          = js_VideoPresentationModeFullscreen
+        pToJSVal VideoPresentationModeOptimized
+          = js_VideoPresentationModeOptimized
+        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_VideoPresentationModeOptimized =
+            VideoPresentationModeOptimized
+        pFromJSVal x
+          | x `js_eq` js_VideoPresentationModeInline =
+            VideoPresentationModeInline
+ 
+instance FromJSVal VideoPresentationMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"fullscreen\""
+        js_VideoPresentationModeFullscreen :: JSVal
+ 
+foreign import javascript unsafe "\"optimized\""
+        js_VideoPresentationModeOptimized :: JSVal
+ 
+foreign import javascript unsafe "\"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 "\"disabled\""
+        js_TextTrackModeDisabled :: JSVal
+ 
+foreign import javascript unsafe "\"hidden\""
+        js_TextTrackModeHidden :: JSVal
+ 
+foreign import javascript unsafe "\"showing\""
+        js_TextTrackModeShowing :: JSVal
+ 
+data TextTrackKind = TextTrackKindSubtitles
+                   | TextTrackKindCaptions
+                   | TextTrackKindDescriptions
+                   | TextTrackKindChapters
+                   | TextTrackKindMetadata
+                   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
+ 
+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
+ 
+instance FromJSVal TextTrackKind where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"subtitles\""
+        js_TextTrackKindSubtitles :: JSVal
+ 
+foreign import javascript unsafe "\"captions\""
+        js_TextTrackKindCaptions :: JSVal
+ 
+foreign import javascript unsafe "\"descriptions\""
+        js_TextTrackKindDescriptions :: JSVal
+ 
+foreign import javascript unsafe "\"chapters\""
+        js_TextTrackKindChapters :: JSVal
+ 
+foreign import javascript unsafe "\"metadata\""
+        js_TextTrackKindMetadata :: 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 "\"none\"" js_DeviceTypeNone ::
+        JSVal
+ 
+foreign import javascript unsafe "\"airplay\"" js_DeviceTypeAirplay
+        :: JSVal
+ 
+foreign import javascript unsafe "\"tvout\"" js_DeviceTypeTvout ::
+        JSVal
+ 
+data MediaUIPartID = MediaUIPartIDOptimizedFullscreenButton
+                   | MediaUIPartIDOptimizedFullscreenPlaceholder
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaUIPartID where
+        pToJSVal MediaUIPartIDOptimizedFullscreenButton
+          = js_MediaUIPartIDOptimizedFullscreenButton
+        pToJSVal MediaUIPartIDOptimizedFullscreenPlaceholder
+          = js_MediaUIPartIDOptimizedFullscreenPlaceholder
+ 
+instance ToJSVal MediaUIPartID where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal MediaUIPartID where
+        pFromJSVal x
+          | x `js_eq` js_MediaUIPartIDOptimizedFullscreenButton =
+            MediaUIPartIDOptimizedFullscreenButton
+        pFromJSVal x
+          | x `js_eq` js_MediaUIPartIDOptimizedFullscreenPlaceholder =
+            MediaUIPartIDOptimizedFullscreenPlaceholder
+ 
+instance FromJSVal MediaUIPartID where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"optimized-fullscreen-button\""
+        js_MediaUIPartIDOptimizedFullscreenButton :: JSVal
+ 
+foreign import javascript unsafe
+        "\"optimized-fullscreen-placeholder\""
+        js_MediaUIPartIDOptimizedFullscreenPlaceholder :: 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 "\"network\""
+        js_EndOfStreamErrorNetwork :: JSVal
+ 
+foreign import javascript unsafe "\"decode\""
+        js_EndOfStreamErrorDecode :: 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 "\"segments\""
+        js_AppendModeSegments :: JSVal
+ 
+foreign import javascript unsafe "\"sequence\""
+        js_AppendModeSequence :: JSVal
+ 
+data SourceTypeEnum = SourceTypeEnumNone
+                    | SourceTypeEnumCamera
+                    | SourceTypeEnumMicrophone
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal SourceTypeEnum where
+        pToJSVal SourceTypeEnumNone = js_SourceTypeEnumNone
+        pToJSVal SourceTypeEnumCamera = js_SourceTypeEnumCamera
+        pToJSVal SourceTypeEnumMicrophone = js_SourceTypeEnumMicrophone
+ 
+instance ToJSVal SourceTypeEnum where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal SourceTypeEnum where
+        pFromJSVal x | x `js_eq` js_SourceTypeEnumNone = SourceTypeEnumNone
+        pFromJSVal x
+          | x `js_eq` js_SourceTypeEnumCamera = SourceTypeEnumCamera
+        pFromJSVal x
+          | x `js_eq` js_SourceTypeEnumMicrophone = SourceTypeEnumMicrophone
+ 
+instance FromJSVal SourceTypeEnum where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"none\"" js_SourceTypeEnumNone
+        :: JSVal
+ 
+foreign import javascript unsafe "\"camera\""
+        js_SourceTypeEnumCamera :: JSVal
+ 
+foreign import javascript unsafe "\"microphone\""
+        js_SourceTypeEnumMicrophone :: JSVal
+ 
+data VideoFacingModeEnum = VideoFacingModeEnumUser
+                         | VideoFacingModeEnumEnvironment
+                         | VideoFacingModeEnumLeft
+                         | VideoFacingModeEnumRight
+                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal VideoFacingModeEnum where
+        pToJSVal VideoFacingModeEnumUser = js_VideoFacingModeEnumUser
+        pToJSVal VideoFacingModeEnumEnvironment
+          = js_VideoFacingModeEnumEnvironment
+        pToJSVal VideoFacingModeEnumLeft = js_VideoFacingModeEnumLeft
+        pToJSVal VideoFacingModeEnumRight = js_VideoFacingModeEnumRight
+ 
+instance ToJSVal VideoFacingModeEnum where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal VideoFacingModeEnum where
+        pFromJSVal x
+          | x `js_eq` js_VideoFacingModeEnumUser = VideoFacingModeEnumUser
+        pFromJSVal x
+          | x `js_eq` js_VideoFacingModeEnumEnvironment =
+            VideoFacingModeEnumEnvironment
+        pFromJSVal x
+          | x `js_eq` js_VideoFacingModeEnumLeft = VideoFacingModeEnumLeft
+        pFromJSVal x
+          | x `js_eq` js_VideoFacingModeEnumRight = VideoFacingModeEnumRight
+ 
+instance FromJSVal VideoFacingModeEnum where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"user\""
+        js_VideoFacingModeEnumUser :: JSVal
+ 
+foreign import javascript unsafe "\"environment\""
+        js_VideoFacingModeEnumEnvironment :: JSVal
+ 
+foreign import javascript unsafe "\"left\""
+        js_VideoFacingModeEnumLeft :: JSVal
+ 
+foreign import javascript unsafe "\"right\""
+        js_VideoFacingModeEnumRight :: JSVal
+ 
+data MediaStreamTrackState = MediaStreamTrackStateNew
+                           | MediaStreamTrackStateLive
+                           | MediaStreamTrackStateEnded
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaStreamTrackState where
+        pToJSVal MediaStreamTrackStateNew = js_MediaStreamTrackStateNew
+        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_MediaStreamTrackStateNew = MediaStreamTrackStateNew
+        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 "\"new\""
+        js_MediaStreamTrackStateNew :: JSVal
+ 
+foreign import javascript unsafe "\"live\""
+        js_MediaStreamTrackStateLive :: JSVal
+ 
+foreign import javascript unsafe "\"ended\""
+        js_MediaStreamTrackStateEnded :: JSVal
+ 
+data RTCIceTransportsEnum = RTCIceTransportsEnumNone
+                          | RTCIceTransportsEnumRelay
+                          | RTCIceTransportsEnumAll
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCIceTransportsEnum where
+        pToJSVal RTCIceTransportsEnumNone = js_RTCIceTransportsEnumNone
+        pToJSVal RTCIceTransportsEnumRelay = js_RTCIceTransportsEnumRelay
+        pToJSVal RTCIceTransportsEnumAll = js_RTCIceTransportsEnumAll
+ 
+instance ToJSVal RTCIceTransportsEnum where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCIceTransportsEnum where
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportsEnumNone = RTCIceTransportsEnumNone
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportsEnumRelay =
+            RTCIceTransportsEnumRelay
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportsEnumAll = RTCIceTransportsEnumAll
+ 
+instance FromJSVal RTCIceTransportsEnum where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"none\""
+        js_RTCIceTransportsEnumNone :: JSVal
+ 
+foreign import javascript unsafe "\"relay\""
+        js_RTCIceTransportsEnumRelay :: JSVal
+ 
+foreign import javascript unsafe "\"all\""
+        js_RTCIceTransportsEnumAll :: JSVal
+ 
+data RTCIdentityOptionEnum = RTCIdentityOptionEnumYes
+                           | RTCIdentityOptionEnumNo
+                           | RTCIdentityOptionEnumIfconfigured
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCIdentityOptionEnum where
+        pToJSVal RTCIdentityOptionEnumYes = js_RTCIdentityOptionEnumYes
+        pToJSVal RTCIdentityOptionEnumNo = js_RTCIdentityOptionEnumNo
+        pToJSVal RTCIdentityOptionEnumIfconfigured
+          = js_RTCIdentityOptionEnumIfconfigured
+ 
+instance ToJSVal RTCIdentityOptionEnum where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCIdentityOptionEnum where
+        pFromJSVal x
+          | x `js_eq` js_RTCIdentityOptionEnumYes = RTCIdentityOptionEnumYes
+        pFromJSVal x
+          | x `js_eq` js_RTCIdentityOptionEnumNo = RTCIdentityOptionEnumNo
+        pFromJSVal x
+          | x `js_eq` js_RTCIdentityOptionEnumIfconfigured =
+            RTCIdentityOptionEnumIfconfigured
+ 
+instance FromJSVal RTCIdentityOptionEnum where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"yes\""
+        js_RTCIdentityOptionEnumYes :: JSVal
+ 
+foreign import javascript unsafe "\"no\""
+        js_RTCIdentityOptionEnumNo :: JSVal
+ 
+foreign import javascript unsafe "\"ifconfigured\""
+        js_RTCIdentityOptionEnumIfconfigured :: JSVal
+ 
+data ReadableStreamStateType = ReadableStreamStateTypeReadable
+                             | ReadableStreamStateTypeWaiting
+                             | ReadableStreamStateTypeClosed
+                             | ReadableStreamStateTypeErrored
+                             deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ReadableStreamStateType where
+        pToJSVal ReadableStreamStateTypeReadable
+          = js_ReadableStreamStateTypeReadable
+        pToJSVal ReadableStreamStateTypeWaiting
+          = js_ReadableStreamStateTypeWaiting
+        pToJSVal ReadableStreamStateTypeClosed
+          = js_ReadableStreamStateTypeClosed
+        pToJSVal ReadableStreamStateTypeErrored
+          = js_ReadableStreamStateTypeErrored
+ 
+instance ToJSVal ReadableStreamStateType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ReadableStreamStateType where
+        pFromJSVal x
+          | x `js_eq` js_ReadableStreamStateTypeReadable =
+            ReadableStreamStateTypeReadable
+        pFromJSVal x
+          | x `js_eq` js_ReadableStreamStateTypeWaiting =
+            ReadableStreamStateTypeWaiting
+        pFromJSVal x
+          | x `js_eq` js_ReadableStreamStateTypeClosed =
+            ReadableStreamStateTypeClosed
+        pFromJSVal x
+          | x `js_eq` js_ReadableStreamStateTypeErrored =
+            ReadableStreamStateTypeErrored
+ 
+instance FromJSVal ReadableStreamStateType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"readable\""
+        js_ReadableStreamStateTypeReadable :: JSVal
+ 
+foreign import javascript unsafe "\"waiting\""
+        js_ReadableStreamStateTypeWaiting :: JSVal
+ 
+foreign import javascript unsafe "\"closed\""
+        js_ReadableStreamStateTypeClosed :: JSVal
+ 
+foreign import javascript unsafe "\"errored\""
+        js_ReadableStreamStateTypeErrored :: 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 "\"none\"" js_OverSampleTypeNone
+        :: JSVal
+ 
+foreign import javascript unsafe "\"2x\"" js_OverSampleType2x ::
+        JSVal
+ 
+foreign import javascript unsafe "\"4x\"" js_OverSampleType4x ::
+        JSVal
+ 
+data PageOverlayType = PageOverlayTypeView
+                     | PageOverlayTypeDocument
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal PageOverlayType where
+        pToJSVal PageOverlayTypeView = js_PageOverlayTypeView
+        pToJSVal PageOverlayTypeDocument = js_PageOverlayTypeDocument
+ 
+instance ToJSVal PageOverlayType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal PageOverlayType where
+        pFromJSVal x
+          | x `js_eq` js_PageOverlayTypeView = PageOverlayTypeView
+        pFromJSVal x
+          | x `js_eq` js_PageOverlayTypeDocument = PageOverlayTypeDocument
+ 
+instance FromJSVal PageOverlayType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "\"view\"" js_PageOverlayTypeView
+        :: JSVal
+ 
+foreign import javascript unsafe "\"document\""
+        js_PageOverlayTypeDocument :: 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 "\"\""
+        js_XMLHttpRequestResponseType :: JSVal
+ 
+foreign import javascript unsafe "\"arraybuffer\""
+        js_XMLHttpRequestResponseTypeArraybuffer :: JSVal
+ 
+foreign import javascript unsafe "\"blob\""
+        js_XMLHttpRequestResponseTypeBlob :: JSVal
+ 
+foreign import javascript unsafe "\"document\""
+        js_XMLHttpRequestResponseTypeDocument :: JSVal
+ 
+foreign import javascript unsafe "\"json\""
+        js_XMLHttpRequestResponseTypeJson :: JSVal
+ 
+foreign import javascript unsafe "\"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,51 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ErrorEvent
+       (js_getMessage, getMessage, js_getFilename, getFilename,
+        js_getLineno, getLineno, js_getColno, getColno, ErrorEvent,
+        castToErrorEvent, gTypeErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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))
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,203 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Event
+       (js_stopPropagation, stopPropagation, js_preventDefault,
+        preventDefault, js_initEvent, initEvent,
+        js_stopImmediatePropagation, stopImmediatePropagation,
+        pattern NONE, pattern CAPTURING_PHASE, pattern AT_TARGET,
+        pattern BUBBLING_PHASE, pattern MOUSEDOWN, pattern MOUSEUP,
+        pattern MOUSEOVER, pattern MOUSEOUT, pattern MOUSEMOVE,
+        pattern MOUSEDRAG, pattern CLICK, pattern DBLCLICK,
+        pattern KEYDOWN, pattern KEYUP, pattern KEYPRESS, pattern DRAGDROP,
+        pattern FOCUS, pattern BLUR, pattern SELECT, pattern CHANGE,
+        js_getType, getType, js_getTarget, getTarget, js_getCurrentTarget,
+        getCurrentTarget, js_getEventPhase, getEventPhase, js_getBubbles,
+        getBubbles, js_getCancelable, getCancelable, js_getTimeStamp,
+        getTimeStamp, js_getDefaultPrevented, getDefaultPrevented,
+        js_getSrcElement, getSrcElement, js_setReturnValue, setReturnValue,
+        js_getReturnValue, getReturnValue, js_setCancelBubble,
+        setCancelBubble, js_getCancelBubble, getCancelBubble,
+        js_getClipboardData, getClipboardData, Event, castToEvent,
+        gTypeEvent, IsEvent, toEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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 eventTypeArg) =>
+            self -> eventTypeArg -> Bool -> Bool -> m ()
+initEvent self eventTypeArg canBubbleArg cancelableArg
+  = liftIO
+      (js_initEvent (toEvent self) (toJSString eventTypeArg) canBubbleArg
+         cancelableArg)
+ 
+foreign import javascript unsafe
+        "$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))
+pattern NONE = 0
+pattern CAPTURING_PHASE = 1
+pattern AT_TARGET = 2
+pattern BUBBLING_PHASE = 3
+pattern MOUSEDOWN = 1
+pattern MOUSEUP = 2
+pattern MOUSEOVER = 4
+pattern MOUSEOUT = 8
+pattern MOUSEMOVE = 16
+pattern MOUSEDRAG = 32
+pattern CLICK = 64
+pattern DBLCLICK = 128
+pattern KEYDOWN = 256
+pattern KEYUP = 512
+pattern KEYPRESS = 1024
+pattern DRAGDROP = 2048
+pattern FOCUS = 4096
+pattern BLUR = 8192
+pattern SELECT = 16384
+pattern CHANGE = 32768
+ 
+foreign import javascript unsafe "$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[\"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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"srcElement\"]"
+        js_getSrcElement :: Event -> IO (Nullable EventTarget)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.srcElement Mozilla Event.srcElement documentation> 
+getSrcElement ::
+              (MonadIO m, IsEvent self) => self -> m (Maybe EventTarget)
+getSrcElement self
+  = liftIO (nullableToMaybe <$> (js_getSrcElement (toEvent self)))
+ 
+foreign import javascript unsafe "$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[\"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))
+ 
+foreign import javascript unsafe "$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[\"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[\"clipboardData\"]"
+        js_getClipboardData :: Event -> IO (Nullable DataTransfer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.clipboardData Mozilla Event.clipboardData documentation> 
+getClipboardData ::
+                 (MonadIO m, IsEvent self) => self -> m (Maybe DataTransfer)
+getClipboardData self
+  = liftIO (nullableToMaybe <$> (js_getClipboardData (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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.EventListener
+       (js_handleEvent, handleEvent, EventListener, castToEventListener,
+        gTypeEventListener)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"handleEvent\"]($2)"
+        js_handleEvent :: EventListener -> Nullable Event -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventListener.handleEvent Mozilla EventListener.handleEvent documentation> 
+handleEvent ::
+            (MonadIO m, IsEvent evt) => EventListener -> Maybe evt -> m ()
+handleEvent self evt
+  = liftIO
+      (js_handleEvent (self) (maybeToNullable (fmap toEvent evt)))
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,80 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToEventSource, gTypeEventSource)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"EventSource\"]($1,\n$2)" js_newEventSource ::
+        JSString -> Nullable Dictionary -> IO EventSource
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation> 
+newEventSource ::
+               (MonadIO m, ToJSString url, IsDictionary eventSourceInit) =>
+                 url -> Maybe eventSourceInit -> m EventSource
+newEventSource url eventSourceInit
+  = liftIO
+      (js_newEventSource (toJSString url)
+         (maybeToNullable (fmap toDictionary eventSourceInit)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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 = unsafeEventName (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onmessage Mozilla EventSource.onmessage documentation> 
+message :: EventName EventSource MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onerror Mozilla EventSource.onerror documentation> 
+error :: EventName EventSource UIEvent
+error = unsafeEventName (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,61 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.EventTarget
+       (js_addEventListener, addEventListener, js_removeEventListener,
+        removeEventListener, js_dispatchEvent, dispatchEvent, EventTarget,
+        castToEventTarget, gTypeEventTarget, IsEventTarget, toEventTarget)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"addEventListener\"]($2, $3,\n$4)" js_addEventListener ::
+        EventTarget -> JSString -> Nullable EventListener -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener Mozilla EventTarget.addEventListener documentation> 
+addEventListener ::
+                 (MonadIO m, IsEventTarget self, ToJSString type') =>
+                   self -> type' -> Maybe EventListener -> Bool -> m ()
+addEventListener self type' listener useCapture
+  = liftIO
+      (js_addEventListener (toEventTarget self) (toJSString type')
+         (maybeToNullable listener)
+         useCapture)
+ 
+foreign import javascript unsafe
+        "$1[\"removeEventListener\"]($2,\n$3, $4)" js_removeEventListener
+        ::
+        EventTarget -> JSString -> Nullable EventListener -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener Mozilla EventTarget.removeEventListener documentation> 
+removeEventListener ::
+                    (MonadIO m, IsEventTarget self, ToJSString type') =>
+                      self -> type' -> Maybe EventListener -> Bool -> m ()
+removeEventListener self type' listener useCapture
+  = liftIO
+      (js_removeEventListener (toEventTarget self) (toJSString type')
+         (maybeToNullable listener)
+         useCapture)
+ 
+foreign import javascript unsafe
+        "($1[\"dispatchEvent\"]($2) ? 1 : 0)" js_dispatchEvent ::
+        EventTarget -> Nullable 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 -> Maybe event -> m Bool
+dispatchEvent self event
+  = liftIO
+      (js_dispatchEvent (toEventTarget self)
+         (maybeToNullable (fmap 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,34 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.File
+       (js_getName, getName, js_getLastModifiedDate, getLastModifiedDate,
+        File, castToFile, gTypeFile)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"lastModifiedDate\"]"
+        js_getLastModifiedDate :: File -> IO (Nullable Date)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/File.lastModifiedDate Mozilla File.lastModifiedDate documentation> 
+getLastModifiedDate :: (MonadIO m) => File -> m (Maybe Date)
+getLastModifiedDate self
+  = liftIO (nullableToMaybe <$> (js_getLastModifiedDate (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,43 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToFileError, gTypeFileError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"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/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,34 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.FileList
+       (js_item, item, js_getLength, getLength, FileList, castToFileList,
+        gTypeFileList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$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,128 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        js_getError, getError, loadStart, progress, load, abortEvent,
+        error, loadEnd, FileReader, castToFileReader, gTypeFileReader)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "$1[\"readAsArrayBuffer\"]($2)"
+        js_readAsArrayBuffer :: FileReader -> Nullable 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) (maybeToNullable (fmap toBlob blob)))
+ 
+foreign import javascript unsafe "$1[\"readAsBinaryString\"]($2)"
+        js_readAsBinaryString :: FileReader -> Nullable 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) (maybeToNullable (fmap toBlob blob)))
+ 
+foreign import javascript unsafe "$1[\"readAsText\"]($2, $3)"
+        js_readAsText :: FileReader -> Nullable Blob -> 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 -> encoding -> m ()
+readAsText self blob encoding
+  = liftIO
+      (js_readAsText (self) (maybeToNullable (fmap toBlob blob))
+         (toJSString encoding))
+ 
+foreign import javascript unsafe "$1[\"readAsDataURL\"]($2)"
+        js_readAsDataURL :: FileReader -> Nullable 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) (maybeToNullable (fmap toBlob blob)))
+ 
+foreign import javascript unsafe "$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[\"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[\"result\"]" js_getResult ::
+        FileReader -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
+getResult :: (MonadIO m) => FileReader -> m JSVal
+getResult self = liftIO (js_getResult (self))
+ 
+foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+        FileReader -> IO (Nullable FileError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.error Mozilla FileReader.error documentation> 
+getError :: (MonadIO m) => FileReader -> m (Maybe FileError)
+getError self = liftIO (nullableToMaybe <$> (js_getError (self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadstart Mozilla FileReader.onloadstart documentation> 
+loadStart :: EventName FileReader ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onprogress Mozilla FileReader.onprogress documentation> 
+progress :: EventName FileReader ProgressEvent
+progress = unsafeEventName (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onload Mozilla FileReader.onload documentation> 
+load :: EventName FileReader UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onabort Mozilla FileReader.onabort documentation> 
+abortEvent :: EventName FileReader UIEvent
+abortEvent = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onerror Mozilla FileReader.onerror documentation> 
+error :: EventName FileReader UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadend Mozilla FileReader.onloadend documentation> 
+loadEnd :: EventName FileReader ProgressEvent
+loadEnd = unsafeEventName (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,82 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.FileReaderSync
+       (js_newFileReaderSync, newFileReaderSync, js_readAsArrayBuffer,
+        readAsArrayBuffer, js_readAsBinaryString, readAsBinaryString,
+        js_readAsText, readAsText, js_readAsDataURL, readAsDataURL,
+        FileReaderSync, castToFileReaderSync, gTypeFileReaderSync)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "$1[\"readAsArrayBuffer\"]($2)"
+        js_readAsArrayBuffer ::
+        FileReaderSync -> Nullable Blob -> IO (Nullable ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
+readAsArrayBuffer ::
+                  (MonadIO m, IsBlob blob) =>
+                    FileReaderSync -> Maybe blob -> m (Maybe ArrayBuffer)
+readAsArrayBuffer self blob
+  = liftIO
+      (nullableToMaybe <$>
+         (js_readAsArrayBuffer (self) (maybeToNullable (fmap toBlob blob))))
+ 
+foreign import javascript unsafe "$1[\"readAsBinaryString\"]($2)"
+        js_readAsBinaryString ::
+        FileReaderSync -> Nullable 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 -> Maybe blob -> m result
+readAsBinaryString self blob
+  = liftIO
+      (fromJSString <$>
+         (js_readAsBinaryString (self)
+            (maybeToNullable (fmap toBlob blob))))
+ 
+foreign import javascript unsafe "$1[\"readAsText\"]($2, $3)"
+        js_readAsText ::
+        FileReaderSync -> Nullable Blob -> 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 -> Maybe blob -> encoding -> m result
+readAsText self blob encoding
+  = liftIO
+      (fromJSString <$>
+         (js_readAsText (self) (maybeToNullable (fmap toBlob blob))
+            (toJSString encoding)))
+ 
+foreign import javascript unsafe "$1[\"readAsDataURL\"]($2)"
+        js_readAsDataURL :: FileReaderSync -> Nullable 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 -> Maybe blob -> m result
+readAsDataURL self blob
+  = liftIO
+      (fromJSString <$>
+         (js_readAsDataURL (self) (maybeToNullable (fmap 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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.FocusEvent
+       (js_getRelatedTarget, getRelatedTarget, FocusEvent,
+        castToFocusEvent, gTypeFocusEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontLoader.hs b/src/GHCJS/DOM/JSFFI/Generated/FontLoader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontLoader.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.FontLoader
+       (js_checkFont, checkFont, js_loadFont, loadFont,
+        js_notifyWhenFontsReady, notifyWhenFontsReady, loading,
+        loadingDone, loadStart, load, error, js_getLoading, getLoading,
+        FontLoader, castToFontLoader, gTypeFontLoader)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"checkFont\"]($2,\n$3) ? 1 : 0)" js_checkFont ::
+        FontLoader -> JSString -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.checkFont Mozilla FontLoader.checkFont documentation> 
+checkFont ::
+          (MonadIO m, ToJSString font, ToJSString text) =>
+            FontLoader -> font -> text -> m Bool
+checkFont self font text
+  = liftIO (js_checkFont (self) (toJSString font) (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"loadFont\"]($2)" js_loadFont
+        :: FontLoader -> Nullable Dictionary -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.loadFont Mozilla FontLoader.loadFont documentation> 
+loadFont ::
+         (MonadIO m, IsDictionary params) =>
+           FontLoader -> Maybe params -> m ()
+loadFont self params
+  = liftIO
+      (js_loadFont (self) (maybeToNullable (fmap toDictionary params)))
+ 
+foreign import javascript unsafe "$1[\"notifyWhenFontsReady\"]($2)"
+        js_notifyWhenFontsReady ::
+        FontLoader -> Nullable VoidCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.notifyWhenFontsReady Mozilla FontLoader.notifyWhenFontsReady documentation> 
+notifyWhenFontsReady ::
+                     (MonadIO m) => FontLoader -> Maybe VoidCallback -> m ()
+notifyWhenFontsReady self callback
+  = liftIO
+      (js_notifyWhenFontsReady (self) (maybeToNullable callback))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onloading Mozilla FontLoader.onloading documentation> 
+loading :: EventName FontLoader Event
+loading = unsafeEventName (toJSString "loading")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onloadingdone Mozilla FontLoader.onloadingdone documentation> 
+loadingDone :: EventName FontLoader Event
+loadingDone = unsafeEventName (toJSString "loadingdone")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onloadstart Mozilla FontLoader.onloadstart documentation> 
+loadStart :: EventName FontLoader ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onload Mozilla FontLoader.onload documentation> 
+load :: EventName FontLoader UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.onerror Mozilla FontLoader.onerror documentation> 
+error :: EventName FontLoader UIEvent
+error = unsafeEventName (toJSString "error")
+ 
+foreign import javascript unsafe "($1[\"loading\"] ? 1 : 0)"
+        js_getLoading :: FontLoader -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.loading Mozilla FontLoader.loading documentation> 
+getLoading :: (MonadIO m) => FontLoader -> m Bool
+getLoading self = liftIO (js_getLoading (self))
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,39 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.FormData
+       (js_newFormData, newFormData, js_append, append, FormData,
+        castToFormData, gTypeFormData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"FormData\"]($1)"
+        js_newFormData :: Nullable 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 (maybeToNullable form))
+ 
+foreign import javascript unsafe "$1[\"append\"]($2, $3, $4)"
+        js_append :: FormData -> JSString -> 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,
+        ToJSString filename) =>
+         FormData -> name -> value -> filename -> m ()
+append self name value filename
+  = liftIO
+      (js_append (self) (toJSString name) (toJSString value)
+         (toJSString 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,25 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.GainNode
+       (js_getGain, getGain, GainNode, castToGainNode, gTypeGainNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"gain\"]" js_getGain ::
+        GainNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
+getGain :: (MonadIO m) => GainNode -> m (Maybe AudioParam)
+getGain self = liftIO (nullableToMaybe <$> (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,72 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToGamepad, gTypeGamepad)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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 [Maybe 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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.GamepadButton
+       (js_getPressed, getPressed, js_getValue, getValue, GamepadButton,
+        castToGamepadButton, gTypeGamepadButton)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "($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[\"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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.GamepadEvent
+       (js_getGamepad, getGamepad, GamepadEvent, castToGamepadEvent,
+        gTypeGamepadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
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,64 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Geolocation
+       (js_getCurrentPosition, getCurrentPosition, js_watchPosition,
+        watchPosition, js_clearWatch, clearWatch, Geolocation,
+        castToGeolocation, gTypeGeolocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getCurrentPosition\"]($2, $3,\n$4)" js_getCurrentPosition ::
+        Geolocation ->
+          Nullable PositionCallback ->
+            Nullable PositionErrorCallback -> Nullable PositionOptions -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation> 
+getCurrentPosition ::
+                   (MonadIO m, IsPositionOptions options) =>
+                     Geolocation ->
+                       Maybe PositionCallback ->
+                         Maybe PositionErrorCallback -> Maybe options -> m ()
+getCurrentPosition self successCallback errorCallback options
+  = liftIO
+      (js_getCurrentPosition (self) (maybeToNullable successCallback)
+         (maybeToNullable errorCallback)
+         (maybeToNullable (fmap toPositionOptions options)))
+ 
+foreign import javascript unsafe
+        "$1[\"watchPosition\"]($2, $3, $4)" js_watchPosition ::
+        Geolocation ->
+          Nullable PositionCallback ->
+            Nullable PositionErrorCallback ->
+              Nullable PositionOptions -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.watchPosition Mozilla Geolocation.watchPosition documentation> 
+watchPosition ::
+              (MonadIO m, IsPositionOptions options) =>
+                Geolocation ->
+                  Maybe PositionCallback ->
+                    Maybe PositionErrorCallback -> Maybe options -> m Int
+watchPosition self successCallback errorCallback options
+  = liftIO
+      (js_watchPosition (self) (maybeToNullable successCallback)
+         (maybeToNullable errorCallback)
+         (maybeToNullable (fmap toPositionOptions options)))
+ 
+foreign import javascript unsafe "$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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Geoposition
+       (js_getCoords, getCoords, js_getTimestamp, getTimestamp,
+        Geoposition, castToGeoposition, gTypeGeoposition)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"coords\"]" js_getCoords ::
+        Geoposition -> IO (Nullable Coordinates)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
+getCoords :: (MonadIO m) => Geoposition -> m (Maybe Coordinates)
+getCoords self = liftIO (nullableToMaybe <$> (js_getCoords (self)))
+ 
+foreign import javascript unsafe "$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/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,56 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLAllCollection
+       (js_item, item, js_namedItem, namedItem, js_tags, tags,
+        js_getLength, getLength, HTMLAllCollection,
+        castToHTMLAllCollection, gTypeHTMLAllCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        HTMLAllCollection -> Word -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
+item :: (MonadIO m) => HTMLAllCollection -> Word -> m (Maybe Node)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem :: HTMLAllCollection -> JSString -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            HTMLAllCollection -> name -> m (Maybe Node)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"tags\"]($2)" js_tags ::
+        HTMLAllCollection -> JSString -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.tags Mozilla HTMLAllCollection.tags documentation> 
+tags ::
+     (MonadIO m, ToJSString name) =>
+       HTMLAllCollection -> name -> m (Maybe NodeList)
+tags self name
+  = liftIO (nullableToMaybe <$> (js_tags (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$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,409 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
+       (js_toString, toString, js_setCharset, setCharset, js_getCharset,
+        getCharset, js_setCoords, setCoords, js_getCoords, getCoords,
+        js_setDownload, setDownload, js_getDownload, getDownload,
+        js_setHref, setHref, js_getHref, getHref, 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_setHash, setHash, js_getHash, getHash,
+        js_setHost, setHost, js_getHost, getHost, js_setHostname,
+        setHostname, js_getHostname, getHostname, js_setPathname,
+        setPathname, js_getPathname, getPathname, js_setPort, setPort,
+        js_getPort, getPort, js_setProtocol, setProtocol, js_getProtocol,
+        getProtocol, js_setSearch, setSearch, js_getSearch, getSearch,
+        js_getOrigin, getOrigin, js_setText, setText, js_getText, getText,
+        js_getRelList, getRelList, HTMLAnchorElement,
+        castToHTMLAnchorElement, gTypeHTMLAnchorElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.toString Mozilla HTMLAnchorElement.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+toString self = liftIO (fromJSString <$> (js_toString (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"href\"] = $2;" js_setHref ::
+        HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.href Mozilla HTMLAnchorElement.href documentation> 
+setHref ::
+        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setHref self val = liftIO (js_setHref (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.href Mozilla HTMLAnchorElement.href documentation> 
+getHref ::
+        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getHref self = liftIO (fromJSString <$> (js_getHref (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"hash\"] = $2;" js_setHash ::
+        HTMLAnchorElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hash Mozilla HTMLAnchorElement.hash documentation> 
+setHash ::
+        (MonadIO m, ToJSString val) =>
+          HTMLAnchorElement -> Maybe val -> m ()
+setHash self val = liftIO (js_setHash (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"hash\"]" js_getHash ::
+        HTMLAnchorElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hash Mozilla HTMLAnchorElement.hash documentation> 
+getHash ::
+        (MonadIO m, FromJSString result) =>
+          HTMLAnchorElement -> m (Maybe result)
+getHash self = liftIO (fromMaybeJSString <$> (js_getHash (self)))
+ 
+foreign import javascript unsafe "$1[\"host\"] = $2;" js_setHost ::
+        HTMLAnchorElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.host Mozilla HTMLAnchorElement.host documentation> 
+setHost ::
+        (MonadIO m, ToJSString val) =>
+          HTMLAnchorElement -> Maybe val -> m ()
+setHost self val = liftIO (js_setHost (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"host\"]" js_getHost ::
+        HTMLAnchorElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.host Mozilla HTMLAnchorElement.host documentation> 
+getHost ::
+        (MonadIO m, FromJSString result) =>
+          HTMLAnchorElement -> m (Maybe result)
+getHost self = liftIO (fromMaybeJSString <$> (js_getHost (self)))
+ 
+foreign import javascript unsafe "$1[\"hostname\"] = $2;"
+        js_setHostname :: HTMLAnchorElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hostname Mozilla HTMLAnchorElement.hostname documentation> 
+setHostname ::
+            (MonadIO m, ToJSString val) =>
+              HTMLAnchorElement -> Maybe val -> m ()
+setHostname self val
+  = liftIO (js_setHostname (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"hostname\"]" js_getHostname
+        :: HTMLAnchorElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hostname Mozilla HTMLAnchorElement.hostname documentation> 
+getHostname ::
+            (MonadIO m, FromJSString result) =>
+              HTMLAnchorElement -> m (Maybe result)
+getHostname self
+  = liftIO (fromMaybeJSString <$> (js_getHostname (self)))
+ 
+foreign import javascript unsafe "$1[\"pathname\"] = $2;"
+        js_setPathname :: HTMLAnchorElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.pathname Mozilla HTMLAnchorElement.pathname documentation> 
+setPathname ::
+            (MonadIO m, ToJSString val) =>
+              HTMLAnchorElement -> Maybe val -> m ()
+setPathname self val
+  = liftIO (js_setPathname (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"pathname\"]" js_getPathname
+        :: HTMLAnchorElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.pathname Mozilla HTMLAnchorElement.pathname documentation> 
+getPathname ::
+            (MonadIO m, FromJSString result) =>
+              HTMLAnchorElement -> m (Maybe result)
+getPathname self
+  = liftIO (fromMaybeJSString <$> (js_getPathname (self)))
+ 
+foreign import javascript unsafe "$1[\"port\"] = $2;" js_setPort ::
+        HTMLAnchorElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.port Mozilla HTMLAnchorElement.port documentation> 
+setPort ::
+        (MonadIO m, ToJSString val) =>
+          HTMLAnchorElement -> Maybe val -> m ()
+setPort self val = liftIO (js_setPort (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"port\"]" js_getPort ::
+        HTMLAnchorElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.port Mozilla HTMLAnchorElement.port documentation> 
+getPort ::
+        (MonadIO m, FromJSString result) =>
+          HTMLAnchorElement -> m (Maybe result)
+getPort self = liftIO (fromMaybeJSString <$> (js_getPort (self)))
+ 
+foreign import javascript unsafe "$1[\"protocol\"] = $2;"
+        js_setProtocol :: HTMLAnchorElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.protocol Mozilla HTMLAnchorElement.protocol documentation> 
+setProtocol ::
+            (MonadIO m, ToJSString val) =>
+              HTMLAnchorElement -> Maybe val -> m ()
+setProtocol self val
+  = liftIO (js_setProtocol (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: HTMLAnchorElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.protocol Mozilla HTMLAnchorElement.protocol documentation> 
+getProtocol ::
+            (MonadIO m, FromJSString result) =>
+              HTMLAnchorElement -> m (Maybe result)
+getProtocol self
+  = liftIO (fromMaybeJSString <$> (js_getProtocol (self)))
+ 
+foreign import javascript unsafe "$1[\"search\"] = $2;"
+        js_setSearch :: HTMLAnchorElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.search Mozilla HTMLAnchorElement.search documentation> 
+setSearch ::
+          (MonadIO m, ToJSString val) =>
+            HTMLAnchorElement -> Maybe val -> m ()
+setSearch self val
+  = liftIO (js_setSearch (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"search\"]" js_getSearch ::
+        HTMLAnchorElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.search Mozilla HTMLAnchorElement.search documentation> 
+getSearch ::
+          (MonadIO m, FromJSString result) =>
+            HTMLAnchorElement -> m (Maybe result)
+getSearch self
+  = liftIO (fromMaybeJSString <$> (js_getSearch (self)))
+ 
+foreign import javascript unsafe "$1[\"origin\"]" js_getOrigin ::
+        HTMLAnchorElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.origin Mozilla HTMLAnchorElement.origin documentation> 
+getOrigin ::
+          (MonadIO m, FromJSString result) =>
+            HTMLAnchorElement -> m (Maybe result)
+getOrigin self
+  = liftIO (fromMaybeJSString <$> (js_getOrigin (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"relList\"]" js_getRelList ::
+        HTMLAnchorElement -> IO (Nullable DOMTokenList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.relList Mozilla HTMLAnchorElement.relList documentation> 
+getRelList ::
+           (MonadIO m) => HTMLAnchorElement -> m (Maybe DOMTokenList)
+getRelList self
+  = liftIO (nullableToMaybe <$> (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,206 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToHTMLAppletElement, gTypeHTMLAppletElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"hspace\"] = $2;"
+        js_setHspace :: HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
+setHspace ::
+          (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setHspace self val = liftIO (js_setHspace (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"hspace\"]" js_getHspace ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
+getHspace ::
+          (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getHspace self = liftIO (fromJSString <$> (js_getHspace (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"vspace\"] = $2;"
+        js_setVspace :: HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
+setVspace ::
+          (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setVspace self val = liftIO (js_setVspace (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"vspace\"]" js_getVspace ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
+getVspace ::
+          (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getVspace self = liftIO (fromJSString <$> (js_getVspace (self)))
+ 
+foreign import javascript unsafe "$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[\"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,221 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
+       (js_setAlt, setAlt, js_getAlt, getAlt, js_setCoords, setCoords,
+        js_getCoords, getCoords, js_setHref, setHref, js_getHref, getHref,
+        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_getHash, getHash,
+        js_getHost, getHost, js_getHostname, getHostname, js_getPathname,
+        getPathname, js_getPort, getPort, js_getProtocol, getProtocol,
+        js_getSearch, getSearch, js_getRelList, getRelList,
+        HTMLAreaElement, castToHTMLAreaElement, gTypeHTMLAreaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"href\"] = $2;" js_setHref ::
+        HTMLAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.href Mozilla HTMLAreaElement.href documentation> 
+setHref ::
+        (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setHref self val = liftIO (js_setHref (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.href Mozilla HTMLAreaElement.href documentation> 
+getHref ::
+        (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getHref self = liftIO (fromJSString <$> (js_getHref (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"hash\"]" js_getHash ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.hash Mozilla HTMLAreaElement.hash documentation> 
+getHash ::
+        (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getHash self = liftIO (fromJSString <$> (js_getHash (self)))
+ 
+foreign import javascript unsafe "$1[\"host\"]" js_getHost ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.host Mozilla HTMLAreaElement.host documentation> 
+getHost ::
+        (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getHost self = liftIO (fromJSString <$> (js_getHost (self)))
+ 
+foreign import javascript unsafe "$1[\"hostname\"]" js_getHostname
+        :: HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.hostname Mozilla HTMLAreaElement.hostname documentation> 
+getHostname ::
+            (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getHostname self
+  = liftIO (fromJSString <$> (js_getHostname (self)))
+ 
+foreign import javascript unsafe "$1[\"pathname\"]" js_getPathname
+        :: HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.pathname Mozilla HTMLAreaElement.pathname documentation> 
+getPathname ::
+            (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getPathname self
+  = liftIO (fromJSString <$> (js_getPathname (self)))
+ 
+foreign import javascript unsafe "$1[\"port\"]" js_getPort ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.port Mozilla HTMLAreaElement.port documentation> 
+getPort ::
+        (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getPort self = liftIO (fromJSString <$> (js_getPort (self)))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.protocol Mozilla HTMLAreaElement.protocol documentation> 
+getProtocol ::
+            (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getProtocol self
+  = liftIO (fromJSString <$> (js_getProtocol (self)))
+ 
+foreign import javascript unsafe "$1[\"search\"]" js_getSearch ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.search Mozilla HTMLAreaElement.search documentation> 
+getSearch ::
+          (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getSearch self = liftIO (fromJSString <$> (js_getSearch (self)))
+ 
+foreign import javascript unsafe "$1[\"relList\"]" js_getRelList ::
+        HTMLAreaElement -> IO (Nullable DOMTokenList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.relList Mozilla HTMLAreaElement.relList documentation> 
+getRelList ::
+           (MonadIO m) => HTMLAreaElement -> m (Maybe DOMTokenList)
+getRelList self
+  = liftIO (nullableToMaybe <$> (js_getRelList (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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLBRElement
+       (js_setClear, setClear, js_getClear, getClear, HTMLBRElement,
+        castToHTMLBRElement, gTypeHTMLBRElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,53 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
+       (js_setHref, setHref, js_getHref, getHref, js_setTarget, setTarget,
+        js_getTarget, getTarget, HTMLBaseElement, castToHTMLBaseElement,
+        gTypeHTMLBaseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+        HTMLBaseElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
+setHref ::
+        (MonadIO m, ToJSString val) => HTMLBaseElement -> Maybe val -> m ()
+setHref self val = liftIO (js_setHref (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        HTMLBaseElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
+getHref ::
+        (MonadIO m, FromJSString result) =>
+          HTMLBaseElement -> m (Maybe result)
+getHref self = liftIO (fromMaybeJSString <$> (js_getHref (self)))
+ 
+foreign import javascript unsafe "$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[\"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/HTMLBaseFontElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseFontElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseFontElement.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLBaseFontElement
+       (js_setColor, setColor, js_getColor, getColor, js_setFace, setFace,
+        js_getFace, getFace, js_setSize, setSize, js_getSize, getSize,
+        HTMLBaseFontElement, castToHTMLBaseFontElement,
+        gTypeHTMLBaseFontElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"color\"] = $2;" js_setColor
+        :: HTMLBaseFontElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.color Mozilla HTMLBaseFontElement.color documentation> 
+setColor ::
+         (MonadIO m, ToJSString val) => HTMLBaseFontElement -> val -> m ()
+setColor self val = liftIO (js_setColor (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"color\"]" js_getColor ::
+        HTMLBaseFontElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.color Mozilla HTMLBaseFontElement.color documentation> 
+getColor ::
+         (MonadIO m, FromJSString result) => HTMLBaseFontElement -> m result
+getColor self = liftIO (fromJSString <$> (js_getColor (self)))
+ 
+foreign import javascript unsafe "$1[\"face\"] = $2;" js_setFace ::
+        HTMLBaseFontElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.face Mozilla HTMLBaseFontElement.face documentation> 
+setFace ::
+        (MonadIO m, ToJSString val) => HTMLBaseFontElement -> val -> m ()
+setFace self val = liftIO (js_setFace (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"face\"]" js_getFace ::
+        HTMLBaseFontElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.face Mozilla HTMLBaseFontElement.face documentation> 
+getFace ::
+        (MonadIO m, FromJSString result) => HTMLBaseFontElement -> m result
+getFace self = liftIO (fromJSString <$> (js_getFace (self)))
+ 
+foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+        HTMLBaseFontElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.size Mozilla HTMLBaseFontElement.size documentation> 
+setSize :: (MonadIO m) => HTMLBaseFontElement -> Int -> m ()
+setSize self val = liftIO (js_setSize (self) val)
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        HTMLBaseFontElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.size Mozilla HTMLBaseFontElement.size documentation> 
+getSize :: (MonadIO m) => HTMLBaseFontElement -> m Int
+getSize self = liftIO (js_getSize (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,181 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, beforeUnload,
+        hashChange, message, offline, online, popState, resize, storage,
+        unload, orientationChange, blur, error, focus, load,
+        HTMLBodyElement, castToHTMLBodyElement, gTypeHTMLBodyElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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.onbeforeunload Mozilla HTMLBodyElement.onbeforeunload documentation> 
+beforeUnload :: EventName HTMLBodyElement BeforeUnloadEvent
+beforeUnload = unsafeEventName (toJSString "beforeunload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onhashchange Mozilla HTMLBodyElement.onhashchange documentation> 
+hashChange :: EventName HTMLBodyElement HashChangeEvent
+hashChange = unsafeEventName (toJSString "hashchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onmessage Mozilla HTMLBodyElement.onmessage documentation> 
+message :: EventName HTMLBodyElement MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onoffline Mozilla HTMLBodyElement.onoffline documentation> 
+offline :: EventName HTMLBodyElement Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.ononline Mozilla HTMLBodyElement.ononline documentation> 
+online :: EventName HTMLBodyElement Event
+online = unsafeEventName (toJSString "online")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onpopstate Mozilla HTMLBodyElement.onpopstate documentation> 
+popState :: EventName HTMLBodyElement PopStateEvent
+popState = unsafeEventName (toJSString "popstate")
+
+-- | <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.onstorage Mozilla HTMLBodyElement.onstorage documentation> 
+storage :: EventName HTMLBodyElement StorageEvent
+storage = unsafeEventName (toJSString "storage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onunload Mozilla HTMLBodyElement.onunload documentation> 
+unload :: EventName HTMLBodyElement UIEvent
+unload = unsafeEventName (toJSString "unload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onorientationchange Mozilla HTMLBodyElement.onorientationchange documentation> 
+orientationChange :: EventName HTMLBodyElement Event
+orientationChange
+  = unsafeEventName (toJSString "orientationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onblur Mozilla HTMLBodyElement.onblur documentation> 
+blur :: EventName HTMLBodyElement FocusEvent
+blur = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onerror Mozilla HTMLBodyElement.onerror documentation> 
+error :: EventName HTMLBodyElement UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocus Mozilla HTMLBodyElement.onfocus documentation> 
+focus :: EventName HTMLBodyElement FocusEvent
+focus = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onload Mozilla HTMLBodyElement.onload documentation> 
+load :: EventName HTMLBodyElement UIEvent
+load = unsafeEventName (toJSString "load")
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,262 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLButtonElement
+       (js_checkValidity, checkValidity, 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_setFormNoValidate,
+        setFormNoValidate, js_getFormNoValidate, getFormNoValidate,
+        js_setFormTarget, setFormTarget, js_getFormTarget, getFormTarget,
+        js_setName, setName, js_getName, getName, js_setType, setType,
+        js_getType, getType, js_setValue, setValue, js_getValue, getValue,
+        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
+        js_getValidationMessage, getValidationMessage, js_getLabels,
+        getLabels, HTMLButtonElement, castToHTMLButtonElement,
+        gTypeHTMLButtonElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        HTMLButtonElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.setCustomValidity Mozilla HTMLButtonElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLButtonElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity (self) (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"form\"]" js_getForm ::
+        HTMLButtonElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.form Mozilla HTMLButtonElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLButtonElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"formEnctype\"] = $2;"
+        js_setFormEnctype ::
+        HTMLButtonElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
+setFormEnctype ::
+               (MonadIO m, ToJSString val) =>
+                 HTMLButtonElement -> Maybe val -> m ()
+setFormEnctype self val
+  = liftIO (js_setFormEnctype (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"formEnctype\"]"
+        js_getFormEnctype :: HTMLButtonElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
+getFormEnctype ::
+               (MonadIO m, FromJSString result) =>
+                 HTMLButtonElement -> m (Maybe result)
+getFormEnctype self
+  = liftIO (fromMaybeJSString <$> (js_getFormEnctype (self)))
+ 
+foreign import javascript unsafe "$1[\"formMethod\"] = $2;"
+        js_setFormMethod :: HTMLButtonElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
+setFormMethod ::
+              (MonadIO m, ToJSString val) =>
+                HTMLButtonElement -> Maybe val -> m ()
+setFormMethod self val
+  = liftIO (js_setFormMethod (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"formMethod\"]"
+        js_getFormMethod :: HTMLButtonElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
+getFormMethod ::
+              (MonadIO m, FromJSString result) =>
+                HTMLButtonElement -> m (Maybe result)
+getFormMethod self
+  = liftIO (fromMaybeJSString <$> (js_getFormMethod (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"type\"] = $2;" js_setType ::
+        HTMLButtonElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) =>
+          HTMLButtonElement -> Maybe val -> m ()
+setType self val = liftIO (js_setType (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        HTMLButtonElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) =>
+          HTMLButtonElement -> m (Maybe result)
+getType self = liftIO (fromMaybeJSString <$> (js_getType (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"validity\"]" js_getValidity
+        :: HTMLButtonElement -> IO (Nullable ValidityState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validity Mozilla HTMLButtonElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLButtonElement -> m (Maybe ValidityState)
+getValidity self
+  = liftIO (nullableToMaybe <$> (js_getValidity (self)))
+ 
+foreign import javascript unsafe "$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[\"labels\"]" js_getLabels ::
+        HTMLButtonElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.labels Mozilla HTMLButtonElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLButtonElement -> m (Maybe NodeList)
+getLabels self = liftIO (nullableToMaybe <$> (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,83 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement
+       (js_toDataURL, toDataURL, js_getContext, getContext,
+        js_probablySupportsContext, probablySupportsContext, js_setWidth,
+        setWidth, js_getWidth, getWidth, js_setHeight, setHeight,
+        js_getHeight, getHeight, HTMLCanvasElement,
+        castToHTMLCanvasElement, gTypeHTMLCanvasElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"toDataURL\"]($2)"
+        js_toDataURL ::
+        HTMLCanvasElement -> Nullable 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) (toMaybeJSString type')))
+ 
+foreign import javascript unsafe "$1[\"getContext\"]($2)"
+        js_getContext :: HTMLCanvasElement -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
+getContext ::
+           (MonadIO m, ToJSString contextId) =>
+             HTMLCanvasElement -> contextId -> m JSVal
+getContext self contextId
+  = liftIO (js_getContext (self) (toJSString contextId))
+ 
+foreign import javascript unsafe
+        "$1[\"probablySupportsContext\"]($2)" js_probablySupportsContext ::
+        HTMLCanvasElement -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.probablySupportsContext Mozilla HTMLCanvasElement.probablySupportsContext documentation> 
+probablySupportsContext ::
+                        (MonadIO m, ToJSString contextId) =>
+                          HTMLCanvasElement -> contextId -> m JSVal
+probablySupportsContext self contextId
+  = liftIO (js_probablySupportsContext (self) (toJSString contextId))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: HTMLCanvasElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
+setWidth :: (MonadIO m) => HTMLCanvasElement -> Int -> m ()
+setWidth self val = liftIO (js_setWidth (self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        HTMLCanvasElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
+getWidth :: (MonadIO m) => HTMLCanvasElement -> m Int
+getWidth self = liftIO (js_getWidth (self))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: HTMLCanvasElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
+setHeight :: (MonadIO m) => HTMLCanvasElement -> Int -> m ()
+setHeight self val = liftIO (js_setHeight (self) val)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        HTMLCanvasElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
+getHeight :: (MonadIO m) => HTMLCanvasElement -> m Int
+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,50 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLCollection
+       (js_item, item, js_namedItem, namedItem, js_getLength, getLength,
+        HTMLCollection, castToHTMLCollection, gTypeHTMLCollection,
+        IsHTMLCollection, toHTMLCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        HTMLCollection -> Word -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
+item ::
+     (MonadIO m, IsHTMLCollection self) =>
+       self -> Word -> m (Maybe Node)
+item self index
+  = liftIO
+      (nullableToMaybe <$> (js_item (toHTMLCollection self) index))
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem :: HTMLCollection -> JSString -> IO (Nullable Node)
+
+-- | <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 Node)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_namedItem (toHTMLCollection self) (toJSString name)))
+ 
+foreign import javascript unsafe "$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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDListElement
+       (js_setCompact, setCompact, js_getCompact, getCompact,
+        HTMLDListElement, castToHTMLDListElement, gTypeHTMLDListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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/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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDataListElement
+       (js_getOptions, getOptions, HTMLDataListElement,
+        castToHTMLDataListElement, gTypeHTMLDataListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"options\"]" js_getOptions ::
+        HTMLDataListElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
+getOptions ::
+           (MonadIO m) => HTMLDataListElement -> m (Maybe HTMLCollection)
+getOptions self
+  = liftIO (nullableToMaybe <$> (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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement
+       (js_setOpen, setOpen, js_getOpen, getOpen, HTMLDetailsElement,
+        castToHTMLDetailsElement, gTypeHTMLDetailsElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,34 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement
+       (js_setCompact, setCompact, js_getCompact, getCompact,
+        HTMLDirectoryElement, castToHTMLDirectoryElement,
+        gTypeHTMLDirectoryElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDivElement
+       (js_setAlign, setAlign, js_getAlign, getAlign, HTMLDivElement,
+        castToHTMLDivElement, gTypeHTMLDivElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,269 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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_getEmbeds, getEmbeds,
+        js_getPlugins, getPlugins, js_getScripts, getScripts, js_getAll,
+        getAll, js_getWidth, getWidth, js_getHeight, getHeight, js_setDir,
+        setDir, js_getDir, getDir, js_setDesignMode, setDesignMode,
+        js_getDesignMode, getDesignMode, js_getCompatMode, getCompatMode,
+        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, castToHTMLDocument, gTypeHTMLDocument)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"write\"]($2)" js_write ::
+        HTMLDocument -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.write Mozilla HTMLDocument.write documentation> 
+write ::
+      (MonadIO m, ToJSString text) => HTMLDocument -> text -> m ()
+write self text = liftIO (js_write (self) (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"writeln\"]($2)" js_writeln
+        :: HTMLDocument -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.writeln Mozilla HTMLDocument.writeln documentation> 
+writeln ::
+        (MonadIO m, ToJSString text) => HTMLDocument -> text -> m ()
+writeln self text = liftIO (js_writeln (self) (toJSString text))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"embeds\"]" js_getEmbeds ::
+        HTMLDocument -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.embeds Mozilla HTMLDocument.embeds documentation> 
+getEmbeds ::
+          (MonadIO m) => HTMLDocument -> m (Maybe HTMLCollection)
+getEmbeds self = liftIO (nullableToMaybe <$> (js_getEmbeds (self)))
+ 
+foreign import javascript unsafe "$1[\"plugins\"]" js_getPlugins ::
+        HTMLDocument -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.plugins Mozilla HTMLDocument.plugins documentation> 
+getPlugins ::
+           (MonadIO m) => HTMLDocument -> m (Maybe HTMLCollection)
+getPlugins self
+  = liftIO (nullableToMaybe <$> (js_getPlugins (self)))
+ 
+foreign import javascript unsafe "$1[\"scripts\"]" js_getScripts ::
+        HTMLDocument -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.scripts Mozilla HTMLDocument.scripts documentation> 
+getScripts ::
+           (MonadIO m) => HTMLDocument -> m (Maybe HTMLCollection)
+getScripts self
+  = liftIO (nullableToMaybe <$> (js_getScripts (self)))
+ 
+foreign import javascript unsafe "$1[\"all\"]" js_getAll ::
+        HTMLDocument -> IO (Nullable HTMLAllCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.all Mozilla HTMLDocument.all documentation> 
+getAll ::
+       (MonadIO m) => HTMLDocument -> m (Maybe HTMLAllCollection)
+getAll self = liftIO (nullableToMaybe <$> (js_getAll (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        HTMLDocument -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.width Mozilla HTMLDocument.width documentation> 
+getWidth :: (MonadIO m) => HTMLDocument -> m Int
+getWidth self = liftIO (js_getWidth (self))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        HTMLDocument -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.height Mozilla HTMLDocument.height documentation> 
+getHeight :: (MonadIO m) => HTMLDocument -> m Int
+getHeight self = liftIO (js_getHeight (self))
+ 
+foreign import javascript unsafe "$1[\"dir\"] = $2;" js_setDir ::
+        HTMLDocument -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.dir Mozilla HTMLDocument.dir documentation> 
+setDir ::
+       (MonadIO m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setDir self val = liftIO (js_setDir (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"dir\"]" js_getDir ::
+        HTMLDocument -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.dir Mozilla HTMLDocument.dir documentation> 
+getDir ::
+       (MonadIO m, FromJSString result) =>
+         HTMLDocument -> m (Maybe result)
+getDir self = liftIO (fromMaybeJSString <$> (js_getDir (self)))
+ 
+foreign import javascript unsafe "$1[\"designMode\"] = $2;"
+        js_setDesignMode :: HTMLDocument -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.designMode Mozilla HTMLDocument.designMode documentation> 
+setDesignMode ::
+              (MonadIO m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setDesignMode self val
+  = liftIO (js_setDesignMode (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"designMode\"]"
+        js_getDesignMode :: HTMLDocument -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.designMode Mozilla HTMLDocument.designMode documentation> 
+getDesignMode ::
+              (MonadIO m, FromJSString result) =>
+                HTMLDocument -> m (Maybe result)
+getDesignMode self
+  = liftIO (fromMaybeJSString <$> (js_getDesignMode (self)))
+ 
+foreign import javascript unsafe "$1[\"compatMode\"]"
+        js_getCompatMode :: HTMLDocument -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.compatMode Mozilla HTMLDocument.compatMode documentation> 
+getCompatMode ::
+              (MonadIO m, FromJSString result) => HTMLDocument -> m result
+getCompatMode self
+  = liftIO (fromJSString <$> (js_getCompatMode (self)))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
+        js_setBgColor :: HTMLDocument -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
+setBgColor ::
+           (MonadIO m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setBgColor self val
+  = liftIO (js_setBgColor (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"]" js_getBgColor ::
+        HTMLDocument -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
+getBgColor ::
+           (MonadIO m, FromJSString result) =>
+             HTMLDocument -> m (Maybe result)
+getBgColor self
+  = liftIO (fromMaybeJSString <$> (js_getBgColor (self)))
+ 
+foreign import javascript unsafe "$1[\"fgColor\"] = $2;"
+        js_setFgColor :: HTMLDocument -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
+setFgColor ::
+           (MonadIO m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setFgColor self val
+  = liftIO (js_setFgColor (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"fgColor\"]" js_getFgColor ::
+        HTMLDocument -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
+getFgColor ::
+           (MonadIO m, FromJSString result) =>
+             HTMLDocument -> m (Maybe result)
+getFgColor self
+  = liftIO (fromMaybeJSString <$> (js_getFgColor (self)))
+ 
+foreign import javascript unsafe "$1[\"alinkColor\"] = $2;"
+        js_setAlinkColor :: HTMLDocument -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
+setAlinkColor ::
+              (MonadIO m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setAlinkColor self val
+  = liftIO (js_setAlinkColor (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"alinkColor\"]"
+        js_getAlinkColor :: HTMLDocument -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
+getAlinkColor ::
+              (MonadIO m, FromJSString result) =>
+                HTMLDocument -> m (Maybe result)
+getAlinkColor self
+  = liftIO (fromMaybeJSString <$> (js_getAlinkColor (self)))
+ 
+foreign import javascript unsafe "$1[\"linkColor\"] = $2;"
+        js_setLinkColor :: HTMLDocument -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
+setLinkColor ::
+             (MonadIO m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setLinkColor self val
+  = liftIO (js_setLinkColor (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"linkColor\"]"
+        js_getLinkColor :: HTMLDocument -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
+getLinkColor ::
+             (MonadIO m, FromJSString result) =>
+               HTMLDocument -> m (Maybe result)
+getLinkColor self
+  = liftIO (fromMaybeJSString <$> (js_getLinkColor (self)))
+ 
+foreign import javascript unsafe "$1[\"vlinkColor\"] = $2;"
+        js_setVlinkColor :: HTMLDocument -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
+setVlinkColor ::
+              (MonadIO m, ToJSString val) => HTMLDocument -> Maybe val -> m ()
+setVlinkColor self val
+  = liftIO (js_setVlinkColor (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"vlinkColor\"]"
+        js_getVlinkColor :: HTMLDocument -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
+getVlinkColor ::
+              (MonadIO m, FromJSString result) =>
+                HTMLDocument -> m (Maybe result)
+getVlinkColor self
+  = liftIO (fromMaybeJSString <$> (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,355 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLElement
+       (js_insertAdjacentElement, insertAdjacentElement,
+        js_insertAdjacentHTML, insertAdjacentHTML, js_insertAdjacentText,
+        insertAdjacentText, js_click, click, 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_setTabIndex, setTabIndex,
+        js_getTabIndex, getTabIndex, js_setDraggable, setDraggable,
+        js_getDraggable, getDraggable, js_setWebkitdropzone,
+        setWebkitdropzone, js_getWebkitdropzone, getWebkitdropzone,
+        js_setHidden, setHidden, js_getHidden, getHidden, js_setAccessKey,
+        setAccessKey, js_getAccessKey, getAccessKey, js_setInnerText,
+        setInnerText, js_getInnerText, getInnerText, js_setOuterText,
+        setOuterText, js_getOuterText, getOuterText, js_getChildren,
+        getChildren, js_setContentEditable, setContentEditable,
+        js_getContentEditable, getContentEditable, js_getIsContentEditable,
+        getIsContentEditable, js_setSpellcheck, setSpellcheck,
+        js_getSpellcheck, getSpellcheck, HTMLElement, castToHTMLElement,
+        gTypeHTMLElement, IsHTMLElement, toHTMLElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"insertAdjacentElement\"]($2,\n$3)" js_insertAdjacentElement
+        ::
+        HTMLElement ->
+          JSString -> Nullable Element -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentElement Mozilla HTMLElement.insertAdjacentElement documentation> 
+insertAdjacentElement ::
+                      (MonadIO m, IsHTMLElement self, ToJSString where',
+                       IsElement element) =>
+                        self -> where' -> Maybe element -> m (Maybe Element)
+insertAdjacentElement self where' element
+  = liftIO
+      (nullableToMaybe <$>
+         (js_insertAdjacentElement (toHTMLElement self) (toJSString where')
+            (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe
+        "$1[\"insertAdjacentHTML\"]($2, $3)" js_insertAdjacentHTML ::
+        HTMLElement -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentHTML Mozilla HTMLElement.insertAdjacentHTML documentation> 
+insertAdjacentHTML ::
+                   (MonadIO m, IsHTMLElement self, ToJSString where',
+                    ToJSString html) =>
+                     self -> where' -> html -> m ()
+insertAdjacentHTML self where' html
+  = liftIO
+      (js_insertAdjacentHTML (toHTMLElement self) (toJSString where')
+         (toJSString html))
+ 
+foreign import javascript unsafe
+        "$1[\"insertAdjacentText\"]($2, $3)" js_insertAdjacentText ::
+        HTMLElement -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentText Mozilla HTMLElement.insertAdjacentText documentation> 
+insertAdjacentText ::
+                   (MonadIO m, IsHTMLElement self, ToJSString where',
+                    ToJSString text) =>
+                     self -> where' -> text -> m ()
+insertAdjacentText self where' text
+  = liftIO
+      (js_insertAdjacentText (toHTMLElement self) (toJSString where')
+         (toJSString text))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"innerText\"] = $2;"
+        js_setInnerText :: HTMLElement -> Nullable 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 -> Maybe val -> m ()
+setInnerText self val
+  = liftIO
+      (js_setInnerText (toHTMLElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"innerText\"]"
+        js_getInnerText :: HTMLElement -> IO (Nullable 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 (Maybe result)
+getInnerText self
+  = liftIO
+      (fromMaybeJSString <$> (js_getInnerText (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"outerText\"] = $2;"
+        js_setOuterText :: HTMLElement -> Nullable 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 -> Maybe val -> m ()
+setOuterText self val
+  = liftIO
+      (js_setOuterText (toHTMLElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"outerText\"]"
+        js_getOuterText :: HTMLElement -> IO (Nullable 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 (Maybe result)
+getOuterText self
+  = liftIO
+      (fromMaybeJSString <$> (js_getOuterText (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"children\"]" js_getChildren
+        :: HTMLElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.children Mozilla HTMLElement.children documentation> 
+getChildren ::
+            (MonadIO m, IsHTMLElement self) => self -> m (Maybe HTMLCollection)
+getChildren self
+  = liftIO
+      (nullableToMaybe <$> (js_getChildren (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"contentEditable\"] = $2;"
+        js_setContentEditable :: HTMLElement -> Nullable 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 -> Maybe val -> m ()
+setContentEditable self val
+  = liftIO
+      (js_setContentEditable (toHTMLElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"contentEditable\"]"
+        js_getContentEditable :: HTMLElement -> IO (Nullable 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 (Maybe result)
+getContentEditable self
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getContentEditable (toHTMLElement self)))
+ 
+foreign import javascript unsafe
+        "($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[\"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[\"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))
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,128 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement
+       (js_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, castToHTMLEmbedElement, gTypeHTMLEmbedElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+        js_getSVGDocument :: HTMLEmbedElement -> IO (Nullable SVGDocument)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
+getSVGDocument ::
+               (MonadIO m) => HTMLEmbedElement -> m (Maybe SVGDocument)
+getSVGDocument self
+  = liftIO (nullableToMaybe <$> (js_getSVGDocument (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,123 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement
+       (js_checkValidity, checkValidity, 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,
+        castToHTMLFieldSetElement, gTypeHTMLFieldSetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        HTMLFieldSetElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.setCustomValidity Mozilla HTMLFieldSetElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLFieldSetElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity (self) (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$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[\"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[\"form\"]" js_getForm ::
+        HTMLFieldSetElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.form Mozilla HTMLFieldSetElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLFieldSetElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"elements\"]" js_getElements
+        :: HTMLFieldSetElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.elements Mozilla HTMLFieldSetElement.elements documentation> 
+getElements ::
+            (MonadIO m) => HTMLFieldSetElement -> m (Maybe HTMLCollection)
+getElements self
+  = liftIO (nullableToMaybe <$> (js_getElements (self)))
+ 
+foreign import javascript unsafe "($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[\"validity\"]" js_getValidity
+        :: HTMLFieldSetElement -> IO (Nullable ValidityState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validity Mozilla HTMLFieldSetElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLFieldSetElement -> m (Maybe ValidityState)
+getValidity self
+  = liftIO (nullableToMaybe <$> (js_getValidity (self)))
+ 
+foreign import javascript unsafe "$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,68 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLFontElement, gTypeHTMLFontElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection
+       (js__get, _get, js_namedItem, namedItem,
+        HTMLFormControlsCollection, castToHTMLFormControlsCollection,
+        gTypeHTMLFormControlsCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        HTMLFormControlsCollection -> Word -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection._get Mozilla HTMLFormControlsCollection._get documentation> 
+_get ::
+     (MonadIO m) => HTMLFormControlsCollection -> Word -> m (Maybe Node)
+_get self index
+  = liftIO (nullableToMaybe <$> (js__get (self) index))
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        HTMLFormControlsCollection -> JSString -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            HTMLFormControlsCollection -> name -> m (Maybe Node)
+namedItem self name
+  = liftIO
+      (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,284 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFormElement
+       (js__get, _get, js_submit, submit, js_reset, reset,
+        js_checkValidity, checkValidity, 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, js_setAutocorrect,
+        setAutocorrect, js_getAutocorrect, getAutocorrect,
+        js_setAutocapitalize, setAutocapitalize, js_getAutocapitalize,
+        getAutocapitalize, autocomplete, autocompleteerror,
+        HTMLFormElement, castToHTMLFormElement, gTypeHTMLFormElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        HTMLFormElement -> Word -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement._get Mozilla HTMLFormElement._get documentation> 
+_get :: (MonadIO m) => HTMLFormElement -> Word -> m (Maybe Element)
+_get self index
+  = liftIO (nullableToMaybe <$> (js__get (self) index))
+ 
+foreign import javascript unsafe "$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[\"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[\"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))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"enctype\"] = $2;"
+        js_setEnctype :: HTMLFormElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
+setEnctype ::
+           (MonadIO m, ToJSString val) => HTMLFormElement -> Maybe val -> m ()
+setEnctype self val
+  = liftIO (js_setEnctype (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"enctype\"]" js_getEnctype ::
+        HTMLFormElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
+getEnctype ::
+           (MonadIO m, FromJSString result) =>
+             HTMLFormElement -> m (Maybe result)
+getEnctype self
+  = liftIO (fromMaybeJSString <$> (js_getEnctype (self)))
+ 
+foreign import javascript unsafe "$1[\"encoding\"] = $2;"
+        js_setEncoding :: HTMLFormElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
+setEncoding ::
+            (MonadIO m, ToJSString val) => HTMLFormElement -> Maybe val -> m ()
+setEncoding self val
+  = liftIO (js_setEncoding (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"encoding\"]" js_getEncoding
+        :: HTMLFormElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
+getEncoding ::
+            (MonadIO m, FromJSString result) =>
+              HTMLFormElement -> m (Maybe result)
+getEncoding self
+  = liftIO (fromMaybeJSString <$> (js_getEncoding (self)))
+ 
+foreign import javascript unsafe "$1[\"method\"] = $2;"
+        js_setMethod :: HTMLFormElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
+setMethod ::
+          (MonadIO m, ToJSString val) => HTMLFormElement -> Maybe val -> m ()
+setMethod self val
+  = liftIO (js_setMethod (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"method\"]" js_getMethod ::
+        HTMLFormElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
+getMethod ::
+          (MonadIO m, FromJSString result) =>
+            HTMLFormElement -> m (Maybe result)
+getMethod self
+  = liftIO (fromMaybeJSString <$> (js_getMethod (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"elements\"]" js_getElements
+        :: HTMLFormElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements Mozilla HTMLFormElement.elements documentation> 
+getElements ::
+            (MonadIO m) => HTMLFormElement -> m (Maybe HTMLCollection)
+getElements self
+  = liftIO (nullableToMaybe <$> (js_getElements (self)))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        HTMLFormElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.length Mozilla HTMLFormElement.length documentation> 
+getLength :: (MonadIO m) => HTMLFormElement -> m Int
+getLength self = liftIO (js_getLength (self))
+ 
+foreign import javascript unsafe "$1[\"autocorrect\"] = $2;"
+        js_setAutocorrect :: HTMLFormElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocorrect Mozilla HTMLFormElement.autocorrect documentation> 
+setAutocorrect :: (MonadIO m) => HTMLFormElement -> Bool -> m ()
+setAutocorrect self val = liftIO (js_setAutocorrect (self) val)
+ 
+foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
+        js_getAutocorrect :: HTMLFormElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocorrect Mozilla HTMLFormElement.autocorrect documentation> 
+getAutocorrect :: (MonadIO m) => HTMLFormElement -> m Bool
+getAutocorrect self = liftIO (js_getAutocorrect (self))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
+        js_setAutocapitalize ::
+        HTMLFormElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocapitalize Mozilla HTMLFormElement.autocapitalize documentation> 
+setAutocapitalize ::
+                  (MonadIO m, ToJSString val) => HTMLFormElement -> Maybe val -> m ()
+setAutocapitalize self val
+  = liftIO (js_setAutocapitalize (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"]"
+        js_getAutocapitalize :: HTMLFormElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocapitalize Mozilla HTMLFormElement.autocapitalize documentation> 
+getAutocapitalize ::
+                  (MonadIO m, FromJSString result) =>
+                    HTMLFormElement -> m (Maybe result)
+getAutocapitalize self
+  = liftIO (fromMaybeJSString <$> (js_getAutocapitalize (self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.onautocomplete Mozilla HTMLFormElement.onautocomplete documentation> 
+autocomplete :: EventName HTMLFormElement onautocomplete
+autocomplete = unsafeEventName (toJSString "autocomplete")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.onautocompleteerror Mozilla HTMLFormElement.onautocompleteerror documentation> 
+autocompleteerror :: EventName HTMLFormElement onautocompleteerror
+autocompleteerror
+  = unsafeEventName (toJSString "autocompleteerror")
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,227 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFrameElement
+       (js_getSVGDocument, getSVGDocument, js_setFrameBorder,
+        setFrameBorder, js_getFrameBorder, getFrameBorder, 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_setNoResize, setNoResize, js_getNoResize, getNoResize,
+        js_setScrolling, setScrolling, js_getScrolling, getScrolling,
+        js_setSrc, setSrc, js_getSrc, getSrc, js_getContentDocument,
+        getContentDocument, js_getContentWindow, getContentWindow,
+        js_setLocation, setLocation, js_getLocation, getLocation,
+        js_getWidth, getWidth, js_getHeight, getHeight, HTMLFrameElement,
+        castToHTMLFrameElement, gTypeHTMLFrameElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+        js_getSVGDocument :: HTMLFrameElement -> IO (Nullable SVGDocument)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
+getSVGDocument ::
+               (MonadIO m) => HTMLFrameElement -> m (Maybe SVGDocument)
+getSVGDocument self
+  = liftIO (nullableToMaybe <$> (js_getSVGDocument (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"contentDocument\"]"
+        js_getContentDocument :: HTMLFrameElement -> IO (Nullable Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentDocument Mozilla HTMLFrameElement.contentDocument documentation> 
+getContentDocument ::
+                   (MonadIO m) => HTMLFrameElement -> m (Maybe Document)
+getContentDocument self
+  = liftIO (nullableToMaybe <$> (js_getContentDocument (self)))
+ 
+foreign import javascript unsafe "$1[\"contentWindow\"]"
+        js_getContentWindow :: HTMLFrameElement -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentWindow Mozilla HTMLFrameElement.contentWindow documentation> 
+getContentWindow ::
+                 (MonadIO m) => HTMLFrameElement -> m (Maybe Window)
+getContentWindow self
+  = liftIO (nullableToMaybe <$> (js_getContentWindow (self)))
+ 
+foreign import javascript unsafe "$1[\"location\"] = $2;"
+        js_setLocation :: HTMLFrameElement -> Nullable 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) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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))
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,111 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement
+       (js_setCols, setCols, js_getCols, getCols, js_setRows, setRows,
+        js_getRows, getRows, beforeUnload, hashChange, message, offline,
+        online, popState, resize, storage, unload, orientationChange, blur,
+        error, focus, load, HTMLFrameSetElement, castToHTMLFrameSetElement,
+        gTypeHTMLFrameSetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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.onbeforeunload Mozilla HTMLFrameSetElement.onbeforeunload documentation> 
+beforeUnload :: EventName HTMLFrameSetElement BeforeUnloadEvent
+beforeUnload = unsafeEventName (toJSString "beforeunload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onhashchange Mozilla HTMLFrameSetElement.onhashchange documentation> 
+hashChange :: EventName HTMLFrameSetElement HashChangeEvent
+hashChange = unsafeEventName (toJSString "hashchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onmessage Mozilla HTMLFrameSetElement.onmessage documentation> 
+message :: EventName HTMLFrameSetElement MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onoffline Mozilla HTMLFrameSetElement.onoffline documentation> 
+offline :: EventName HTMLFrameSetElement Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.ononline Mozilla HTMLFrameSetElement.ononline documentation> 
+online :: EventName HTMLFrameSetElement Event
+online = unsafeEventName (toJSString "online")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onpopstate Mozilla HTMLFrameSetElement.onpopstate documentation> 
+popState :: EventName HTMLFrameSetElement PopStateEvent
+popState = unsafeEventName (toJSString "popstate")
+
+-- | <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.onstorage Mozilla HTMLFrameSetElement.onstorage documentation> 
+storage :: EventName HTMLFrameSetElement StorageEvent
+storage = unsafeEventName (toJSString "storage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onunload Mozilla HTMLFrameSetElement.onunload documentation> 
+unload :: EventName HTMLFrameSetElement UIEvent
+unload = unsafeEventName (toJSString "unload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onorientationchange Mozilla HTMLFrameSetElement.onorientationchange documentation> 
+orientationChange :: EventName HTMLFrameSetElement Event
+orientationChange
+  = unsafeEventName (toJSString "orientationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onblur Mozilla HTMLFrameSetElement.onblur documentation> 
+blur :: EventName HTMLFrameSetElement FocusEvent
+blur = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onerror Mozilla HTMLFrameSetElement.onerror documentation> 
+error :: EventName HTMLFrameSetElement UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocus Mozilla HTMLFrameSetElement.onfocus documentation> 
+focus :: EventName HTMLFrameSetElement FocusEvent
+focus = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onload Mozilla HTMLFrameSetElement.onload documentation> 
+load :: EventName HTMLFrameSetElement UIEvent
+load = unsafeEventName (toJSString "load")
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,83 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHRElement
+       (js_setAlign, setAlign, js_getAlign, getAlign, js_setNoShade,
+        setNoShade, js_getNoShade, getNoShade, js_setSize, setSize,
+        js_getSize, getSize, js_setWidth, setWidth, js_getWidth, getWidth,
+        HTMLHRElement, castToHTMLHRElement, gTypeHTMLHRElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,36 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHeadElement
+       (js_setProfile, setProfile, js_getProfile, getProfile,
+        HTMLHeadElement, castToHTMLHeadElement, gTypeHTMLHeadElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement
+       (js_setAlign, setAlign, js_getAlign, getAlign, HTMLHeadingElement,
+        castToHTMLHeadingElement, gTypeHTMLHeadingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,55 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement
+       (js_setVersion, setVersion, js_getVersion, getVersion,
+        js_setManifest, setManifest, js_getManifest, getManifest,
+        HTMLHtmlElement, castToHTMLHtmlElement, gTypeHTMLHtmlElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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/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,263 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement
+       (js_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_setSandbox, setSandbox,
+        js_getSandbox, getSandbox, 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, castToHTMLIFrameElement,
+        gTypeHTMLIFrameElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+        js_getSVGDocument :: HTMLIFrameElement -> IO (Nullable SVGDocument)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
+getSVGDocument ::
+               (MonadIO m) => HTMLIFrameElement -> m (Maybe SVGDocument)
+getSVGDocument self
+  = liftIO (nullableToMaybe <$> (js_getSVGDocument (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"sandbox\"] = $2;"
+        js_setSandbox :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sandbox Mozilla HTMLIFrameElement.sandbox documentation> 
+setSandbox ::
+           (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setSandbox self val
+  = liftIO (js_setSandbox (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"sandbox\"]" js_getSandbox ::
+        HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sandbox Mozilla HTMLIFrameElement.sandbox documentation> 
+getSandbox ::
+           (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getSandbox self = liftIO (fromJSString <$> (js_getSandbox (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"contentDocument\"]"
+        js_getContentDocument ::
+        HTMLIFrameElement -> IO (Nullable Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentDocument Mozilla HTMLIFrameElement.contentDocument documentation> 
+getContentDocument ::
+                   (MonadIO m) => HTMLIFrameElement -> m (Maybe Document)
+getContentDocument self
+  = liftIO (nullableToMaybe <$> (js_getContentDocument (self)))
+ 
+foreign import javascript unsafe "$1[\"contentWindow\"]"
+        js_getContentWindow :: HTMLIFrameElement -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentWindow Mozilla HTMLIFrameElement.contentWindow documentation> 
+getContentWindow ::
+                 (MonadIO m) => HTMLIFrameElement -> m (Maybe Window)
+getContentWindow self
+  = liftIO (nullableToMaybe <$> (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,328 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, 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, castToHTMLImageElement,
+        gTypeHTMLImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"crossOrigin\"] = $2;"
+        js_setCrossOrigin :: HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
+setCrossOrigin ::
+               (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setCrossOrigin self val
+  = liftIO (js_setCrossOrigin (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"crossOrigin\"]"
+        js_getCrossOrigin :: HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
+getCrossOrigin ::
+               (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getCrossOrigin self
+  = liftIO (fromJSString <$> (js_getCrossOrigin (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: HTMLImageElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
+setHeight :: (MonadIO m) => HTMLImageElement -> Int -> m ()
+setHeight self val = liftIO (js_setHeight (self) val)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        HTMLImageElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
+getHeight :: (MonadIO m) => HTMLImageElement -> m Int
+getHeight self = liftIO (js_getHeight (self))
+ 
+foreign import javascript unsafe "$1[\"hspace\"] = $2;"
+        js_setHspace :: HTMLImageElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
+setHspace :: (MonadIO m) => HTMLImageElement -> Int -> m ()
+setHspace self val = liftIO (js_setHspace (self) val)
+ 
+foreign import javascript unsafe "$1[\"hspace\"]" js_getHspace ::
+        HTMLImageElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
+getHspace :: (MonadIO m) => HTMLImageElement -> m Int
+getHspace self = liftIO (js_getHspace (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"vspace\"] = $2;"
+        js_setVspace :: HTMLImageElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
+setVspace :: (MonadIO m) => HTMLImageElement -> Int -> m ()
+setVspace self val = liftIO (js_setVspace (self) val)
+ 
+foreign import javascript unsafe "$1[\"vspace\"]" js_getVspace ::
+        HTMLImageElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
+getVspace :: (MonadIO m) => HTMLImageElement -> m Int
+getVspace self = liftIO (js_getVspace (self))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: HTMLImageElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
+setWidth :: (MonadIO m) => HTMLImageElement -> Int -> m ()
+setWidth self val = liftIO (js_setWidth (self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        HTMLImageElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
+getWidth :: (MonadIO m) => HTMLImageElement -> m Int
+getWidth self = liftIO (js_getWidth (self))
+ 
+foreign import javascript unsafe "($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[\"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[\"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[\"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[\"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[\"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[\"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,883 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLInputElement
+       (js_stepUp, stepUp, js_stepDown, stepDown, js_checkValidity,
+        checkValidity, 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,
+        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_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, 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_setAutocorrect, setAutocorrect,
+        js_getAutocorrect, getAutocorrect, js_setAutocapitalize,
+        setAutocapitalize, js_getAutocapitalize, getAutocapitalize,
+        js_setCapture, setCapture, js_getCapture, getCapture,
+        HTMLInputElement, castToHTMLInputElement, gTypeHTMLInputElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"stepUp\"]($2)" js_stepUp ::
+        HTMLInputElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepUp Mozilla HTMLInputElement.stepUp documentation> 
+stepUp :: (MonadIO m) => HTMLInputElement -> Int -> m ()
+stepUp self n = liftIO (js_stepUp (self) n)
+ 
+foreign import javascript unsafe "$1[\"stepDown\"]($2)" js_stepDown
+        :: HTMLInputElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepDown Mozilla HTMLInputElement.stepDown documentation> 
+stepDown :: (MonadIO m) => HTMLInputElement -> Int -> m ()
+stepDown self n = liftIO (js_stepDown (self) n)
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        HTMLInputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setCustomValidity Mozilla HTMLInputElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLInputElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity (self) (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$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 unsafe "$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 unsafe
+        "$1[\"setRangeText\"]($2, $3, $4,\n$5)" js_setRangeText4 ::
+        HTMLInputElement -> JSString -> Word -> Word -> 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 -> selectionMode -> m ()
+setRangeText4 self replacement start end selectionMode
+  = liftIO
+      (js_setRangeText4 (self) (toJSString replacement) start end
+         (toJSString selectionMode))
+ 
+foreign import javascript unsafe
+        "$1[\"setSelectionRange\"]($2, $3,\n$4)" js_setSelectionRange ::
+        HTMLInputElement -> Int -> Int -> 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 -> direction -> m ()
+setSelectionRange self start end direction
+  = liftIO
+      (js_setSelectionRange (self) start end (toJSString direction))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"form\"]" js_getForm ::
+        HTMLInputElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.form Mozilla HTMLInputElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLInputElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$1[\"files\"] = $2;" js_setFiles
+        :: HTMLInputElement -> Nullable 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) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"formEnctype\"] = $2;"
+        js_setFormEnctype :: HTMLInputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
+setFormEnctype ::
+               (MonadIO m, ToJSString val) =>
+                 HTMLInputElement -> Maybe val -> m ()
+setFormEnctype self val
+  = liftIO (js_setFormEnctype (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"formEnctype\"]"
+        js_getFormEnctype :: HTMLInputElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
+getFormEnctype ::
+               (MonadIO m, FromJSString result) =>
+                 HTMLInputElement -> m (Maybe result)
+getFormEnctype self
+  = liftIO (fromMaybeJSString <$> (js_getFormEnctype (self)))
+ 
+foreign import javascript unsafe "$1[\"formMethod\"] = $2;"
+        js_setFormMethod :: HTMLInputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
+setFormMethod ::
+              (MonadIO m, ToJSString val) =>
+                HTMLInputElement -> Maybe val -> m ()
+setFormMethod self val
+  = liftIO (js_setFormMethod (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"formMethod\"]"
+        js_getFormMethod :: HTMLInputElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
+getFormMethod ::
+              (MonadIO m, FromJSString result) =>
+                HTMLInputElement -> m (Maybe result)
+getFormMethod self
+  = liftIO (fromMaybeJSString <$> (js_getFormMethod (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"list\"]" js_getList ::
+        HTMLInputElement -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.list Mozilla HTMLInputElement.list documentation> 
+getList :: (MonadIO m) => HTMLInputElement -> m (Maybe HTMLElement)
+getList self = liftIO (nullableToMaybe <$> (js_getList (self)))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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 unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"defaultValue\"] = $2;"
+        js_setDefaultValue ::
+        HTMLInputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadIO m, ToJSString val) =>
+                  HTMLInputElement -> Maybe val -> m ()
+setDefaultValue self val
+  = liftIO (js_setDefaultValue (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"]"
+        js_getDefaultValue :: HTMLInputElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadIO m, FromJSString result) =>
+                  HTMLInputElement -> m (Maybe result)
+getDefaultValue self
+  = liftIO (fromMaybeJSString <$> (js_getDefaultValue (self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: HTMLInputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) =>
+           HTMLInputElement -> Maybe val -> m ()
+setValue self val
+  = liftIO (js_setValue (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        HTMLInputElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) =>
+           HTMLInputElement -> m (Maybe result)
+getValue self = liftIO (fromMaybeJSString <$> (js_getValue (self)))
+ 
+foreign import javascript unsafe "$1[\"valueAsDate\"] = $2;"
+        js_setValueAsDate :: HTMLInputElement -> Nullable 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) (maybeToNullable (fmap toDate val)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"validity\"]" js_getValidity
+        :: HTMLInputElement -> IO (Nullable ValidityState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validity Mozilla HTMLInputElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLInputElement -> m (Maybe ValidityState)
+getValidity self
+  = liftIO (nullableToMaybe <$> (js_getValidity (self)))
+ 
+foreign import javascript unsafe "$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[\"labels\"]" js_getLabels ::
+        HTMLInputElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.labels Mozilla HTMLInputElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLInputElement -> m (Maybe NodeList)
+getLabels self = liftIO (nullableToMaybe <$> (js_getLabels (self)))
+ 
+foreign import javascript unsafe "$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 unsafe "$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 unsafe "$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 unsafe "$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 unsafe "$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 unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"autocorrect\"] = $2;"
+        js_setAutocorrect :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocorrect Mozilla HTMLInputElement.autocorrect documentation> 
+setAutocorrect :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setAutocorrect self val = liftIO (js_setAutocorrect (self) val)
+ 
+foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
+        js_getAutocorrect :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocorrect Mozilla HTMLInputElement.autocorrect documentation> 
+getAutocorrect :: (MonadIO m) => HTMLInputElement -> m Bool
+getAutocorrect self = liftIO (js_getAutocorrect (self))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
+        js_setAutocapitalize ::
+        HTMLInputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocapitalize Mozilla HTMLInputElement.autocapitalize documentation> 
+setAutocapitalize ::
+                  (MonadIO m, ToJSString val) =>
+                    HTMLInputElement -> Maybe val -> m ()
+setAutocapitalize self val
+  = liftIO (js_setAutocapitalize (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"]"
+        js_getAutocapitalize :: HTMLInputElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocapitalize Mozilla HTMLInputElement.autocapitalize documentation> 
+getAutocapitalize ::
+                  (MonadIO m, FromJSString result) =>
+                    HTMLInputElement -> m (Maybe result)
+getAutocapitalize self
+  = liftIO (fromMaybeJSString <$> (js_getAutocapitalize (self)))
+ 
+foreign import javascript unsafe "$1[\"capture\"] = $2;"
+        js_setCapture :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
+setCapture :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setCapture self val = liftIO (js_setCapture (self) val)
+ 
+foreign import javascript unsafe "($1[\"capture\"] ? 1 : 0)"
+        js_getCapture :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
+getCapture :: (MonadIO m) => HTMLInputElement -> m Bool
+getCapture self = liftIO (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,173 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement
+       (js_checkValidity, checkValidity, 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,
+        castToHTMLKeygenElement, gTypeHTMLKeygenElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        HTMLKeygenElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.setCustomValidity Mozilla HTMLKeygenElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLKeygenElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity (self) (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"form\"]" js_getForm ::
+        HTMLKeygenElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.form Mozilla HTMLKeygenElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLKeygenElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"validity\"]" js_getValidity
+        :: HTMLKeygenElement -> IO (Nullable ValidityState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validity Mozilla HTMLKeygenElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLKeygenElement -> m (Maybe ValidityState)
+getValidity self
+  = liftIO (nullableToMaybe <$> (js_getValidity (self)))
+ 
+foreign import javascript unsafe "$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[\"labels\"]" js_getLabels ::
+        HTMLKeygenElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.labels Mozilla HTMLKeygenElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLKeygenElement -> m (Maybe NodeList)
+getLabels self = liftIO (nullableToMaybe <$> (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,50 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLLIElement
+       (js_setType, setType, js_getType, getType, js_setValue, setValue,
+        js_getValue, getValue, HTMLLIElement, castToHTMLLIElement,
+        gTypeHTMLLIElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,54 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLLabelElement
+       (js_getForm, getForm, js_setHtmlFor, setHtmlFor, js_getHtmlFor,
+        getHtmlFor, js_getControl, getControl, HTMLLabelElement,
+        castToHTMLLabelElement, gTypeHTMLLabelElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        HTMLLabelElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLLabelElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"control\"]" js_getControl ::
+        HTMLLabelElement -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.control Mozilla HTMLLabelElement.control documentation> 
+getControl ::
+           (MonadIO m) => HTMLLabelElement -> m (Maybe HTMLElement)
+getControl self
+  = liftIO (nullableToMaybe <$> (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,43 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLLegendElement
+       (js_getForm, getForm, js_setAlign, setAlign, js_getAlign, getAlign,
+        HTMLLegendElement, castToHTMLLegendElement, gTypeHTMLLegendElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        HTMLLegendElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLLegendElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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,206 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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_setSizes, setSizes, js_getSizes, getSizes,
+        js_setTarget, setTarget, js_getTarget, getTarget, js_setType,
+        setType, js_getType, getType, js_getSheet, getSheet, js_getRelList,
+        getRelList, HTMLLinkElement, castToHTMLLinkElement,
+        gTypeHTMLLinkElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"sizes\"] = $2;" js_setSizes
+        :: HTMLLinkElement -> Nullable DOMSettableTokenList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
+setSizes ::
+         (MonadIO m) =>
+           HTMLLinkElement -> Maybe DOMSettableTokenList -> m ()
+setSizes self val
+  = liftIO (js_setSizes (self) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$1[\"sizes\"]" js_getSizes ::
+        HTMLLinkElement -> IO (Nullable DOMSettableTokenList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
+getSizes ::
+         (MonadIO m) => HTMLLinkElement -> m (Maybe DOMSettableTokenList)
+getSizes self = liftIO (nullableToMaybe <$> (js_getSizes (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"sheet\"]" js_getSheet ::
+        HTMLLinkElement -> IO (Nullable StyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sheet Mozilla HTMLLinkElement.sheet documentation> 
+getSheet :: (MonadIO m) => HTMLLinkElement -> m (Maybe StyleSheet)
+getSheet self = liftIO (nullableToMaybe <$> (js_getSheet (self)))
+ 
+foreign import javascript unsafe "$1[\"relList\"]" js_getRelList ::
+        HTMLLinkElement -> IO (Nullable DOMTokenList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.relList Mozilla HTMLLinkElement.relList documentation> 
+getRelList ::
+           (MonadIO m) => HTMLLinkElement -> m (Maybe DOMTokenList)
+getRelList self
+  = liftIO (nullableToMaybe <$> (js_getRelList (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,43 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMapElement
+       (js_getAreas, getAreas, js_setName, setName, js_getName, getName,
+        HTMLMapElement, castToHTMLMapElement, gTypeHTMLMapElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"areas\"]" js_getAreas ::
+        HTMLMapElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
+getAreas ::
+         (MonadIO m) => HTMLMapElement -> m (Maybe HTMLCollection)
+getAreas self = liftIO (nullableToMaybe <$> (js_getAreas (self)))
+ 
+foreign import javascript unsafe "$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[\"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,213 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLMarqueeElement,
+        gTypeHTMLMarqueeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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 unsafe "$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[\"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[\"scrollAmount\"] = $2;"
+        js_setScrollAmount :: HTMLMarqueeElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
+setScrollAmount :: (MonadIO m) => HTMLMarqueeElement -> Int -> m ()
+setScrollAmount self val = liftIO (js_setScrollAmount (self) val)
+ 
+foreign import javascript unsafe "$1[\"scrollAmount\"]"
+        js_getScrollAmount :: HTMLMarqueeElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
+getScrollAmount :: (MonadIO m) => HTMLMarqueeElement -> m Int
+getScrollAmount self = liftIO (js_getScrollAmount (self))
+ 
+foreign import javascript unsafe "$1[\"scrollDelay\"] = $2;"
+        js_setScrollDelay :: HTMLMarqueeElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
+setScrollDelay :: (MonadIO m) => HTMLMarqueeElement -> Int -> m ()
+setScrollDelay self val = liftIO (js_setScrollDelay (self) val)
+ 
+foreign import javascript unsafe "$1[\"scrollDelay\"]"
+        js_getScrollDelay :: HTMLMarqueeElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
+getScrollDelay :: (MonadIO m) => HTMLMarqueeElement -> m Int
+getScrollDelay self = liftIO (js_getScrollDelay (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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,858 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
+       (js_load, load, js_canPlayType, canPlayType, js_play, play,
+        js_pause, pause, js_fastSeek, fastSeek,
+        js_webkitGenerateKeyRequest, webkitGenerateKeyRequest,
+        js_webkitAddKey, webkitAddKey, js_webkitCancelKeyRequest,
+        webkitCancelKeyRequest, js_webkitSetMediaKeys, webkitSetMediaKeys,
+        js_addTextTrack, addTextTrack, js_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_getCurrentSrc,
+        getCurrentSrc, 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, emptied,
+        loadedMetadata, loadedData, canPlay, canPlayThrough, playing,
+        ended, waiting, durationChange, timeUpdate, playEvent, pauseEvent,
+        rateChange, volumeChange, js_setWebkitPreservesPitch,
+        setWebkitPreservesPitch, js_getWebkitPreservesPitch,
+        getWebkitPreservesPitch, js_getWebkitHasClosedCaptions,
+        getWebkitHasClosedCaptions, js_setWebkitClosedCaptionsVisible,
+        setWebkitClosedCaptionsVisible, js_getWebkitClosedCaptionsVisible,
+        getWebkitClosedCaptionsVisible, js_getWebkitAudioDecodedByteCount,
+        getWebkitAudioDecodedByteCount, js_getWebkitVideoDecodedByteCount,
+        getWebkitVideoDecodedByteCount, webKitKeyAdded, webKitKeyError,
+        webKitKeyMessage, webKitNeedKey, js_getWebkitKeys, getWebkitKeys,
+        js_getAudioTracks, getAudioTracks, js_getTextTracks, getTextTracks,
+        js_getVideoTracks, getVideoTracks, js_setMediaGroup, setMediaGroup,
+        js_getMediaGroup, getMediaGroup, js_setController, setController,
+        js_getController, getController,
+        js_getWebkitCurrentPlaybackTargetIsWireless,
+        getWebkitCurrentPlaybackTargetIsWireless,
+        webKitCurrentPlaybackTargetIsWirelessChanged,
+        webKitPlaybackTargetAvailabilityChanged, js_setSrcObject,
+        setSrcObject, js_getSrcObject, getSrcObject, HTMLMediaElement,
+        castToHTMLMediaElement, gTypeHTMLMediaElement, IsHTMLMediaElement,
+        toHTMLMediaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"canPlayType\"]($2, $3)"
+        js_canPlayType ::
+        HTMLMediaElement -> JSString -> Nullable 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',
+             ToJSString keySystem, FromJSString result) =>
+              self -> type' -> Maybe keySystem -> m result
+canPlayType self type' keySystem
+  = liftIO
+      (fromJSString <$>
+         (js_canPlayType (toHTMLMediaElement self) (toJSString type')
+            (toMaybeJSString keySystem)))
+ 
+foreign import javascript unsafe "$1[\"play\"]()" js_play ::
+        HTMLMediaElement -> IO ()
+
+-- | <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))
+ 
+foreign import javascript unsafe "$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[\"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[\"webkitGenerateKeyRequest\"]($2,\n$3)"
+        js_webkitGenerateKeyRequest ::
+        HTMLMediaElement ->
+          Nullable JSString -> Nullable Uint8Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitGenerateKeyRequest Mozilla HTMLMediaElement.webkitGenerateKeyRequest documentation> 
+webkitGenerateKeyRequest ::
+                         (MonadIO m, IsHTMLMediaElement self, ToJSString keySystem,
+                          IsUint8Array initData) =>
+                           self -> Maybe keySystem -> Maybe initData -> m ()
+webkitGenerateKeyRequest self keySystem initData
+  = liftIO
+      (js_webkitGenerateKeyRequest (toHTMLMediaElement self)
+         (toMaybeJSString keySystem)
+         (maybeToNullable (fmap toUint8Array initData)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitAddKey\"]($2, $3, $4,\n$5)" js_webkitAddKey ::
+        HTMLMediaElement ->
+          Nullable JSString ->
+            Nullable Uint8Array -> Nullable Uint8Array -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitAddKey Mozilla HTMLMediaElement.webkitAddKey documentation> 
+webkitAddKey ::
+             (MonadIO m, IsHTMLMediaElement self, ToJSString keySystem,
+              IsUint8Array key, IsUint8Array initData, ToJSString sessionId) =>
+               self ->
+                 Maybe keySystem -> Maybe key -> Maybe initData -> sessionId -> m ()
+webkitAddKey self keySystem key initData sessionId
+  = liftIO
+      (js_webkitAddKey (toHTMLMediaElement self)
+         (toMaybeJSString keySystem)
+         (maybeToNullable (fmap toUint8Array key))
+         (maybeToNullable (fmap toUint8Array initData))
+         (toJSString sessionId))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitCancelKeyRequest\"]($2,\n$3)" js_webkitCancelKeyRequest
+        :: HTMLMediaElement -> Nullable JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitCancelKeyRequest Mozilla HTMLMediaElement.webkitCancelKeyRequest documentation> 
+webkitCancelKeyRequest ::
+                       (MonadIO m, IsHTMLMediaElement self, ToJSString keySystem,
+                        ToJSString sessionId) =>
+                         self -> Maybe keySystem -> sessionId -> m ()
+webkitCancelKeyRequest self keySystem sessionId
+  = liftIO
+      (js_webkitCancelKeyRequest (toHTMLMediaElement self)
+         (toMaybeJSString keySystem)
+         (toJSString sessionId))
+ 
+foreign import javascript unsafe "$1[\"webkitSetMediaKeys\"]($2)"
+        js_webkitSetMediaKeys ::
+        HTMLMediaElement -> Nullable MediaKeys -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitSetMediaKeys Mozilla HTMLMediaElement.webkitSetMediaKeys documentation> 
+webkitSetMediaKeys ::
+                   (MonadIO m, IsHTMLMediaElement self) =>
+                     self -> Maybe MediaKeys -> m ()
+webkitSetMediaKeys self mediaKeys
+  = liftIO
+      (js_webkitSetMediaKeys (toHTMLMediaElement self)
+         (maybeToNullable mediaKeys))
+ 
+foreign import javascript unsafe "$1[\"addTextTrack\"]($2, $3, $4)"
+        js_addTextTrack ::
+        HTMLMediaElement ->
+          JSString -> JSString -> JSString -> IO (Nullable 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 -> label -> language -> m (Maybe TextTrack)
+addTextTrack self kind label language
+  = liftIO
+      (nullableToMaybe <$>
+         (js_addTextTrack (toHTMLMediaElement self) (toJSString kind)
+            (toJSString label)
+            (toJSString language)))
+ 
+foreign import javascript unsafe
+        "$1[\"getVideoPlaybackQuality\"]()" js_getVideoPlaybackQuality ::
+        HTMLMediaElement -> IO (Nullable VideoPlaybackQuality)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
+getVideoPlaybackQuality ::
+                        (MonadIO m, IsHTMLMediaElement self) =>
+                          self -> m (Maybe VideoPlaybackQuality)
+getVideoPlaybackQuality self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getVideoPlaybackQuality (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe
+        "$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[\"error\"]" js_getError ::
+        HTMLMediaElement -> IO (Nullable MediaError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.error Mozilla HTMLMediaElement.error documentation> 
+getError ::
+         (MonadIO m, IsHTMLMediaElement self) =>
+           self -> m (Maybe MediaError)
+getError self
+  = liftIO
+      (nullableToMaybe <$> (js_getError (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"buffered\"]" js_getBuffered
+        :: HTMLMediaElement -> IO (Nullable TimeRanges)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.buffered Mozilla HTMLMediaElement.buffered documentation> 
+getBuffered ::
+            (MonadIO m, IsHTMLMediaElement self) =>
+              self -> m (Maybe TimeRanges)
+getBuffered self
+  = liftIO
+      (nullableToMaybe <$> (js_getBuffered (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"played\"]" js_getPlayed ::
+        HTMLMediaElement -> IO (Nullable TimeRanges)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.played Mozilla HTMLMediaElement.played documentation> 
+getPlayed ::
+          (MonadIO m, IsHTMLMediaElement self) =>
+            self -> m (Maybe TimeRanges)
+getPlayed self
+  = liftIO
+      (nullableToMaybe <$> (js_getPlayed (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"seekable\"]" js_getSeekable
+        :: HTMLMediaElement -> IO (Nullable TimeRanges)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seekable Mozilla HTMLMediaElement.seekable documentation> 
+getSeekable ::
+            (MonadIO m, IsHTMLMediaElement self) =>
+              self -> m (Maybe TimeRanges)
+getSeekable self
+  = liftIO
+      (nullableToMaybe <$> (js_getSeekable (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "($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[\"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[\"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[\"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[\"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[\"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[\"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 unsafe "$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[\"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[\"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[\"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[\"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[\"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))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onemptied Mozilla HTMLMediaElement.onemptied documentation> 
+emptied ::
+        (IsHTMLMediaElement self, IsEventTarget self) =>
+          EventName self Event
+emptied = unsafeEventName (toJSString "emptied")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onloadedmetadata Mozilla HTMLMediaElement.onloadedmetadata documentation> 
+loadedMetadata ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+loadedMetadata = unsafeEventName (toJSString "loadedmetadata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onloadeddata Mozilla HTMLMediaElement.onloadeddata documentation> 
+loadedData ::
+           (IsHTMLMediaElement self, IsEventTarget self) =>
+             EventName self Event
+loadedData = unsafeEventName (toJSString "loadeddata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.oncanplay Mozilla HTMLMediaElement.oncanplay documentation> 
+canPlay ::
+        (IsHTMLMediaElement self, IsEventTarget self) =>
+          EventName self Event
+canPlay = unsafeEventName (toJSString "canplay")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.oncanplaythrough Mozilla HTMLMediaElement.oncanplaythrough documentation> 
+canPlayThrough ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+canPlayThrough = unsafeEventName (toJSString "canplaythrough")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onplaying Mozilla HTMLMediaElement.onplaying documentation> 
+playing ::
+        (IsHTMLMediaElement self, IsEventTarget self) =>
+          EventName self Event
+playing = unsafeEventName (toJSString "playing")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onended Mozilla HTMLMediaElement.onended documentation> 
+ended ::
+      (IsHTMLMediaElement self, IsEventTarget self) =>
+        EventName self Event
+ended = unsafeEventName (toJSString "ended")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwaiting Mozilla HTMLMediaElement.onwaiting documentation> 
+waiting ::
+        (IsHTMLMediaElement self, IsEventTarget self) =>
+          EventName self Event
+waiting = unsafeEventName (toJSString "waiting")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.ondurationchange Mozilla HTMLMediaElement.ondurationchange documentation> 
+durationChange ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+durationChange = unsafeEventName (toJSString "durationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.ontimeupdate Mozilla HTMLMediaElement.ontimeupdate documentation> 
+timeUpdate ::
+           (IsHTMLMediaElement self, IsEventTarget self) =>
+             EventName self Event
+timeUpdate = unsafeEventName (toJSString "timeupdate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onplay Mozilla HTMLMediaElement.onplay documentation> 
+playEvent ::
+          (IsHTMLMediaElement self, IsEventTarget self) =>
+            EventName self Event
+playEvent = unsafeEventName (toJSString "play")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onpause Mozilla HTMLMediaElement.onpause documentation> 
+pauseEvent ::
+           (IsHTMLMediaElement self, IsEventTarget self) =>
+             EventName self Event
+pauseEvent = unsafeEventName (toJSString "pause")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onratechange Mozilla HTMLMediaElement.onratechange documentation> 
+rateChange ::
+           (IsHTMLMediaElement self, IsEventTarget self) =>
+             EventName self Event
+rateChange = unsafeEventName (toJSString "ratechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onvolumechange Mozilla HTMLMediaElement.onvolumechange documentation> 
+volumeChange ::
+             (IsHTMLMediaElement self, IsEventTarget self) =>
+               EventName self Event
+volumeChange = unsafeEventName (toJSString "volumechange")
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"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[\"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[\"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[\"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))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitkeyadded Mozilla HTMLMediaElement.onwebkitkeyadded documentation> 
+webKitKeyAdded ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+webKitKeyAdded = unsafeEventName (toJSString "webkitkeyadded")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitkeyerror Mozilla HTMLMediaElement.onwebkitkeyerror documentation> 
+webKitKeyError ::
+               (IsHTMLMediaElement self, IsEventTarget self) =>
+                 EventName self Event
+webKitKeyError = unsafeEventName (toJSString "webkitkeyerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitkeymessage Mozilla HTMLMediaElement.onwebkitkeymessage documentation> 
+webKitKeyMessage ::
+                 (IsHTMLMediaElement self, IsEventTarget self) =>
+                   EventName self Event
+webKitKeyMessage = unsafeEventName (toJSString "webkitkeymessage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitneedkey Mozilla HTMLMediaElement.onwebkitneedkey documentation> 
+webKitNeedKey ::
+              (IsHTMLMediaElement self, IsEventTarget self) =>
+                EventName self Event
+webKitNeedKey = unsafeEventName (toJSString "webkitneedkey")
+ 
+foreign import javascript unsafe "$1[\"webkitKeys\"]"
+        js_getWebkitKeys :: HTMLMediaElement -> IO (Nullable MediaKeys)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitKeys Mozilla HTMLMediaElement.webkitKeys documentation> 
+getWebkitKeys ::
+              (MonadIO m, IsHTMLMediaElement self) => self -> m (Maybe MediaKeys)
+getWebkitKeys self
+  = liftIO
+      (nullableToMaybe <$> (js_getWebkitKeys (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"audioTracks\"]"
+        js_getAudioTracks ::
+        HTMLMediaElement -> IO (Nullable AudioTrackList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.audioTracks Mozilla HTMLMediaElement.audioTracks documentation> 
+getAudioTracks ::
+               (MonadIO m, IsHTMLMediaElement self) =>
+                 self -> m (Maybe AudioTrackList)
+getAudioTracks self
+  = liftIO
+      (nullableToMaybe <$> (js_getAudioTracks (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"textTracks\"]"
+        js_getTextTracks :: HTMLMediaElement -> IO (Nullable TextTrackList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.textTracks Mozilla HTMLMediaElement.textTracks documentation> 
+getTextTracks ::
+              (MonadIO m, IsHTMLMediaElement self) =>
+                self -> m (Maybe TextTrackList)
+getTextTracks self
+  = liftIO
+      (nullableToMaybe <$> (js_getTextTracks (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"videoTracks\"]"
+        js_getVideoTracks ::
+        HTMLMediaElement -> IO (Nullable VideoTrackList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.videoTracks Mozilla HTMLMediaElement.videoTracks documentation> 
+getVideoTracks ::
+               (MonadIO m, IsHTMLMediaElement self) =>
+                 self -> m (Maybe VideoTrackList)
+getVideoTracks self
+  = liftIO
+      (nullableToMaybe <$> (js_getVideoTracks (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"mediaGroup\"] = $2;"
+        js_setMediaGroup :: HTMLMediaElement -> Nullable 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 -> Maybe val -> m ()
+setMediaGroup self val
+  = liftIO
+      (js_setMediaGroup (toHTMLMediaElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"mediaGroup\"]"
+        js_getMediaGroup :: HTMLMediaElement -> IO (Nullable 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 (Maybe result)
+getMediaGroup self
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getMediaGroup (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"controller\"] = $2;"
+        js_setController ::
+        HTMLMediaElement -> Nullable 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) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe
+        "($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))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitcurrentplaybacktargetiswirelesschanged Mozilla HTMLMediaElement.onwebkitcurrentplaybacktargetiswirelesschanged documentation> 
+webKitCurrentPlaybackTargetIsWirelessChanged ::
+                                             (IsHTMLMediaElement self, IsEventTarget self) =>
+                                               EventName self Event
+webKitCurrentPlaybackTargetIsWirelessChanged
+  = unsafeEventName
+      (toJSString "webkitcurrentplaybacktargetiswirelesschanged")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwebkitplaybacktargetavailabilitychanged Mozilla HTMLMediaElement.onwebkitplaybacktargetavailabilitychanged documentation> 
+webKitPlaybackTargetAvailabilityChanged ::
+                                        (IsHTMLMediaElement self, IsEventTarget self) =>
+                                          EventName self Event
+webKitPlaybackTargetAvailabilityChanged
+  = unsafeEventName
+      (toJSString "webkitplaybacktargetavailabilitychanged")
+ 
+foreign import javascript unsafe "$1[\"srcObject\"] = $2;"
+        js_setSrcObject ::
+        HTMLMediaElement -> Nullable MediaStream -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+setSrcObject ::
+             (MonadIO m, IsHTMLMediaElement self) =>
+               self -> Maybe MediaStream -> m ()
+setSrcObject self val
+  = liftIO
+      (js_setSrcObject (toHTMLMediaElement self) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$1[\"srcObject\"]"
+        js_getSrcObject :: HTMLMediaElement -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+getSrcObject ::
+             (MonadIO m, IsHTMLMediaElement self) =>
+               self -> m (Maybe MediaStream)
+getSrcObject self
+  = liftIO
+      ((js_getSrcObject (toHTMLMediaElement self)) >>=
+         fromJSValUnchecked)
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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMenuElement
+       (js_setCompact, setCompact, js_getCompact, getCompact,
+        HTMLMenuElement, castToHTMLMenuElement, gTypeHTMLMenuElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,89 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLMetaElement,
+        gTypeHTMLMetaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,114 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLMeterElement,
+        gTypeHTMLMeterElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"labels\"]" js_getLabels ::
+        HTMLMeterElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.labels Mozilla HTMLMeterElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLMeterElement -> m (Maybe NodeList)
+getLabels self = liftIO (nullableToMaybe <$> (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,54 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLModElement
+       (js_setCite, setCite, js_getCite, getCite, js_setDateTime,
+        setDateTime, js_getDateTime, getDateTime, HTMLModElement,
+        castToHTMLModElement, gTypeHTMLModElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,80 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLOListElement,
+        gTypeHTMLOListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,363 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLObjectElement
+       (js_checkValidity, checkValidity, js_setCustomValidity,
+        setCustomValidity, js_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,
+        castToHTMLObjectElement, gTypeHTMLObjectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        HTMLObjectElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.setCustomValidity Mozilla HTMLObjectElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLObjectElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity (self) (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+        js_getSVGDocument :: HTMLObjectElement -> IO (Nullable SVGDocument)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
+getSVGDocument ::
+               (MonadIO m) => HTMLObjectElement -> m (Maybe SVGDocument)
+getSVGDocument self
+  = liftIO (nullableToMaybe <$> (js_getSVGDocument (self)))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        HTMLObjectElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.form Mozilla HTMLObjectElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLObjectElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"hspace\"] = $2;"
+        js_setHspace :: HTMLObjectElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
+setHspace :: (MonadIO m) => HTMLObjectElement -> Int -> m ()
+setHspace self val = liftIO (js_setHspace (self) val)
+ 
+foreign import javascript unsafe "$1[\"hspace\"]" js_getHspace ::
+        HTMLObjectElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
+getHspace :: (MonadIO m) => HTMLObjectElement -> m Int
+getHspace self = liftIO (js_getHspace (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"vspace\"] = $2;"
+        js_setVspace :: HTMLObjectElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
+setVspace :: (MonadIO m) => HTMLObjectElement -> Int -> m ()
+setVspace self val = liftIO (js_setVspace (self) val)
+ 
+foreign import javascript unsafe "$1[\"vspace\"]" js_getVspace ::
+        HTMLObjectElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
+getVspace :: (MonadIO m) => HTMLObjectElement -> m Int
+getVspace self = liftIO (js_getVspace (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"validity\"]" js_getValidity
+        :: HTMLObjectElement -> IO (Nullable ValidityState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validity Mozilla HTMLObjectElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLObjectElement -> m (Maybe ValidityState)
+getValidity self
+  = liftIO (nullableToMaybe <$> (js_getValidity (self)))
+ 
+foreign import javascript unsafe "$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[\"contentDocument\"]"
+        js_getContentDocument ::
+        HTMLObjectElement -> IO (Nullable Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.contentDocument Mozilla HTMLObjectElement.contentDocument documentation> 
+getContentDocument ::
+                   (MonadIO m) => HTMLObjectElement -> m (Maybe Document)
+getContentDocument self
+  = liftIO (nullableToMaybe <$> (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,50 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement
+       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
+        js_setLabel, setLabel, js_getLabel, getLabel, HTMLOptGroupElement,
+        castToHTMLOptGroupElement, gTypeHTMLOptGroupElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,132 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLOptionElement, gTypeHTMLOptionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"form\"]" js_getForm ::
+        HTMLOptionElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.form Mozilla HTMLOptionElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLOptionElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,96 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection
+       (js_namedItem, namedItem, js_addBefore, addBefore, js_add, add,
+        js_remove, remove, js_setSelectedIndex, setSelectedIndex,
+        js_getSelectedIndex, getSelectedIndex, js_setLength, setLength,
+        js_getLength, getLength, HTMLOptionsCollection,
+        castToHTMLOptionsCollection, gTypeHTMLOptionsCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        HTMLOptionsCollection -> JSString -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            HTMLOptionsCollection -> name -> m (Maybe Node)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_addBefore
+        ::
+        HTMLOptionsCollection ->
+          Nullable HTMLElement -> Nullable HTMLElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
+addBefore ::
+          (MonadIO m, IsHTMLElement element, IsHTMLElement before) =>
+            HTMLOptionsCollection -> Maybe element -> Maybe before -> m ()
+addBefore self element before
+  = liftIO
+      (js_addBefore (self) (maybeToNullable (fmap toHTMLElement element))
+         (maybeToNullable (fmap toHTMLElement before)))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+        HTMLOptionsCollection -> Nullable HTMLElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
+add ::
+    (MonadIO m, IsHTMLElement element) =>
+      HTMLOptionsCollection -> Maybe element -> Int -> m ()
+add self element index
+  = liftIO
+      (js_add (self) (maybeToNullable (fmap toHTMLElement element))
+         index)
+ 
+foreign import javascript unsafe "$1[\"remove\"]($2)" js_remove ::
+        HTMLOptionsCollection -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.remove Mozilla HTMLOptionsCollection.remove documentation> 
+remove :: (MonadIO m) => HTMLOptionsCollection -> Word -> m ()
+remove self index = liftIO (js_remove (self) index)
+ 
+foreign import javascript unsafe "$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[\"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))
+ 
+foreign import javascript unsafe "$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[\"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))
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,158 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLOutputElement
+       (js_checkValidity, checkValidity, 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, castToHTMLOutputElement,
+        gTypeHTMLOutputElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        HTMLOutputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.setCustomValidity Mozilla HTMLOutputElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLOutputElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity (self) (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"htmlFor\"]" js_getHtmlFor ::
+        HTMLOutputElement -> IO (Nullable DOMSettableTokenList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.htmlFor Mozilla HTMLOutputElement.htmlFor documentation> 
+getHtmlFor ::
+           (MonadIO m) => HTMLOutputElement -> m (Maybe DOMSettableTokenList)
+getHtmlFor self
+  = liftIO (nullableToMaybe <$> (js_getHtmlFor (self)))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        HTMLOutputElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.form Mozilla HTMLOutputElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLOutputElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"defaultValue\"] = $2;"
+        js_setDefaultValue ::
+        HTMLOutputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadIO m, ToJSString val) =>
+                  HTMLOutputElement -> Maybe val -> m ()
+setDefaultValue self val
+  = liftIO (js_setDefaultValue (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"]"
+        js_getDefaultValue :: HTMLOutputElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadIO m, FromJSString result) =>
+                  HTMLOutputElement -> m (Maybe result)
+getDefaultValue self
+  = liftIO (fromMaybeJSString <$> (js_getDefaultValue (self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: HTMLOutputElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) =>
+           HTMLOutputElement -> Maybe val -> m ()
+setValue self val
+  = liftIO (js_setValue (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        HTMLOutputElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) =>
+           HTMLOutputElement -> m (Maybe result)
+getValue self = liftIO (fromMaybeJSString <$> (js_getValue (self)))
+ 
+foreign import javascript unsafe "($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[\"validity\"]" js_getValidity
+        :: HTMLOutputElement -> IO (Nullable ValidityState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validity Mozilla HTMLOutputElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLOutputElement -> m (Maybe ValidityState)
+getValidity self
+  = liftIO (nullableToMaybe <$> (js_getValidity (self)))
+ 
+foreign import javascript unsafe "$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[\"labels\"]" js_getLabels ::
+        HTMLOutputElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.labels Mozilla HTMLOutputElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLOutputElement -> m (Maybe NodeList)
+getLabels self = liftIO (nullableToMaybe <$> (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,37 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement
+       (js_setAlign, setAlign, js_getAlign, getAlign,
+        HTMLParagraphElement, castToHTMLParagraphElement,
+        gTypeHTMLParagraphElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,87 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLParamElement, gTypeHTMLParamElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,48 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLPreElement
+       (js_setWidth, setWidth, js_getWidth, getWidth, js_setWrap, setWrap,
+        js_getWrap, getWrap, HTMLPreElement, castToHTMLPreElement,
+        gTypeHTMLPreElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,64 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLProgressElement,
+        gTypeHTMLProgressElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"labels\"]" js_getLabels ::
+        HTMLProgressElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.labels Mozilla HTMLProgressElement.labels documentation> 
+getLabels ::
+          (MonadIO m) => HTMLProgressElement -> m (Maybe NodeList)
+getLabels self = liftIO (nullableToMaybe <$> (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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement
+       (js_setCite, setCite, js_getCite, getCite, HTMLQuoteElement,
+        castToHTMLQuoteElement, gTypeHTMLQuoteElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,188 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, js_setNonce, setNonce, js_getNonce, getNonce,
+        HTMLScriptElement, castToHTMLScriptElement, gTypeHTMLScriptElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        HTMLScriptElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
+setText ::
+        (MonadIO m, ToJSString val) =>
+          HTMLScriptElement -> Maybe val -> m ()
+setText self val = liftIO (js_setText (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        HTMLScriptElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
+getText ::
+        (MonadIO m, FromJSString result) =>
+          HTMLScriptElement -> m (Maybe result)
+getText self = liftIO (fromMaybeJSString <$> (js_getText (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"crossOrigin\"] = $2;"
+        js_setCrossOrigin :: HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
+setCrossOrigin ::
+               (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setCrossOrigin self val
+  = liftIO (js_setCrossOrigin (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"crossOrigin\"]"
+        js_getCrossOrigin :: HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
+getCrossOrigin ::
+               (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getCrossOrigin self
+  = liftIO (fromJSString <$> (js_getCrossOrigin (self)))
+ 
+foreign import javascript unsafe "$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[\"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)))
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,305 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLSelectElement
+       (js_item, item, js_namedItem, namedItem, js_addBefore, addBefore,
+        js_add, add, js_remove, remove, js_checkValidity, checkValidity,
+        js_setCustomValidity, setCustomValidity, js_setAutofocus,
+        setAutofocus, js_getAutofocus, getAutofocus, js_setDisabled,
+        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
+        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, HTMLSelectElement, castToHTMLSelectElement,
+        gTypeHTMLSelectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        HTMLSelectElement -> Word -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
+item :: (MonadIO m) => HTMLSelectElement -> Word -> m (Maybe Node)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem :: HTMLSelectElement -> JSString -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            HTMLSelectElement -> name -> m (Maybe Node)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_addBefore
+        ::
+        HTMLSelectElement ->
+          Nullable HTMLElement -> Nullable HTMLElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.add Mozilla HTMLSelectElement.add documentation> 
+addBefore ::
+          (MonadIO m, IsHTMLElement element, IsHTMLElement before) =>
+            HTMLSelectElement -> Maybe element -> Maybe before -> m ()
+addBefore self element before
+  = liftIO
+      (js_addBefore (self) (maybeToNullable (fmap toHTMLElement element))
+         (maybeToNullable (fmap toHTMLElement before)))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+        HTMLSelectElement -> Nullable HTMLElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.add Mozilla HTMLSelectElement.add documentation> 
+add ::
+    (MonadIO m, IsHTMLElement element) =>
+      HTMLSelectElement -> Maybe element -> Int -> m ()
+add self element index
+  = liftIO
+      (js_add (self) (maybeToNullable (fmap toHTMLElement element))
+         index)
+ 
+foreign import javascript unsafe "$1[\"remove\"]()" js_remove ::
+        HTMLSelectElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
+remove :: (MonadIO m) => HTMLSelectElement -> m ()
+remove self = liftIO (js_remove (self))
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        HTMLSelectElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.setCustomValidity Mozilla HTMLSelectElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLSelectElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity (self) (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"size\"] = $2;" js_setSize ::
+        HTMLSelectElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
+setSize :: (MonadIO m) => HTMLSelectElement -> Int -> m ()
+setSize self val = liftIO (js_setSize (self) val)
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        HTMLSelectElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
+getSize :: (MonadIO m) => HTMLSelectElement -> m Int
+getSize self = liftIO (js_getSize (self))
+ 
+foreign import javascript unsafe "$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[\"options\"]" js_getOptions ::
+        HTMLSelectElement -> IO (Nullable HTMLOptionsCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.options Mozilla HTMLSelectElement.options documentation> 
+getOptions ::
+           (MonadIO m) => HTMLSelectElement -> m (Maybe HTMLOptionsCollection)
+getOptions self
+  = liftIO (nullableToMaybe <$> (js_getOptions (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"selectedOptions\"]"
+        js_getSelectedOptions ::
+        HTMLSelectElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedOptions Mozilla HTMLSelectElement.selectedOptions documentation> 
+getSelectedOptions ::
+                   (MonadIO m) => HTMLSelectElement -> m (Maybe HTMLCollection)
+getSelectedOptions self
+  = liftIO (nullableToMaybe <$> (js_getSelectedOptions (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"value\"] = $2;" js_setValue
+        :: HTMLSelectElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) =>
+           HTMLSelectElement -> Maybe val -> m ()
+setValue self val
+  = liftIO (js_setValue (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        HTMLSelectElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) =>
+           HTMLSelectElement -> m (Maybe result)
+getValue self = liftIO (fromMaybeJSString <$> (js_getValue (self)))
+ 
+foreign import javascript unsafe "($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[\"validity\"]" js_getValidity
+        :: HTMLSelectElement -> IO (Nullable ValidityState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validity Mozilla HTMLSelectElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLSelectElement -> m (Maybe ValidityState)
+getValidity self
+  = liftIO (nullableToMaybe <$> (js_getValidity (self)))
+ 
+foreign import javascript unsafe "$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[\"labels\"]" js_getLabels ::
+        HTMLSelectElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.labels Mozilla HTMLSelectElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLSelectElement -> m (Maybe NodeList)
+getLabels self = liftIO (nullableToMaybe <$> (js_getLabels (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,68 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLSourceElement
+       (js_setSrc, setSrc, js_getSrc, getSrc, js_setType, setType,
+        js_getType, getType, js_setMedia, setMedia, js_getMedia, getMedia,
+        HTMLSourceElement, castToHTMLSourceElement, gTypeHTMLSourceElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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,74 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, HTMLStyleElement,
+        castToHTMLStyleElement, gTypeHTMLStyleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"sheet\"]" js_getSheet ::
+        HTMLStyleElement -> IO (Nullable StyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.sheet Mozilla HTMLStyleElement.sheet documentation> 
+getSheet :: (MonadIO m) => HTMLStyleElement -> m (Maybe StyleSheet)
+getSheet self = liftIO (nullableToMaybe <$> (js_getSheet (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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement
+       (js_setAlign, setAlign, js_getAlign, getAlign,
+        HTMLTableCaptionElement, castToHTMLTableCaptionElement,
+        gTypeHTMLTableCaptionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,268 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement
+       (js_getCellIndex, getCellIndex, js_setAbbr, setAbbr, js_getAbbr,
+        getAbbr, 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_setHeaders, setHeaders,
+        js_getHeaders, getHeaders, js_setHeight, setHeight, js_getHeight,
+        getHeight, js_setNoWrap, setNoWrap, js_getNoWrap, getNoWrap,
+        js_setRowSpan, setRowSpan, js_getRowSpan, getRowSpan, js_setScope,
+        setScope, js_getScope, getScope, js_setVAlign, setVAlign,
+        js_getVAlign, getVAlign, js_setWidth, setWidth, js_getWidth,
+        getWidth, HTMLTableCellElement, castToHTMLTableCellElement,
+        gTypeHTMLTableCellElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"colSpan\"] = $2;"
+        js_setColSpan :: HTMLTableCellElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
+setColSpan :: (MonadIO m) => HTMLTableCellElement -> Int -> m ()
+setColSpan self val = liftIO (js_setColSpan (self) val)
+ 
+foreign import javascript unsafe "$1[\"colSpan\"]" js_getColSpan ::
+        HTMLTableCellElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
+getColSpan :: (MonadIO m) => HTMLTableCellElement -> m Int
+getColSpan self = liftIO (js_getColSpan (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"rowSpan\"] = $2;"
+        js_setRowSpan :: HTMLTableCellElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
+setRowSpan :: (MonadIO m) => HTMLTableCellElement -> Int -> m ()
+setRowSpan self val = liftIO (js_setRowSpan (self) val)
+ 
+foreign import javascript unsafe "$1[\"rowSpan\"]" js_getRowSpan ::
+        HTMLTableCellElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
+getRowSpan :: (MonadIO m) => HTMLTableCellElement -> m Int
+getRowSpan self = liftIO (js_getRowSpan (self))
+ 
+foreign import javascript unsafe "$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[\"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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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)))
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,117 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLTableColElement,
+        gTypeHTMLTableColElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"span\"] = $2;" js_setSpan ::
+        HTMLTableColElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
+setSpan :: (MonadIO m) => HTMLTableColElement -> Int -> m ()
+setSpan self val = liftIO (js_setSpan (self) val)
+ 
+foreign import javascript unsafe "$1[\"span\"]" js_getSpan ::
+        HTMLTableColElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
+getSpan :: (MonadIO m) => HTMLTableColElement -> m Int
+getSpan self = liftIO (js_getSpan (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,334 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableElement
+       (js_createTHead, createTHead, js_deleteTHead, deleteTHead,
+        js_createTFoot, createTFoot, js_deleteTFoot, deleteTFoot,
+        js_createTBody, createTBody, js_createCaption, createCaption,
+        js_deleteCaption, deleteCaption, js_insertRow, insertRow,
+        js_deleteRow, deleteRow, js_setCaption, setCaption, js_getCaption,
+        getCaption, js_setTHead, setTHead, js_getTHead, getTHead,
+        js_setTFoot, setTFoot, js_getTFoot, getTFoot, 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,
+        castToHTMLTableElement, gTypeHTMLTableElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"createTHead\"]()"
+        js_createTHead :: HTMLTableElement -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
+createTHead ::
+            (MonadIO m) => HTMLTableElement -> m (Maybe HTMLElement)
+createTHead self
+  = liftIO (nullableToMaybe <$> (js_createTHead (self)))
+ 
+foreign import javascript unsafe "$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[\"createTFoot\"]()"
+        js_createTFoot :: HTMLTableElement -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
+createTFoot ::
+            (MonadIO m) => HTMLTableElement -> m (Maybe HTMLElement)
+createTFoot self
+  = liftIO (nullableToMaybe <$> (js_createTFoot (self)))
+ 
+foreign import javascript unsafe "$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[\"createTBody\"]()"
+        js_createTBody :: HTMLTableElement -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
+createTBody ::
+            (MonadIO m) => HTMLTableElement -> m (Maybe HTMLElement)
+createTBody self
+  = liftIO (nullableToMaybe <$> (js_createTBody (self)))
+ 
+foreign import javascript unsafe "$1[\"createCaption\"]()"
+        js_createCaption :: HTMLTableElement -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
+createCaption ::
+              (MonadIO m) => HTMLTableElement -> m (Maybe HTMLElement)
+createCaption self
+  = liftIO (nullableToMaybe <$> (js_createCaption (self)))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"insertRow\"]($2)"
+        js_insertRow ::
+        HTMLTableElement -> Int -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
+insertRow ::
+          (MonadIO m) => HTMLTableElement -> Int -> m (Maybe HTMLElement)
+insertRow self index
+  = liftIO (nullableToMaybe <$> (js_insertRow (self) index))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"caption\"] = $2;"
+        js_setCaption ::
+        HTMLTableElement -> Nullable 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) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"tHead\"] = $2;" js_setTHead
+        :: HTMLTableElement -> Nullable 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) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"tFoot\"] = $2;" js_setTFoot
+        :: HTMLTableElement -> Nullable 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) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
+        HTMLTableElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rows Mozilla HTMLTableElement.rows documentation> 
+getRows ::
+        (MonadIO m) => HTMLTableElement -> m (Maybe HTMLCollection)
+getRows self = liftIO (nullableToMaybe <$> (js_getRows (self)))
+ 
+foreign import javascript unsafe "$1[\"tBodies\"]" js_getTBodies ::
+        HTMLTableElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tBodies Mozilla HTMLTableElement.tBodies documentation> 
+getTBodies ::
+           (MonadIO m) => HTMLTableElement -> m (Maybe HTMLCollection)
+getTBodies self
+  = liftIO (nullableToMaybe <$> (js_getTBodies (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,145 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement
+       (js_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,
+        castToHTMLTableRowElement, gTypeHTMLTableRowElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"insertCell\"]($2)"
+        js_insertCell ::
+        HTMLTableRowElement -> Int -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
+insertCell ::
+           (MonadIO m) => HTMLTableRowElement -> Int -> m (Maybe HTMLElement)
+insertCell self index
+  = liftIO (nullableToMaybe <$> (js_insertCell (self) index))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"cells\"]" js_getCells ::
+        HTMLTableRowElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.cells Mozilla HTMLTableRowElement.cells documentation> 
+getCells ::
+         (MonadIO m) => HTMLTableRowElement -> m (Maybe HTMLCollection)
+getCells self = liftIO (nullableToMaybe <$> (js_getCells (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,121 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement
+       (js_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, castToHTMLTableSectionElement,
+        gTypeHTMLTableSectionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"insertRow\"]($2)"
+        js_insertRow ::
+        HTMLTableSectionElement -> Int -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
+insertRow ::
+          (MonadIO m) =>
+            HTMLTableSectionElement -> Int -> m (Maybe HTMLElement)
+insertRow self index
+  = liftIO (nullableToMaybe <$> (js_insertRow (self) index))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"rows\"]" js_getRows ::
+        HTMLTableSectionElement -> IO (Nullable HTMLCollection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.rows Mozilla HTMLTableSectionElement.rows documentation> 
+getRows ::
+        (MonadIO m) => HTMLTableSectionElement -> m (Maybe HTMLCollection)
+getRows self = liftIO (nullableToMaybe <$> (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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement
+       (js_getContent, getContent, HTMLTemplateElement,
+        castToHTMLTemplateElement, gTypeHTMLTemplateElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"content\"]" js_getContent ::
+        HTMLTemplateElement -> IO (Nullable DocumentFragment)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
+getContent ::
+           (MonadIO m) => HTMLTemplateElement -> m (Maybe DocumentFragment)
+getContent self
+  = liftIO (nullableToMaybe <$> (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,456 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement
+       (js_checkValidity, checkValidity, js_setCustomValidity,
+        setCustomValidity, js_select, select, js_setRangeText,
+        setRangeText, js_setRangeText4, setRangeText4,
+        js_setSelectionRange, setSelectionRange, js_setAutofocus,
+        setAutofocus, js_getAutofocus, getAutofocus, js_setCols, setCols,
+        js_getCols, getCols, js_setDirName, setDirName, js_getDirName,
+        getDirName, js_setDisabled, setDisabled, js_getDisabled,
+        getDisabled, js_getForm, getForm, 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_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_setAutocorrect,
+        setAutocorrect, js_getAutocorrect, getAutocorrect,
+        js_setAutocapitalize, setAutocapitalize, js_getAutocapitalize,
+        getAutocapitalize, HTMLTextAreaElement, castToHTMLTextAreaElement,
+        gTypeHTMLTextAreaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        HTMLTextAreaElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setCustomValidity Mozilla HTMLTextAreaElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLTextAreaElement -> Maybe error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity (self) (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$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 unsafe "$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 unsafe
+        "$1[\"setRangeText\"]($2, $3, $4,\n$5)" js_setRangeText4 ::
+        HTMLTextAreaElement ->
+          JSString -> Word -> Word -> 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 -> selectionMode -> m ()
+setRangeText4 self replacement start end selectionMode
+  = liftIO
+      (js_setRangeText4 (self) (toJSString replacement) start end
+         (toJSString selectionMode))
+ 
+foreign import javascript unsafe
+        "$1[\"setSelectionRange\"]($2, $3,\n$4)" js_setSelectionRange ::
+        HTMLTextAreaElement -> Int -> Int -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setSelectionRange Mozilla HTMLTextAreaElement.setSelectionRange documentation> 
+setSelectionRange ::
+                  (MonadIO m, ToJSString direction) =>
+                    HTMLTextAreaElement -> Int -> Int -> direction -> m ()
+setSelectionRange self start end direction
+  = liftIO
+      (js_setSelectionRange (self) start end (toJSString direction))
+ 
+foreign import javascript unsafe "$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[\"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[\"cols\"] = $2;" js_setCols ::
+        HTMLTextAreaElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
+setCols :: (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
+setCols self val = liftIO (js_setCols (self) val)
+ 
+foreign import javascript unsafe "$1[\"cols\"]" js_getCols ::
+        HTMLTextAreaElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
+getCols :: (MonadIO m) => HTMLTextAreaElement -> m Int
+getCols self = liftIO (js_getCols (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"form\"]" js_getForm ::
+        HTMLTextAreaElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.form Mozilla HTMLTextAreaElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLTextAreaElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"rows\"] = $2;" js_setRows ::
+        HTMLTextAreaElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
+setRows :: (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
+setRows self val = liftIO (js_setRows (self) val)
+ 
+foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
+        HTMLTextAreaElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
+getRows :: (MonadIO m) => HTMLTextAreaElement -> m Int
+getRows self = liftIO (js_getRows (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"defaultValue\"] = $2;"
+        js_setDefaultValue ::
+        HTMLTextAreaElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadIO m, ToJSString val) =>
+                  HTMLTextAreaElement -> Maybe val -> m ()
+setDefaultValue self val
+  = liftIO (js_setDefaultValue (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"]"
+        js_getDefaultValue :: HTMLTextAreaElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadIO m, FromJSString result) =>
+                  HTMLTextAreaElement -> m (Maybe result)
+getDefaultValue self
+  = liftIO (fromMaybeJSString <$> (js_getDefaultValue (self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: HTMLTextAreaElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) =>
+           HTMLTextAreaElement -> Maybe val -> m ()
+setValue self val
+  = liftIO (js_setValue (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        HTMLTextAreaElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) =>
+           HTMLTextAreaElement -> m (Maybe result)
+getValue self = liftIO (fromMaybeJSString <$> (js_getValue (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"validity\"]" js_getValidity
+        :: HTMLTextAreaElement -> IO (Nullable ValidityState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validity Mozilla HTMLTextAreaElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLTextAreaElement -> m (Maybe ValidityState)
+getValidity self
+  = liftIO (nullableToMaybe <$> (js_getValidity (self)))
+ 
+foreign import javascript unsafe "$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[\"labels\"]" js_getLabels ::
+        HTMLTextAreaElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.labels Mozilla HTMLTextAreaElement.labels documentation> 
+getLabels ::
+          (MonadIO m) => HTMLTextAreaElement -> m (Maybe NodeList)
+getLabels self = liftIO (nullableToMaybe <$> (js_getLabels (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"autocorrect\"] = $2;"
+        js_setAutocorrect :: HTMLTextAreaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocorrect Mozilla HTMLTextAreaElement.autocorrect documentation> 
+setAutocorrect ::
+               (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
+setAutocorrect self val = liftIO (js_setAutocorrect (self) val)
+ 
+foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
+        js_getAutocorrect :: HTMLTextAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocorrect Mozilla HTMLTextAreaElement.autocorrect documentation> 
+getAutocorrect :: (MonadIO m) => HTMLTextAreaElement -> m Bool
+getAutocorrect self = liftIO (js_getAutocorrect (self))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
+        js_setAutocapitalize ::
+        HTMLTextAreaElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocapitalize Mozilla HTMLTextAreaElement.autocapitalize documentation> 
+setAutocapitalize ::
+                  (MonadIO m, ToJSString val) =>
+                    HTMLTextAreaElement -> Maybe val -> m ()
+setAutocapitalize self val
+  = liftIO (js_setAutocapitalize (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"]"
+        js_getAutocapitalize ::
+        HTMLTextAreaElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocapitalize Mozilla HTMLTextAreaElement.autocapitalize documentation> 
+getAutocapitalize ::
+                  (MonadIO m, FromJSString result) =>
+                    HTMLTextAreaElement -> m (Maybe result)
+getAutocapitalize self
+  = liftIO (fromMaybeJSString <$> (js_getAutocapitalize (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,37 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTitleElement
+       (js_setText, setText, js_getText, getText, HTMLTitleElement,
+        castToHTMLTitleElement, gTypeHTMLTitleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        HTMLTitleElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
+setText ::
+        (MonadIO m, ToJSString val) =>
+          HTMLTitleElement -> Maybe val -> m ()
+setText self val = liftIO (js_setText (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        HTMLTitleElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
+getText ::
+        (MonadIO m, FromJSString result) =>
+          HTMLTitleElement -> m (Maybe result)
+getText self = liftIO (fromMaybeJSString <$> (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,121 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToHTMLTrackElement, gTypeHTMLTrackElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern NONE = 0
+pattern LOADING = 1
+pattern LOADED = 2
+pattern ERROR = 3
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"track\"]" js_getTrack ::
+        HTMLTrackElement -> IO (Nullable TextTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.track Mozilla HTMLTrackElement.track documentation> 
+getTrack :: (MonadIO m) => HTMLTrackElement -> m (Maybe TextTrack)
+getTrack self = liftIO (nullableToMaybe <$> (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,50 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLUListElement
+       (js_setCompact, setCompact, js_getCompact, getCompact, js_setType,
+        setType, js_getType, getType, HTMLUListElement,
+        castToHTMLUListElement, gTypeHTMLUListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,222 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLVideoElement
+       (js_webkitEnterFullscreen, webkitEnterFullscreen,
+        js_webkitExitFullscreen, webkitExitFullscreen,
+        js_webkitEnterFullScreen, webkitEnterFullScreen,
+        js_webkitExitFullScreen, webkitExitFullScreen,
+        js_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_getWebkitSupportsFullscreen,
+        getWebkitSupportsFullscreen, js_getWebkitDisplayingFullscreen,
+        getWebkitDisplayingFullscreen,
+        js_setWebkitWirelessVideoPlaybackDisabled,
+        setWebkitWirelessVideoPlaybackDisabled,
+        js_getWebkitWirelessVideoPlaybackDisabled,
+        getWebkitWirelessVideoPlaybackDisabled,
+        js_getWebkitDecodedFrameCount, getWebkitDecodedFrameCount,
+        js_getWebkitDroppedFrameCount, getWebkitDroppedFrameCount,
+        js_getWebkitPresentationMode, getWebkitPresentationMode,
+        webKitPresentationModeChanged, HTMLVideoElement,
+        castToHTMLVideoElement, gTypeHTMLVideoElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.onwebkitpresentationmodechanged Mozilla HTMLVideoElement.onwebkitpresentationmodechanged documentation> 
+webKitPresentationModeChanged :: EventName HTMLVideoElement Event
+webKitPresentationModeChanged
+  = unsafeEventName (toJSString "webkitpresentationmodechanged")
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,55 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.HashChangeEvent
+       (js_initHashChangeEvent, initHashChangeEvent, js_getOldURL,
+        getOldURL, js_getNewURL, getNewURL, HashChangeEvent,
+        castToHashChangeEvent, gTypeHashChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initHashChangeEvent\"]($2,\n$3, $4, $5, $6)"
+        js_initHashChangeEvent ::
+        HashChangeEvent ->
+          JSString -> Bool -> Bool -> JSString -> 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 ->
+                        type' -> Bool -> Bool -> oldURL -> newURL -> m ()
+initHashChangeEvent self type' canBubble cancelable oldURL newURL
+  = liftIO
+      (js_initHashChangeEvent (self) (toJSString type') canBubble
+         cancelable
+         (toJSString oldURL)
+         (toJSString newURL))
+ 
+foreign import javascript unsafe "$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[\"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/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,79 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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_getState, getState, History, castToHistory, gTypeHistory)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"go\"]($2)" js_go ::
+        History -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.go Mozilla History.go documentation> 
+go :: (MonadIO m) => History -> Int -> m ()
+go self distance = liftIO (js_go (self) distance)
+ 
+foreign import javascript unsafe "$1[\"pushState\"]($2, $3, $4)"
+        js_pushState :: History -> JSVal -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.pushState Mozilla History.pushState documentation> 
+pushState ::
+          (MonadIO m, ToJSString title, ToJSString url) =>
+            History -> JSVal -> title -> url -> m ()
+pushState self data' title url
+  = liftIO
+      (js_pushState (self) data' (toJSString title) (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"replaceState\"]($2, $3, $4)"
+        js_replaceState ::
+        History -> JSVal -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.replaceState Mozilla History.replaceState documentation> 
+replaceState ::
+             (MonadIO m, ToJSString title, ToJSString url) =>
+               History -> JSVal -> title -> url -> m ()
+replaceState self data' title url
+  = liftIO
+      (js_replaceState (self) data' (toJSString title) (toJSString url))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"state\"]" js_getState ::
+        History -> IO (Nullable SerializedScriptValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.state Mozilla History.state documentation> 
+getState ::
+         (MonadIO m) => History -> m (Maybe SerializedScriptValue)
+getState self = liftIO (nullableToMaybe <$> (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,88 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBCursor
+       (js_update, update, js_advance, advance, js_continue, continue,
+        js_delete, delete, js_getSource, getSource, js_getDirection,
+        getDirection, js_getKey, getKey, js_getPrimaryKey, getPrimaryKey,
+        IDBCursor, castToIDBCursor, gTypeIDBCursor, IsIDBCursor,
+        toIDBCursor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"update\"]($2)" js_update ::
+        IDBCursor -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
+update ::
+       (MonadIO m, IsIDBCursor self) =>
+         self -> JSVal -> m (Maybe IDBRequest)
+update self value
+  = liftIO (nullableToMaybe <$> (js_update (toIDBCursor self) value))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"continue\"]($2)" js_continue
+        :: IDBCursor -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continue Mozilla IDBCursor.continue documentation> 
+continue :: (MonadIO m, IsIDBCursor self) => self -> JSVal -> m ()
+continue self key = liftIO (js_continue (toIDBCursor self) key)
+ 
+foreign import javascript unsafe "$1[\"delete\"]()" js_delete ::
+        IDBCursor -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
+delete ::
+       (MonadIO m, IsIDBCursor self) => self -> m (Maybe IDBRequest)
+delete self
+  = liftIO (nullableToMaybe <$> (js_delete (toIDBCursor self)))
+ 
+foreign import javascript unsafe "$1[\"source\"]" js_getSource ::
+        IDBCursor -> IO (Nullable IDBAny)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.source Mozilla IDBCursor.source documentation> 
+getSource ::
+          (MonadIO m, IsIDBCursor self) => self -> m (Maybe IDBAny)
+getSource self
+  = liftIO (nullableToMaybe <$> (js_getSource (toIDBCursor self)))
+ 
+foreign import javascript unsafe "$1[\"direction\"]"
+        js_getDirection :: IDBCursor -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.direction Mozilla IDBCursor.direction documentation> 
+getDirection ::
+             (MonadIO m, IsIDBCursor self, FromJSString result) =>
+               self -> m result
+getDirection self
+  = liftIO (fromJSString <$> (js_getDirection (toIDBCursor self)))
+ 
+foreign import javascript unsafe "$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[\"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,26 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue
+       (js_getValue, getValue, IDBCursorWithValue,
+        castToIDBCursorWithValue, gTypeIDBCursorWithValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,119 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBDatabase
+       (js_createObjectStore, createObjectStore, js_deleteObjectStore,
+        deleteObjectStore, js_transaction, transaction, js_transaction',
+        transaction', js_close, close, js_getName, getName, js_getVersion,
+        getVersion, js_getObjectStoreNames, getObjectStoreNames, abort,
+        error, versionChange, IDBDatabase, castToIDBDatabase,
+        gTypeIDBDatabase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"createObjectStore\"]($2, $3)" js_createObjectStore ::
+        IDBDatabase ->
+          JSString -> Nullable Dictionary -> IO (Nullable IDBObjectStore)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
+createObjectStore ::
+                  (MonadIO m, ToJSString name, IsDictionary options) =>
+                    IDBDatabase -> name -> Maybe options -> m (Maybe IDBObjectStore)
+createObjectStore self name options
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createObjectStore (self) (toJSString name)
+            (maybeToNullable (fmap toDictionary options))))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"transaction\"]($2, $3)"
+        js_transaction ::
+        IDBDatabase -> JSString -> JSString -> IO (Nullable IDBTransaction)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
+transaction ::
+            (MonadIO m, ToJSString storeName, ToJSString mode) =>
+              IDBDatabase -> storeName -> mode -> m (Maybe IDBTransaction)
+transaction self storeName mode
+  = liftIO
+      (nullableToMaybe <$>
+         (js_transaction (self) (toJSString storeName) (toJSString mode)))
+ 
+foreign import javascript unsafe "$1[\"transaction\"]($2, $3)"
+        js_transaction' ::
+        IDBDatabase -> JSVal -> JSString -> IO (Nullable IDBTransaction)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
+transaction' ::
+             (MonadIO m, ToJSString storeNames, ToJSString mode) =>
+               IDBDatabase -> [storeNames] -> mode -> m (Maybe IDBTransaction)
+transaction' self storeNames mode
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal storeNames >>=
+            \ storeNames' -> js_transaction' (self) storeNames'
+            (toJSString mode)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"objectStoreNames\"]"
+        js_getObjectStoreNames ::
+        IDBDatabase -> IO (Nullable DOMStringList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.objectStoreNames Mozilla IDBDatabase.objectStoreNames documentation> 
+getObjectStoreNames ::
+                    (MonadIO m) => IDBDatabase -> m (Maybe DOMStringList)
+getObjectStoreNames self
+  = liftIO (nullableToMaybe <$> (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.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,50 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBFactory
+       (js_open, open, js_deleteDatabase, deleteDatabase, js_cmp, cmp,
+        IDBFactory, castToIDBFactory, gTypeIDBFactory)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"open\"]($2, $3)" js_open ::
+        IDBFactory -> JSString -> Double -> IO (Nullable IDBOpenDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
+open ::
+     (MonadIO m, ToJSString name) =>
+       IDBFactory -> name -> Word64 -> m (Maybe IDBOpenDBRequest)
+open self name version
+  = liftIO
+      (nullableToMaybe <$>
+         (js_open (self) (toJSString name) (fromIntegral version)))
+ 
+foreign import javascript unsafe "$1[\"deleteDatabase\"]($2)"
+        js_deleteDatabase ::
+        IDBFactory -> JSString -> IO (Nullable IDBOpenDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
+deleteDatabase ::
+               (MonadIO m, ToJSString name) =>
+                 IDBFactory -> name -> m (Maybe IDBOpenDBRequest)
+deleteDatabase self name
+  = liftIO
+      (nullableToMaybe <$> (js_deleteDatabase (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$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) => IDBFactory -> JSVal -> JSVal -> m Int
+cmp self first second = liftIO (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,176 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBIndex
+       (js_openCursorRange, openCursorRange, js_openCursor, openCursor,
+        js_openKeyCursorRange, openKeyCursorRange, js_openKeyCursor,
+        openKeyCursor, js_getRange, getRange, js_get, get, js_getKeyRange,
+        getKeyRange, js_getKey, getKey, js_countRange, countRange,
+        js_count, count, js_getName, getName, js_getObjectStore,
+        getObjectStore, js_getKeyPath, getKeyPath, js_getMultiEntry,
+        getMultiEntry, js_getUnique, getUnique, IDBIndex, castToIDBIndex,
+        gTypeIDBIndex)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+        js_openCursorRange ::
+        IDBIndex ->
+          Nullable IDBKeyRange -> JSString -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursorRange ::
+                (MonadIO m, ToJSString direction) =>
+                  IDBIndex -> Maybe IDBKeyRange -> direction -> m (Maybe IDBRequest)
+openCursorRange self range direction
+  = liftIO
+      (nullableToMaybe <$>
+         (js_openCursorRange (self) (maybeToNullable range)
+            (toJSString direction)))
+ 
+foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+        js_openCursor ::
+        IDBIndex -> JSVal -> JSString -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursor ::
+           (MonadIO m, ToJSString direction) =>
+             IDBIndex -> JSVal -> direction -> m (Maybe IDBRequest)
+openCursor self key direction
+  = liftIO
+      (nullableToMaybe <$>
+         (js_openCursor (self) key (toJSString direction)))
+ 
+foreign import javascript unsafe "$1[\"openKeyCursor\"]($2, $3)"
+        js_openKeyCursorRange ::
+        IDBIndex ->
+          Nullable IDBKeyRange -> JSString -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursorRange ::
+                   (MonadIO m, ToJSString direction) =>
+                     IDBIndex -> Maybe IDBKeyRange -> direction -> m (Maybe IDBRequest)
+openKeyCursorRange self range direction
+  = liftIO
+      (nullableToMaybe <$>
+         (js_openKeyCursorRange (self) (maybeToNullable range)
+            (toJSString direction)))
+ 
+foreign import javascript unsafe "$1[\"openKeyCursor\"]($2, $3)"
+        js_openKeyCursor ::
+        IDBIndex -> JSVal -> JSString -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursor ::
+              (MonadIO m, ToJSString direction) =>
+                IDBIndex -> JSVal -> direction -> m (Maybe IDBRequest)
+openKeyCursor self key direction
+  = liftIO
+      (nullableToMaybe <$>
+         (js_openKeyCursor (self) key (toJSString direction)))
+ 
+foreign import javascript unsafe "$1[\"get\"]($2)" js_getRange ::
+        IDBIndex -> Nullable IDBKeyRange -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+getRange ::
+         (MonadIO m) =>
+           IDBIndex -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+getRange self key
+  = liftIO
+      (nullableToMaybe <$> (js_getRange (self) (maybeToNullable key)))
+ 
+foreign import javascript unsafe "$1[\"get\"]($2)" js_get ::
+        IDBIndex -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+get :: (MonadIO m) => IDBIndex -> JSVal -> m (Maybe IDBRequest)
+get self key = liftIO (nullableToMaybe <$> (js_get (self) key))
+ 
+foreign import javascript unsafe "$1[\"getKey\"]($2)"
+        js_getKeyRange ::
+        IDBIndex -> Nullable IDBKeyRange -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKeyRange ::
+            (MonadIO m) =>
+              IDBIndex -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+getKeyRange self key
+  = liftIO
+      (nullableToMaybe <$> (js_getKeyRange (self) (maybeToNullable key)))
+ 
+foreign import javascript unsafe "$1[\"getKey\"]($2)" js_getKey ::
+        IDBIndex -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKey :: (MonadIO m) => IDBIndex -> JSVal -> m (Maybe IDBRequest)
+getKey self key
+  = liftIO (nullableToMaybe <$> (js_getKey (self) key))
+ 
+foreign import javascript unsafe "$1[\"count\"]($2)" js_countRange
+        :: IDBIndex -> Nullable IDBKeyRange -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+countRange ::
+           (MonadIO m) =>
+             IDBIndex -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+countRange self range
+  = liftIO
+      (nullableToMaybe <$>
+         (js_countRange (self) (maybeToNullable range)))
+ 
+foreign import javascript unsafe "$1[\"count\"]($2)" js_count ::
+        IDBIndex -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+count :: (MonadIO m) => IDBIndex -> JSVal -> m (Maybe IDBRequest)
+count self key = liftIO (nullableToMaybe <$> (js_count (self) key))
+ 
+foreign import javascript unsafe "$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[\"objectStore\"]"
+        js_getObjectStore :: IDBIndex -> IO (Nullable IDBObjectStore)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.objectStore Mozilla IDBIndex.objectStore documentation> 
+getObjectStore ::
+               (MonadIO m) => IDBIndex -> m (Maybe IDBObjectStore)
+getObjectStore self
+  = liftIO (nullableToMaybe <$> (js_getObjectStore (self)))
+ 
+foreign import javascript unsafe "$1[\"keyPath\"]" js_getKeyPath ::
+        IDBIndex -> IO (Nullable IDBAny)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
+getKeyPath :: (MonadIO m) => IDBIndex -> m (Maybe IDBAny)
+getKeyPath self
+  = liftIO (nullableToMaybe <$> (js_getKeyPath (self)))
+ 
+foreign import javascript unsafe "($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[\"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,95 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBKeyRange
+       (js_only, only, js_lowerBound, lowerBound, js_upperBound,
+        upperBound, js_bound, bound, js_getLower, getLower, js_getUpper,
+        getUpper, js_getLowerOpen, getLowerOpen, js_getUpperOpen,
+        getUpperOpen, IDBKeyRange, castToIDBKeyRange, gTypeIDBKeyRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"only\"]($2)" js_only ::
+        IDBKeyRange -> JSVal -> IO (Nullable IDBKeyRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
+only ::
+     (MonadIO m) => IDBKeyRange -> JSVal -> m (Maybe IDBKeyRange)
+only self value
+  = liftIO (nullableToMaybe <$> (js_only (self) value))
+ 
+foreign import javascript unsafe "$1[\"lowerBound\"]($2, $3)"
+        js_lowerBound ::
+        IDBKeyRange -> JSVal -> Bool -> IO (Nullable IDBKeyRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
+lowerBound ::
+           (MonadIO m) =>
+             IDBKeyRange -> JSVal -> Bool -> m (Maybe IDBKeyRange)
+lowerBound self lower open
+  = liftIO (nullableToMaybe <$> (js_lowerBound (self) lower open))
+ 
+foreign import javascript unsafe "$1[\"upperBound\"]($2, $3)"
+        js_upperBound ::
+        IDBKeyRange -> JSVal -> Bool -> IO (Nullable IDBKeyRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
+upperBound ::
+           (MonadIO m) =>
+             IDBKeyRange -> JSVal -> Bool -> m (Maybe IDBKeyRange)
+upperBound self upper open
+  = liftIO (nullableToMaybe <$> (js_upperBound (self) upper open))
+ 
+foreign import javascript unsafe "$1[\"bound\"]($2, $3, $4, $5)"
+        js_bound ::
+        IDBKeyRange ->
+          JSVal -> JSVal -> Bool -> Bool -> IO (Nullable IDBKeyRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
+bound ::
+      (MonadIO m) =>
+        IDBKeyRange ->
+          JSVal -> JSVal -> Bool -> Bool -> m (Maybe IDBKeyRange)
+bound self lower upper lowerOpen upperOpen
+  = liftIO
+      (nullableToMaybe <$>
+         (js_bound (self) lower upper lowerOpen upperOpen))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,241 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBObjectStore
+       (js_put, put, js_add, add, js_deleteRange, deleteRange, js_delete,
+        delete, js_getRange, getRange, js_get, get, js_clear, clear,
+        js_openCursorRange, openCursorRange, js_openCursor, openCursor,
+        js_createIndex', createIndex', js_createIndex, createIndex,
+        js_index, index, js_deleteIndex, deleteIndex, js_countRange,
+        countRange, js_count, count, js_getName, getName, js_getKeyPath,
+        getKeyPath, js_getIndexNames, getIndexNames, js_getTransaction,
+        getTransaction, js_getAutoIncrement, getAutoIncrement,
+        IDBObjectStore, castToIDBObjectStore, gTypeIDBObjectStore)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"put\"]($2, $3)" js_put ::
+        IDBObjectStore -> JSVal -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
+put ::
+    (MonadIO m) =>
+      IDBObjectStore -> JSVal -> JSVal -> m (Maybe IDBRequest)
+put self value key
+  = liftIO (nullableToMaybe <$> (js_put (self) value key))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+        IDBObjectStore -> JSVal -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
+add ::
+    (MonadIO m) =>
+      IDBObjectStore -> JSVal -> JSVal -> m (Maybe IDBRequest)
+add self value key
+  = liftIO (nullableToMaybe <$> (js_add (self) value key))
+ 
+foreign import javascript unsafe "$1[\"delete\"]($2)"
+        js_deleteRange ::
+        IDBObjectStore -> Nullable IDBKeyRange -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+deleteRange ::
+            (MonadIO m) =>
+              IDBObjectStore -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+deleteRange self keyRange
+  = liftIO
+      (nullableToMaybe <$>
+         (js_deleteRange (self) (maybeToNullable keyRange)))
+ 
+foreign import javascript unsafe "$1[\"delete\"]($2)" js_delete ::
+        IDBObjectStore -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+delete ::
+       (MonadIO m) => IDBObjectStore -> JSVal -> m (Maybe IDBRequest)
+delete self key
+  = liftIO (nullableToMaybe <$> (js_delete (self) key))
+ 
+foreign import javascript unsafe "$1[\"get\"]($2)" js_getRange ::
+        IDBObjectStore -> Nullable IDBKeyRange -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+getRange ::
+         (MonadIO m) =>
+           IDBObjectStore -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+getRange self key
+  = liftIO
+      (nullableToMaybe <$> (js_getRange (self) (maybeToNullable key)))
+ 
+foreign import javascript unsafe "$1[\"get\"]($2)" js_get ::
+        IDBObjectStore -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+get ::
+    (MonadIO m) => IDBObjectStore -> JSVal -> m (Maybe IDBRequest)
+get self key = liftIO (nullableToMaybe <$> (js_get (self) key))
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        IDBObjectStore -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
+clear :: (MonadIO m) => IDBObjectStore -> m (Maybe IDBRequest)
+clear self = liftIO (nullableToMaybe <$> (js_clear (self)))
+ 
+foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+        js_openCursorRange ::
+        IDBObjectStore ->
+          Nullable IDBKeyRange -> JSString -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursorRange ::
+                (MonadIO m, ToJSString direction) =>
+                  IDBObjectStore ->
+                    Maybe IDBKeyRange -> direction -> m (Maybe IDBRequest)
+openCursorRange self range direction
+  = liftIO
+      (nullableToMaybe <$>
+         (js_openCursorRange (self) (maybeToNullable range)
+            (toJSString direction)))
+ 
+foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+        js_openCursor ::
+        IDBObjectStore -> JSVal -> JSString -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursor ::
+           (MonadIO m, ToJSString direction) =>
+             IDBObjectStore -> JSVal -> direction -> m (Maybe IDBRequest)
+openCursor self key direction
+  = liftIO
+      (nullableToMaybe <$>
+         (js_openCursor (self) key (toJSString direction)))
+ 
+foreign import javascript unsafe "$1[\"createIndex\"]($2, $3, $4)"
+        js_createIndex' ::
+        IDBObjectStore ->
+          JSString -> JSVal -> Nullable Dictionary -> IO (Nullable IDBIndex)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
+createIndex' ::
+             (MonadIO m, ToJSString name, ToJSString keyPath,
+              IsDictionary options) =>
+               IDBObjectStore ->
+                 name -> [keyPath] -> Maybe options -> m (Maybe IDBIndex)
+createIndex' self name keyPath options
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal keyPath >>=
+            \ keyPath' -> js_createIndex' (self) (toJSString name) keyPath'
+            (maybeToNullable (fmap toDictionary options))))
+ 
+foreign import javascript unsafe "$1[\"createIndex\"]($2, $3, $4)"
+        js_createIndex ::
+        IDBObjectStore ->
+          JSString ->
+            JSString -> Nullable Dictionary -> IO (Nullable IDBIndex)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
+createIndex ::
+            (MonadIO m, ToJSString name, ToJSString keyPath,
+             IsDictionary options) =>
+              IDBObjectStore ->
+                name -> keyPath -> Maybe options -> m (Maybe IDBIndex)
+createIndex self name keyPath options
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createIndex (self) (toJSString name) (toJSString keyPath)
+            (maybeToNullable (fmap toDictionary options))))
+ 
+foreign import javascript unsafe "$1[\"index\"]($2)" js_index ::
+        IDBObjectStore -> JSString -> IO (Nullable IDBIndex)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
+index ::
+      (MonadIO m, ToJSString name) =>
+        IDBObjectStore -> name -> m (Maybe IDBIndex)
+index self name
+  = liftIO (nullableToMaybe <$> (js_index (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"count\"]($2)" js_countRange
+        ::
+        IDBObjectStore -> Nullable IDBKeyRange -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+countRange ::
+           (MonadIO m) =>
+             IDBObjectStore -> Maybe IDBKeyRange -> m (Maybe IDBRequest)
+countRange self range
+  = liftIO
+      (nullableToMaybe <$>
+         (js_countRange (self) (maybeToNullable range)))
+ 
+foreign import javascript unsafe "$1[\"count\"]($2)" js_count ::
+        IDBObjectStore -> JSVal -> IO (Nullable IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+count ::
+      (MonadIO m) => IDBObjectStore -> JSVal -> m (Maybe IDBRequest)
+count self key = liftIO (nullableToMaybe <$> (js_count (self) key))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        IDBObjectStore -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) =>
+          IDBObjectStore -> m (Maybe result)
+getName self = liftIO (fromMaybeJSString <$> (js_getName (self)))
+ 
+foreign import javascript unsafe "$1[\"keyPath\"]" js_getKeyPath ::
+        IDBObjectStore -> IO (Nullable IDBAny)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
+getKeyPath :: (MonadIO m) => IDBObjectStore -> m (Maybe IDBAny)
+getKeyPath self
+  = liftIO (nullableToMaybe <$> (js_getKeyPath (self)))
+ 
+foreign import javascript unsafe "$1[\"indexNames\"]"
+        js_getIndexNames :: IDBObjectStore -> IO (Nullable DOMStringList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.indexNames Mozilla IDBObjectStore.indexNames documentation> 
+getIndexNames ::
+              (MonadIO m) => IDBObjectStore -> m (Maybe DOMStringList)
+getIndexNames self
+  = liftIO (nullableToMaybe <$> (js_getIndexNames (self)))
+ 
+foreign import javascript unsafe "$1[\"transaction\"]"
+        js_getTransaction :: IDBObjectStore -> IO (Nullable IDBTransaction)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.transaction Mozilla IDBObjectStore.transaction documentation> 
+getTransaction ::
+               (MonadIO m) => IDBObjectStore -> m (Maybe IDBTransaction)
+getTransaction self
+  = liftIO (nullableToMaybe <$> (js_getTransaction (self)))
+ 
+foreign import javascript unsafe "($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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest
+       (blocked, upgradeNeeded, IDBOpenDBRequest, castToIDBOpenDBRequest,
+        gTypeIDBOpenDBRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,78 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBRequest
+       (js_getResult, getResult, js_getError, getError, js_getSource,
+        getSource, js_getTransaction, getTransaction, js_getReadyState,
+        getReadyState, success, error, IDBRequest, castToIDBRequest,
+        gTypeIDBRequest, IsIDBRequest, toIDBRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"result\"]" js_getResult ::
+        IDBRequest -> IO (Nullable IDBAny)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
+getResult ::
+          (MonadIO m, IsIDBRequest self) => self -> m (Maybe IDBAny)
+getResult self
+  = liftIO (nullableToMaybe <$> (js_getResult (toIDBRequest self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"source\"]" js_getSource ::
+        IDBRequest -> IO (Nullable IDBAny)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
+getSource ::
+          (MonadIO m, IsIDBRequest self) => self -> m (Maybe IDBAny)
+getSource self
+  = liftIO (nullableToMaybe <$> (js_getSource (toIDBRequest self)))
+ 
+foreign import javascript unsafe "$1[\"transaction\"]"
+        js_getTransaction :: IDBRequest -> IO (Nullable IDBTransaction)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.transaction Mozilla IDBRequest.transaction documentation> 
+getTransaction ::
+               (MonadIO m, IsIDBRequest self) => self -> m (Maybe IDBTransaction)
+getTransaction self
+  = liftIO
+      (nullableToMaybe <$> (js_getTransaction (toIDBRequest self)))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: IDBRequest -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.readyState Mozilla IDBRequest.readyState documentation> 
+getReadyState ::
+              (MonadIO m, IsIDBRequest self, FromJSString result) =>
+                self -> m result
+getReadyState self
+  = liftIO (fromJSString <$> (js_getReadyState (toIDBRequest self)))
+
+-- | <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,73 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBTransaction
+       (js_objectStore, objectStore, js_abort, abort, js_getMode, getMode,
+        js_getDb, getDb, js_getError, getError, abortEvent, complete,
+        error, IDBTransaction, castToIDBTransaction, gTypeIDBTransaction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"objectStore\"]($2)"
+        js_objectStore ::
+        IDBTransaction -> JSString -> IO (Nullable IDBObjectStore)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
+objectStore ::
+            (MonadIO m, ToJSString name) =>
+              IDBTransaction -> name -> m (Maybe IDBObjectStore)
+objectStore self name
+  = liftIO
+      (nullableToMaybe <$> (js_objectStore (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$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[\"mode\"]" js_getMode ::
+        IDBTransaction -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.mode Mozilla IDBTransaction.mode documentation> 
+getMode ::
+        (MonadIO m, FromJSString result) => IDBTransaction -> m result
+getMode self = liftIO (fromJSString <$> (js_getMode (self)))
+ 
+foreign import javascript unsafe "$1[\"db\"]" js_getDb ::
+        IDBTransaction -> IO (Nullable IDBDatabase)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.db Mozilla IDBTransaction.db documentation> 
+getDb :: (MonadIO m) => IDBTransaction -> m (Maybe IDBDatabase)
+getDb self = liftIO (nullableToMaybe <$> (js_getDb (self)))
+ 
+foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+        IDBTransaction -> IO (Nullable DOMError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.error Mozilla IDBTransaction.error documentation> 
+getError :: (MonadIO m) => IDBTransaction -> m (Maybe DOMError)
+getError self = liftIO (nullableToMaybe <$> (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,37 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent
+       (js_getOldVersion, getOldVersion, js_getNewVersion, getNewVersion,
+        IDBVersionChangeEvent, castToIDBVersionChangeEvent,
+        gTypeIDBVersionChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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)))
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,56 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ImageData
+       (js_newImageData, newImageData, js_newImageData', newImageData',
+        js_getWidth, getWidth, js_getHeight, getHeight, ImageData,
+        castToImageData, gTypeImageData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"ImageData\"]($1, $2,\n$3)" js_newImageData ::
+        Nullable Uint8ClampedArray -> Word -> Word -> IO ImageData
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
+newImageData ::
+             (MonadIO m, IsUint8ClampedArray data') =>
+               Maybe data' -> Word -> Word -> m ImageData
+newImageData data' sw sh
+  = liftIO
+      (js_newImageData (maybeToNullable (fmap toUint8ClampedArray data'))
+         sw
+         sh)
+ 
+foreign import javascript unsafe
+        "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[\"width\"]" js_getWidth ::
+        ImageData -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.width Mozilla ImageData.width documentation> 
+getWidth :: (MonadIO m) => ImageData -> m Int
+getWidth self = liftIO (js_getWidth (self))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        ImageData -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.height Mozilla ImageData.height documentation> 
+getHeight :: (MonadIO m) => ImageData -> m Int
+getHeight self = liftIO (js_getHeight (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,294 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost
+       (js_loaded, loaded, js_closeWindow, closeWindow, js_bringToFront,
+        bringToFront, js_setZoomFactor, setZoomFactor,
+        js_inspectedURLChanged, inspectedURLChanged, js_requestSetDockSide,
+        requestSetDockSide, js_setAttachedWindowHeight,
+        setAttachedWindowHeight, js_setAttachedWindowWidth,
+        setAttachedWindowWidth, js_setToolbarHeight, setToolbarHeight,
+        js_moveWindowBy, moveWindowBy, js_localizedStringsURL,
+        localizedStringsURL, js_debuggableType, debuggableType,
+        js_copyText, copyText, js_openInNewTab, openInNewTab, js_canSave,
+        canSave, js_save, save, js_append, append, js_close, close,
+        js_platform, platform, js_port, port, js_showContextMenu,
+        showContextMenu, js_dispatchEventAsContextMenuEvent,
+        dispatchEventAsContextMenuEvent, js_sendMessageToBackend,
+        sendMessageToBackend, js_unbufferedLog, unbufferedLog,
+        js_isUnderTest, isUnderTest, js_beep, beep, js_canInspectWorkers,
+        canInspectWorkers, js_canSaveAs, canSaveAs, InspectorFrontendHost,
+        castToInspectorFrontendHost, gTypeInspectorFrontendHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"setToolbarHeight\"]($2)"
+        js_setToolbarHeight :: InspectorFrontendHost -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setToolbarHeight Mozilla InspectorFrontendHost.setToolbarHeight documentation> 
+setToolbarHeight ::
+                 (MonadIO m) => InspectorFrontendHost -> Float -> m ()
+setToolbarHeight self height
+  = liftIO (js_setToolbarHeight (self) height)
+ 
+foreign import javascript unsafe "$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[\"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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"showContextMenu\"]($2, $3)"
+        js_showContextMenu ::
+        InspectorFrontendHost -> Nullable MouseEvent -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.showContextMenu Mozilla InspectorFrontendHost.showContextMenu documentation> 
+showContextMenu ::
+                (MonadIO m, IsMouseEvent event) =>
+                  InspectorFrontendHost -> Maybe event -> JSVal -> m ()
+showContextMenu self event items
+  = liftIO
+      (js_showContextMenu (self)
+         (maybeToNullable (fmap toMouseEvent event))
+         items)
+ 
+foreign import javascript unsafe
+        "$1[\"dispatchEventAsContextMenuEvent\"]($2)"
+        js_dispatchEventAsContextMenuEvent ::
+        InspectorFrontendHost -> Nullable 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)
+         (maybeToNullable (fmap toEvent event)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe
+        "($1[\"canInspectWorkers\"]() ? 1 : 0)" js_canInspectWorkers ::
+        InspectorFrontendHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canInspectWorkers Mozilla InspectorFrontendHost.canInspectWorkers documentation> 
+canInspectWorkers :: (MonadIO m) => InspectorFrontendHost -> m Bool
+canInspectWorkers self = liftIO (js_canInspectWorkers (self))
+ 
+foreign import javascript unsafe "($1[\"canSaveAs\"]() ? 1 : 0)"
+        js_canSaveAs :: InspectorFrontendHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSaveAs Mozilla InspectorFrontendHost.canSaveAs documentation> 
+canSaveAs :: (MonadIO m) => InspectorFrontendHost -> m Bool
+canSaveAs self = liftIO (js_canSaveAs (self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InternalSettings.hs b/src/GHCJS/DOM/JSFFI/Generated/InternalSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/InternalSettings.hs
@@ -0,0 +1,398 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.InternalSettings
+       (js_setTouchEventEmulationEnabled, setTouchEventEmulationEnabled,
+        js_setStandardFontFamily, setStandardFontFamily,
+        js_setSerifFontFamily, setSerifFontFamily,
+        js_setSansSerifFontFamily, setSansSerifFontFamily,
+        js_setFixedFontFamily, setFixedFontFamily, js_setCursiveFontFamily,
+        setCursiveFontFamily, js_setFantasyFontFamily,
+        setFantasyFontFamily, js_setPictographFontFamily,
+        setPictographFontFamily, js_setFontFallbackPrefersPictographs,
+        setFontFallbackPrefersPictographs, js_setTextAutosizingEnabled,
+        setTextAutosizingEnabled, js_setTextAutosizingWindowSizeOverride,
+        setTextAutosizingWindowSizeOverride,
+        js_setTextAutosizingFontScaleFactor,
+        setTextAutosizingFontScaleFactor, js_setCSSShapesEnabled,
+        setCSSShapesEnabled, js_setCanStartMedia, setCanStartMedia,
+        js_setShouldDisplayTrackKind, setShouldDisplayTrackKind,
+        js_shouldDisplayTrackKind, shouldDisplayTrackKind,
+        js_setDefaultVideoPosterURL, setDefaultVideoPosterURL,
+        js_setTimeWithoutMouseMovementBeforeHidingControls,
+        setTimeWithoutMouseMovementBeforeHidingControls,
+        js_setMediaTypeOverride, setMediaTypeOverride,
+        js_setPluginReplacementEnabled, setPluginReplacementEnabled,
+        js_setEditingBehavior, setEditingBehavior,
+        js_setShouldConvertPositionStyleOnCopy,
+        setShouldConvertPositionStyleOnCopy,
+        js_setLangAttributeAwareFormControlUIEnabled,
+        setLangAttributeAwareFormControlUIEnabled,
+        js_setStorageBlockingPolicy, setStorageBlockingPolicy,
+        js_setImagesEnabled, setImagesEnabled,
+        js_setUseLegacyBackgroundSizeShorthandBehavior,
+        setUseLegacyBackgroundSizeShorthandBehavior,
+        js_setAutoscrollForDragAndDropEnabled,
+        setAutoscrollForDragAndDropEnabled,
+        js_setBackgroundShouldExtendBeyondPage,
+        setBackgroundShouldExtendBeyondPage,
+        js_setScrollingTreeIncludesFrames, setScrollingTreeIncludesFrames,
+        js_setMinimumTimerInterval, setMinimumTimerInterval,
+        InternalSettings, castToInternalSettings, gTypeInternalSettings)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"setTouchEventEmulationEnabled\"]($2)"
+        js_setTouchEventEmulationEnabled ::
+        InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTouchEventEmulationEnabled Mozilla InternalSettings.setTouchEventEmulationEnabled documentation> 
+setTouchEventEmulationEnabled ::
+                              (MonadIO m) => InternalSettings -> Bool -> m ()
+setTouchEventEmulationEnabled self enabled
+  = liftIO (js_setTouchEventEmulationEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setStandardFontFamily\"]($2,\n$3)" js_setStandardFontFamily
+        :: InternalSettings -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setStandardFontFamily Mozilla InternalSettings.setStandardFontFamily documentation> 
+setStandardFontFamily ::
+                      (MonadIO m, ToJSString family', ToJSString script) =>
+                        InternalSettings -> family' -> script -> m ()
+setStandardFontFamily self family' script
+  = liftIO
+      (js_setStandardFontFamily (self) (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setSerifFontFamily\"]($2, $3)" js_setSerifFontFamily ::
+        InternalSettings -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setSerifFontFamily Mozilla InternalSettings.setSerifFontFamily documentation> 
+setSerifFontFamily ::
+                   (MonadIO m, ToJSString family', ToJSString script) =>
+                     InternalSettings -> family' -> script -> m ()
+setSerifFontFamily self family' script
+  = liftIO
+      (js_setSerifFontFamily (self) (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setSansSerifFontFamily\"]($2,\n$3)" js_setSansSerifFontFamily
+        :: InternalSettings -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setSansSerifFontFamily Mozilla InternalSettings.setSansSerifFontFamily documentation> 
+setSansSerifFontFamily ::
+                       (MonadIO m, ToJSString family', ToJSString script) =>
+                         InternalSettings -> family' -> script -> m ()
+setSansSerifFontFamily self family' script
+  = liftIO
+      (js_setSansSerifFontFamily (self) (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setFixedFontFamily\"]($2, $3)" js_setFixedFontFamily ::
+        InternalSettings -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setFixedFontFamily Mozilla InternalSettings.setFixedFontFamily documentation> 
+setFixedFontFamily ::
+                   (MonadIO m, ToJSString family', ToJSString script) =>
+                     InternalSettings -> family' -> script -> m ()
+setFixedFontFamily self family' script
+  = liftIO
+      (js_setFixedFontFamily (self) (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setCursiveFontFamily\"]($2,\n$3)" js_setCursiveFontFamily ::
+        InternalSettings -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setCursiveFontFamily Mozilla InternalSettings.setCursiveFontFamily documentation> 
+setCursiveFontFamily ::
+                     (MonadIO m, ToJSString family', ToJSString script) =>
+                       InternalSettings -> family' -> script -> m ()
+setCursiveFontFamily self family' script
+  = liftIO
+      (js_setCursiveFontFamily (self) (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setFantasyFontFamily\"]($2,\n$3)" js_setFantasyFontFamily ::
+        InternalSettings -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setFantasyFontFamily Mozilla InternalSettings.setFantasyFontFamily documentation> 
+setFantasyFontFamily ::
+                     (MonadIO m, ToJSString family', ToJSString script) =>
+                       InternalSettings -> family' -> script -> m ()
+setFantasyFontFamily self family' script
+  = liftIO
+      (js_setFantasyFontFamily (self) (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setPictographFontFamily\"]($2,\n$3)"
+        js_setPictographFontFamily ::
+        InternalSettings -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setPictographFontFamily Mozilla InternalSettings.setPictographFontFamily documentation> 
+setPictographFontFamily ::
+                        (MonadIO m, ToJSString family', ToJSString script) =>
+                          InternalSettings -> family' -> script -> m ()
+setPictographFontFamily self family' script
+  = liftIO
+      (js_setPictographFontFamily (self) (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setFontFallbackPrefersPictographs\"]($2)"
+        js_setFontFallbackPrefersPictographs ::
+        InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setFontFallbackPrefersPictographs Mozilla InternalSettings.setFontFallbackPrefersPictographs documentation> 
+setFontFallbackPrefersPictographs ::
+                                  (MonadIO m) => InternalSettings -> Bool -> m ()
+setFontFallbackPrefersPictographs self preferPictographs
+  = liftIO
+      (js_setFontFallbackPrefersPictographs (self) preferPictographs)
+ 
+foreign import javascript unsafe
+        "$1[\"setTextAutosizingEnabled\"]($2)" js_setTextAutosizingEnabled
+        :: InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTextAutosizingEnabled Mozilla InternalSettings.setTextAutosizingEnabled documentation> 
+setTextAutosizingEnabled ::
+                         (MonadIO m) => InternalSettings -> Bool -> m ()
+setTextAutosizingEnabled self enabled
+  = liftIO (js_setTextAutosizingEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setTextAutosizingWindowSizeOverride\"]($2,\n$3)"
+        js_setTextAutosizingWindowSizeOverride ::
+        InternalSettings -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTextAutosizingWindowSizeOverride Mozilla InternalSettings.setTextAutosizingWindowSizeOverride documentation> 
+setTextAutosizingWindowSizeOverride ::
+                                    (MonadIO m) => InternalSettings -> Int -> Int -> m ()
+setTextAutosizingWindowSizeOverride self width height
+  = liftIO
+      (js_setTextAutosizingWindowSizeOverride (self) width height)
+ 
+foreign import javascript unsafe
+        "$1[\"setTextAutosizingFontScaleFactor\"]($2)"
+        js_setTextAutosizingFontScaleFactor ::
+        InternalSettings -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTextAutosizingFontScaleFactor Mozilla InternalSettings.setTextAutosizingFontScaleFactor documentation> 
+setTextAutosizingFontScaleFactor ::
+                                 (MonadIO m) => InternalSettings -> Float -> m ()
+setTextAutosizingFontScaleFactor self fontScaleFactor
+  = liftIO
+      (js_setTextAutosizingFontScaleFactor (self) fontScaleFactor)
+ 
+foreign import javascript unsafe "$1[\"setCSSShapesEnabled\"]($2)"
+        js_setCSSShapesEnabled :: InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setCSSShapesEnabled Mozilla InternalSettings.setCSSShapesEnabled documentation> 
+setCSSShapesEnabled ::
+                    (MonadIO m) => InternalSettings -> Bool -> m ()
+setCSSShapesEnabled self enabled
+  = liftIO (js_setCSSShapesEnabled (self) enabled)
+ 
+foreign import javascript unsafe "$1[\"setCanStartMedia\"]($2)"
+        js_setCanStartMedia :: InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setCanStartMedia Mozilla InternalSettings.setCanStartMedia documentation> 
+setCanStartMedia :: (MonadIO m) => InternalSettings -> Bool -> m ()
+setCanStartMedia self enabled
+  = liftIO (js_setCanStartMedia (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setShouldDisplayTrackKind\"]($2,\n$3)"
+        js_setShouldDisplayTrackKind ::
+        InternalSettings -> JSString -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setShouldDisplayTrackKind Mozilla InternalSettings.setShouldDisplayTrackKind documentation> 
+setShouldDisplayTrackKind ::
+                          (MonadIO m, ToJSString kind) =>
+                            InternalSettings -> kind -> Bool -> m ()
+setShouldDisplayTrackKind self kind enabled
+  = liftIO
+      (js_setShouldDisplayTrackKind (self) (toJSString kind) enabled)
+ 
+foreign import javascript unsafe
+        "($1[\"shouldDisplayTrackKind\"]($2) ? 1 : 0)"
+        js_shouldDisplayTrackKind ::
+        InternalSettings -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.shouldDisplayTrackKind Mozilla InternalSettings.shouldDisplayTrackKind documentation> 
+shouldDisplayTrackKind ::
+                       (MonadIO m, ToJSString trackKind) =>
+                         InternalSettings -> trackKind -> m Bool
+shouldDisplayTrackKind self trackKind
+  = liftIO (js_shouldDisplayTrackKind (self) (toJSString trackKind))
+ 
+foreign import javascript unsafe
+        "$1[\"setDefaultVideoPosterURL\"]($2)" js_setDefaultVideoPosterURL
+        :: InternalSettings -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setDefaultVideoPosterURL Mozilla InternalSettings.setDefaultVideoPosterURL documentation> 
+setDefaultVideoPosterURL ::
+                         (MonadIO m, ToJSString poster) =>
+                           InternalSettings -> poster -> m ()
+setDefaultVideoPosterURL self poster
+  = liftIO (js_setDefaultVideoPosterURL (self) (toJSString poster))
+ 
+foreign import javascript unsafe
+        "$1[\"setTimeWithoutMouseMovementBeforeHidingControls\"]($2)"
+        js_setTimeWithoutMouseMovementBeforeHidingControls ::
+        InternalSettings -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTimeWithoutMouseMovementBeforeHidingControls Mozilla InternalSettings.setTimeWithoutMouseMovementBeforeHidingControls documentation> 
+setTimeWithoutMouseMovementBeforeHidingControls ::
+                                                (MonadIO m) => InternalSettings -> Double -> m ()
+setTimeWithoutMouseMovementBeforeHidingControls self time
+  = liftIO
+      (js_setTimeWithoutMouseMovementBeforeHidingControls (self) time)
+ 
+foreign import javascript unsafe "$1[\"setMediaTypeOverride\"]($2)"
+        js_setMediaTypeOverride :: InternalSettings -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setMediaTypeOverride Mozilla InternalSettings.setMediaTypeOverride documentation> 
+setMediaTypeOverride ::
+                     (MonadIO m, ToJSString mediaTypeOverride) =>
+                       InternalSettings -> mediaTypeOverride -> m ()
+setMediaTypeOverride self mediaTypeOverride
+  = liftIO
+      (js_setMediaTypeOverride (self) (toJSString mediaTypeOverride))
+ 
+foreign import javascript unsafe
+        "$1[\"setPluginReplacementEnabled\"]($2)"
+        js_setPluginReplacementEnabled :: InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setPluginReplacementEnabled Mozilla InternalSettings.setPluginReplacementEnabled documentation> 
+setPluginReplacementEnabled ::
+                            (MonadIO m) => InternalSettings -> Bool -> m ()
+setPluginReplacementEnabled self enabled
+  = liftIO (js_setPluginReplacementEnabled (self) enabled)
+ 
+foreign import javascript unsafe "$1[\"setEditingBehavior\"]($2)"
+        js_setEditingBehavior :: InternalSettings -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setEditingBehavior Mozilla InternalSettings.setEditingBehavior documentation> 
+setEditingBehavior ::
+                   (MonadIO m, ToJSString behavior) =>
+                     InternalSettings -> behavior -> m ()
+setEditingBehavior self behavior
+  = liftIO (js_setEditingBehavior (self) (toJSString behavior))
+ 
+foreign import javascript unsafe
+        "$1[\"setShouldConvertPositionStyleOnCopy\"]($2)"
+        js_setShouldConvertPositionStyleOnCopy ::
+        InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setShouldConvertPositionStyleOnCopy Mozilla InternalSettings.setShouldConvertPositionStyleOnCopy documentation> 
+setShouldConvertPositionStyleOnCopy ::
+                                    (MonadIO m) => InternalSettings -> Bool -> m ()
+setShouldConvertPositionStyleOnCopy self convert
+  = liftIO (js_setShouldConvertPositionStyleOnCopy (self) convert)
+ 
+foreign import javascript unsafe
+        "$1[\"setLangAttributeAwareFormControlUIEnabled\"]($2)"
+        js_setLangAttributeAwareFormControlUIEnabled ::
+        InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setLangAttributeAwareFormControlUIEnabled Mozilla InternalSettings.setLangAttributeAwareFormControlUIEnabled documentation> 
+setLangAttributeAwareFormControlUIEnabled ::
+                                          (MonadIO m) => InternalSettings -> Bool -> m ()
+setLangAttributeAwareFormControlUIEnabled self enabled
+  = liftIO
+      (js_setLangAttributeAwareFormControlUIEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setStorageBlockingPolicy\"]($2)" js_setStorageBlockingPolicy
+        :: InternalSettings -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setStorageBlockingPolicy Mozilla InternalSettings.setStorageBlockingPolicy documentation> 
+setStorageBlockingPolicy ::
+                         (MonadIO m, ToJSString policy) =>
+                           InternalSettings -> policy -> m ()
+setStorageBlockingPolicy self policy
+  = liftIO (js_setStorageBlockingPolicy (self) (toJSString policy))
+ 
+foreign import javascript unsafe "$1[\"setImagesEnabled\"]($2)"
+        js_setImagesEnabled :: InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setImagesEnabled Mozilla InternalSettings.setImagesEnabled documentation> 
+setImagesEnabled :: (MonadIO m) => InternalSettings -> Bool -> m ()
+setImagesEnabled self enabled
+  = liftIO (js_setImagesEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setUseLegacyBackgroundSizeShorthandBehavior\"]($2)"
+        js_setUseLegacyBackgroundSizeShorthandBehavior ::
+        InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setUseLegacyBackgroundSizeShorthandBehavior Mozilla InternalSettings.setUseLegacyBackgroundSizeShorthandBehavior documentation> 
+setUseLegacyBackgroundSizeShorthandBehavior ::
+                                            (MonadIO m) => InternalSettings -> Bool -> m ()
+setUseLegacyBackgroundSizeShorthandBehavior self enabled
+  = liftIO
+      (js_setUseLegacyBackgroundSizeShorthandBehavior (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutoscrollForDragAndDropEnabled\"]($2)"
+        js_setAutoscrollForDragAndDropEnabled ::
+        InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setAutoscrollForDragAndDropEnabled Mozilla InternalSettings.setAutoscrollForDragAndDropEnabled documentation> 
+setAutoscrollForDragAndDropEnabled ::
+                                   (MonadIO m) => InternalSettings -> Bool -> m ()
+setAutoscrollForDragAndDropEnabled self enabled
+  = liftIO (js_setAutoscrollForDragAndDropEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setBackgroundShouldExtendBeyondPage\"]($2)"
+        js_setBackgroundShouldExtendBeyondPage ::
+        InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setBackgroundShouldExtendBeyondPage Mozilla InternalSettings.setBackgroundShouldExtendBeyondPage documentation> 
+setBackgroundShouldExtendBeyondPage ::
+                                    (MonadIO m) => InternalSettings -> Bool -> m ()
+setBackgroundShouldExtendBeyondPage self hasExtendedBackground
+  = liftIO
+      (js_setBackgroundShouldExtendBeyondPage (self)
+         hasExtendedBackground)
+ 
+foreign import javascript unsafe
+        "$1[\"setScrollingTreeIncludesFrames\"]($2)"
+        js_setScrollingTreeIncludesFrames ::
+        InternalSettings -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setScrollingTreeIncludesFrames Mozilla InternalSettings.setScrollingTreeIncludesFrames documentation> 
+setScrollingTreeIncludesFrames ::
+                               (MonadIO m) => InternalSettings -> Bool -> m ()
+setScrollingTreeIncludesFrames self enabled
+  = liftIO (js_setScrollingTreeIncludesFrames (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setMinimumTimerInterval\"]($2)" js_setMinimumTimerInterval ::
+        InternalSettings -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setMinimumTimerInterval Mozilla InternalSettings.setMinimumTimerInterval documentation> 
+setMinimumTimerInterval ::
+                        (MonadIO m) => InternalSettings -> Double -> m ()
+setMinimumTimerInterval self intervalInSeconds
+  = liftIO (js_setMinimumTimerInterval (self) intervalInSeconds)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Internals.hs b/src/GHCJS/DOM/JSFFI/Generated/Internals.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Internals.hs
@@ -0,0 +1,2148 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Internals
+       (js_address, address, js_nodeNeedsStyleRecalc,
+        nodeNeedsStyleRecalc, js_description, description,
+        js_hasPausedImageAnimations, hasPausedImageAnimations,
+        js_elementRenderTreeAsText, elementRenderTreeAsText,
+        js_isPreloaded, isPreloaded, js_isLoadingFromMemoryCache,
+        isLoadingFromMemoryCache, js_xhrResponseSource, xhrResponseSource,
+        js_clearMemoryCache, clearMemoryCache, js_pruneMemoryCacheToSize,
+        pruneMemoryCacheToSize, js_memoryCacheSize, memoryCacheSize,
+        js_clearPageCache, clearPageCache, js_pageCacheSize, pageCacheSize,
+        js_computedStyleIncludingVisitedInfo,
+        computedStyleIncludingVisitedInfo, js_ensureShadowRoot,
+        ensureShadowRoot, js_createShadowRoot, createShadowRoot,
+        js_shadowRoot, shadowRoot, js_shadowRootType, shadowRootType,
+        js_includerFor, includerFor, js_shadowPseudoId, shadowPseudoId,
+        js_setShadowPseudoId, setShadowPseudoId, js_treeScopeRootNode,
+        treeScopeRootNode, js_parentTreeScope, parentTreeScope,
+        js_lastSpatialNavigationCandidateCount,
+        lastSpatialNavigationCandidateCount, js_numberOfActiveAnimations,
+        numberOfActiveAnimations, js_suspendAnimations, suspendAnimations,
+        js_resumeAnimations, resumeAnimations, js_animationsAreSuspended,
+        animationsAreSuspended, js_pauseAnimationAtTimeOnElement,
+        pauseAnimationAtTimeOnElement,
+        js_pauseAnimationAtTimeOnPseudoElement,
+        pauseAnimationAtTimeOnPseudoElement,
+        js_pauseTransitionAtTimeOnElement, pauseTransitionAtTimeOnElement,
+        js_pauseTransitionAtTimeOnPseudoElement,
+        pauseTransitionAtTimeOnPseudoElement, js_attached, attached,
+        js_visiblePlaceholder, visiblePlaceholder,
+        js_selectColorInColorChooser, selectColorInColorChooser,
+        js_formControlStateOfPreviousHistoryItem,
+        formControlStateOfPreviousHistoryItem,
+        js_setFormControlStateOfPreviousHistoryItem,
+        setFormControlStateOfPreviousHistoryItem, js_absoluteCaretBounds,
+        absoluteCaretBounds, js_boundingBox, boundingBox,
+        js_inspectorHighlightRects, inspectorHighlightRects,
+        js_inspectorHighlightObject, inspectorHighlightObject,
+        js_markerCountForNode, markerCountForNode, js_markerRangeForNode,
+        markerRangeForNode, js_markerDescriptionForNode,
+        markerDescriptionForNode, js_addTextMatchMarker,
+        addTextMatchMarker, js_setMarkedTextMatchesAreHighlighted,
+        setMarkedTextMatchesAreHighlighted, js_invalidateFontCache,
+        invalidateFontCache, js_setScrollViewPosition,
+        setScrollViewPosition, js_setPagination, setPagination,
+        js_configurationForViewport, configurationForViewport,
+        js_wasLastChangeUserEdit, wasLastChangeUserEdit,
+        js_elementShouldAutoComplete, elementShouldAutoComplete,
+        js_setEditingValue, setEditingValue, js_setAutofilled,
+        setAutofilled, js_countMatchesForText, countMatchesForText,
+        js_paintControlTints, paintControlTints, js_scrollElementToRect,
+        scrollElementToRect, js_rangeFromLocationAndLength,
+        rangeFromLocationAndLength, js_locationFromRange,
+        locationFromRange, js_lengthFromRange, lengthFromRange,
+        js_rangeAsText, rangeAsText, js_subrange, subrange,
+        js_rangeForDictionaryLookupAtLocation,
+        rangeForDictionaryLookupAtLocation, js_setDelegatesScrolling,
+        setDelegatesScrolling, js_lastSpellCheckRequestSequence,
+        lastSpellCheckRequestSequence, js_lastSpellCheckProcessedSequence,
+        lastSpellCheckProcessedSequence, js_userPreferredLanguages,
+        userPreferredLanguages, js_setUserPreferredLanguages,
+        setUserPreferredLanguages, js_wheelEventHandlerCount,
+        wheelEventHandlerCount, js_touchEventHandlerCount,
+        touchEventHandlerCount, js_nodesFromRect, nodesFromRect,
+        js_parserMetaData, parserMetaData, js_updateEditorUINowIfScheduled,
+        updateEditorUINowIfScheduled, js_hasSpellingMarker,
+        hasSpellingMarker, js_hasGrammarMarker, hasGrammarMarker,
+        js_hasAutocorrectedMarker, hasAutocorrectedMarker,
+        js_setContinuousSpellCheckingEnabled,
+        setContinuousSpellCheckingEnabled,
+        js_setAutomaticQuoteSubstitutionEnabled,
+        setAutomaticQuoteSubstitutionEnabled,
+        js_setAutomaticLinkDetectionEnabled,
+        setAutomaticLinkDetectionEnabled,
+        js_setAutomaticDashSubstitutionEnabled,
+        setAutomaticDashSubstitutionEnabled,
+        js_setAutomaticTextReplacementEnabled,
+        setAutomaticTextReplacementEnabled,
+        js_setAutomaticSpellingCorrectionEnabled,
+        setAutomaticSpellingCorrectionEnabled, js_isOverwriteModeEnabled,
+        isOverwriteModeEnabled, js_toggleOverwriteModeEnabled,
+        toggleOverwriteModeEnabled, js_numberOfScrollableAreas,
+        numberOfScrollableAreas, js_isPageBoxVisible, isPageBoxVisible,
+        js_layerTreeAsText, layerTreeAsText, js_scrollingStateTreeAsText,
+        scrollingStateTreeAsText, js_mainThreadScrollingReasons,
+        mainThreadScrollingReasons, js_nonFastScrollableRects,
+        nonFastScrollableRects, js_repaintRectsAsText, repaintRectsAsText,
+        js_garbageCollectDocumentResources,
+        garbageCollectDocumentResources, js_allowRoundingHacks,
+        allowRoundingHacks, js_insertAuthorCSS, insertAuthorCSS,
+        js_insertUserCSS, insertUserCSS, js_setBatteryStatus,
+        setBatteryStatus, js_setDeviceProximity, setDeviceProximity,
+        js_numberOfLiveNodes, numberOfLiveNodes, js_numberOfLiveDocuments,
+        numberOfLiveDocuments, js_consoleMessageArgumentCounts,
+        consoleMessageArgumentCounts, js_openDummyInspectorFrontend,
+        openDummyInspectorFrontend, js_closeDummyInspectorFrontend,
+        closeDummyInspectorFrontend, js_setJavaScriptProfilingEnabled,
+        setJavaScriptProfilingEnabled, js_setInspectorIsUnderTest,
+        setInspectorIsUnderTest, js_counterValue, counterValue,
+        js_pageNumber, pageNumber, js_shortcutIconURLs, shortcutIconURLs,
+        js_allIconURLs, allIconURLs, js_numberOfPages, numberOfPages,
+        js_pageProperty, pageProperty, js_pageSizeAndMarginsInPixels,
+        pageSizeAndMarginsInPixels, js_setPageScaleFactor,
+        setPageScaleFactor, js_setPageZoomFactor, setPageZoomFactor,
+        js_setHeaderHeight, setHeaderHeight, js_setFooterHeight,
+        setFooterHeight, js_setTopContentInset, setTopContentInset,
+        js_webkitWillEnterFullScreenForElement,
+        webkitWillEnterFullScreenForElement,
+        js_webkitDidEnterFullScreenForElement,
+        webkitDidEnterFullScreenForElement,
+        js_webkitWillExitFullScreenForElement,
+        webkitWillExitFullScreenForElement,
+        js_webkitDidExitFullScreenForElement,
+        webkitDidExitFullScreenForElement,
+        js_setApplicationCacheOriginQuota, setApplicationCacheOriginQuota,
+        js_registerURLSchemeAsBypassingContentSecurityPolicy,
+        registerURLSchemeAsBypassingContentSecurityPolicy,
+        js_removeURLSchemeRegisteredAsBypassingContentSecurityPolicy,
+        removeURLSchemeRegisteredAsBypassingContentSecurityPolicy,
+        js_mallocStatistics, mallocStatistics, js_typeConversions,
+        typeConversions, js_memoryInfo, memoryInfo,
+        js_getReferencedFilePaths, getReferencedFilePaths,
+        js_startTrackingRepaints, startTrackingRepaints,
+        js_stopTrackingRepaints, stopTrackingRepaints, js_isTimerThrottled,
+        isTimerThrottled,
+        js_updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks,
+        updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks,
+        js_getCurrentCursorInfo, getCurrentCursorInfo,
+        js_markerTextForListItem, markerTextForListItem,
+        js_toolTipFromElement, toolTipFromElement, js_deserializeBuffer,
+        deserializeBuffer, js_serializeObject, serializeObject,
+        js_setUsesOverlayScrollbars, setUsesOverlayScrollbars,
+        js_forceReload, forceReload, js_simulateAudioInterruption,
+        simulateAudioInterruption, js_mediaElementHasCharacteristic,
+        mediaElementHasCharacteristic, js_initializeMockCDM,
+        initializeMockCDM, js_enableMockSpeechSynthesizer,
+        enableMockSpeechSynthesizer, js_getImageSourceURL,
+        getImageSourceURL, js_captionsStyleSheetOverride,
+        captionsStyleSheetOverride, js_setCaptionsStyleSheetOverride,
+        setCaptionsStyleSheetOverride,
+        js_setPrimaryAudioTrackLanguageOverride,
+        setPrimaryAudioTrackLanguageOverride, js_setCaptionDisplayMode,
+        setCaptionDisplayMode, js_createTimeRanges, createTimeRanges,
+        js_closestTimeToTimeRanges, closestTimeToTimeRanges,
+        js_isSelectPopupVisible, isSelectPopupVisible, js_isVibrating,
+        isVibrating, js_isPluginUnavailabilityIndicatorObscured,
+        isPluginUnavailabilityIndicatorObscured, js_isPluginSnapshotted,
+        isPluginSnapshotted, js_selectionBounds, selectionBounds,
+        js_initializeMockMediaSource, initializeMockMediaSource,
+        js_bufferedSamplesForTrackID, bufferedSamplesForTrackID,
+        js_beginMediaSessionInterruption, beginMediaSessionInterruption,
+        js_endMediaSessionInterruption, endMediaSessionInterruption,
+        js_applicationWillEnterForeground, applicationWillEnterForeground,
+        js_applicationWillEnterBackground, applicationWillEnterBackground,
+        js_setMediaSessionRestrictions, setMediaSessionRestrictions,
+        js_postRemoteControlCommand, postRemoteControlCommand,
+        js_simulateSystemSleep, simulateSystemSleep, js_simulateSystemWake,
+        simulateSystemWake, js_elementIsBlockingDisplaySleep,
+        elementIsBlockingDisplaySleep, js_installMockPageOverlay,
+        installMockPageOverlay, js_pageOverlayLayerTreeAsText,
+        pageOverlayLayerTreeAsText, js_setPageMuted, setPageMuted,
+        js_isPagePlayingAudio, isPagePlayingAudio,
+        pattern LAYER_TREE_INCLUDES_VISIBLE_RECTS,
+        pattern LAYER_TREE_INCLUDES_TILE_CACHES,
+        pattern LAYER_TREE_INCLUDES_REPAINT_RECTS,
+        pattern LAYER_TREE_INCLUDES_PAINTING_PHASES,
+        pattern LAYER_TREE_INCLUDES_CONTENT_LAYERS, js_getSettings,
+        getSettings, js_getWorkerThreadCount, getWorkerThreadCount,
+        js_getConsoleProfiles, getConsoleProfiles, Internals,
+        castToInternals, gTypeInternals)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"address\"]($2)" js_address
+        :: Internals -> Nullable Node -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.address Mozilla Internals.address documentation> 
+address ::
+        (MonadIO m, IsNode node, FromJSString result) =>
+          Internals -> Maybe node -> m result
+address self node
+  = liftIO
+      (fromJSString <$>
+         (js_address (self) (maybeToNullable (fmap toNode node))))
+ 
+foreign import javascript unsafe
+        "($1[\"nodeNeedsStyleRecalc\"]($2) ? 1 : 0)"
+        js_nodeNeedsStyleRecalc :: Internals -> Nullable Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nodeNeedsStyleRecalc Mozilla Internals.nodeNeedsStyleRecalc documentation> 
+nodeNeedsStyleRecalc ::
+                     (MonadIO m, IsNode node) => Internals -> Maybe node -> m Bool
+nodeNeedsStyleRecalc self node
+  = liftIO
+      (js_nodeNeedsStyleRecalc (self)
+         (maybeToNullable (fmap toNode node)))
+ 
+foreign import javascript unsafe "$1[\"description\"]($2)"
+        js_description :: Internals -> JSVal -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.description Mozilla Internals.description documentation> 
+description ::
+            (MonadIO m, FromJSString result) => Internals -> JSVal -> m result
+description self value
+  = liftIO (fromJSString <$> (js_description (self) value))
+ 
+foreign import javascript unsafe
+        "($1[\"hasPausedImageAnimations\"]($2) ? 1 : 0)"
+        js_hasPausedImageAnimations ::
+        Internals -> Nullable Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.hasPausedImageAnimations Mozilla Internals.hasPausedImageAnimations documentation> 
+hasPausedImageAnimations ::
+                         (MonadIO m, IsElement element) =>
+                           Internals -> Maybe element -> m Bool
+hasPausedImageAnimations self element
+  = liftIO
+      (js_hasPausedImageAnimations (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "$1[\"elementRenderTreeAsText\"]($2)" js_elementRenderTreeAsText ::
+        Internals -> Nullable Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.elementRenderTreeAsText Mozilla Internals.elementRenderTreeAsText documentation> 
+elementRenderTreeAsText ::
+                        (MonadIO m, IsElement element, FromJSString result) =>
+                          Internals -> Maybe element -> m result
+elementRenderTreeAsText self element
+  = liftIO
+      (fromJSString <$>
+         (js_elementRenderTreeAsText (self)
+            (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe
+        "($1[\"isPreloaded\"]($2) ? 1 : 0)" js_isPreloaded ::
+        Internals -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPreloaded Mozilla Internals.isPreloaded documentation> 
+isPreloaded ::
+            (MonadIO m, ToJSString url) => Internals -> url -> m Bool
+isPreloaded self url
+  = liftIO (js_isPreloaded (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"isLoadingFromMemoryCache\"]($2) ? 1 : 0)"
+        js_isLoadingFromMemoryCache :: Internals -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isLoadingFromMemoryCache Mozilla Internals.isLoadingFromMemoryCache documentation> 
+isLoadingFromMemoryCache ::
+                         (MonadIO m, ToJSString url) => Internals -> url -> m Bool
+isLoadingFromMemoryCache self url
+  = liftIO (js_isLoadingFromMemoryCache (self) (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"xhrResponseSource\"]($2)"
+        js_xhrResponseSource ::
+        Internals -> Nullable XMLHttpRequest -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.xhrResponseSource Mozilla Internals.xhrResponseSource documentation> 
+xhrResponseSource ::
+                  (MonadIO m, FromJSString result) =>
+                    Internals -> Maybe XMLHttpRequest -> m result
+xhrResponseSource self xhr
+  = liftIO
+      (fromJSString <$>
+         (js_xhrResponseSource (self) (maybeToNullable xhr)))
+ 
+foreign import javascript unsafe "$1[\"clearMemoryCache\"]()"
+        js_clearMemoryCache :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.clearMemoryCache Mozilla Internals.clearMemoryCache documentation> 
+clearMemoryCache :: (MonadIO m) => Internals -> m ()
+clearMemoryCache self = liftIO (js_clearMemoryCache (self))
+ 
+foreign import javascript unsafe
+        "$1[\"pruneMemoryCacheToSize\"]($2)" js_pruneMemoryCacheToSize ::
+        Internals -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pruneMemoryCacheToSize Mozilla Internals.pruneMemoryCacheToSize documentation> 
+pruneMemoryCacheToSize :: (MonadIO m) => Internals -> Int -> m ()
+pruneMemoryCacheToSize self size
+  = liftIO (js_pruneMemoryCacheToSize (self) size)
+ 
+foreign import javascript unsafe "$1[\"memoryCacheSize\"]()"
+        js_memoryCacheSize :: Internals -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.memoryCacheSize Mozilla Internals.memoryCacheSize documentation> 
+memoryCacheSize :: (MonadIO m) => Internals -> m Int
+memoryCacheSize self = liftIO (js_memoryCacheSize (self))
+ 
+foreign import javascript unsafe "$1[\"clearPageCache\"]()"
+        js_clearPageCache :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.clearPageCache Mozilla Internals.clearPageCache documentation> 
+clearPageCache :: (MonadIO m) => Internals -> m ()
+clearPageCache self = liftIO (js_clearPageCache (self))
+ 
+foreign import javascript unsafe "$1[\"pageCacheSize\"]()"
+        js_pageCacheSize :: Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageCacheSize Mozilla Internals.pageCacheSize documentation> 
+pageCacheSize :: (MonadIO m) => Internals -> m Word
+pageCacheSize self = liftIO (js_pageCacheSize (self))
+ 
+foreign import javascript unsafe
+        "$1[\"computedStyleIncludingVisitedInfo\"]($2)"
+        js_computedStyleIncludingVisitedInfo ::
+        Internals -> Nullable Node -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.computedStyleIncludingVisitedInfo Mozilla Internals.computedStyleIncludingVisitedInfo documentation> 
+computedStyleIncludingVisitedInfo ::
+                                  (MonadIO m, IsNode node) =>
+                                    Internals -> Maybe node -> m (Maybe CSSStyleDeclaration)
+computedStyleIncludingVisitedInfo self node
+  = liftIO
+      (nullableToMaybe <$>
+         (js_computedStyleIncludingVisitedInfo (self)
+            (maybeToNullable (fmap toNode node))))
+ 
+foreign import javascript unsafe "$1[\"ensureShadowRoot\"]($2)"
+        js_ensureShadowRoot ::
+        Internals -> Nullable Element -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.ensureShadowRoot Mozilla Internals.ensureShadowRoot documentation> 
+ensureShadowRoot ::
+                 (MonadIO m, IsElement host) =>
+                   Internals -> Maybe host -> m (Maybe Node)
+ensureShadowRoot self host
+  = liftIO
+      (nullableToMaybe <$>
+         (js_ensureShadowRoot (self)
+            (maybeToNullable (fmap toElement host))))
+ 
+foreign import javascript unsafe "$1[\"createShadowRoot\"]($2)"
+        js_createShadowRoot ::
+        Internals -> Nullable Element -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.createShadowRoot Mozilla Internals.createShadowRoot documentation> 
+createShadowRoot ::
+                 (MonadIO m, IsElement host) =>
+                   Internals -> Maybe host -> m (Maybe Node)
+createShadowRoot self host
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createShadowRoot (self)
+            (maybeToNullable (fmap toElement host))))
+ 
+foreign import javascript unsafe "$1[\"shadowRoot\"]($2)"
+        js_shadowRoot ::
+        Internals -> Nullable Element -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shadowRoot Mozilla Internals.shadowRoot documentation> 
+shadowRoot ::
+           (MonadIO m, IsElement host) =>
+             Internals -> Maybe host -> m (Maybe Node)
+shadowRoot self host
+  = liftIO
+      (nullableToMaybe <$>
+         (js_shadowRoot (self) (maybeToNullable (fmap toElement host))))
+ 
+foreign import javascript unsafe "$1[\"shadowRootType\"]($2)"
+        js_shadowRootType :: Internals -> Nullable Node -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shadowRootType Mozilla Internals.shadowRootType documentation> 
+shadowRootType ::
+               (MonadIO m, IsNode root, FromJSString result) =>
+                 Internals -> Maybe root -> m result
+shadowRootType self root
+  = liftIO
+      (fromJSString <$>
+         (js_shadowRootType (self) (maybeToNullable (fmap toNode root))))
+ 
+foreign import javascript unsafe "$1[\"includerFor\"]($2)"
+        js_includerFor ::
+        Internals -> Nullable Node -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.includerFor Mozilla Internals.includerFor documentation> 
+includerFor ::
+            (MonadIO m, IsNode node) =>
+              Internals -> Maybe node -> m (Maybe Element)
+includerFor self node
+  = liftIO
+      (nullableToMaybe <$>
+         (js_includerFor (self) (maybeToNullable (fmap toNode node))))
+ 
+foreign import javascript unsafe "$1[\"shadowPseudoId\"]($2)"
+        js_shadowPseudoId :: Internals -> Nullable Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shadowPseudoId Mozilla Internals.shadowPseudoId documentation> 
+shadowPseudoId ::
+               (MonadIO m, IsElement element, FromJSString result) =>
+                 Internals -> Maybe element -> m result
+shadowPseudoId self element
+  = liftIO
+      (fromJSString <$>
+         (js_shadowPseudoId (self)
+            (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe
+        "$1[\"setShadowPseudoId\"]($2, $3)" js_setShadowPseudoId ::
+        Internals -> Nullable Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setShadowPseudoId Mozilla Internals.setShadowPseudoId documentation> 
+setShadowPseudoId ::
+                  (MonadIO m, IsElement element, ToJSString id) =>
+                    Internals -> Maybe element -> id -> m ()
+setShadowPseudoId self element id
+  = liftIO
+      (js_setShadowPseudoId (self)
+         (maybeToNullable (fmap toElement element))
+         (toJSString id))
+ 
+foreign import javascript unsafe "$1[\"treeScopeRootNode\"]($2)"
+        js_treeScopeRootNode ::
+        Internals -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.treeScopeRootNode Mozilla Internals.treeScopeRootNode documentation> 
+treeScopeRootNode ::
+                  (MonadIO m, IsNode node) =>
+                    Internals -> Maybe node -> m (Maybe Node)
+treeScopeRootNode self node
+  = liftIO
+      (nullableToMaybe <$>
+         (js_treeScopeRootNode (self) (maybeToNullable (fmap toNode node))))
+ 
+foreign import javascript unsafe "$1[\"parentTreeScope\"]($2)"
+        js_parentTreeScope ::
+        Internals -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.parentTreeScope Mozilla Internals.parentTreeScope documentation> 
+parentTreeScope ::
+                (MonadIO m, IsNode node) =>
+                  Internals -> Maybe node -> m (Maybe Node)
+parentTreeScope self node
+  = liftIO
+      (nullableToMaybe <$>
+         (js_parentTreeScope (self) (maybeToNullable (fmap toNode node))))
+ 
+foreign import javascript unsafe
+        "$1[\"lastSpatialNavigationCandidateCount\"]()"
+        js_lastSpatialNavigationCandidateCount :: Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.lastSpatialNavigationCandidateCount Mozilla Internals.lastSpatialNavigationCandidateCount documentation> 
+lastSpatialNavigationCandidateCount ::
+                                    (MonadIO m) => Internals -> m Word
+lastSpatialNavigationCandidateCount self
+  = liftIO (js_lastSpatialNavigationCandidateCount (self))
+ 
+foreign import javascript unsafe
+        "$1[\"numberOfActiveAnimations\"]()" js_numberOfActiveAnimations ::
+        Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfActiveAnimations Mozilla Internals.numberOfActiveAnimations documentation> 
+numberOfActiveAnimations :: (MonadIO m) => Internals -> m Word
+numberOfActiveAnimations self
+  = liftIO (js_numberOfActiveAnimations (self))
+ 
+foreign import javascript unsafe "$1[\"suspendAnimations\"]()"
+        js_suspendAnimations :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.suspendAnimations Mozilla Internals.suspendAnimations documentation> 
+suspendAnimations :: (MonadIO m) => Internals -> m ()
+suspendAnimations self = liftIO (js_suspendAnimations (self))
+ 
+foreign import javascript unsafe "$1[\"resumeAnimations\"]()"
+        js_resumeAnimations :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.resumeAnimations Mozilla Internals.resumeAnimations documentation> 
+resumeAnimations :: (MonadIO m) => Internals -> m ()
+resumeAnimations self = liftIO (js_resumeAnimations (self))
+ 
+foreign import javascript unsafe
+        "($1[\"animationsAreSuspended\"]() ? 1 : 0)"
+        js_animationsAreSuspended :: Internals -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.animationsAreSuspended Mozilla Internals.animationsAreSuspended documentation> 
+animationsAreSuspended :: (MonadIO m) => Internals -> m Bool
+animationsAreSuspended self
+  = liftIO (js_animationsAreSuspended (self))
+ 
+foreign import javascript unsafe
+        "($1[\"pauseAnimationAtTimeOnElement\"]($2,\n$3, $4) ? 1 : 0)"
+        js_pauseAnimationAtTimeOnElement ::
+        Internals -> JSString -> Double -> Nullable Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pauseAnimationAtTimeOnElement Mozilla Internals.pauseAnimationAtTimeOnElement documentation> 
+pauseAnimationAtTimeOnElement ::
+                              (MonadIO m, ToJSString animationName, IsElement element) =>
+                                Internals -> animationName -> Double -> Maybe element -> m Bool
+pauseAnimationAtTimeOnElement self animationName pauseTime element
+  = liftIO
+      (js_pauseAnimationAtTimeOnElement (self) (toJSString animationName)
+         pauseTime
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "($1[\"pauseAnimationAtTimeOnPseudoElement\"]($2,\n$3, $4, $5) ? 1 : 0)"
+        js_pauseAnimationAtTimeOnPseudoElement ::
+        Internals ->
+          JSString -> Double -> Nullable Element -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pauseAnimationAtTimeOnPseudoElement Mozilla Internals.pauseAnimationAtTimeOnPseudoElement documentation> 
+pauseAnimationAtTimeOnPseudoElement ::
+                                    (MonadIO m, ToJSString animationName, IsElement element,
+                                     ToJSString pseudoId) =>
+                                      Internals ->
+                                        animationName ->
+                                          Double -> Maybe element -> pseudoId -> m Bool
+pauseAnimationAtTimeOnPseudoElement self animationName pauseTime
+  element pseudoId
+  = liftIO
+      (js_pauseAnimationAtTimeOnPseudoElement (self)
+         (toJSString animationName)
+         pauseTime
+         (maybeToNullable (fmap toElement element))
+         (toJSString pseudoId))
+ 
+foreign import javascript unsafe
+        "($1[\"pauseTransitionAtTimeOnElement\"]($2,\n$3, $4) ? 1 : 0)"
+        js_pauseTransitionAtTimeOnElement ::
+        Internals -> JSString -> Double -> Nullable Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pauseTransitionAtTimeOnElement Mozilla Internals.pauseTransitionAtTimeOnElement documentation> 
+pauseTransitionAtTimeOnElement ::
+                               (MonadIO m, ToJSString propertyName, IsElement element) =>
+                                 Internals -> propertyName -> Double -> Maybe element -> m Bool
+pauseTransitionAtTimeOnElement self propertyName pauseTime element
+  = liftIO
+      (js_pauseTransitionAtTimeOnElement (self) (toJSString propertyName)
+         pauseTime
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "($1[\"pauseTransitionAtTimeOnPseudoElement\"]($2,\n$3, $4, $5) ? 1 : 0)"
+        js_pauseTransitionAtTimeOnPseudoElement ::
+        Internals ->
+          JSString -> Double -> Nullable Element -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pauseTransitionAtTimeOnPseudoElement Mozilla Internals.pauseTransitionAtTimeOnPseudoElement documentation> 
+pauseTransitionAtTimeOnPseudoElement ::
+                                     (MonadIO m, ToJSString property, IsElement element,
+                                      ToJSString pseudoId) =>
+                                       Internals ->
+                                         property -> Double -> Maybe element -> pseudoId -> m Bool
+pauseTransitionAtTimeOnPseudoElement self property pauseTime
+  element pseudoId
+  = liftIO
+      (js_pauseTransitionAtTimeOnPseudoElement (self)
+         (toJSString property)
+         pauseTime
+         (maybeToNullable (fmap toElement element))
+         (toJSString pseudoId))
+ 
+foreign import javascript unsafe "($1[\"attached\"]($2) ? 1 : 0)"
+        js_attached :: Internals -> Nullable Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.attached Mozilla Internals.attached documentation> 
+attached ::
+         (MonadIO m, IsNode node) => Internals -> Maybe node -> m Bool
+attached self node
+  = liftIO (js_attached (self) (maybeToNullable (fmap toNode node)))
+ 
+foreign import javascript unsafe "$1[\"visiblePlaceholder\"]($2)"
+        js_visiblePlaceholder ::
+        Internals -> Nullable Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.visiblePlaceholder Mozilla Internals.visiblePlaceholder documentation> 
+visiblePlaceholder ::
+                   (MonadIO m, IsElement element, FromJSString result) =>
+                     Internals -> Maybe element -> m result
+visiblePlaceholder self element
+  = liftIO
+      (fromJSString <$>
+         (js_visiblePlaceholder (self)
+            (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe
+        "$1[\"selectColorInColorChooser\"]($2,\n$3)"
+        js_selectColorInColorChooser ::
+        Internals -> Nullable Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.selectColorInColorChooser Mozilla Internals.selectColorInColorChooser documentation> 
+selectColorInColorChooser ::
+                          (MonadIO m, IsElement element, ToJSString colorValue) =>
+                            Internals -> Maybe element -> colorValue -> m ()
+selectColorInColorChooser self element colorValue
+  = liftIO
+      (js_selectColorInColorChooser (self)
+         (maybeToNullable (fmap toElement element))
+         (toJSString colorValue))
+ 
+foreign import javascript unsafe
+        "$1[\"formControlStateOfPreviousHistoryItem\"]()"
+        js_formControlStateOfPreviousHistoryItem :: Internals -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.formControlStateOfPreviousHistoryItem Mozilla Internals.formControlStateOfPreviousHistoryItem documentation> 
+formControlStateOfPreviousHistoryItem ::
+                                      (MonadIO m, FromJSString result) => Internals -> m [result]
+formControlStateOfPreviousHistoryItem self
+  = liftIO
+      ((js_formControlStateOfPreviousHistoryItem (self)) >>=
+         fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"setFormControlStateOfPreviousHistoryItem\"]($2)"
+        js_setFormControlStateOfPreviousHistoryItem ::
+        Internals -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setFormControlStateOfPreviousHistoryItem Mozilla Internals.setFormControlStateOfPreviousHistoryItem documentation> 
+setFormControlStateOfPreviousHistoryItem ::
+                                         (MonadIO m, ToJSString values) =>
+                                           Internals -> [values] -> m ()
+setFormControlStateOfPreviousHistoryItem self values
+  = liftIO
+      (toJSVal values >>=
+         \ values' ->
+           js_setFormControlStateOfPreviousHistoryItem (self) values')
+ 
+foreign import javascript unsafe "$1[\"absoluteCaretBounds\"]()"
+        js_absoluteCaretBounds :: Internals -> IO (Nullable ClientRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.absoluteCaretBounds Mozilla Internals.absoluteCaretBounds documentation> 
+absoluteCaretBounds ::
+                    (MonadIO m) => Internals -> m (Maybe ClientRect)
+absoluteCaretBounds self
+  = liftIO (nullableToMaybe <$> (js_absoluteCaretBounds (self)))
+ 
+foreign import javascript unsafe "$1[\"boundingBox\"]($2)"
+        js_boundingBox ::
+        Internals -> Nullable Element -> IO (Nullable ClientRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.boundingBox Mozilla Internals.boundingBox documentation> 
+boundingBox ::
+            (MonadIO m, IsElement element) =>
+              Internals -> Maybe element -> m (Maybe ClientRect)
+boundingBox self element
+  = liftIO
+      (nullableToMaybe <$>
+         (js_boundingBox (self) (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe
+        "$1[\"inspectorHighlightRects\"]()" js_inspectorHighlightRects ::
+        Internals -> IO (Nullable ClientRectList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.inspectorHighlightRects Mozilla Internals.inspectorHighlightRects documentation> 
+inspectorHighlightRects ::
+                        (MonadIO m) => Internals -> m (Maybe ClientRectList)
+inspectorHighlightRects self
+  = liftIO (nullableToMaybe <$> (js_inspectorHighlightRects (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"inspectorHighlightObject\"]()" js_inspectorHighlightObject ::
+        Internals -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.inspectorHighlightObject Mozilla Internals.inspectorHighlightObject documentation> 
+inspectorHighlightObject ::
+                         (MonadIO m, FromJSString result) => Internals -> m result
+inspectorHighlightObject self
+  = liftIO (fromJSString <$> (js_inspectorHighlightObject (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"markerCountForNode\"]($2, $3)" js_markerCountForNode ::
+        Internals -> Nullable Node -> JSString -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerCountForNode Mozilla Internals.markerCountForNode documentation> 
+markerCountForNode ::
+                   (MonadIO m, IsNode node, ToJSString markerType) =>
+                     Internals -> Maybe node -> markerType -> m Word
+markerCountForNode self node markerType
+  = liftIO
+      (js_markerCountForNode (self) (maybeToNullable (fmap toNode node))
+         (toJSString markerType))
+ 
+foreign import javascript unsafe
+        "$1[\"markerRangeForNode\"]($2, $3,\n$4)" js_markerRangeForNode ::
+        Internals ->
+          Nullable Node -> JSString -> Word -> IO (Nullable Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerRangeForNode Mozilla Internals.markerRangeForNode documentation> 
+markerRangeForNode ::
+                   (MonadIO m, IsNode node, ToJSString markerType) =>
+                     Internals -> Maybe node -> markerType -> Word -> m (Maybe Range)
+markerRangeForNode self node markerType index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_markerRangeForNode (self) (maybeToNullable (fmap toNode node))
+            (toJSString markerType)
+            index))
+ 
+foreign import javascript unsafe
+        "$1[\"markerDescriptionForNode\"]($2,\n$3, $4)"
+        js_markerDescriptionForNode ::
+        Internals -> Nullable Node -> JSString -> Word -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerDescriptionForNode Mozilla Internals.markerDescriptionForNode documentation> 
+markerDescriptionForNode ::
+                         (MonadIO m, IsNode node, ToJSString markerType,
+                          FromJSString result) =>
+                           Internals -> Maybe node -> markerType -> Word -> m result
+markerDescriptionForNode self node markerType index
+  = liftIO
+      (fromJSString <$>
+         (js_markerDescriptionForNode (self)
+            (maybeToNullable (fmap toNode node))
+            (toJSString markerType)
+            index))
+ 
+foreign import javascript unsafe
+        "$1[\"addTextMatchMarker\"]($2, $3)" js_addTextMatchMarker ::
+        Internals -> Nullable Range -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.addTextMatchMarker Mozilla Internals.addTextMatchMarker documentation> 
+addTextMatchMarker ::
+                   (MonadIO m) => Internals -> Maybe Range -> Bool -> m ()
+addTextMatchMarker self range isActive
+  = liftIO
+      (js_addTextMatchMarker (self) (maybeToNullable range) isActive)
+ 
+foreign import javascript unsafe
+        "$1[\"setMarkedTextMatchesAreHighlighted\"]($2)"
+        js_setMarkedTextMatchesAreHighlighted :: Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setMarkedTextMatchesAreHighlighted Mozilla Internals.setMarkedTextMatchesAreHighlighted documentation> 
+setMarkedTextMatchesAreHighlighted ::
+                                   (MonadIO m) => Internals -> Bool -> m ()
+setMarkedTextMatchesAreHighlighted self flag
+  = liftIO (js_setMarkedTextMatchesAreHighlighted (self) flag)
+ 
+foreign import javascript unsafe "$1[\"invalidateFontCache\"]()"
+        js_invalidateFontCache :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.invalidateFontCache Mozilla Internals.invalidateFontCache documentation> 
+invalidateFontCache :: (MonadIO m) => Internals -> m ()
+invalidateFontCache self = liftIO (js_invalidateFontCache (self))
+ 
+foreign import javascript unsafe
+        "$1[\"setScrollViewPosition\"]($2,\n$3)" js_setScrollViewPosition
+        :: Internals -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setScrollViewPosition Mozilla Internals.setScrollViewPosition documentation> 
+setScrollViewPosition ::
+                      (MonadIO m) => Internals -> Int -> Int -> m ()
+setScrollViewPosition self x y
+  = liftIO (js_setScrollViewPosition (self) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"setPagination\"]($2, $3, $4)" js_setPagination ::
+        Internals -> JSString -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPagination Mozilla Internals.setPagination documentation> 
+setPagination ::
+              (MonadIO m, ToJSString mode) =>
+                Internals -> mode -> Int -> Int -> m ()
+setPagination self mode gap pageLength
+  = liftIO (js_setPagination (self) (toJSString mode) gap pageLength)
+ 
+foreign import javascript unsafe
+        "$1[\"configurationForViewport\"]($2,\n$3, $4, $5, $6)"
+        js_configurationForViewport ::
+        Internals -> Float -> Int -> Int -> Int -> Int -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.configurationForViewport Mozilla Internals.configurationForViewport documentation> 
+configurationForViewport ::
+                         (MonadIO m, FromJSString result) =>
+                           Internals -> Float -> Int -> Int -> Int -> Int -> m result
+configurationForViewport self devicePixelRatio deviceWidth
+  deviceHeight availableWidth availableHeight
+  = liftIO
+      (fromJSString <$>
+         (js_configurationForViewport (self) devicePixelRatio deviceWidth
+            deviceHeight
+            availableWidth
+            availableHeight))
+ 
+foreign import javascript unsafe
+        "($1[\"wasLastChangeUserEdit\"]($2) ? 1 : 0)"
+        js_wasLastChangeUserEdit ::
+        Internals -> Nullable Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.wasLastChangeUserEdit Mozilla Internals.wasLastChangeUserEdit documentation> 
+wasLastChangeUserEdit ::
+                      (MonadIO m, IsElement textField) =>
+                        Internals -> Maybe textField -> m Bool
+wasLastChangeUserEdit self textField
+  = liftIO
+      (js_wasLastChangeUserEdit (self)
+         (maybeToNullable (fmap toElement textField)))
+ 
+foreign import javascript unsafe
+        "($1[\"elementShouldAutoComplete\"]($2) ? 1 : 0)"
+        js_elementShouldAutoComplete ::
+        Internals -> Nullable Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.elementShouldAutoComplete Mozilla Internals.elementShouldAutoComplete documentation> 
+elementShouldAutoComplete ::
+                          (MonadIO m, IsElement inputElement) =>
+                            Internals -> Maybe inputElement -> m Bool
+elementShouldAutoComplete self inputElement
+  = liftIO
+      (js_elementShouldAutoComplete (self)
+         (maybeToNullable (fmap toElement inputElement)))
+ 
+foreign import javascript unsafe "$1[\"setEditingValue\"]($2, $3)"
+        js_setEditingValue ::
+        Internals -> Nullable Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setEditingValue Mozilla Internals.setEditingValue documentation> 
+setEditingValue ::
+                (MonadIO m, IsElement inputElement, ToJSString value) =>
+                  Internals -> Maybe inputElement -> value -> m ()
+setEditingValue self inputElement value
+  = liftIO
+      (js_setEditingValue (self)
+         (maybeToNullable (fmap toElement inputElement))
+         (toJSString value))
+ 
+foreign import javascript unsafe "$1[\"setAutofilled\"]($2, $3)"
+        js_setAutofilled :: Internals -> Nullable Element -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutofilled Mozilla Internals.setAutofilled documentation> 
+setAutofilled ::
+              (MonadIO m, IsElement inputElement) =>
+                Internals -> Maybe inputElement -> Bool -> m ()
+setAutofilled self inputElement enabled
+  = liftIO
+      (js_setAutofilled (self)
+         (maybeToNullable (fmap toElement inputElement))
+         enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"countMatchesForText\"]($2,\n$3, $4)" js_countMatchesForText
+        :: Internals -> JSString -> Word -> JSString -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.countMatchesForText Mozilla Internals.countMatchesForText documentation> 
+countMatchesForText ::
+                    (MonadIO m, ToJSString text, ToJSString markMatches) =>
+                      Internals -> text -> Word -> markMatches -> m Word
+countMatchesForText self text findOptions markMatches
+  = liftIO
+      (js_countMatchesForText (self) (toJSString text) findOptions
+         (toJSString markMatches))
+ 
+foreign import javascript unsafe "$1[\"paintControlTints\"]()"
+        js_paintControlTints :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.paintControlTints Mozilla Internals.paintControlTints documentation> 
+paintControlTints :: (MonadIO m) => Internals -> m ()
+paintControlTints self = liftIO (js_paintControlTints (self))
+ 
+foreign import javascript unsafe
+        "$1[\"scrollElementToRect\"]($2,\n$3, $4, $5, $6)"
+        js_scrollElementToRect ::
+        Internals -> Nullable Element -> Int -> Int -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.scrollElementToRect Mozilla Internals.scrollElementToRect documentation> 
+scrollElementToRect ::
+                    (MonadIO m, IsElement element) =>
+                      Internals -> Maybe element -> Int -> Int -> Int -> Int -> m ()
+scrollElementToRect self element x y w h
+  = liftIO
+      (js_scrollElementToRect (self)
+         (maybeToNullable (fmap toElement element))
+         x
+         y
+         w
+         h)
+ 
+foreign import javascript unsafe
+        "$1[\"rangeFromLocationAndLength\"]($2,\n$3, $4)"
+        js_rangeFromLocationAndLength ::
+        Internals -> Nullable Element -> Int -> Int -> IO (Nullable Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeFromLocationAndLength Mozilla Internals.rangeFromLocationAndLength documentation> 
+rangeFromLocationAndLength ::
+                           (MonadIO m, IsElement scope) =>
+                             Internals -> Maybe scope -> Int -> Int -> m (Maybe Range)
+rangeFromLocationAndLength self scope rangeLocation rangeLength
+  = liftIO
+      (nullableToMaybe <$>
+         (js_rangeFromLocationAndLength (self)
+            (maybeToNullable (fmap toElement scope))
+            rangeLocation
+            rangeLength))
+ 
+foreign import javascript unsafe
+        "$1[\"locationFromRange\"]($2, $3)" js_locationFromRange ::
+        Internals -> Nullable Element -> Nullable Range -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.locationFromRange Mozilla Internals.locationFromRange documentation> 
+locationFromRange ::
+                  (MonadIO m, IsElement scope) =>
+                    Internals -> Maybe scope -> Maybe Range -> m Word
+locationFromRange self scope range
+  = liftIO
+      (js_locationFromRange (self)
+         (maybeToNullable (fmap toElement scope))
+         (maybeToNullable range))
+ 
+foreign import javascript unsafe "$1[\"lengthFromRange\"]($2, $3)"
+        js_lengthFromRange ::
+        Internals -> Nullable Element -> Nullable Range -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.lengthFromRange Mozilla Internals.lengthFromRange documentation> 
+lengthFromRange ::
+                (MonadIO m, IsElement scope) =>
+                  Internals -> Maybe scope -> Maybe Range -> m Word
+lengthFromRange self scope range
+  = liftIO
+      (js_lengthFromRange (self) (maybeToNullable (fmap toElement scope))
+         (maybeToNullable range))
+ 
+foreign import javascript unsafe "$1[\"rangeAsText\"]($2)"
+        js_rangeAsText :: Internals -> Nullable Range -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeAsText Mozilla Internals.rangeAsText documentation> 
+rangeAsText ::
+            (MonadIO m, FromJSString result) =>
+              Internals -> Maybe Range -> m result
+rangeAsText self range
+  = liftIO
+      (fromJSString <$> (js_rangeAsText (self) (maybeToNullable range)))
+ 
+foreign import javascript unsafe "$1[\"subrange\"]($2, $3, $4)"
+        js_subrange ::
+        Internals -> Nullable Range -> Int -> Int -> IO (Nullable Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.subrange Mozilla Internals.subrange documentation> 
+subrange ::
+         (MonadIO m) =>
+           Internals -> Maybe Range -> Int -> Int -> m (Maybe Range)
+subrange self range rangeLocation rangeLength
+  = liftIO
+      (nullableToMaybe <$>
+         (js_subrange (self) (maybeToNullable range) rangeLocation
+            rangeLength))
+ 
+foreign import javascript unsafe
+        "$1[\"rangeForDictionaryLookupAtLocation\"]($2,\n$3)"
+        js_rangeForDictionaryLookupAtLocation ::
+        Internals -> Int -> Int -> IO (Nullable Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeForDictionaryLookupAtLocation Mozilla Internals.rangeForDictionaryLookupAtLocation documentation> 
+rangeForDictionaryLookupAtLocation ::
+                                   (MonadIO m) => Internals -> Int -> Int -> m (Maybe Range)
+rangeForDictionaryLookupAtLocation self x y
+  = liftIO
+      (nullableToMaybe <$>
+         (js_rangeForDictionaryLookupAtLocation (self) x y))
+ 
+foreign import javascript unsafe
+        "$1[\"setDelegatesScrolling\"]($2)" js_setDelegatesScrolling ::
+        Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setDelegatesScrolling Mozilla Internals.setDelegatesScrolling documentation> 
+setDelegatesScrolling :: (MonadIO m) => Internals -> Bool -> m ()
+setDelegatesScrolling self enabled
+  = liftIO (js_setDelegatesScrolling (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"lastSpellCheckRequestSequence\"]()"
+        js_lastSpellCheckRequestSequence :: Internals -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.lastSpellCheckRequestSequence Mozilla Internals.lastSpellCheckRequestSequence documentation> 
+lastSpellCheckRequestSequence :: (MonadIO m) => Internals -> m Int
+lastSpellCheckRequestSequence self
+  = liftIO (js_lastSpellCheckRequestSequence (self))
+ 
+foreign import javascript unsafe
+        "$1[\"lastSpellCheckProcessedSequence\"]()"
+        js_lastSpellCheckProcessedSequence :: Internals -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.lastSpellCheckProcessedSequence Mozilla Internals.lastSpellCheckProcessedSequence documentation> 
+lastSpellCheckProcessedSequence ::
+                                (MonadIO m) => Internals -> m Int
+lastSpellCheckProcessedSequence self
+  = liftIO (js_lastSpellCheckProcessedSequence (self))
+ 
+foreign import javascript unsafe "$1[\"userPreferredLanguages\"]()"
+        js_userPreferredLanguages :: Internals -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.userPreferredLanguages Mozilla Internals.userPreferredLanguages documentation> 
+userPreferredLanguages ::
+                       (MonadIO m, FromJSString result) => Internals -> m [result]
+userPreferredLanguages self
+  = liftIO
+      ((js_userPreferredLanguages (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"setUserPreferredLanguages\"]($2)"
+        js_setUserPreferredLanguages :: Internals -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setUserPreferredLanguages Mozilla Internals.setUserPreferredLanguages documentation> 
+setUserPreferredLanguages ::
+                          (MonadIO m, ToJSString languages) =>
+                            Internals -> [languages] -> m ()
+setUserPreferredLanguages self languages
+  = liftIO
+      (toJSVal languages >>=
+         \ languages' -> js_setUserPreferredLanguages (self) languages')
+ 
+foreign import javascript unsafe "$1[\"wheelEventHandlerCount\"]()"
+        js_wheelEventHandlerCount :: Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.wheelEventHandlerCount Mozilla Internals.wheelEventHandlerCount documentation> 
+wheelEventHandlerCount :: (MonadIO m) => Internals -> m Word
+wheelEventHandlerCount self
+  = liftIO (js_wheelEventHandlerCount (self))
+ 
+foreign import javascript unsafe "$1[\"touchEventHandlerCount\"]()"
+        js_touchEventHandlerCount :: Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.touchEventHandlerCount Mozilla Internals.touchEventHandlerCount documentation> 
+touchEventHandlerCount :: (MonadIO m) => Internals -> m Word
+touchEventHandlerCount self
+  = liftIO (js_touchEventHandlerCount (self))
+ 
+foreign import javascript unsafe
+        "$1[\"nodesFromRect\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11)"
+        js_nodesFromRect ::
+        Internals ->
+          Nullable Document ->
+            Int ->
+              Int ->
+                Word ->
+                  Word ->
+                    Word -> Word -> Bool -> Bool -> Bool -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nodesFromRect Mozilla Internals.nodesFromRect documentation> 
+nodesFromRect ::
+              (MonadIO m, IsDocument document) =>
+                Internals ->
+                  Maybe document ->
+                    Int ->
+                      Int ->
+                        Word ->
+                          Word -> Word -> Word -> Bool -> Bool -> Bool -> m (Maybe NodeList)
+nodesFromRect self document x y topPadding rightPadding
+  bottomPadding leftPadding ignoreClipping allowShadowContent
+  allowChildFrameContent
+  = liftIO
+      (nullableToMaybe <$>
+         (js_nodesFromRect (self)
+            (maybeToNullable (fmap toDocument document))
+            x
+            y
+            topPadding
+            rightPadding
+            bottomPadding
+            leftPadding
+            ignoreClipping
+            allowShadowContent
+            allowChildFrameContent))
+ 
+foreign import javascript unsafe "$1[\"parserMetaData\"]($2)"
+        js_parserMetaData :: Internals -> JSVal -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.parserMetaData Mozilla Internals.parserMetaData documentation> 
+parserMetaData ::
+               (MonadIO m, FromJSString result) => Internals -> JSVal -> m result
+parserMetaData self func
+  = liftIO (fromJSString <$> (js_parserMetaData (self) func))
+ 
+foreign import javascript unsafe
+        "$1[\"updateEditorUINowIfScheduled\"]()"
+        js_updateEditorUINowIfScheduled :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.updateEditorUINowIfScheduled Mozilla Internals.updateEditorUINowIfScheduled documentation> 
+updateEditorUINowIfScheduled :: (MonadIO m) => Internals -> m ()
+updateEditorUINowIfScheduled self
+  = liftIO (js_updateEditorUINowIfScheduled (self))
+ 
+foreign import javascript unsafe
+        "($1[\"hasSpellingMarker\"]($2,\n$3) ? 1 : 0)" js_hasSpellingMarker
+        :: Internals -> Int -> Int -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.hasSpellingMarker Mozilla Internals.hasSpellingMarker documentation> 
+hasSpellingMarker ::
+                  (MonadIO m) => Internals -> Int -> Int -> m Bool
+hasSpellingMarker self from length
+  = liftIO (js_hasSpellingMarker (self) from length)
+ 
+foreign import javascript unsafe
+        "($1[\"hasGrammarMarker\"]($2,\n$3) ? 1 : 0)" js_hasGrammarMarker
+        :: Internals -> Int -> Int -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.hasGrammarMarker Mozilla Internals.hasGrammarMarker documentation> 
+hasGrammarMarker ::
+                 (MonadIO m) => Internals -> Int -> Int -> m Bool
+hasGrammarMarker self from length
+  = liftIO (js_hasGrammarMarker (self) from length)
+ 
+foreign import javascript unsafe
+        "($1[\"hasAutocorrectedMarker\"]($2,\n$3) ? 1 : 0)"
+        js_hasAutocorrectedMarker :: Internals -> Int -> Int -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.hasAutocorrectedMarker Mozilla Internals.hasAutocorrectedMarker documentation> 
+hasAutocorrectedMarker ::
+                       (MonadIO m) => Internals -> Int -> Int -> m Bool
+hasAutocorrectedMarker self from length
+  = liftIO (js_hasAutocorrectedMarker (self) from length)
+ 
+foreign import javascript unsafe
+        "$1[\"setContinuousSpellCheckingEnabled\"]($2)"
+        js_setContinuousSpellCheckingEnabled :: Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setContinuousSpellCheckingEnabled Mozilla Internals.setContinuousSpellCheckingEnabled documentation> 
+setContinuousSpellCheckingEnabled ::
+                                  (MonadIO m) => Internals -> Bool -> m ()
+setContinuousSpellCheckingEnabled self enabled
+  = liftIO (js_setContinuousSpellCheckingEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticQuoteSubstitutionEnabled\"]($2)"
+        js_setAutomaticQuoteSubstitutionEnabled ::
+        Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticQuoteSubstitutionEnabled Mozilla Internals.setAutomaticQuoteSubstitutionEnabled documentation> 
+setAutomaticQuoteSubstitutionEnabled ::
+                                     (MonadIO m) => Internals -> Bool -> m ()
+setAutomaticQuoteSubstitutionEnabled self enabled
+  = liftIO (js_setAutomaticQuoteSubstitutionEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticLinkDetectionEnabled\"]($2)"
+        js_setAutomaticLinkDetectionEnabled :: Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticLinkDetectionEnabled Mozilla Internals.setAutomaticLinkDetectionEnabled documentation> 
+setAutomaticLinkDetectionEnabled ::
+                                 (MonadIO m) => Internals -> Bool -> m ()
+setAutomaticLinkDetectionEnabled self enabled
+  = liftIO (js_setAutomaticLinkDetectionEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticDashSubstitutionEnabled\"]($2)"
+        js_setAutomaticDashSubstitutionEnabled ::
+        Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticDashSubstitutionEnabled Mozilla Internals.setAutomaticDashSubstitutionEnabled documentation> 
+setAutomaticDashSubstitutionEnabled ::
+                                    (MonadIO m) => Internals -> Bool -> m ()
+setAutomaticDashSubstitutionEnabled self enabled
+  = liftIO (js_setAutomaticDashSubstitutionEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticTextReplacementEnabled\"]($2)"
+        js_setAutomaticTextReplacementEnabled :: Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticTextReplacementEnabled Mozilla Internals.setAutomaticTextReplacementEnabled documentation> 
+setAutomaticTextReplacementEnabled ::
+                                   (MonadIO m) => Internals -> Bool -> m ()
+setAutomaticTextReplacementEnabled self enabled
+  = liftIO (js_setAutomaticTextReplacementEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticSpellingCorrectionEnabled\"]($2)"
+        js_setAutomaticSpellingCorrectionEnabled ::
+        Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setAutomaticSpellingCorrectionEnabled Mozilla Internals.setAutomaticSpellingCorrectionEnabled documentation> 
+setAutomaticSpellingCorrectionEnabled ::
+                                      (MonadIO m) => Internals -> Bool -> m ()
+setAutomaticSpellingCorrectionEnabled self enabled
+  = liftIO (js_setAutomaticSpellingCorrectionEnabled (self) enabled)
+ 
+foreign import javascript unsafe
+        "($1[\"isOverwriteModeEnabled\"]() ? 1 : 0)"
+        js_isOverwriteModeEnabled :: Internals -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isOverwriteModeEnabled Mozilla Internals.isOverwriteModeEnabled documentation> 
+isOverwriteModeEnabled :: (MonadIO m) => Internals -> m Bool
+isOverwriteModeEnabled self
+  = liftIO (js_isOverwriteModeEnabled (self))
+ 
+foreign import javascript unsafe
+        "$1[\"toggleOverwriteModeEnabled\"]()"
+        js_toggleOverwriteModeEnabled :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.toggleOverwriteModeEnabled Mozilla Internals.toggleOverwriteModeEnabled documentation> 
+toggleOverwriteModeEnabled :: (MonadIO m) => Internals -> m ()
+toggleOverwriteModeEnabled self
+  = liftIO (js_toggleOverwriteModeEnabled (self))
+ 
+foreign import javascript unsafe
+        "$1[\"numberOfScrollableAreas\"]()" js_numberOfScrollableAreas ::
+        Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfScrollableAreas Mozilla Internals.numberOfScrollableAreas documentation> 
+numberOfScrollableAreas :: (MonadIO m) => Internals -> m Word
+numberOfScrollableAreas self
+  = liftIO (js_numberOfScrollableAreas (self))
+ 
+foreign import javascript unsafe
+        "($1[\"isPageBoxVisible\"]($2) ? 1 : 0)" js_isPageBoxVisible ::
+        Internals -> Int -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPageBoxVisible Mozilla Internals.isPageBoxVisible documentation> 
+isPageBoxVisible :: (MonadIO m) => Internals -> Int -> m Bool
+isPageBoxVisible self pageNumber
+  = liftIO (js_isPageBoxVisible (self) pageNumber)
+ 
+foreign import javascript unsafe "$1[\"layerTreeAsText\"]($2, $3)"
+        js_layerTreeAsText ::
+        Internals -> Nullable Document -> Word -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.layerTreeAsText Mozilla Internals.layerTreeAsText documentation> 
+layerTreeAsText ::
+                (MonadIO m, IsDocument document, FromJSString result) =>
+                  Internals -> Maybe document -> Word -> m result
+layerTreeAsText self document flags
+  = liftIO
+      (fromJSString <$>
+         (js_layerTreeAsText (self)
+            (maybeToNullable (fmap toDocument document))
+            flags))
+ 
+foreign import javascript unsafe
+        "$1[\"scrollingStateTreeAsText\"]()" js_scrollingStateTreeAsText ::
+        Internals -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.scrollingStateTreeAsText Mozilla Internals.scrollingStateTreeAsText documentation> 
+scrollingStateTreeAsText ::
+                         (MonadIO m, FromJSString result) => Internals -> m result
+scrollingStateTreeAsText self
+  = liftIO (fromJSString <$> (js_scrollingStateTreeAsText (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"mainThreadScrollingReasons\"]()"
+        js_mainThreadScrollingReasons :: Internals -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.mainThreadScrollingReasons Mozilla Internals.mainThreadScrollingReasons documentation> 
+mainThreadScrollingReasons ::
+                           (MonadIO m, FromJSString result) => Internals -> m result
+mainThreadScrollingReasons self
+  = liftIO (fromJSString <$> (js_mainThreadScrollingReasons (self)))
+ 
+foreign import javascript unsafe "$1[\"nonFastScrollableRects\"]()"
+        js_nonFastScrollableRects ::
+        Internals -> IO (Nullable ClientRectList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nonFastScrollableRects Mozilla Internals.nonFastScrollableRects documentation> 
+nonFastScrollableRects ::
+                       (MonadIO m) => Internals -> m (Maybe ClientRectList)
+nonFastScrollableRects self
+  = liftIO (nullableToMaybe <$> (js_nonFastScrollableRects (self)))
+ 
+foreign import javascript unsafe "$1[\"repaintRectsAsText\"]()"
+        js_repaintRectsAsText :: Internals -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.repaintRectsAsText Mozilla Internals.repaintRectsAsText documentation> 
+repaintRectsAsText ::
+                   (MonadIO m, FromJSString result) => Internals -> m result
+repaintRectsAsText self
+  = liftIO (fromJSString <$> (js_repaintRectsAsText (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"garbageCollectDocumentResources\"]()"
+        js_garbageCollectDocumentResources :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.garbageCollectDocumentResources Mozilla Internals.garbageCollectDocumentResources documentation> 
+garbageCollectDocumentResources :: (MonadIO m) => Internals -> m ()
+garbageCollectDocumentResources self
+  = liftIO (js_garbageCollectDocumentResources (self))
+ 
+foreign import javascript unsafe "$1[\"allowRoundingHacks\"]()"
+        js_allowRoundingHacks :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.allowRoundingHacks Mozilla Internals.allowRoundingHacks documentation> 
+allowRoundingHacks :: (MonadIO m) => Internals -> m ()
+allowRoundingHacks self = liftIO (js_allowRoundingHacks (self))
+ 
+foreign import javascript unsafe "$1[\"insertAuthorCSS\"]($2)"
+        js_insertAuthorCSS :: Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.insertAuthorCSS Mozilla Internals.insertAuthorCSS documentation> 
+insertAuthorCSS ::
+                (MonadIO m, ToJSString css) => Internals -> css -> m ()
+insertAuthorCSS self css
+  = liftIO (js_insertAuthorCSS (self) (toJSString css))
+ 
+foreign import javascript unsafe "$1[\"insertUserCSS\"]($2)"
+        js_insertUserCSS :: Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.insertUserCSS Mozilla Internals.insertUserCSS documentation> 
+insertUserCSS ::
+              (MonadIO m, ToJSString css) => Internals -> css -> m ()
+insertUserCSS self css
+  = liftIO (js_insertUserCSS (self) (toJSString css))
+ 
+foreign import javascript unsafe
+        "$1[\"setBatteryStatus\"]($2, $3,\n$4, $5, $6)" js_setBatteryStatus
+        ::
+        Internals ->
+          JSString -> Bool -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setBatteryStatus Mozilla Internals.setBatteryStatus documentation> 
+setBatteryStatus ::
+                 (MonadIO m, ToJSString eventType) =>
+                   Internals ->
+                     eventType -> Bool -> Double -> Double -> Double -> m ()
+setBatteryStatus self eventType charging chargingTime
+  dischargingTime level
+  = liftIO
+      (js_setBatteryStatus (self) (toJSString eventType) charging
+         chargingTime
+         dischargingTime
+         level)
+ 
+foreign import javascript unsafe
+        "$1[\"setDeviceProximity\"]($2, $3,\n$4, $5)" js_setDeviceProximity
+        :: Internals -> JSString -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setDeviceProximity Mozilla Internals.setDeviceProximity documentation> 
+setDeviceProximity ::
+                   (MonadIO m, ToJSString eventType) =>
+                     Internals -> eventType -> Double -> Double -> Double -> m ()
+setDeviceProximity self eventType value min max
+  = liftIO
+      (js_setDeviceProximity (self) (toJSString eventType) value min max)
+ 
+foreign import javascript unsafe "$1[\"numberOfLiveNodes\"]()"
+        js_numberOfLiveNodes :: Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfLiveNodes Mozilla Internals.numberOfLiveNodes documentation> 
+numberOfLiveNodes :: (MonadIO m) => Internals -> m Word
+numberOfLiveNodes self = liftIO (js_numberOfLiveNodes (self))
+ 
+foreign import javascript unsafe "$1[\"numberOfLiveDocuments\"]()"
+        js_numberOfLiveDocuments :: Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfLiveDocuments Mozilla Internals.numberOfLiveDocuments documentation> 
+numberOfLiveDocuments :: (MonadIO m) => Internals -> m Word
+numberOfLiveDocuments self
+  = liftIO (js_numberOfLiveDocuments (self))
+ 
+foreign import javascript unsafe
+        "$1[\"consoleMessageArgumentCounts\"]()"
+        js_consoleMessageArgumentCounts :: Internals -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.consoleMessageArgumentCounts Mozilla Internals.consoleMessageArgumentCounts documentation> 
+consoleMessageArgumentCounts ::
+                             (MonadIO m, FromJSString result) => Internals -> m [result]
+consoleMessageArgumentCounts self
+  = liftIO
+      ((js_consoleMessageArgumentCounts (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"openDummyInspectorFrontend\"]($2)"
+        js_openDummyInspectorFrontend ::
+        Internals -> JSString -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.openDummyInspectorFrontend Mozilla Internals.openDummyInspectorFrontend documentation> 
+openDummyInspectorFrontend ::
+                           (MonadIO m, ToJSString url) => Internals -> url -> m (Maybe Window)
+openDummyInspectorFrontend self url
+  = liftIO
+      (nullableToMaybe <$>
+         (js_openDummyInspectorFrontend (self) (toJSString url)))
+ 
+foreign import javascript unsafe
+        "$1[\"closeDummyInspectorFrontend\"]()"
+        js_closeDummyInspectorFrontend :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.closeDummyInspectorFrontend Mozilla Internals.closeDummyInspectorFrontend documentation> 
+closeDummyInspectorFrontend :: (MonadIO m) => Internals -> m ()
+closeDummyInspectorFrontend self
+  = liftIO (js_closeDummyInspectorFrontend (self))
+ 
+foreign import javascript unsafe
+        "$1[\"setJavaScriptProfilingEnabled\"]($2)"
+        js_setJavaScriptProfilingEnabled :: Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setJavaScriptProfilingEnabled Mozilla Internals.setJavaScriptProfilingEnabled documentation> 
+setJavaScriptProfilingEnabled ::
+                              (MonadIO m) => Internals -> Bool -> m ()
+setJavaScriptProfilingEnabled self creates
+  = liftIO (js_setJavaScriptProfilingEnabled (self) creates)
+ 
+foreign import javascript unsafe
+        "$1[\"setInspectorIsUnderTest\"]($2)" js_setInspectorIsUnderTest ::
+        Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setInspectorIsUnderTest Mozilla Internals.setInspectorIsUnderTest documentation> 
+setInspectorIsUnderTest :: (MonadIO m) => Internals -> Bool -> m ()
+setInspectorIsUnderTest self isUnderTest
+  = liftIO (js_setInspectorIsUnderTest (self) isUnderTest)
+ 
+foreign import javascript unsafe "$1[\"counterValue\"]($2)"
+        js_counterValue :: Internals -> Nullable Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.counterValue Mozilla Internals.counterValue documentation> 
+counterValue ::
+             (MonadIO m, IsElement element, FromJSString result) =>
+               Internals -> Maybe element -> m result
+counterValue self element
+  = liftIO
+      (fromJSString <$>
+         (js_counterValue (self)
+            (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe "$1[\"pageNumber\"]($2, $3, $4)"
+        js_pageNumber ::
+        Internals -> Nullable Element -> Float -> Float -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageNumber Mozilla Internals.pageNumber documentation> 
+pageNumber ::
+           (MonadIO m, IsElement element) =>
+             Internals -> Maybe element -> Float -> Float -> m Int
+pageNumber self element pageWidth pageHeight
+  = liftIO
+      (js_pageNumber (self) (maybeToNullable (fmap toElement element))
+         pageWidth
+         pageHeight)
+ 
+foreign import javascript unsafe "$1[\"shortcutIconURLs\"]()"
+        js_shortcutIconURLs :: Internals -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shortcutIconURLs Mozilla Internals.shortcutIconURLs documentation> 
+shortcutIconURLs ::
+                 (MonadIO m, FromJSString result) => Internals -> m [result]
+shortcutIconURLs self
+  = liftIO ((js_shortcutIconURLs (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"allIconURLs\"]()"
+        js_allIconURLs :: Internals -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.allIconURLs Mozilla Internals.allIconURLs documentation> 
+allIconURLs ::
+            (MonadIO m, FromJSString result) => Internals -> m [result]
+allIconURLs self
+  = liftIO ((js_allIconURLs (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"numberOfPages\"]($2, $3)"
+        js_numberOfPages :: Internals -> Double -> Double -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.numberOfPages Mozilla Internals.numberOfPages documentation> 
+numberOfPages ::
+              (MonadIO m) => Internals -> Double -> Double -> m Int
+numberOfPages self pageWidthInPixels pageHeightInPixels
+  = liftIO
+      (js_numberOfPages (self) pageWidthInPixels pageHeightInPixels)
+ 
+foreign import javascript unsafe "$1[\"pageProperty\"]($2, $3)"
+        js_pageProperty :: Internals -> JSString -> Int -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageProperty Mozilla Internals.pageProperty documentation> 
+pageProperty ::
+             (MonadIO m, ToJSString propertyName, FromJSString result) =>
+               Internals -> propertyName -> Int -> m result
+pageProperty self propertyName pageNumber
+  = liftIO
+      (fromJSString <$>
+         (js_pageProperty (self) (toJSString propertyName) pageNumber))
+ 
+foreign import javascript unsafe
+        "$1[\"pageSizeAndMarginsInPixels\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_pageSizeAndMarginsInPixels ::
+        Internals ->
+          Int -> Int -> Int -> Int -> Int -> Int -> Int -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageSizeAndMarginsInPixels Mozilla Internals.pageSizeAndMarginsInPixels documentation> 
+pageSizeAndMarginsInPixels ::
+                           (MonadIO m, FromJSString result) =>
+                             Internals ->
+                               Int -> Int -> Int -> Int -> Int -> Int -> Int -> m result
+pageSizeAndMarginsInPixels self pageIndex width height marginTop
+  marginRight marginBottom marginLeft
+  = liftIO
+      (fromJSString <$>
+         (js_pageSizeAndMarginsInPixels (self) pageIndex width height
+            marginTop
+            marginRight
+            marginBottom
+            marginLeft))
+ 
+foreign import javascript unsafe
+        "$1[\"setPageScaleFactor\"]($2, $3,\n$4)" js_setPageScaleFactor ::
+        Internals -> Float -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPageScaleFactor Mozilla Internals.setPageScaleFactor documentation> 
+setPageScaleFactor ::
+                   (MonadIO m) => Internals -> Float -> Int -> Int -> m ()
+setPageScaleFactor self scaleFactor x y
+  = liftIO (js_setPageScaleFactor (self) scaleFactor x y)
+ 
+foreign import javascript unsafe "$1[\"setPageZoomFactor\"]($2)"
+        js_setPageZoomFactor :: Internals -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPageZoomFactor Mozilla Internals.setPageZoomFactor documentation> 
+setPageZoomFactor :: (MonadIO m) => Internals -> Float -> m ()
+setPageZoomFactor self zoomFactor
+  = liftIO (js_setPageZoomFactor (self) zoomFactor)
+ 
+foreign import javascript unsafe "$1[\"setHeaderHeight\"]($2)"
+        js_setHeaderHeight :: Internals -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setHeaderHeight Mozilla Internals.setHeaderHeight documentation> 
+setHeaderHeight :: (MonadIO m) => Internals -> Float -> m ()
+setHeaderHeight self height
+  = liftIO (js_setHeaderHeight (self) height)
+ 
+foreign import javascript unsafe "$1[\"setFooterHeight\"]($2)"
+        js_setFooterHeight :: Internals -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setFooterHeight Mozilla Internals.setFooterHeight documentation> 
+setFooterHeight :: (MonadIO m) => Internals -> Float -> m ()
+setFooterHeight self height
+  = liftIO (js_setFooterHeight (self) height)
+ 
+foreign import javascript unsafe "$1[\"setTopContentInset\"]($2)"
+        js_setTopContentInset :: Internals -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setTopContentInset Mozilla Internals.setTopContentInset documentation> 
+setTopContentInset :: (MonadIO m) => Internals -> Float -> m ()
+setTopContentInset self contentInset
+  = liftIO (js_setTopContentInset (self) contentInset)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitWillEnterFullScreenForElement\"]($2)"
+        js_webkitWillEnterFullScreenForElement ::
+        Internals -> Nullable Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.webkitWillEnterFullScreenForElement Mozilla Internals.webkitWillEnterFullScreenForElement documentation> 
+webkitWillEnterFullScreenForElement ::
+                                    (MonadIO m, IsElement element) =>
+                                      Internals -> Maybe element -> m ()
+webkitWillEnterFullScreenForElement self element
+  = liftIO
+      (js_webkitWillEnterFullScreenForElement (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitDidEnterFullScreenForElement\"]($2)"
+        js_webkitDidEnterFullScreenForElement ::
+        Internals -> Nullable Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.webkitDidEnterFullScreenForElement Mozilla Internals.webkitDidEnterFullScreenForElement documentation> 
+webkitDidEnterFullScreenForElement ::
+                                   (MonadIO m, IsElement element) =>
+                                     Internals -> Maybe element -> m ()
+webkitDidEnterFullScreenForElement self element
+  = liftIO
+      (js_webkitDidEnterFullScreenForElement (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitWillExitFullScreenForElement\"]($2)"
+        js_webkitWillExitFullScreenForElement ::
+        Internals -> Nullable Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.webkitWillExitFullScreenForElement Mozilla Internals.webkitWillExitFullScreenForElement documentation> 
+webkitWillExitFullScreenForElement ::
+                                   (MonadIO m, IsElement element) =>
+                                     Internals -> Maybe element -> m ()
+webkitWillExitFullScreenForElement self element
+  = liftIO
+      (js_webkitWillExitFullScreenForElement (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitDidExitFullScreenForElement\"]($2)"
+        js_webkitDidExitFullScreenForElement ::
+        Internals -> Nullable Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.webkitDidExitFullScreenForElement Mozilla Internals.webkitDidExitFullScreenForElement documentation> 
+webkitDidExitFullScreenForElement ::
+                                  (MonadIO m, IsElement element) =>
+                                    Internals -> Maybe element -> m ()
+webkitDidExitFullScreenForElement self element
+  = liftIO
+      (js_webkitDidExitFullScreenForElement (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "$1[\"setApplicationCacheOriginQuota\"]($2)"
+        js_setApplicationCacheOriginQuota :: Internals -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setApplicationCacheOriginQuota Mozilla Internals.setApplicationCacheOriginQuota documentation> 
+setApplicationCacheOriginQuota ::
+                               (MonadIO m) => Internals -> Word64 -> m ()
+setApplicationCacheOriginQuota self quota
+  = liftIO
+      (js_setApplicationCacheOriginQuota (self) (fromIntegral quota))
+ 
+foreign import javascript unsafe
+        "$1[\"registerURLSchemeAsBypassingContentSecurityPolicy\"]($2)"
+        js_registerURLSchemeAsBypassingContentSecurityPolicy ::
+        Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.registerURLSchemeAsBypassingContentSecurityPolicy Mozilla Internals.registerURLSchemeAsBypassingContentSecurityPolicy documentation> 
+registerURLSchemeAsBypassingContentSecurityPolicy ::
+                                                  (MonadIO m, ToJSString scheme) =>
+                                                    Internals -> scheme -> m ()
+registerURLSchemeAsBypassingContentSecurityPolicy self scheme
+  = liftIO
+      (js_registerURLSchemeAsBypassingContentSecurityPolicy (self)
+         (toJSString scheme))
+ 
+foreign import javascript unsafe
+        "$1[\"removeURLSchemeRegisteredAsBypassingContentSecurityPolicy\"]($2)"
+        js_removeURLSchemeRegisteredAsBypassingContentSecurityPolicy ::
+        Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.removeURLSchemeRegisteredAsBypassingContentSecurityPolicy Mozilla Internals.removeURLSchemeRegisteredAsBypassingContentSecurityPolicy documentation> 
+removeURLSchemeRegisteredAsBypassingContentSecurityPolicy ::
+                                                          (MonadIO m, ToJSString scheme) =>
+                                                            Internals -> scheme -> m ()
+removeURLSchemeRegisteredAsBypassingContentSecurityPolicy self
+  scheme
+  = liftIO
+      (js_removeURLSchemeRegisteredAsBypassingContentSecurityPolicy
+         (self)
+         (toJSString scheme))
+ 
+foreign import javascript unsafe "$1[\"mallocStatistics\"]()"
+        js_mallocStatistics :: Internals -> IO (Nullable MallocStatistics)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.mallocStatistics Mozilla Internals.mallocStatistics documentation> 
+mallocStatistics ::
+                 (MonadIO m) => Internals -> m (Maybe MallocStatistics)
+mallocStatistics self
+  = liftIO (nullableToMaybe <$> (js_mallocStatistics (self)))
+ 
+foreign import javascript unsafe "$1[\"typeConversions\"]()"
+        js_typeConversions :: Internals -> IO (Nullable TypeConversions)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.typeConversions Mozilla Internals.typeConversions documentation> 
+typeConversions ::
+                (MonadIO m) => Internals -> m (Maybe TypeConversions)
+typeConversions self
+  = liftIO (nullableToMaybe <$> (js_typeConversions (self)))
+ 
+foreign import javascript unsafe "$1[\"memoryInfo\"]()"
+        js_memoryInfo :: Internals -> IO (Nullable MemoryInfo)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.memoryInfo Mozilla Internals.memoryInfo documentation> 
+memoryInfo :: (MonadIO m) => Internals -> m (Maybe MemoryInfo)
+memoryInfo self
+  = liftIO (nullableToMaybe <$> (js_memoryInfo (self)))
+ 
+foreign import javascript unsafe "$1[\"getReferencedFilePaths\"]()"
+        js_getReferencedFilePaths :: Internals -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.getReferencedFilePaths Mozilla Internals.getReferencedFilePaths documentation> 
+getReferencedFilePaths ::
+                       (MonadIO m, FromJSString result) => Internals -> m [result]
+getReferencedFilePaths self
+  = liftIO
+      ((js_getReferencedFilePaths (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"startTrackingRepaints\"]()"
+        js_startTrackingRepaints :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.startTrackingRepaints Mozilla Internals.startTrackingRepaints documentation> 
+startTrackingRepaints :: (MonadIO m) => Internals -> m ()
+startTrackingRepaints self
+  = liftIO (js_startTrackingRepaints (self))
+ 
+foreign import javascript unsafe "$1[\"stopTrackingRepaints\"]()"
+        js_stopTrackingRepaints :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.stopTrackingRepaints Mozilla Internals.stopTrackingRepaints documentation> 
+stopTrackingRepaints :: (MonadIO m) => Internals -> m ()
+stopTrackingRepaints self = liftIO (js_stopTrackingRepaints (self))
+ 
+foreign import javascript unsafe
+        "($1[\"isTimerThrottled\"]($2) ? 1 : 0)" js_isTimerThrottled ::
+        Internals -> Int -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isTimerThrottled Mozilla Internals.isTimerThrottled documentation> 
+isTimerThrottled :: (MonadIO m) => Internals -> Int -> m Bool
+isTimerThrottled self timerHandle
+  = liftIO (js_isTimerThrottled (self) timerHandle)
+ 
+foreign import javascript unsafe
+        "$1[\"updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks\"]($2)"
+        js_updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks ::
+        Internals -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks Mozilla Internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks documentation> 
+updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks ::
+                                                          (MonadIO m, IsNode node) =>
+                                                            Internals -> Maybe node -> m ()
+updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks self node
+  = liftIO
+      (js_updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks
+         (self)
+         (maybeToNullable (fmap toNode node)))
+ 
+foreign import javascript unsafe "$1[\"getCurrentCursorInfo\"]()"
+        js_getCurrentCursorInfo :: Internals -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.getCurrentCursorInfo Mozilla Internals.getCurrentCursorInfo documentation> 
+getCurrentCursorInfo ::
+                     (MonadIO m, FromJSString result) => Internals -> m result
+getCurrentCursorInfo self
+  = liftIO (fromJSString <$> (js_getCurrentCursorInfo (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"markerTextForListItem\"]($2)" js_markerTextForListItem ::
+        Internals -> Nullable Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerTextForListItem Mozilla Internals.markerTextForListItem documentation> 
+markerTextForListItem ::
+                      (MonadIO m, IsElement element, FromJSString result) =>
+                        Internals -> Maybe element -> m result
+markerTextForListItem self element
+  = liftIO
+      (fromJSString <$>
+         (js_markerTextForListItem (self)
+            (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe "$1[\"toolTipFromElement\"]($2)"
+        js_toolTipFromElement ::
+        Internals -> Nullable Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.toolTipFromElement Mozilla Internals.toolTipFromElement documentation> 
+toolTipFromElement ::
+                   (MonadIO m, IsElement element, FromJSString result) =>
+                     Internals -> Maybe element -> m result
+toolTipFromElement self element
+  = liftIO
+      (fromJSString <$>
+         (js_toolTipFromElement (self)
+            (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe "$1[\"deserializeBuffer\"]($2)"
+        js_deserializeBuffer ::
+        Internals ->
+          Nullable ArrayBuffer -> IO (Nullable SerializedScriptValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.deserializeBuffer Mozilla Internals.deserializeBuffer documentation> 
+deserializeBuffer ::
+                  (MonadIO m, IsArrayBuffer buffer) =>
+                    Internals -> Maybe buffer -> m (Maybe SerializedScriptValue)
+deserializeBuffer self buffer
+  = liftIO
+      (nullableToMaybe <$>
+         (js_deserializeBuffer (self)
+            (maybeToNullable (fmap toArrayBuffer buffer))))
+ 
+foreign import javascript unsafe "$1[\"serializeObject\"]($2)"
+        js_serializeObject ::
+        Internals ->
+          Nullable SerializedScriptValue -> IO (Nullable ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.serializeObject Mozilla Internals.serializeObject documentation> 
+serializeObject ::
+                (MonadIO m, IsSerializedScriptValue obj) =>
+                  Internals -> Maybe obj -> m (Maybe ArrayBuffer)
+serializeObject self obj
+  = liftIO
+      (nullableToMaybe <$>
+         (js_serializeObject (self)
+            (maybeToNullable (fmap toSerializedScriptValue obj))))
+ 
+foreign import javascript unsafe
+        "$1[\"setUsesOverlayScrollbars\"]($2)" js_setUsesOverlayScrollbars
+        :: Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setUsesOverlayScrollbars Mozilla Internals.setUsesOverlayScrollbars documentation> 
+setUsesOverlayScrollbars ::
+                         (MonadIO m) => Internals -> Bool -> m ()
+setUsesOverlayScrollbars self enabled
+  = liftIO (js_setUsesOverlayScrollbars (self) enabled)
+ 
+foreign import javascript unsafe "$1[\"forceReload\"]($2)"
+        js_forceReload :: Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.forceReload Mozilla Internals.forceReload documentation> 
+forceReload :: (MonadIO m) => Internals -> Bool -> m ()
+forceReload self endToEnd = liftIO (js_forceReload (self) endToEnd)
+ 
+foreign import javascript unsafe
+        "$1[\"simulateAudioInterruption\"]($2)"
+        js_simulateAudioInterruption :: Internals -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.simulateAudioInterruption Mozilla Internals.simulateAudioInterruption documentation> 
+simulateAudioInterruption ::
+                          (MonadIO m, IsNode node) => Internals -> Maybe node -> m ()
+simulateAudioInterruption self node
+  = liftIO
+      (js_simulateAudioInterruption (self)
+         (maybeToNullable (fmap toNode node)))
+ 
+foreign import javascript unsafe
+        "($1[\"mediaElementHasCharacteristic\"]($2,\n$3) ? 1 : 0)"
+        js_mediaElementHasCharacteristic ::
+        Internals -> Nullable Node -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.mediaElementHasCharacteristic Mozilla Internals.mediaElementHasCharacteristic documentation> 
+mediaElementHasCharacteristic ::
+                              (MonadIO m, IsNode node, ToJSString characteristic) =>
+                                Internals -> Maybe node -> characteristic -> m Bool
+mediaElementHasCharacteristic self node characteristic
+  = liftIO
+      (js_mediaElementHasCharacteristic (self)
+         (maybeToNullable (fmap toNode node))
+         (toJSString characteristic))
+ 
+foreign import javascript unsafe "$1[\"initializeMockCDM\"]()"
+        js_initializeMockCDM :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.initializeMockCDM Mozilla Internals.initializeMockCDM documentation> 
+initializeMockCDM :: (MonadIO m) => Internals -> m ()
+initializeMockCDM self = liftIO (js_initializeMockCDM (self))
+ 
+foreign import javascript unsafe
+        "$1[\"enableMockSpeechSynthesizer\"]()"
+        js_enableMockSpeechSynthesizer :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.enableMockSpeechSynthesizer Mozilla Internals.enableMockSpeechSynthesizer documentation> 
+enableMockSpeechSynthesizer :: (MonadIO m) => Internals -> m ()
+enableMockSpeechSynthesizer self
+  = liftIO (js_enableMockSpeechSynthesizer (self))
+ 
+foreign import javascript unsafe "$1[\"getImageSourceURL\"]($2)"
+        js_getImageSourceURL ::
+        Internals -> Nullable Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.getImageSourceURL Mozilla Internals.getImageSourceURL documentation> 
+getImageSourceURL ::
+                  (MonadIO m, IsElement element, FromJSString result) =>
+                    Internals -> Maybe element -> m result
+getImageSourceURL self element
+  = liftIO
+      (fromJSString <$>
+         (js_getImageSourceURL (self)
+            (maybeToNullable (fmap toElement element))))
+ 
+foreign import javascript unsafe
+        "$1[\"captionsStyleSheetOverride\"]()"
+        js_captionsStyleSheetOverride :: Internals -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.captionsStyleSheetOverride Mozilla Internals.captionsStyleSheetOverride documentation> 
+captionsStyleSheetOverride ::
+                           (MonadIO m, FromJSString result) => Internals -> m result
+captionsStyleSheetOverride self
+  = liftIO (fromJSString <$> (js_captionsStyleSheetOverride (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"setCaptionsStyleSheetOverride\"]($2)"
+        js_setCaptionsStyleSheetOverride :: Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setCaptionsStyleSheetOverride Mozilla Internals.setCaptionsStyleSheetOverride documentation> 
+setCaptionsStyleSheetOverride ::
+                              (MonadIO m, ToJSString override) => Internals -> override -> m ()
+setCaptionsStyleSheetOverride self override
+  = liftIO
+      (js_setCaptionsStyleSheetOverride (self) (toJSString override))
+ 
+foreign import javascript unsafe
+        "$1[\"setPrimaryAudioTrackLanguageOverride\"]($2)"
+        js_setPrimaryAudioTrackLanguageOverride ::
+        Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPrimaryAudioTrackLanguageOverride Mozilla Internals.setPrimaryAudioTrackLanguageOverride documentation> 
+setPrimaryAudioTrackLanguageOverride ::
+                                     (MonadIO m, ToJSString language) =>
+                                       Internals -> language -> m ()
+setPrimaryAudioTrackLanguageOverride self language
+  = liftIO
+      (js_setPrimaryAudioTrackLanguageOverride (self)
+         (toJSString language))
+ 
+foreign import javascript unsafe
+        "$1[\"setCaptionDisplayMode\"]($2)" js_setCaptionDisplayMode ::
+        Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setCaptionDisplayMode Mozilla Internals.setCaptionDisplayMode documentation> 
+setCaptionDisplayMode ::
+                      (MonadIO m, ToJSString mode) => Internals -> mode -> m ()
+setCaptionDisplayMode self mode
+  = liftIO (js_setCaptionDisplayMode (self) (toJSString mode))
+ 
+foreign import javascript unsafe "$1[\"createTimeRanges\"]($2, $3)"
+        js_createTimeRanges ::
+        Internals ->
+          Nullable Float32Array ->
+            Nullable Float32Array -> IO (Nullable TimeRanges)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.createTimeRanges Mozilla Internals.createTimeRanges documentation> 
+createTimeRanges ::
+                 (MonadIO m, IsFloat32Array startTimes, IsFloat32Array endTimes) =>
+                   Internals ->
+                     Maybe startTimes -> Maybe endTimes -> m (Maybe TimeRanges)
+createTimeRanges self startTimes endTimes
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createTimeRanges (self)
+            (maybeToNullable (fmap toFloat32Array startTimes))
+            (maybeToNullable (fmap toFloat32Array endTimes))))
+ 
+foreign import javascript unsafe
+        "$1[\"closestTimeToTimeRanges\"]($2,\n$3)"
+        js_closestTimeToTimeRanges ::
+        Internals -> Double -> Nullable TimeRanges -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.closestTimeToTimeRanges Mozilla Internals.closestTimeToTimeRanges documentation> 
+closestTimeToTimeRanges ::
+                        (MonadIO m) => Internals -> Double -> Maybe TimeRanges -> m Double
+closestTimeToTimeRanges self time ranges
+  = liftIO
+      (js_closestTimeToTimeRanges (self) time (maybeToNullable ranges))
+ 
+foreign import javascript unsafe
+        "($1[\"isSelectPopupVisible\"]($2) ? 1 : 0)"
+        js_isSelectPopupVisible :: Internals -> Nullable Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isSelectPopupVisible Mozilla Internals.isSelectPopupVisible documentation> 
+isSelectPopupVisible ::
+                     (MonadIO m, IsNode node) => Internals -> Maybe node -> m Bool
+isSelectPopupVisible self node
+  = liftIO
+      (js_isSelectPopupVisible (self)
+         (maybeToNullable (fmap toNode node)))
+ 
+foreign import javascript unsafe "($1[\"isVibrating\"]() ? 1 : 0)"
+        js_isVibrating :: Internals -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isVibrating Mozilla Internals.isVibrating documentation> 
+isVibrating :: (MonadIO m) => Internals -> m Bool
+isVibrating self = liftIO (js_isVibrating (self))
+ 
+foreign import javascript unsafe
+        "($1[\"isPluginUnavailabilityIndicatorObscured\"]($2) ? 1 : 0)"
+        js_isPluginUnavailabilityIndicatorObscured ::
+        Internals -> Nullable Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPluginUnavailabilityIndicatorObscured Mozilla Internals.isPluginUnavailabilityIndicatorObscured documentation> 
+isPluginUnavailabilityIndicatorObscured ::
+                                        (MonadIO m, IsElement element) =>
+                                          Internals -> Maybe element -> m Bool
+isPluginUnavailabilityIndicatorObscured self element
+  = liftIO
+      (js_isPluginUnavailabilityIndicatorObscured (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "($1[\"isPluginSnapshotted\"]($2) ? 1 : 0)" js_isPluginSnapshotted
+        :: Internals -> Nullable Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPluginSnapshotted Mozilla Internals.isPluginSnapshotted documentation> 
+isPluginSnapshotted ::
+                    (MonadIO m, IsElement element) =>
+                      Internals -> Maybe element -> m Bool
+isPluginSnapshotted self element
+  = liftIO
+      (js_isPluginSnapshotted (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe "$1[\"selectionBounds\"]()"
+        js_selectionBounds :: Internals -> IO (Nullable ClientRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.selectionBounds Mozilla Internals.selectionBounds documentation> 
+selectionBounds :: (MonadIO m) => Internals -> m (Maybe ClientRect)
+selectionBounds self
+  = liftIO (nullableToMaybe <$> (js_selectionBounds (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"initializeMockMediaSource\"]()" js_initializeMockMediaSource
+        :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.initializeMockMediaSource Mozilla Internals.initializeMockMediaSource documentation> 
+initializeMockMediaSource :: (MonadIO m) => Internals -> m ()
+initializeMockMediaSource self
+  = liftIO (js_initializeMockMediaSource (self))
+ 
+foreign import javascript unsafe
+        "$1[\"bufferedSamplesForTrackID\"]($2,\n$3)"
+        js_bufferedSamplesForTrackID ::
+        Internals -> Nullable SourceBuffer -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.bufferedSamplesForTrackID Mozilla Internals.bufferedSamplesForTrackID documentation> 
+bufferedSamplesForTrackID ::
+                          (MonadIO m, ToJSString trackID, FromJSString result) =>
+                            Internals -> Maybe SourceBuffer -> trackID -> m [result]
+bufferedSamplesForTrackID self buffer trackID
+  = liftIO
+      ((js_bufferedSamplesForTrackID (self) (maybeToNullable buffer)
+          (toJSString trackID))
+         >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"beginMediaSessionInterruption\"]()"
+        js_beginMediaSessionInterruption :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.beginMediaSessionInterruption Mozilla Internals.beginMediaSessionInterruption documentation> 
+beginMediaSessionInterruption :: (MonadIO m) => Internals -> m ()
+beginMediaSessionInterruption self
+  = liftIO (js_beginMediaSessionInterruption (self))
+ 
+foreign import javascript unsafe
+        "$1[\"endMediaSessionInterruption\"]($2)"
+        js_endMediaSessionInterruption :: Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.endMediaSessionInterruption Mozilla Internals.endMediaSessionInterruption documentation> 
+endMediaSessionInterruption ::
+                            (MonadIO m, ToJSString flags) => Internals -> flags -> m ()
+endMediaSessionInterruption self flags
+  = liftIO (js_endMediaSessionInterruption (self) (toJSString flags))
+ 
+foreign import javascript unsafe
+        "$1[\"applicationWillEnterForeground\"]()"
+        js_applicationWillEnterForeground :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.applicationWillEnterForeground Mozilla Internals.applicationWillEnterForeground documentation> 
+applicationWillEnterForeground :: (MonadIO m) => Internals -> m ()
+applicationWillEnterForeground self
+  = liftIO (js_applicationWillEnterForeground (self))
+ 
+foreign import javascript unsafe
+        "$1[\"applicationWillEnterBackground\"]()"
+        js_applicationWillEnterBackground :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.applicationWillEnterBackground Mozilla Internals.applicationWillEnterBackground documentation> 
+applicationWillEnterBackground :: (MonadIO m) => Internals -> m ()
+applicationWillEnterBackground self
+  = liftIO (js_applicationWillEnterBackground (self))
+ 
+foreign import javascript unsafe
+        "$1[\"setMediaSessionRestrictions\"]($2,\n$3)"
+        js_setMediaSessionRestrictions ::
+        Internals -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setMediaSessionRestrictions Mozilla Internals.setMediaSessionRestrictions documentation> 
+setMediaSessionRestrictions ::
+                            (MonadIO m, ToJSString mediaType, ToJSString restrictions) =>
+                              Internals -> mediaType -> restrictions -> m ()
+setMediaSessionRestrictions self mediaType restrictions
+  = liftIO
+      (js_setMediaSessionRestrictions (self) (toJSString mediaType)
+         (toJSString restrictions))
+ 
+foreign import javascript unsafe
+        "$1[\"postRemoteControlCommand\"]($2)" js_postRemoteControlCommand
+        :: Internals -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.postRemoteControlCommand Mozilla Internals.postRemoteControlCommand documentation> 
+postRemoteControlCommand ::
+                         (MonadIO m, ToJSString command) => Internals -> command -> m ()
+postRemoteControlCommand self command
+  = liftIO (js_postRemoteControlCommand (self) (toJSString command))
+ 
+foreign import javascript unsafe "$1[\"simulateSystemSleep\"]()"
+        js_simulateSystemSleep :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.simulateSystemSleep Mozilla Internals.simulateSystemSleep documentation> 
+simulateSystemSleep :: (MonadIO m) => Internals -> m ()
+simulateSystemSleep self = liftIO (js_simulateSystemSleep (self))
+ 
+foreign import javascript unsafe "$1[\"simulateSystemWake\"]()"
+        js_simulateSystemWake :: Internals -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.simulateSystemWake Mozilla Internals.simulateSystemWake documentation> 
+simulateSystemWake :: (MonadIO m) => Internals -> m ()
+simulateSystemWake self = liftIO (js_simulateSystemWake (self))
+ 
+foreign import javascript unsafe
+        "($1[\"elementIsBlockingDisplaySleep\"]($2) ? 1 : 0)"
+        js_elementIsBlockingDisplaySleep ::
+        Internals -> Nullable Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.elementIsBlockingDisplaySleep Mozilla Internals.elementIsBlockingDisplaySleep documentation> 
+elementIsBlockingDisplaySleep ::
+                              (MonadIO m, IsElement element) =>
+                                Internals -> Maybe element -> m Bool
+elementIsBlockingDisplaySleep self element
+  = liftIO
+      (js_elementIsBlockingDisplaySleep (self)
+         (maybeToNullable (fmap toElement element)))
+ 
+foreign import javascript unsafe
+        "$1[\"installMockPageOverlay\"]($2)" js_installMockPageOverlay ::
+        Internals -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.installMockPageOverlay Mozilla Internals.installMockPageOverlay documentation> 
+installMockPageOverlay ::
+                       (MonadIO m) => Internals -> PageOverlayType -> m ()
+installMockPageOverlay self type'
+  = liftIO (js_installMockPageOverlay (self) (pToJSVal type'))
+ 
+foreign import javascript unsafe
+        "$1[\"pageOverlayLayerTreeAsText\"]()"
+        js_pageOverlayLayerTreeAsText :: Internals -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.pageOverlayLayerTreeAsText Mozilla Internals.pageOverlayLayerTreeAsText documentation> 
+pageOverlayLayerTreeAsText ::
+                           (MonadIO m, FromJSString result) => Internals -> m result
+pageOverlayLayerTreeAsText self
+  = liftIO (fromJSString <$> (js_pageOverlayLayerTreeAsText (self)))
+ 
+foreign import javascript unsafe "$1[\"setPageMuted\"]($2)"
+        js_setPageMuted :: Internals -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.setPageMuted Mozilla Internals.setPageMuted documentation> 
+setPageMuted :: (MonadIO m) => Internals -> Bool -> m ()
+setPageMuted self muted = liftIO (js_setPageMuted (self) muted)
+ 
+foreign import javascript unsafe
+        "($1[\"isPagePlayingAudio\"]() ? 1 : 0)" js_isPagePlayingAudio ::
+        Internals -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.isPagePlayingAudio Mozilla Internals.isPagePlayingAudio documentation> 
+isPagePlayingAudio :: (MonadIO m) => Internals -> m Bool
+isPagePlayingAudio self = liftIO (js_isPagePlayingAudio (self))
+pattern LAYER_TREE_INCLUDES_VISIBLE_RECTS = 1
+pattern LAYER_TREE_INCLUDES_TILE_CACHES = 2
+pattern LAYER_TREE_INCLUDES_REPAINT_RECTS = 4
+pattern LAYER_TREE_INCLUDES_PAINTING_PHASES = 8
+pattern LAYER_TREE_INCLUDES_CONTENT_LAYERS = 16
+ 
+foreign import javascript unsafe "$1[\"settings\"]" js_getSettings
+        :: Internals -> IO (Nullable InternalSettings)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.settings Mozilla Internals.settings documentation> 
+getSettings ::
+            (MonadIO m) => Internals -> m (Maybe InternalSettings)
+getSettings self
+  = liftIO (nullableToMaybe <$> (js_getSettings (self)))
+ 
+foreign import javascript unsafe "$1[\"workerThreadCount\"]"
+        js_getWorkerThreadCount :: Internals -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.workerThreadCount Mozilla Internals.workerThreadCount documentation> 
+getWorkerThreadCount :: (MonadIO m) => Internals -> m Word
+getWorkerThreadCount self = liftIO (js_getWorkerThreadCount (self))
+ 
+foreign import javascript unsafe "$1[\"consoleProfiles\"]"
+        js_getConsoleProfiles :: Internals -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.consoleProfiles Mozilla Internals.consoleProfiles documentation> 
+getConsoleProfiles ::
+                   (MonadIO m) => Internals -> m [Maybe ScriptProfile]
+getConsoleProfiles self
+  = liftIO ((js_getConsoleProfiles (self)) >>= fromJSValUnchecked)
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,121 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.KeyboardEvent
+       (js_initKeyboardEvent, initKeyboardEvent,
+        pattern DOM_KEY_LOCATION_STANDARD, pattern DOM_KEY_LOCATION_LEFT,
+        pattern DOM_KEY_LOCATION_RIGHT, pattern DOM_KEY_LOCATION_NUMPAD,
+        js_getKeyIdentifier, getKeyIdentifier, js_getLocation, getLocation,
+        js_getKeyLocation, getKeyLocation, js_getCtrlKey, getCtrlKey,
+        js_getShiftKey, getShiftKey, js_getAltKey, getAltKey,
+        js_getMetaKey, getMetaKey, js_getAltGraphKey, getAltGraphKey,
+        KeyboardEvent, castToKeyboardEvent, gTypeKeyboardEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initKeyboardEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11, $12)"
+        js_initKeyboardEvent ::
+        KeyboardEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                Nullable Window ->
+                  JSString -> 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 ->
+                      type' ->
+                        Bool ->
+                          Bool ->
+                            Maybe Window ->
+                              keyIdentifier ->
+                                Word -> Bool -> Bool -> Bool -> Bool -> Bool -> m ()
+initKeyboardEvent self type' canBubble cancelable view
+  keyIdentifier location ctrlKey altKey shiftKey metaKey altGraphKey
+  = liftIO
+      (js_initKeyboardEvent (self) (toJSString type') canBubble
+         cancelable
+         (maybeToNullable view)
+         (toJSString keyIdentifier)
+         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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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))
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,198 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Location
+       (js_assign, assign, js_replace, replace, js_reload, reload,
+        js_toString, toString, 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,
+        castToLocation, gTypeLocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"toString\"]()" js_toString
+        :: Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.toString Mozilla Location.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => Location -> m result
+toString self = liftIO (fromJSString <$> (js_toString (self)))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"ancestorOrigins\"]"
+        js_getAncestorOrigins :: Location -> IO (Nullable DOMStringList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.ancestorOrigins Mozilla Location.ancestorOrigins documentation> 
+getAncestorOrigins ::
+                   (MonadIO m) => Location -> m (Maybe DOMStringList)
+getAncestorOrigins self
+  = liftIO (nullableToMaybe <$> (js_getAncestorOrigins (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MallocStatistics.hs b/src/GHCJS/DOM/JSFFI/Generated/MallocStatistics.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MallocStatistics.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MallocStatistics
+       (js_getReservedVMBytes, getReservedVMBytes, js_getCommittedVMBytes,
+        getCommittedVMBytes, js_getFreeListBytes, getFreeListBytes,
+        MallocStatistics, castToMallocStatistics, gTypeMallocStatistics)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"reservedVMBytes\"]"
+        js_getReservedVMBytes :: MallocStatistics -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics.reservedVMBytes Mozilla MallocStatistics.reservedVMBytes documentation> 
+getReservedVMBytes :: (MonadIO m) => MallocStatistics -> m Word
+getReservedVMBytes self = liftIO (js_getReservedVMBytes (self))
+ 
+foreign import javascript unsafe "$1[\"committedVMBytes\"]"
+        js_getCommittedVMBytes :: MallocStatistics -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics.committedVMBytes Mozilla MallocStatistics.committedVMBytes documentation> 
+getCommittedVMBytes :: (MonadIO m) => MallocStatistics -> m Word
+getCommittedVMBytes self = liftIO (js_getCommittedVMBytes (self))
+ 
+foreign import javascript unsafe "$1[\"freeListBytes\"]"
+        js_getFreeListBytes :: MallocStatistics -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics.freeListBytes Mozilla MallocStatistics.freeListBytes documentation> 
+getFreeListBytes :: (MonadIO m) => MallocStatistics -> m Word
+getFreeListBytes self = liftIO (js_getFreeListBytes (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,181 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToMediaController,
+        gTypeMediaController)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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[\"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[\"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[\"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[\"buffered\"]" js_getBuffered
+        :: MediaController -> IO (Nullable TimeRanges)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.buffered Mozilla MediaController.buffered documentation> 
+getBuffered ::
+            (MonadIO m) => MediaController -> m (Maybe TimeRanges)
+getBuffered self
+  = liftIO (nullableToMaybe <$> (js_getBuffered (self)))
+ 
+foreign import javascript unsafe "$1[\"seekable\"]" js_getSeekable
+        :: MediaController -> IO (Nullable TimeRanges)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.seekable Mozilla MediaController.seekable documentation> 
+getSeekable ::
+            (MonadIO m) => MediaController -> m (Maybe TimeRanges)
+getSeekable self
+  = liftIO (nullableToMaybe <$> (js_getSeekable (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"played\"]" js_getPlayed ::
+        MediaController -> IO (Nullable TimeRanges)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.played Mozilla MediaController.played documentation> 
+getPlayed :: (MonadIO m) => MediaController -> m (Maybe TimeRanges)
+getPlayed self = liftIO (nullableToMaybe <$> (js_getPlayed (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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 unsafe "$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[\"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[\"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[\"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,259 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaControlsHost
+       (js_sortedTrackListForMenu, sortedTrackListForMenu,
+        js_sortedTrackListForMenuAudio, sortedTrackListForMenuAudio,
+        js_displayNameForTrack, displayNameForTrack,
+        js_displayNameForTrackAudio, displayNameForTrackAudio,
+        js_setSelectedTextTrack, setSelectedTextTrack,
+        js_updateTextTrackContainer, updateTextTrackContainer,
+        js_enteredFullscreen, enteredFullscreen, js_exitedFullscreen,
+        exitedFullscreen, js_enterFullscreenOptimized,
+        enterFullscreenOptimized, js_mediaUIImageData, mediaUIImageData,
+        js_getCaptionMenuOffItem, getCaptionMenuOffItem,
+        js_getCaptionMenuAutomaticItem, getCaptionMenuAutomaticItem,
+        js_getCaptionDisplayMode, getCaptionDisplayMode,
+        js_getTextTrackContainer, getTextTrackContainer,
+        js_getMediaPlaybackAllowsInline, getMediaPlaybackAllowsInline,
+        js_getSupportsFullscreen, getSupportsFullscreen,
+        js_getUserGestureRequired, getUserGestureRequired,
+        js_getExternalDeviceDisplayName, getExternalDeviceDisplayName,
+        js_getExternalDeviceType, getExternalDeviceType,
+        js_setControlsDependOnPageScaleFactor,
+        setControlsDependOnPageScaleFactor,
+        js_getControlsDependOnPageScaleFactor,
+        getControlsDependOnPageScaleFactor, MediaControlsHost,
+        castToMediaControlsHost, gTypeMediaControlsHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"sortedTrackListForMenu\"]($2)" js_sortedTrackListForMenu ::
+        MediaControlsHost -> Nullable TextTrackList -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
+sortedTrackListForMenu ::
+                       (MonadIO m) =>
+                         MediaControlsHost -> Maybe TextTrackList -> m [Maybe TextTrack]
+sortedTrackListForMenu self trackList
+  = liftIO
+      ((js_sortedTrackListForMenu (self) (maybeToNullable trackList)) >>=
+         fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"sortedTrackListForMenu\"]($2)" js_sortedTrackListForMenuAudio
+        :: MediaControlsHost -> Nullable AudioTrackList -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
+sortedTrackListForMenuAudio ::
+                            (MonadIO m) =>
+                              MediaControlsHost -> Maybe AudioTrackList -> m [Maybe AudioTrack]
+sortedTrackListForMenuAudio self trackList
+  = liftIO
+      ((js_sortedTrackListForMenuAudio (self)
+          (maybeToNullable trackList))
+         >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"displayNameForTrack\"]($2)"
+        js_displayNameForTrack ::
+        MediaControlsHost -> Nullable TextTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
+displayNameForTrack ::
+                    (MonadIO m, FromJSString result) =>
+                      MediaControlsHost -> Maybe TextTrack -> m result
+displayNameForTrack self track
+  = liftIO
+      (fromJSString <$>
+         (js_displayNameForTrack (self) (maybeToNullable track)))
+ 
+foreign import javascript unsafe "$1[\"displayNameForTrack\"]($2)"
+        js_displayNameForTrackAudio ::
+        MediaControlsHost -> Nullable AudioTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
+displayNameForTrackAudio ::
+                         (MonadIO m, FromJSString result) =>
+                           MediaControlsHost -> Maybe AudioTrack -> m result
+displayNameForTrackAudio self track
+  = liftIO
+      (fromJSString <$>
+         (js_displayNameForTrackAudio (self) (maybeToNullable track)))
+ 
+foreign import javascript unsafe "$1[\"setSelectedTextTrack\"]($2)"
+        js_setSelectedTextTrack ::
+        MediaControlsHost -> Nullable 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) (maybeToNullable track))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"enterFullscreenOptimized\"]()" js_enterFullscreenOptimized ::
+        MediaControlsHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.enterFullscreenOptimized Mozilla MediaControlsHost.enterFullscreenOptimized documentation> 
+enterFullscreenOptimized ::
+                         (MonadIO m) => MediaControlsHost -> m ()
+enterFullscreenOptimized self
+  = liftIO (js_enterFullscreenOptimized (self))
+ 
+foreign import javascript unsafe "$1[\"mediaUIImageData\"]($2)"
+        js_mediaUIImageData :: MediaControlsHost -> JSVal -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.mediaUIImageData Mozilla MediaControlsHost.mediaUIImageData documentation> 
+mediaUIImageData ::
+                 (MonadIO m, FromJSString result) =>
+                   MediaControlsHost -> MediaUIPartID -> m result
+mediaUIImageData self partID
+  = liftIO
+      (fromJSString <$> (js_mediaUIImageData (self) (pToJSVal partID)))
+ 
+foreign import javascript unsafe "$1[\"captionMenuOffItem\"]"
+        js_getCaptionMenuOffItem ::
+        MediaControlsHost -> IO (Nullable TextTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuOffItem Mozilla MediaControlsHost.captionMenuOffItem documentation> 
+getCaptionMenuOffItem ::
+                      (MonadIO m) => MediaControlsHost -> m (Maybe TextTrack)
+getCaptionMenuOffItem self
+  = liftIO (nullableToMaybe <$> (js_getCaptionMenuOffItem (self)))
+ 
+foreign import javascript unsafe "$1[\"captionMenuAutomaticItem\"]"
+        js_getCaptionMenuAutomaticItem ::
+        MediaControlsHost -> IO (Nullable TextTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuAutomaticItem Mozilla MediaControlsHost.captionMenuAutomaticItem documentation> 
+getCaptionMenuAutomaticItem ::
+                            (MonadIO m) => MediaControlsHost -> m (Maybe TextTrack)
+getCaptionMenuAutomaticItem self
+  = liftIO
+      (nullableToMaybe <$> (js_getCaptionMenuAutomaticItem (self)))
+ 
+foreign import javascript unsafe "$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[\"textTrackContainer\"]"
+        js_getTextTrackContainer ::
+        MediaControlsHost -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.textTrackContainer Mozilla MediaControlsHost.textTrackContainer documentation> 
+getTextTrackContainer ::
+                      (MonadIO m) => MediaControlsHost -> m (Maybe HTMLElement)
+getTextTrackContainer self
+  = liftIO (nullableToMaybe <$> (js_getTextTrackContainer (self)))
+ 
+foreign import javascript unsafe
+        "($1[\"mediaPlaybackAllowsInline\"] ? 1 : 0)"
+        js_getMediaPlaybackAllowsInline :: MediaControlsHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.mediaPlaybackAllowsInline Mozilla MediaControlsHost.mediaPlaybackAllowsInline documentation> 
+getMediaPlaybackAllowsInline ::
+                             (MonadIO m) => MediaControlsHost -> m Bool
+getMediaPlaybackAllowsInline self
+  = liftIO (js_getMediaPlaybackAllowsInline (self))
+ 
+foreign import javascript unsafe
+        "($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[\"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[\"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[\"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[\"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[\"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))
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,31 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
+       (js_getMediaElement, getMediaElement, MediaElementAudioSourceNode,
+        castToMediaElementAudioSourceNode,
+        gTypeMediaElementAudioSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"mediaElement\"]"
+        js_getMediaElement ::
+        MediaElementAudioSourceNode -> IO (Nullable HTMLMediaElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
+getMediaElement ::
+                (MonadIO m) =>
+                  MediaElementAudioSourceNode -> m (Maybe HTMLMediaElement)
+getMediaElement self
+  = liftIO (nullableToMaybe <$> (js_getMediaElement (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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaError
+       (pattern MEDIA_ERR_ABORTED, pattern MEDIA_ERR_NETWORK,
+        pattern MEDIA_ERR_DECODE, pattern MEDIA_ERR_SRC_NOT_SUPPORTED,
+        pattern MEDIA_ERR_ENCRYPTED, js_getCode, getCode, MediaError,
+        castToMediaError, gTypeMediaError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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
+pattern MEDIA_ERR_ENCRYPTED = 5
+ 
+foreign import javascript unsafe "$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/MediaKeyError.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyError.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeyError
+       (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,
+        MediaKeyError, castToMediaKeyError, gTypeMediaKeyError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"code\"]" js_getCode ::
+        MediaKeyError -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.code Mozilla WebKitMediaKeyError.code documentation> 
+getCode :: (MonadIO m) => MediaKeyError -> m Word
+getCode self = liftIO (js_getCode (self))
+ 
+foreign import javascript unsafe "$1[\"systemCode\"]"
+        js_getSystemCode :: MediaKeyError -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.systemCode Mozilla WebKitMediaKeyError.systemCode documentation> 
+getSystemCode :: (MonadIO m) => MediaKeyError -> m Word
+getSystemCode self = liftIO (js_getSystemCode (self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyEvent.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeyEvent
+       (js_getKeySystem, getKeySystem, js_getSessionId, getSessionId,
+        js_getInitData, getInitData, js_getMessage, getMessage,
+        js_getDefaultURL, getDefaultURL, js_getErrorCode, getErrorCode,
+        js_getSystemCode, getSystemCode, MediaKeyEvent,
+        castToMediaKeyEvent, gTypeMediaKeyEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"keySystem\"]"
+        js_getKeySystem :: MediaKeyEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.keySystem Mozilla MediaKeyEvent.keySystem documentation> 
+getKeySystem ::
+             (MonadIO m, FromJSString result) => MediaKeyEvent -> m result
+getKeySystem self
+  = liftIO (fromJSString <$> (js_getKeySystem (self)))
+ 
+foreign import javascript unsafe "$1[\"sessionId\"]"
+        js_getSessionId :: MediaKeyEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.sessionId Mozilla MediaKeyEvent.sessionId documentation> 
+getSessionId ::
+             (MonadIO m, FromJSString result) => MediaKeyEvent -> m result
+getSessionId self
+  = liftIO (fromJSString <$> (js_getSessionId (self)))
+ 
+foreign import javascript unsafe "$1[\"initData\"]" js_getInitData
+        :: MediaKeyEvent -> IO (Nullable Uint8Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.initData Mozilla MediaKeyEvent.initData documentation> 
+getInitData :: (MonadIO m) => MediaKeyEvent -> m (Maybe Uint8Array)
+getInitData self
+  = liftIO (nullableToMaybe <$> (js_getInitData (self)))
+ 
+foreign import javascript unsafe "$1[\"message\"]" js_getMessage ::
+        MediaKeyEvent -> IO (Nullable Uint8Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.message Mozilla MediaKeyEvent.message documentation> 
+getMessage :: (MonadIO m) => MediaKeyEvent -> m (Maybe Uint8Array)
+getMessage self
+  = liftIO (nullableToMaybe <$> (js_getMessage (self)))
+ 
+foreign import javascript unsafe "$1[\"defaultURL\"]"
+        js_getDefaultURL :: MediaKeyEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.defaultURL Mozilla MediaKeyEvent.defaultURL documentation> 
+getDefaultURL ::
+              (MonadIO m, FromJSString result) => MediaKeyEvent -> m result
+getDefaultURL self
+  = liftIO (fromJSString <$> (js_getDefaultURL (self)))
+ 
+foreign import javascript unsafe "$1[\"errorCode\"]"
+        js_getErrorCode :: MediaKeyEvent -> IO (Nullable MediaKeyError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.errorCode Mozilla MediaKeyEvent.errorCode documentation> 
+getErrorCode ::
+             (MonadIO m) => MediaKeyEvent -> m (Maybe MediaKeyError)
+getErrorCode self
+  = liftIO (nullableToMaybe <$> (js_getErrorCode (self)))
+ 
+foreign import javascript unsafe "$1[\"systemCode\"]"
+        js_getSystemCode :: MediaKeyEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.systemCode Mozilla MediaKeyEvent.systemCode documentation> 
+getSystemCode :: (MonadIO m) => MediaKeyEvent -> m Word
+getSystemCode self = liftIO (js_getSystemCode (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,39 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
+       (js_getMessage, getMessage, js_getDestinationURL,
+        getDestinationURL, MediaKeyMessageEvent,
+        castToMediaKeyMessageEvent, gTypeMediaKeyMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"message\"]" js_getMessage ::
+        MediaKeyMessageEvent -> IO (Nullable Uint8Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
+getMessage ::
+           (MonadIO m) => MediaKeyMessageEvent -> m (Maybe Uint8Array)
+getMessage self
+  = liftIO (nullableToMaybe <$> (js_getMessage (self)))
+ 
+foreign import javascript unsafe "$1[\"destinationURL\"]"
+        js_getDestinationURL :: MediaKeyMessageEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.destinationURL Mozilla WebKitMediaKeyMessageEvent.destinationURL documentation> 
+getDestinationURL ::
+                  (MonadIO m, FromJSString result) =>
+                    MediaKeyMessageEvent -> m result
+getDestinationURL self
+  = liftIO (fromJSString <$> (js_getDestinationURL (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyNeededEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyNeededEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyNeededEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeyNeededEvent
+       (js_getInitData, getInitData, MediaKeyNeededEvent,
+        castToMediaKeyNeededEvent, gTypeMediaKeyNeededEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"initData\"]" js_getInitData
+        :: MediaKeyNeededEvent -> IO (Nullable Uint8Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent.initData Mozilla MediaKeyNeededEvent.initData documentation> 
+getInitData ::
+            (MonadIO m) => MediaKeyNeededEvent -> m (Maybe Uint8Array)
+getInitData self
+  = liftIO (nullableToMaybe <$> (js_getInitData (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,77 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeySession
+       (js_update, update, js_close, close, js_getError, getError,
+        js_getKeySystem, getKeySystem, js_getSessionId, getSessionId,
+        webKitKeyAdded, webKitKeyError, webKitKeyMessage, MediaKeySession,
+        castToMediaKeySession, gTypeMediaKeySession)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"update\"]($2)" js_update ::
+        MediaKeySession -> Nullable Uint8Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
+update ::
+       (MonadIO m, IsUint8Array key) =>
+         MediaKeySession -> Maybe key -> m ()
+update self key
+  = liftIO
+      (js_update (self) (maybeToNullable (fmap toUint8Array key)))
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        MediaKeySession -> IO ()
+
+-- | <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))
+ 
+foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+        MediaKeySession -> IO (Nullable MediaKeyError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.error Mozilla WebKitMediaKeySession.error documentation> 
+getError ::
+         (MonadIO m) => MediaKeySession -> m (Maybe MediaKeyError)
+getError self = liftIO (nullableToMaybe <$> (js_getError (self)))
+ 
+foreign import javascript unsafe "$1[\"keySystem\"]"
+        js_getKeySystem :: MediaKeySession -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.keySystem Mozilla WebKitMediaKeySession.keySystem documentation> 
+getKeySystem ::
+             (MonadIO m, FromJSString result) => MediaKeySession -> m result
+getKeySystem self
+  = liftIO (fromJSString <$> (js_getKeySystem (self)))
+ 
+foreign import javascript unsafe "$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)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeyadded Mozilla WebKitMediaKeySession.onwebkitkeyadded documentation> 
+webKitKeyAdded :: EventName MediaKeySession Event
+webKitKeyAdded = unsafeEventName (toJSString "webkitkeyadded")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeyerror Mozilla WebKitMediaKeySession.onwebkitkeyerror documentation> 
+webKitKeyError :: EventName MediaKeySession Event
+webKitKeyError = unsafeEventName (toJSString "webkitkeyerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeymessage Mozilla WebKitMediaKeySession.onwebkitkeymessage documentation> 
+webKitKeyMessage :: EventName MediaKeySession Event
+webKitKeyMessage = unsafeEventName (toJSString "webkitkeymessage")
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,67 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeys
+       (js_newMediaKeys, newMediaKeys, js_createSession, createSession,
+        js_isTypeSupported, isTypeSupported, js_getKeySystem, getKeySystem,
+        MediaKeys, castToMediaKeys, gTypeMediaKeys)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"WebKitMediaKeys\"]($1)" js_newMediaKeys ::
+        JSString -> IO MediaKeys
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation> 
+newMediaKeys ::
+             (MonadIO m, ToJSString keySystem) => keySystem -> m MediaKeys
+newMediaKeys keySystem
+  = liftIO (js_newMediaKeys (toJSString keySystem))
+ 
+foreign import javascript unsafe "$1[\"createSession\"]($2, $3)"
+        js_createSession ::
+        MediaKeys ->
+          JSString -> Nullable Uint8Array -> IO (Nullable MediaKeySession)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
+createSession ::
+              (MonadIO m, ToJSString type', IsUint8Array initData) =>
+                MediaKeys -> type' -> Maybe initData -> m (Maybe MediaKeySession)
+createSession self type' initData
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSession (self) (toJSString type')
+            (maybeToNullable (fmap toUint8Array initData))))
+ 
+foreign import javascript unsafe
+        "($1[\"isTypeSupported\"]($2,\n$3) ? 1 : 0)" js_isTypeSupported ::
+        MediaKeys -> JSString -> 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') =>
+                  MediaKeys -> keySystem -> type' -> m Bool
+isTypeSupported self keySystem type'
+  = liftIO
+      (js_isTypeSupported (self) (toJSString keySystem)
+         (toJSString type'))
+ 
+foreign import javascript unsafe "$1[\"keySystem\"]"
+        js_getKeySystem :: MediaKeys -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.keySystem Mozilla WebKitMediaKeys.keySystem documentation> 
+getKeySystem ::
+             (MonadIO m, FromJSString result) => MediaKeys -> m result
+getKeySystem self
+  = liftIO (fromJSString <$> (js_getKeySystem (self)))
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,74 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaList
+       (js_item, item, js_deleteMedium, deleteMedium, js_appendMedium,
+        appendMedium, js_setMediaText, setMediaText, js_getMediaText,
+        getMediaText, js_getLength, getLength, MediaList, castToMediaList,
+        gTypeMediaList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$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 unsafe "$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 unsafe "$1[\"mediaText\"] = $2;"
+        js_setMediaText :: MediaList -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
+setMediaText ::
+             (MonadIO m, ToJSString val) => MediaList -> Maybe val -> m ()
+setMediaText self val
+  = liftIO (js_setMediaText (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"mediaText\"]"
+        js_getMediaText :: MediaList -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
+getMediaText ::
+             (MonadIO m, FromJSString result) => MediaList -> m (Maybe result)
+getMediaText self
+  = liftIO (fromMaybeJSString <$> (js_getMediaText (self)))
+ 
+foreign import javascript unsafe "$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,57 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaQueryList
+       (js_addListener, addListener, js_removeListener, removeListener,
+        js_getMedia, getMedia, js_getMatches, getMatches, MediaQueryList,
+        castToMediaQueryList, gTypeMediaQueryList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"addListener\"]($2)"
+        js_addListener ::
+        MediaQueryList -> Nullable 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) (maybeToNullable listener))
+ 
+foreign import javascript unsafe "$1[\"removeListener\"]($2)"
+        js_removeListener ::
+        MediaQueryList -> Nullable 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) (maybeToNullable listener))
+ 
+foreign import javascript unsafe "$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[\"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,49 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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/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,116 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaSource
+       (js_newMediaSource, newMediaSource, js_addSourceBuffer,
+        addSourceBuffer, js_removeSourceBuffer, removeSourceBuffer,
+        js_endOfStream, endOfStream, js_isTypeSupported, isTypeSupported,
+        js_getSourceBuffers, getSourceBuffers, js_getActiveSourceBuffers,
+        getActiveSourceBuffers, js_setDuration, setDuration,
+        js_getDuration, getDuration, js_getReadyState, getReadyState,
+        MediaSource, castToMediaSource, gTypeMediaSource)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "$1[\"addSourceBuffer\"]($2)"
+        js_addSourceBuffer ::
+        MediaSource -> JSString -> IO (Nullable SourceBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
+addSourceBuffer ::
+                (MonadIO m, ToJSString type') =>
+                  MediaSource -> type' -> m (Maybe SourceBuffer)
+addSourceBuffer self type'
+  = liftIO
+      (nullableToMaybe <$>
+         (js_addSourceBuffer (self) (toJSString type')))
+ 
+foreign import javascript unsafe "$1[\"removeSourceBuffer\"]($2)"
+        js_removeSourceBuffer ::
+        MediaSource -> Nullable SourceBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.removeSourceBuffer Mozilla MediaSource.removeSourceBuffer documentation> 
+removeSourceBuffer ::
+                   (MonadIO m) => MediaSource -> Maybe SourceBuffer -> m ()
+removeSourceBuffer self buffer
+  = liftIO (js_removeSourceBuffer (self) (maybeToNullable buffer))
+ 
+foreign import javascript unsafe "$1[\"endOfStream\"]($2)"
+        js_endOfStream :: MediaSource -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.endOfStream Mozilla MediaSource.endOfStream documentation> 
+endOfStream ::
+            (MonadIO m) => MediaSource -> EndOfStreamError -> m ()
+endOfStream self error
+  = liftIO (js_endOfStream (self) (pToJSVal error))
+ 
+foreign import javascript unsafe
+        "($1[\"isTypeSupported\"]($2) ? 1 : 0)" js_isTypeSupported ::
+        MediaSource -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
+isTypeSupported ::
+                (MonadIO m, ToJSString type') => MediaSource -> type' -> m Bool
+isTypeSupported self type'
+  = liftIO (js_isTypeSupported (self) (toJSString type'))
+ 
+foreign import javascript unsafe "$1[\"sourceBuffers\"]"
+        js_getSourceBuffers ::
+        MediaSource -> IO (Nullable SourceBufferList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.sourceBuffers Mozilla MediaSource.sourceBuffers documentation> 
+getSourceBuffers ::
+                 (MonadIO m) => MediaSource -> m (Maybe SourceBufferList)
+getSourceBuffers self
+  = liftIO (nullableToMaybe <$> (js_getSourceBuffers (self)))
+ 
+foreign import javascript unsafe "$1[\"activeSourceBuffers\"]"
+        js_getActiveSourceBuffers ::
+        MediaSource -> IO (Nullable SourceBufferList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.activeSourceBuffers Mozilla MediaSource.activeSourceBuffers documentation> 
+getActiveSourceBuffers ::
+                       (MonadIO m) => MediaSource -> m (Maybe SourceBufferList)
+getActiveSourceBuffers self
+  = liftIO (nullableToMaybe <$> (js_getActiveSourceBuffers (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"readyState\"]"
+        js_getReadyState :: MediaSource -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.readyState Mozilla MediaSource.readyState documentation> 
+getReadyState ::
+              (MonadIO m, FromJSString result) => MediaSource -> m result
+getReadyState self
+  = liftIO (fromJSString <$> (js_getReadyState (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSourceStates.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSourceStates.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSourceStates.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaSourceStates
+       (js_getSourceType, getSourceType, js_getSourceId, getSourceId,
+        js_getWidth, getWidth, js_getHeight, getHeight, js_getFrameRate,
+        getFrameRate, js_getAspectRatio, getAspectRatio, js_getFacingMode,
+        getFacingMode, js_getVolume, getVolume, MediaSourceStates,
+        castToMediaSourceStates, gTypeMediaSourceStates)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"sourceType\"]"
+        js_getSourceType :: MediaSourceStates -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.sourceType Mozilla MediaSourceStates.sourceType documentation> 
+getSourceType ::
+              (MonadIO m) => MediaSourceStates -> m SourceTypeEnum
+getSourceType self
+  = liftIO ((js_getSourceType (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"sourceId\"]" js_getSourceId
+        :: MediaSourceStates -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.sourceId Mozilla MediaSourceStates.sourceId documentation> 
+getSourceId ::
+            (MonadIO m, FromJSString result) => MediaSourceStates -> m result
+getSourceId self
+  = liftIO (fromJSString <$> (js_getSourceId (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        MediaSourceStates -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.width Mozilla MediaSourceStates.width documentation> 
+getWidth :: (MonadIO m) => MediaSourceStates -> m (Maybe Word)
+getWidth self
+  = liftIO ((js_getWidth (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        MediaSourceStates -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.height Mozilla MediaSourceStates.height documentation> 
+getHeight :: (MonadIO m) => MediaSourceStates -> m (Maybe Word)
+getHeight self
+  = liftIO ((js_getHeight (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"frameRate\"]"
+        js_getFrameRate :: MediaSourceStates -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.frameRate Mozilla MediaSourceStates.frameRate documentation> 
+getFrameRate :: (MonadIO m) => MediaSourceStates -> m (Maybe Float)
+getFrameRate self
+  = liftIO ((js_getFrameRate (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"aspectRatio\"]"
+        js_getAspectRatio :: MediaSourceStates -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.aspectRatio Mozilla MediaSourceStates.aspectRatio documentation> 
+getAspectRatio ::
+               (MonadIO m) => MediaSourceStates -> m (Maybe Float)
+getAspectRatio self
+  = liftIO ((js_getAspectRatio (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"facingMode\"]"
+        js_getFacingMode :: MediaSourceStates -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.facingMode Mozilla MediaSourceStates.facingMode documentation> 
+getFacingMode ::
+              (MonadIO m) => MediaSourceStates -> m VideoFacingModeEnum
+getFacingMode self
+  = liftIO ((js_getFacingMode (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"volume\"]" js_getVolume ::
+        MediaSourceStates -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.volume Mozilla MediaSourceStates.volume documentation> 
+getVolume :: (MonadIO m) => MediaSourceStates -> m (Maybe Word)
+getVolume self
+  = liftIO ((js_getVolume (self)) >>= fromJSValUnchecked)
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,156 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStream
+       (js_newMediaStream, newMediaStream, js_newMediaStream',
+        newMediaStream', js_newMediaStream'', newMediaStream'',
+        js_getAudioTracks, getAudioTracks, js_getVideoTracks,
+        getVideoTracks, js_getTracks, getTracks, js_addTrack, addTrack,
+        js_removeTrack, removeTrack, js_getTrackById, getTrackById,
+        js_clone, clone, js_getId, getId, js_getActive, getActive, active,
+        inactive, addTrackEvent, removeTrackEvent, MediaStream,
+        castToMediaStream, gTypeMediaStream)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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
+        "new window[\"webkitMediaStream\"]($1)" js_newMediaStream' ::
+        Nullable MediaStream -> IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+newMediaStream' ::
+                (MonadIO m) => Maybe MediaStream -> m MediaStream
+newMediaStream' stream
+  = liftIO (js_newMediaStream' (maybeToNullable stream))
+ 
+foreign import javascript unsafe
+        "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) =>
+                   [Maybe tracks] -> m MediaStream
+newMediaStream'' tracks
+  = liftIO
+      (toJSVal tracks >>= \ tracks' -> js_newMediaStream'' tracks')
+ 
+foreign import javascript unsafe "$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 [Maybe MediaStreamTrack]
+getAudioTracks self
+  = liftIO ((js_getAudioTracks (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$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 [Maybe MediaStreamTrack]
+getVideoTracks self
+  = liftIO ((js_getVideoTracks (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$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 [Maybe MediaStreamTrack]
+getTracks self
+  = liftIO ((js_getTracks (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"addTrack\"]($2)" js_addTrack
+        :: MediaStream -> Nullable MediaStreamTrack -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.addTrack Mozilla webkitMediaStream.addTrack documentation> 
+addTrack ::
+         (MonadIO m, IsMediaStreamTrack track) =>
+           MediaStream -> Maybe track -> m ()
+addTrack self track
+  = liftIO
+      (js_addTrack (self)
+         (maybeToNullable (fmap toMediaStreamTrack track)))
+ 
+foreign import javascript unsafe "$1[\"removeTrack\"]($2)"
+        js_removeTrack :: MediaStream -> Nullable MediaStreamTrack -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.removeTrack Mozilla webkitMediaStream.removeTrack documentation> 
+removeTrack ::
+            (MonadIO m, IsMediaStreamTrack track) =>
+              MediaStream -> Maybe track -> m ()
+removeTrack self track
+  = liftIO
+      (js_removeTrack (self)
+         (maybeToNullable (fmap toMediaStreamTrack track)))
+ 
+foreign import javascript unsafe "$1[\"getTrackById\"]($2)"
+        js_getTrackById ::
+        MediaStream -> JSString -> IO (Nullable MediaStreamTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
+getTrackById ::
+             (MonadIO m, ToJSString trackId) =>
+               MediaStream -> trackId -> m (Maybe MediaStreamTrack)
+getTrackById self trackId
+  = liftIO
+      (nullableToMaybe <$> (js_getTrackById (self) (toJSString trackId)))
+ 
+foreign import javascript unsafe "$1[\"clone\"]()" js_clone ::
+        MediaStream -> IO (Nullable MediaStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
+clone :: (MonadIO m) => MediaStream -> m (Maybe MediaStream)
+clone self = liftIO (nullableToMaybe <$> (js_clone (self)))
+ 
+foreign import javascript unsafe "$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[\"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.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")
+
+-- | <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")
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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode
+       (js_getStream, getStream, MediaStreamAudioDestinationNode,
+        castToMediaStreamAudioDestinationNode,
+        gTypeMediaStreamAudioDestinationNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"stream\"]" js_getStream ::
+        MediaStreamAudioDestinationNode -> IO (Nullable MediaStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
+getStream ::
+          (MonadIO m) =>
+            MediaStreamAudioDestinationNode -> m (Maybe MediaStream)
+getStream self = liftIO (nullableToMaybe <$> (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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode
+       (js_getMediaStream, getMediaStream, MediaStreamAudioSourceNode,
+        castToMediaStreamAudioSourceNode, gTypeMediaStreamAudioSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"mediaStream\"]"
+        js_getMediaStream ::
+        MediaStreamAudioSourceNode -> IO (Nullable MediaStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
+getMediaStream ::
+               (MonadIO m) => MediaStreamAudioSourceNode -> m (Maybe MediaStream)
+getMediaStream self
+  = liftIO (nullableToMaybe <$> (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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamEvent
+       (js_getStream, getStream, MediaStreamEvent, castToMediaStreamEvent,
+        gTypeMediaStreamEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
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,218 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrack
+       (js_getSources, getSources, js_getConstraints, getConstraints,
+        js_states, states, js_getCapabilities, getCapabilities,
+        js_applyConstraints, applyConstraints, js_clone, clone, js_stop,
+        stop, js_getKind, getKind, js_getId, getId, js_getLabel, getLabel,
+        js_setEnabled, setEnabled, js_getEnabled, getEnabled, js_getMuted,
+        getMuted, mute, unmute, js_get_readonly, get_readonly,
+        js_getRemote, getRemote, js_getReadyState, getReadyState, started,
+        ended, overConstrained, MediaStreamTrack, castToMediaStreamTrack,
+        gTypeMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getSources\"]($2)"
+        js_getSources ::
+        MediaStreamTrack ->
+          Nullable MediaStreamTrackSourcesCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSources Mozilla MediaStreamTrack.getSources documentation> 
+getSources ::
+           (MonadIO m, IsMediaStreamTrack self) =>
+             self -> Maybe MediaStreamTrackSourcesCallback -> m ()
+getSources self callback
+  = liftIO
+      (js_getSources (toMediaStreamTrack self)
+         (maybeToNullable callback))
+ 
+foreign import javascript unsafe "$1[\"getConstraints\"]()"
+        js_getConstraints ::
+        MediaStreamTrack -> IO (Nullable MediaTrackConstraints)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
+getConstraints ::
+               (MonadIO m, IsMediaStreamTrack self) =>
+                 self -> m (Maybe MediaTrackConstraints)
+getConstraints self
+  = liftIO
+      (nullableToMaybe <$> (js_getConstraints (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "$1[\"states\"]()" js_states ::
+        MediaStreamTrack -> IO (Nullable MediaSourceStates)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.states Mozilla MediaStreamTrack.states documentation> 
+states ::
+       (MonadIO m, IsMediaStreamTrack self) =>
+         self -> m (Maybe MediaSourceStates)
+states self
+  = liftIO
+      (nullableToMaybe <$> (js_states (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "$1[\"getCapabilities\"]()"
+        js_getCapabilities ::
+        MediaStreamTrack -> IO (Nullable MediaStreamCapabilities)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
+getCapabilities ::
+                (MonadIO m, IsMediaStreamTrack self) =>
+                  self -> m (Maybe MediaStreamCapabilities)
+getCapabilities self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getCapabilities (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "$1[\"applyConstraints\"]($2)"
+        js_applyConstraints ::
+        MediaStreamTrack -> Nullable Dictionary -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.applyConstraints Mozilla MediaStreamTrack.applyConstraints documentation> 
+applyConstraints ::
+                 (MonadIO m, IsMediaStreamTrack self, IsDictionary constraints) =>
+                   self -> Maybe constraints -> m ()
+applyConstraints self constraints
+  = liftIO
+      (js_applyConstraints (toMediaStreamTrack self)
+         (maybeToNullable (fmap toDictionary constraints)))
+ 
+foreign import javascript unsafe "$1[\"clone\"]()" js_clone ::
+        MediaStreamTrack -> IO (Nullable MediaStreamTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
+clone ::
+      (MonadIO m, IsMediaStreamTrack self) =>
+        self -> m (Maybe MediaStreamTrack)
+clone self
+  = liftIO (nullableToMaybe <$> (js_clone (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"_readonly\"] ? 1 : 0)"
+        js_get_readonly :: MediaStreamTrack -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack._readonly Mozilla MediaStreamTrack._readonly documentation> 
+get_readonly ::
+             (MonadIO m, IsMediaStreamTrack self) => self -> m Bool
+get_readonly self
+  = liftIO (js_get_readonly (toMediaStreamTrack self))
+ 
+foreign import javascript unsafe "($1[\"remote\"] ? 1 : 0)"
+        js_getRemote :: MediaStreamTrack -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.remote Mozilla MediaStreamTrack.remote documentation> 
+getRemote :: (MonadIO m, IsMediaStreamTrack self) => self -> m Bool
+getRemote self = liftIO (js_getRemote (toMediaStreamTrack self))
+ 
+foreign import javascript unsafe "$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.onstarted Mozilla MediaStreamTrack.onstarted documentation> 
+started ::
+        (IsMediaStreamTrack self, IsEventTarget self) =>
+          EventName self Event
+started = unsafeEventName (toJSString "started")
+
+-- | <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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent
+       (js_getTrack, getTrack, MediaStreamTrackEvent,
+        castToMediaStreamTrackEvent, gTypeMediaStreamTrackEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        MediaStreamTrackEvent -> IO (Nullable MediaStreamTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent.track Mozilla MediaStreamTrackEvent.track documentation> 
+getTrack ::
+         (MonadIO m) => MediaStreamTrackEvent -> m (Maybe MediaStreamTrack)
+getTrack self = liftIO (nullableToMaybe <$> (js_getTrack (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackSourcesCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackSourcesCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackSourcesCallback.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackSourcesCallback
+       (newMediaStreamTrackSourcesCallback,
+        newMediaStreamTrackSourcesCallbackSync,
+        newMediaStreamTrackSourcesCallbackAsync,
+        MediaStreamTrackSourcesCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackSourcesCallback Mozilla MediaStreamTrackSourcesCallback documentation> 
+newMediaStreamTrackSourcesCallback ::
+                                   (MonadIO m) =>
+                                     ([Maybe SourceInfo] -> IO ()) ->
+                                       m MediaStreamTrackSourcesCallback
+newMediaStreamTrackSourcesCallback callback
+  = liftIO
+      (MediaStreamTrackSourcesCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ sources ->
+              fromJSValUnchecked sources >>= \ sources' -> callback sources'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackSourcesCallback Mozilla MediaStreamTrackSourcesCallback documentation> 
+newMediaStreamTrackSourcesCallbackSync ::
+                                       (MonadIO m) =>
+                                         ([Maybe SourceInfo] -> IO ()) ->
+                                           m MediaStreamTrackSourcesCallback
+newMediaStreamTrackSourcesCallbackSync callback
+  = liftIO
+      (MediaStreamTrackSourcesCallback <$>
+         syncCallback1 ContinueAsync
+           (\ sources ->
+              fromJSValUnchecked sources >>= \ sources' -> callback sources'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackSourcesCallback Mozilla MediaStreamTrackSourcesCallback documentation> 
+newMediaStreamTrackSourcesCallbackAsync ::
+                                        (MonadIO m) =>
+                                          ([Maybe SourceInfo] -> IO ()) ->
+                                            m MediaStreamTrackSourcesCallback
+newMediaStreamTrackSourcesCallbackAsync callback
+  = liftIO
+      (MediaStreamTrackSourcesCallback <$>
+         asyncCallback1
+           (\ sources ->
+              fromJSValUnchecked sources >>= \ sources' -> callback sources'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraints.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaTrackConstraints.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MediaTrackConstraints
+       (js_getMandatory, getMandatory, js_getOptional, getOptional,
+        MediaTrackConstraints, castToMediaTrackConstraints,
+        gTypeMediaTrackConstraints)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"mandatory\"]"
+        js_getMandatory :: MediaTrackConstraints -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints.mandatory Mozilla MediaTrackConstraints.mandatory documentation> 
+getMandatory ::
+             (MonadIO m) =>
+               MediaTrackConstraints -> m (Maybe MediaTrackConstraintSet)
+getMandatory self
+  = liftIO ((js_getMandatory (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"optional\"]" js_getOptional
+        :: MediaTrackConstraints -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints.optional Mozilla MediaTrackConstraints.optional documentation> 
+getOptional ::
+            (MonadIO m) =>
+              MediaTrackConstraints -> m (Maybe [Maybe MediaTrackConstraint])
+getOptional self
+  = liftIO ((js_getOptional (self)) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MemoryInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/MemoryInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MemoryInfo.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MemoryInfo
+       (js_getUsedJSHeapSize, getUsedJSHeapSize, js_getTotalJSHeapSize,
+        getTotalJSHeapSize, MemoryInfo, castToMemoryInfo, gTypeMemoryInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"usedJSHeapSize\"]"
+        js_getUsedJSHeapSize :: MemoryInfo -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo.usedJSHeapSize Mozilla MemoryInfo.usedJSHeapSize documentation> 
+getUsedJSHeapSize :: (MonadIO m) => MemoryInfo -> m Word
+getUsedJSHeapSize self = liftIO (js_getUsedJSHeapSize (self))
+ 
+foreign import javascript unsafe "$1[\"totalJSHeapSize\"]"
+        js_getTotalJSHeapSize :: MemoryInfo -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo.totalJSHeapSize Mozilla MemoryInfo.totalJSHeapSize documentation> 
+getTotalJSHeapSize :: (MonadIO m) => MemoryInfo -> m Word
+getTotalJSHeapSize self = liftIO (js_getTotalJSHeapSize (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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MessageChannel
+       (js_newMessageChannel, newMessageChannel, js_getPort1, getPort1,
+        js_getPort2, getPort2, MessageChannel, castToMessageChannel,
+        gTypeMessageChannel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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[\"port1\"]" js_getPort1 ::
+        MessageChannel -> IO (Nullable MessagePort)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port1 Mozilla MessageChannel.port1 documentation> 
+getPort1 :: (MonadIO m) => MessageChannel -> m (Maybe MessagePort)
+getPort1 self = liftIO (nullableToMaybe <$> (js_getPort1 (self)))
+ 
+foreign import javascript unsafe "$1[\"port2\"]" js_getPort2 ::
+        MessageChannel -> IO (Nullable MessagePort)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port2 Mozilla MessageChannel.port2 documentation> 
+getPort2 :: (MonadIO m) => MessageChannel -> m (Maybe MessagePort)
+getPort2 self = liftIO (nullableToMaybe <$> (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,125 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MessageEvent
+       (js_initMessageEvent, initMessageEvent, js_webkitInitMessageEvent,
+        webkitInitMessageEvent, js_getOrigin, getOrigin, js_getLastEventId,
+        getLastEventId, js_getSource, getSource, js_getData, getData,
+        js_getPorts, getPorts, MessageEvent, castToMessageEvent,
+        gTypeMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initMessageEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9)"
+        js_initMessageEvent ::
+        MessageEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSVal ->
+                  JSString -> JSString -> Nullable Window -> Nullable Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.initMessageEvent Mozilla MessageEvent.initMessageEvent documentation> 
+initMessageEvent ::
+                 (MonadIO m, ToJSString typeArg, ToJSString originArg,
+                  ToJSString lastEventIdArg, IsArray messagePorts) =>
+                   MessageEvent ->
+                     typeArg ->
+                       Bool ->
+                         Bool ->
+                           JSVal ->
+                             originArg ->
+                               lastEventIdArg -> Maybe Window -> Maybe messagePorts -> m ()
+initMessageEvent self typeArg canBubbleArg cancelableArg dataArg
+  originArg lastEventIdArg sourceArg messagePorts
+  = liftIO
+      (js_initMessageEvent (self) (toJSString typeArg) canBubbleArg
+         cancelableArg
+         dataArg
+         (toJSString originArg)
+         (toJSString lastEventIdArg)
+         (maybeToNullable sourceArg)
+         (maybeToNullable (fmap toArray messagePorts)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitInitMessageEvent\"]($2,\n$3, $4, $5, $6, $7, $8, $9)"
+        js_webkitInitMessageEvent ::
+        MessageEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSVal ->
+                  JSString -> JSString -> Nullable Window -> Nullable Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.webkitInitMessageEvent Mozilla MessageEvent.webkitInitMessageEvent documentation> 
+webkitInitMessageEvent ::
+                       (MonadIO m, ToJSString typeArg, ToJSString originArg,
+                        ToJSString lastEventIdArg, IsArray transferables) =>
+                         MessageEvent ->
+                           typeArg ->
+                             Bool ->
+                               Bool ->
+                                 JSVal ->
+                                   originArg ->
+                                     lastEventIdArg -> Maybe Window -> Maybe transferables -> m ()
+webkitInitMessageEvent self typeArg canBubbleArg cancelableArg
+  dataArg originArg lastEventIdArg sourceArg transferables
+  = liftIO
+      (js_webkitInitMessageEvent (self) (toJSString typeArg) canBubbleArg
+         cancelableArg
+         dataArg
+         (toJSString originArg)
+         (toJSString lastEventIdArg)
+         (maybeToNullable sourceArg)
+         (maybeToNullable (fmap toArray transferables)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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)))
+ 
+foreign import javascript unsafe "$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[\"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 [Maybe 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,49 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MessagePort
+       (js_postMessage, postMessage, js_start, start, js_close, close,
+        message, MessagePort, castToMessagePort, gTypeMessagePort)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2, $3)"
+        js_postMessage :: MessagePort -> JSVal -> Nullable Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
+postMessage ::
+            (MonadIO m, IsArray messagePorts) =>
+              MessagePort -> JSVal -> Maybe messagePorts -> m ()
+postMessage self message messagePorts
+  = liftIO
+      (js_postMessage (self) message
+         (maybeToNullable (fmap toArray messagePorts)))
+ 
+foreign import javascript unsafe "$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[\"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 = unsafeEventName (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,53 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MimeType
+       (js_getType, getType, js_getSuffixes, getSuffixes,
+        js_getDescription, getDescription, js_getEnabledPlugin,
+        getEnabledPlugin, MimeType, castToMimeType, gTypeMimeType)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"enabledPlugin\"]"
+        js_getEnabledPlugin :: MimeType -> IO (Nullable Plugin)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.enabledPlugin Mozilla MimeType.enabledPlugin documentation> 
+getEnabledPlugin :: (MonadIO m) => MimeType -> m (Maybe Plugin)
+getEnabledPlugin self
+  = liftIO (nullableToMaybe <$> (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,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MimeTypeArray
+       (js_item, item, js_namedItem, namedItem, js_getLength, getLength,
+        MimeTypeArray, castToMimeTypeArray, gTypeMimeTypeArray)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($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)))
+ 
+foreign import javascript unsafe "$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,223 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MouseEvent
+       (js_initMouseEvent, initMouseEvent, 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, js_getMovementX,
+        getMovementX, js_getMovementY, getMovementY, js_getOffsetX,
+        getOffsetX, js_getOffsetY, getOffsetY, js_getX, getX, js_getY,
+        getY, js_getFromElement, getFromElement, js_getToElement,
+        getToElement, js_getDataTransfer, getDataTransfer, MouseEvent,
+        castToMouseEvent, gTypeMouseEvent, IsMouseEvent, toMouseEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initMouseEvent\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12, $13, $14, $15, $16)"
+        js_initMouseEvent ::
+        MouseEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                Nullable Window ->
+                  Int ->
+                    Int ->
+                      Int ->
+                        Int ->
+                          Int ->
+                            Bool ->
+                              Bool -> Bool -> Bool -> Word -> Nullable EventTarget -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.initMouseEvent Mozilla MouseEvent.initMouseEvent documentation> 
+initMouseEvent ::
+               (MonadIO m, IsMouseEvent self, ToJSString type',
+                IsEventTarget relatedTarget) =>
+                 self ->
+                   type' ->
+                     Bool ->
+                       Bool ->
+                         Maybe Window ->
+                           Int ->
+                             Int ->
+                               Int ->
+                                 Int ->
+                                   Int ->
+                                     Bool ->
+                                       Bool -> Bool -> Bool -> Word -> Maybe relatedTarget -> m ()
+initMouseEvent self type' canBubble cancelable view detail screenX
+  screenY clientX clientY ctrlKey altKey shiftKey metaKey button
+  relatedTarget
+  = liftIO
+      (js_initMouseEvent (toMouseEvent self) (toJSString type') canBubble
+         cancelable
+         (maybeToNullable view)
+         detail
+         screenX
+         screenY
+         clientX
+         clientY
+         ctrlKey
+         altKey
+         shiftKey
+         metaKey
+         button
+         (maybeToNullable (fmap toEventTarget relatedTarget)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
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,98 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MutationEvent
+       (js_initMutationEvent, initMutationEvent, pattern MODIFICATION,
+        pattern ADDITION, pattern REMOVAL, js_getRelatedNode,
+        getRelatedNode, js_getPrevValue, getPrevValue, js_getNewValue,
+        getNewValue, js_getAttrName, getAttrName, js_getAttrChange,
+        getAttrChange, MutationEvent, castToMutationEvent,
+        gTypeMutationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initMutationEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9)"
+        js_initMutationEvent ::
+        MutationEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                Nullable Node -> JSString -> JSString -> JSString -> 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 ->
+                      type' ->
+                        Bool ->
+                          Bool ->
+                            Maybe relatedNode ->
+                              prevValue -> newValue -> attrName -> Word -> m ()
+initMutationEvent self type' canBubble cancelable relatedNode
+  prevValue newValue attrName attrChange
+  = liftIO
+      (js_initMutationEvent (self) (toJSString type') canBubble
+         cancelable
+         (maybeToNullable (fmap toNode relatedNode))
+         (toJSString prevValue)
+         (toJSString newValue)
+         (toJSString attrName)
+         attrChange)
+pattern MODIFICATION = 1
+pattern ADDITION = 2
+pattern REMOVAL = 3
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,62 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MutationObserver
+       (js_newMutationObserver, newMutationObserver, js_observe, observe,
+        js_takeRecords, takeRecords, js_disconnect, disconnect,
+        MutationObserver, castToMutationObserver, gTypeMutationObserver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"MutationObserver\"]($1)" js_newMutationObserver ::
+        Nullable MutationCallback -> IO MutationObserver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation> 
+newMutationObserver ::
+                    (MonadIO m, IsMutationCallback callback) =>
+                      Maybe callback -> m MutationObserver
+newMutationObserver callback
+  = liftIO
+      (js_newMutationObserver
+         (maybeToNullable (fmap toMutationCallback callback)))
+ 
+foreign import javascript unsafe "$1[\"observe\"]($2, $3)"
+        js_observe ::
+        MutationObserver -> Nullable Node -> Nullable Dictionary -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.observe Mozilla MutationObserver.observe documentation> 
+observe ::
+        (MonadIO m, IsNode target, IsDictionary options) =>
+          MutationObserver -> Maybe target -> Maybe options -> m ()
+observe self target options
+  = liftIO
+      (js_observe (self) (maybeToNullable (fmap toNode target))
+         (maybeToNullable (fmap toDictionary options)))
+ 
+foreign import javascript unsafe "$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 [Maybe MutationRecord]
+takeRecords self
+  = liftIO ((js_takeRecords (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$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))
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,105 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.MutationRecord
+       (js_getType, getType, js_getTarget, getTarget, js_getAddedNodes,
+        getAddedNodes, js_getRemovedNodes, getRemovedNodes,
+        js_getPreviousSibling, getPreviousSibling, js_getNextSibling,
+        getNextSibling, js_getAttributeName, getAttributeName,
+        js_getAttributeNamespace, getAttributeNamespace, js_getOldValue,
+        getOldValue, MutationRecord, castToMutationRecord,
+        gTypeMutationRecord)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"target\"]" js_getTarget ::
+        MutationRecord -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.target Mozilla MutationRecord.target documentation> 
+getTarget :: (MonadIO m) => MutationRecord -> m (Maybe Node)
+getTarget self = liftIO (nullableToMaybe <$> (js_getTarget (self)))
+ 
+foreign import javascript unsafe "$1[\"addedNodes\"]"
+        js_getAddedNodes :: MutationRecord -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.addedNodes Mozilla MutationRecord.addedNodes documentation> 
+getAddedNodes ::
+              (MonadIO m) => MutationRecord -> m (Maybe NodeList)
+getAddedNodes self
+  = liftIO (nullableToMaybe <$> (js_getAddedNodes (self)))
+ 
+foreign import javascript unsafe "$1[\"removedNodes\"]"
+        js_getRemovedNodes :: MutationRecord -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.removedNodes Mozilla MutationRecord.removedNodes documentation> 
+getRemovedNodes ::
+                (MonadIO m) => MutationRecord -> m (Maybe NodeList)
+getRemovedNodes self
+  = liftIO (nullableToMaybe <$> (js_getRemovedNodes (self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
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,115 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.NamedNodeMap
+       (js_getNamedItem, getNamedItem, js_setNamedItem, setNamedItem,
+        js_removeNamedItem, removeNamedItem, js_item, item,
+        js_getNamedItemNS, getNamedItemNS, js_setNamedItemNS,
+        setNamedItemNS, js_removeNamedItemNS, removeNamedItemNS,
+        js_getLength, getLength, NamedNodeMap, castToNamedNodeMap,
+        gTypeNamedNodeMap)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getNamedItem\"]($2)"
+        js_getNamedItem :: NamedNodeMap -> JSString -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
+getNamedItem ::
+             (MonadIO m, ToJSString name) =>
+               NamedNodeMap -> name -> m (Maybe Node)
+getNamedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_getNamedItem (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"setNamedItem\"]($2)"
+        js_setNamedItem ::
+        NamedNodeMap -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
+setNamedItem ::
+             (MonadIO m, IsNode node) =>
+               NamedNodeMap -> Maybe node -> m (Maybe Node)
+setNamedItem self node
+  = liftIO
+      (nullableToMaybe <$>
+         (js_setNamedItem (self) (maybeToNullable (fmap toNode node))))
+ 
+foreign import javascript unsafe "$1[\"removeNamedItem\"]($2)"
+        js_removeNamedItem ::
+        NamedNodeMap -> JSString -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
+removeNamedItem ::
+                (MonadIO m, ToJSString name) =>
+                  NamedNodeMap -> name -> m (Maybe Node)
+removeNamedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_removeNamedItem (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        NamedNodeMap -> Word -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
+item :: (MonadIO m) => NamedNodeMap -> Word -> m (Maybe Node)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"getNamedItemNS\"]($2, $3)"
+        js_getNamedItemNS ::
+        NamedNodeMap -> Nullable JSString -> JSString -> IO (Nullable Node)
+
+-- | <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 Node)
+getNamedItemNS self namespaceURI localName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getNamedItemNS (self) (toMaybeJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe "$1[\"setNamedItemNS\"]($2)"
+        js_setNamedItemNS ::
+        NamedNodeMap -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
+setNamedItemNS ::
+               (MonadIO m, IsNode node) =>
+                 NamedNodeMap -> Maybe node -> m (Maybe Node)
+setNamedItemNS self node
+  = liftIO
+      (nullableToMaybe <$>
+         (js_setNamedItemNS (self) (maybeToNullable (fmap toNode node))))
+ 
+foreign import javascript unsafe
+        "$1[\"removeNamedItemNS\"]($2, $3)" js_removeNamedItemNS ::
+        NamedNodeMap -> Nullable JSString -> JSString -> IO (Nullable Node)
+
+-- | <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 (Maybe Node)
+removeNamedItemNS self namespaceURI localName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_removeNamedItemNS (self) (toMaybeJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe "$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,305 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Navigator
+       (js_getGamepads, getGamepads, js_webkitGetUserMedia,
+        webkitGetUserMedia, js_registerProtocolHandler,
+        registerProtocolHandler, js_isProtocolHandlerRegistered,
+        isProtocolHandlerRegistered, js_unregisterProtocolHandler,
+        unregisterProtocolHandler, js_vibratePattern, vibratePattern,
+        js_vibrate, vibrate, js_javaEnabled, javaEnabled,
+        js_getStorageUpdates, getStorageUpdates, js_getWebkitBattery,
+        getWebkitBattery, js_getGeolocation, getGeolocation,
+        js_getWebkitTemporaryStorage, getWebkitTemporaryStorage,
+        js_getWebkitPersistentStorage, getWebkitPersistentStorage,
+        js_getAppCodeName, getAppCodeName, js_getAppName, getAppName,
+        js_getAppVersion, getAppVersion, js_getLanguage, getLanguage,
+        js_getUserAgent, getUserAgent, js_getPlatform, getPlatform,
+        js_getPlugins, getPlugins, js_getMimeTypes, getMimeTypes,
+        js_getProduct, getProduct, js_getProductSub, getProductSub,
+        js_getVendor, getVendor, js_getVendorSub, getVendorSub,
+        js_getCookieEnabled, getCookieEnabled, js_getOnLine, getOnLine,
+        js_getHardwareConcurrency, getHardwareConcurrency, Navigator,
+        castToNavigator, gTypeNavigator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 [Maybe Gamepad]
+getGamepads self
+  = liftIO ((js_getGamepads (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetUserMedia\"]($2, $3,\n$4)" js_webkitGetUserMedia ::
+        Navigator ->
+          Nullable Dictionary ->
+            Nullable NavigatorUserMediaSuccessCallback ->
+              Nullable NavigatorUserMediaErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitGetUserMedia Mozilla Navigator.webkitGetUserMedia documentation> 
+webkitGetUserMedia ::
+                   (MonadIO m, IsDictionary options) =>
+                     Navigator ->
+                       Maybe options ->
+                         Maybe NavigatorUserMediaSuccessCallback ->
+                           Maybe NavigatorUserMediaErrorCallback -> m ()
+webkitGetUserMedia self options successCallback errorCallback
+  = liftIO
+      (js_webkitGetUserMedia (self)
+         (maybeToNullable (fmap toDictionary options))
+         (maybeToNullable successCallback)
+         (maybeToNullable errorCallback))
+ 
+foreign import javascript unsafe
+        "$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 unsafe
+        "$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)))
+ 
+foreign import javascript unsafe
+        "$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[\"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'')
+ 
+foreign import javascript unsafe "($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)
+ 
+foreign import javascript unsafe "($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))
+ 
+foreign import javascript unsafe "$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[\"webkitBattery\"]"
+        js_getWebkitBattery :: Navigator -> IO (Nullable BatteryManager)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitBattery Mozilla Navigator.webkitBattery documentation> 
+getWebkitBattery ::
+                 (MonadIO m) => Navigator -> m (Maybe BatteryManager)
+getWebkitBattery self
+  = liftIO (nullableToMaybe <$> (js_getWebkitBattery (self)))
+ 
+foreign import javascript unsafe "$1[\"geolocation\"]"
+        js_getGeolocation :: Navigator -> IO (Nullable Geolocation)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.geolocation Mozilla Navigator.geolocation documentation> 
+getGeolocation :: (MonadIO m) => Navigator -> m (Maybe Geolocation)
+getGeolocation self
+  = liftIO (nullableToMaybe <$> (js_getGeolocation (self)))
+ 
+foreign import javascript unsafe "$1[\"webkitTemporaryStorage\"]"
+        js_getWebkitTemporaryStorage ::
+        Navigator -> IO (Nullable StorageQuota)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitTemporaryStorage Mozilla Navigator.webkitTemporaryStorage documentation> 
+getWebkitTemporaryStorage ::
+                          (MonadIO m) => Navigator -> m (Maybe StorageQuota)
+getWebkitTemporaryStorage self
+  = liftIO
+      (nullableToMaybe <$> (js_getWebkitTemporaryStorage (self)))
+ 
+foreign import javascript unsafe "$1[\"webkitPersistentStorage\"]"
+        js_getWebkitPersistentStorage ::
+        Navigator -> IO (Nullable StorageQuota)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitPersistentStorage Mozilla Navigator.webkitPersistentStorage documentation> 
+getWebkitPersistentStorage ::
+                           (MonadIO m) => Navigator -> m (Maybe StorageQuota)
+getWebkitPersistentStorage self
+  = liftIO
+      (nullableToMaybe <$> (js_getWebkitPersistentStorage (self)))
+ 
+foreign import javascript unsafe "$1[\"appCodeName\"]"
+        js_getAppCodeName :: Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.appCodeName Mozilla Navigator.appCodeName documentation> 
+getAppCodeName ::
+               (MonadIO m, FromJSString result) => Navigator -> m result
+getAppCodeName self
+  = liftIO (fromJSString <$> (js_getAppCodeName (self)))
+ 
+foreign import javascript unsafe "$1[\"appName\"]" js_getAppName ::
+        Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.appName Mozilla Navigator.appName documentation> 
+getAppName ::
+           (MonadIO m, FromJSString result) => Navigator -> m result
+getAppName self = liftIO (fromJSString <$> (js_getAppName (self)))
+ 
+foreign import javascript unsafe "$1[\"appVersion\"]"
+        js_getAppVersion :: Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.appVersion Mozilla Navigator.appVersion documentation> 
+getAppVersion ::
+              (MonadIO m, FromJSString result) => Navigator -> m result
+getAppVersion self
+  = liftIO (fromJSString <$> (js_getAppVersion (self)))
+ 
+foreign import javascript unsafe "$1[\"language\"]" js_getLanguage
+        :: Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.language Mozilla Navigator.language documentation> 
+getLanguage ::
+            (MonadIO m, FromJSString result) => Navigator -> m result
+getLanguage self
+  = liftIO (fromJSString <$> (js_getLanguage (self)))
+ 
+foreign import javascript unsafe "$1[\"userAgent\"]"
+        js_getUserAgent :: Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.userAgent Mozilla Navigator.userAgent documentation> 
+getUserAgent ::
+             (MonadIO m, FromJSString result) => Navigator -> m result
+getUserAgent self
+  = liftIO (fromJSString <$> (js_getUserAgent (self)))
+ 
+foreign import javascript unsafe "$1[\"platform\"]" js_getPlatform
+        :: Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.platform Mozilla Navigator.platform documentation> 
+getPlatform ::
+            (MonadIO m, FromJSString result) => Navigator -> m result
+getPlatform self
+  = liftIO (fromJSString <$> (js_getPlatform (self)))
+ 
+foreign import javascript unsafe "$1[\"plugins\"]" js_getPlugins ::
+        Navigator -> IO (Nullable PluginArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.plugins Mozilla Navigator.plugins documentation> 
+getPlugins :: (MonadIO m) => Navigator -> m (Maybe PluginArray)
+getPlugins self
+  = liftIO (nullableToMaybe <$> (js_getPlugins (self)))
+ 
+foreign import javascript unsafe "$1[\"mimeTypes\"]"
+        js_getMimeTypes :: Navigator -> IO (Nullable MimeTypeArray)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mimeTypes Mozilla Navigator.mimeTypes documentation> 
+getMimeTypes :: (MonadIO m) => Navigator -> m (Maybe MimeTypeArray)
+getMimeTypes self
+  = liftIO (nullableToMaybe <$> (js_getMimeTypes (self)))
+ 
+foreign import javascript unsafe "$1[\"product\"]" js_getProduct ::
+        Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.product Mozilla Navigator.product documentation> 
+getProduct ::
+           (MonadIO m, FromJSString result) => Navigator -> m result
+getProduct self = liftIO (fromJSString <$> (js_getProduct (self)))
+ 
+foreign import javascript unsafe "$1[\"productSub\"]"
+        js_getProductSub :: Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.productSub Mozilla Navigator.productSub documentation> 
+getProductSub ::
+              (MonadIO m, FromJSString result) => Navigator -> m result
+getProductSub self
+  = liftIO (fromJSString <$> (js_getProductSub (self)))
+ 
+foreign import javascript unsafe "$1[\"vendor\"]" js_getVendor ::
+        Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vendor Mozilla Navigator.vendor documentation> 
+getVendor ::
+          (MonadIO m, FromJSString result) => Navigator -> m result
+getVendor self = liftIO (fromJSString <$> (js_getVendor (self)))
+ 
+foreign import javascript unsafe "$1[\"vendorSub\"]"
+        js_getVendorSub :: Navigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vendorSub Mozilla Navigator.vendorSub documentation> 
+getVendorSub ::
+             (MonadIO m, FromJSString result) => Navigator -> m result
+getVendorSub self
+  = liftIO (fromJSString <$> (js_getVendorSub (self)))
+ 
+foreign import javascript unsafe "($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))
+ 
+foreign import javascript unsafe "($1[\"onLine\"] ? 1 : 0)"
+        js_getOnLine :: Navigator -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.onLine Mozilla Navigator.onLine documentation> 
+getOnLine :: (MonadIO m) => Navigator -> m Bool
+getOnLine self = liftIO (js_getOnLine (self))
+ 
+foreign import javascript unsafe "$1[\"hardwareConcurrency\"]"
+        js_getHardwareConcurrency :: Navigator -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.hardwareConcurrency Mozilla Navigator.hardwareConcurrency documentation> 
+getHardwareConcurrency :: (MonadIO m) => Navigator -> m Int
+getHardwareConcurrency self
+  = liftIO (js_getHardwareConcurrency (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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaError
+       (js_getConstraintName, getConstraintName, NavigatorUserMediaError,
+        castToNavigatorUserMediaError, gTypeNavigatorUserMediaError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,57 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
+newNavigatorUserMediaErrorCallback ::
+                                   (MonadIO m) =>
+                                     (Maybe 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) =>
+                                         (Maybe 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) =>
+                                          (Maybe 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,57 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
+newNavigatorUserMediaSuccessCallback ::
+                                     (MonadIO m) =>
+                                       (Maybe 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) =>
+                                           (Maybe 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) =>
+                                            (Maybe 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,424 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Node
+       (js_insertBefore, insertBefore, js_replaceChild, replaceChild,
+        js_removeChild, removeChild, js_appendChild, appendChild,
+        js_hasChildNodes, hasChildNodes, js_cloneNode, cloneNode,
+        js_normalize, normalize, js_isSupported, isSupported,
+        js_isSameNode, isSameNode, js_isEqualNode, isEqualNode,
+        js_lookupPrefix, lookupPrefix, js_isDefaultNamespace,
+        isDefaultNamespace, js_lookupNamespaceURI, lookupNamespaceURI,
+        js_compareDocumentPosition, compareDocumentPosition, js_contains,
+        contains, 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_getNodeName,
+        getNodeName, js_setNodeValue, setNodeValue, js_getNodeValue,
+        getNodeValue, js_getNodeType, getNodeType, js_getParentNode,
+        getParentNode, js_getChildNodes, getChildNodes, js_getFirstChild,
+        getFirstChild, js_getLastChild, getLastChild,
+        js_getPreviousSibling, getPreviousSibling, js_getNextSibling,
+        getNextSibling, js_getOwnerDocument, getOwnerDocument,
+        js_getNamespaceURI, getNamespaceURI, js_setPrefix, setPrefix,
+        js_getPrefix, getPrefix, js_getLocalName, getLocalName,
+        js_getBaseURI, getBaseURI, js_setTextContent, setTextContent,
+        js_getTextContent, getTextContent, js_getParentElement,
+        getParentElement, Node, castToNode, gTypeNode, IsNode, toNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"insertBefore\"]($2, $3)"
+        js_insertBefore ::
+        Node -> Nullable Node -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
+insertBefore ::
+             (MonadIO m, IsNode self, IsNode newChild, IsNode refChild) =>
+               self -> Maybe newChild -> Maybe refChild -> m (Maybe Node)
+insertBefore self newChild refChild
+  = liftIO
+      (nullableToMaybe <$>
+         (js_insertBefore (toNode self)
+            (maybeToNullable (fmap toNode newChild))
+            (maybeToNullable (fmap toNode refChild))))
+ 
+foreign import javascript unsafe "$1[\"replaceChild\"]($2, $3)"
+        js_replaceChild ::
+        Node -> Nullable Node -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
+replaceChild ::
+             (MonadIO m, IsNode self, IsNode newChild, IsNode oldChild) =>
+               self -> Maybe newChild -> Maybe oldChild -> m (Maybe Node)
+replaceChild self newChild oldChild
+  = liftIO
+      (nullableToMaybe <$>
+         (js_replaceChild (toNode self)
+            (maybeToNullable (fmap toNode newChild))
+            (maybeToNullable (fmap toNode oldChild))))
+ 
+foreign import javascript unsafe "$1[\"removeChild\"]($2)"
+        js_removeChild :: Node -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
+removeChild ::
+            (MonadIO m, IsNode self, IsNode oldChild) =>
+              self -> Maybe oldChild -> m (Maybe Node)
+removeChild self oldChild
+  = liftIO
+      (nullableToMaybe <$>
+         (js_removeChild (toNode self)
+            (maybeToNullable (fmap toNode oldChild))))
+ 
+foreign import javascript unsafe "$1[\"appendChild\"]($2)"
+        js_appendChild :: Node -> Nullable Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
+appendChild ::
+            (MonadIO m, IsNode self, IsNode newChild) =>
+              self -> Maybe newChild -> m (Maybe Node)
+appendChild self newChild
+  = liftIO
+      (nullableToMaybe <$>
+         (js_appendChild (toNode self)
+            (maybeToNullable (fmap toNode newChild))))
+ 
+foreign import javascript unsafe
+        "($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))
+ 
+foreign import javascript unsafe "$1[\"cloneNode\"]($2)"
+        js_cloneNode :: Node -> Bool -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
+cloneNode ::
+          (MonadIO m, IsNode self) => self -> Bool -> m (Maybe Node)
+cloneNode self deep
+  = liftIO (nullableToMaybe <$> (js_cloneNode (toNode self) deep))
+ 
+foreign import javascript unsafe "$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 unsafe
+        "($1[\"isSupported\"]($2,\n$3) ? 1 : 0)" js_isSupported ::
+        Node -> JSString -> Nullable JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSupported Mozilla Node.isSupported documentation> 
+isSupported ::
+            (MonadIO m, IsNode self, ToJSString feature, ToJSString version) =>
+              self -> feature -> Maybe version -> m Bool
+isSupported self feature version
+  = liftIO
+      (js_isSupported (toNode self) (toJSString feature)
+         (toMaybeJSString version))
+ 
+foreign import javascript unsafe "($1[\"isSameNode\"]($2) ? 1 : 0)"
+        js_isSameNode :: Node -> Nullable 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) (maybeToNullable (fmap toNode other)))
+ 
+foreign import javascript unsafe
+        "($1[\"isEqualNode\"]($2) ? 1 : 0)" js_isEqualNode ::
+        Node -> Nullable 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)
+         (maybeToNullable (fmap toNode other)))
+ 
+foreign import javascript unsafe "$1[\"lookupPrefix\"]($2)"
+        js_lookupPrefix ::
+        Node -> Nullable 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) (toMaybeJSString namespaceURI)))
+ 
+foreign import javascript unsafe
+        "($1[\"isDefaultNamespace\"]($2) ? 1 : 0)" js_isDefaultNamespace ::
+        Node -> Nullable 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)
+         (toMaybeJSString namespaceURI))
+ 
+foreign import javascript unsafe "$1[\"lookupNamespaceURI\"]($2)"
+        js_lookupNamespaceURI ::
+        Node -> Nullable 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) (toMaybeJSString prefix)))
+ 
+foreign import javascript unsafe
+        "$1[\"compareDocumentPosition\"]($2)" js_compareDocumentPosition ::
+        Node -> Nullable 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 -> Maybe other -> m Word
+compareDocumentPosition self other
+  = liftIO
+      (js_compareDocumentPosition (toNode self)
+         (maybeToNullable (fmap toNode other)))
+ 
+foreign import javascript unsafe "($1[\"contains\"]($2) ? 1 : 0)"
+        js_contains :: Node -> Nullable 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) (maybeToNullable (fmap toNode other)))
+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[\"nodeName\"]" js_getNodeName
+        :: Node -> IO (Nullable 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 (Maybe result)
+getNodeName self
+  = liftIO (fromMaybeJSString <$> (js_getNodeName (toNode self)))
+ 
+foreign import javascript unsafe "$1[\"nodeValue\"] = $2;"
+        js_setNodeValue :: Node -> Nullable 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) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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)))
+ 
+foreign import javascript unsafe "$1[\"childNodes\"]"
+        js_getChildNodes :: Node -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes Mozilla Node.childNodes documentation> 
+getChildNodes ::
+              (MonadIO m, IsNode self) => self -> m (Maybe NodeList)
+getChildNodes self
+  = liftIO (nullableToMaybe <$> (js_getChildNodes (toNode self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"namespaceURI\"]"
+        js_getNamespaceURI :: Node -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.namespaceURI Mozilla Node.namespaceURI documentation> 
+getNamespaceURI ::
+                (MonadIO m, IsNode self, FromJSString result) =>
+                  self -> m (Maybe result)
+getNamespaceURI self
+  = liftIO (fromMaybeJSString <$> (js_getNamespaceURI (toNode self)))
+ 
+foreign import javascript unsafe "$1[\"prefix\"] = $2;"
+        js_setPrefix :: Node -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.prefix Mozilla Node.prefix documentation> 
+setPrefix ::
+          (MonadIO m, IsNode self, ToJSString val) =>
+            self -> Maybe val -> m ()
+setPrefix self val
+  = liftIO (js_setPrefix (toNode self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"prefix\"]" js_getPrefix ::
+        Node -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.prefix Mozilla Node.prefix documentation> 
+getPrefix ::
+          (MonadIO m, IsNode self, FromJSString result) =>
+            self -> m (Maybe result)
+getPrefix self
+  = liftIO (fromMaybeJSString <$> (js_getPrefix (toNode self)))
+ 
+foreign import javascript unsafe "$1[\"localName\"]"
+        js_getLocalName :: Node -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.localName Mozilla Node.localName documentation> 
+getLocalName ::
+             (MonadIO m, IsNode self, FromJSString result) =>
+               self -> m (Maybe result)
+getLocalName self
+  = liftIO (fromMaybeJSString <$> (js_getLocalName (toNode self)))
+ 
+foreign import javascript unsafe "$1[\"baseURI\"]" js_getBaseURI ::
+        Node -> IO (Nullable 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 (Maybe result)
+getBaseURI self
+  = liftIO (fromMaybeJSString <$> (js_getBaseURI (toNode self)))
+ 
+foreign import javascript unsafe "$1[\"textContent\"] = $2;"
+        js_setTextContent :: Node -> Nullable 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) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
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,51 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.NodeFilter
+       (js_acceptNode, acceptNode, 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, castToNodeFilter,
+        gTypeNodeFilter)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"acceptNode\"]($2)"
+        js_acceptNode :: NodeFilter -> Nullable Node -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter.acceptNode Mozilla NodeFilter.acceptNode documentation> 
+acceptNode ::
+           (MonadIO m, IsNode n) => NodeFilter -> Maybe n -> m Int
+acceptNode self n
+  = liftIO (js_acceptNode (self) (maybeToNullable (fmap toNode n)))
+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,93 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.NodeIterator
+       (js_nextNode, nextNode, js_previousNode, previousNode, js_detach,
+        detach, js_getRoot, getRoot, js_getWhatToShow, getWhatToShow,
+        js_getFilter, getFilter, js_getExpandEntityReferences,
+        getExpandEntityReferences, js_getReferenceNode, getReferenceNode,
+        js_getPointerBeforeReferenceNode, getPointerBeforeReferenceNode,
+        NodeIterator, castToNodeIterator, gTypeNodeIterator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"root\"]" js_getRoot ::
+        NodeIterator -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.root Mozilla NodeIterator.root documentation> 
+getRoot :: (MonadIO m) => NodeIterator -> m (Maybe Node)
+getRoot self = liftIO (nullableToMaybe <$> (js_getRoot (self)))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$1[\"filter\"]" js_getFilter ::
+        NodeIterator -> IO (Nullable NodeFilter)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.filter Mozilla NodeIterator.filter documentation> 
+getFilter :: (MonadIO m) => NodeIterator -> m (Maybe NodeFilter)
+getFilter self = liftIO (nullableToMaybe <$> (js_getFilter (self)))
+ 
+foreign import javascript unsafe
+        "($1[\"expandEntityReferences\"] ? 1 : 0)"
+        js_getExpandEntityReferences :: NodeIterator -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.expandEntityReferences Mozilla NodeIterator.expandEntityReferences documentation> 
+getExpandEntityReferences :: (MonadIO m) => NodeIterator -> m Bool
+getExpandEntityReferences self
+  = liftIO (js_getExpandEntityReferences (self))
+ 
+foreign import javascript unsafe "$1[\"referenceNode\"]"
+        js_getReferenceNode :: NodeIterator -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.referenceNode Mozilla NodeIterator.referenceNode documentation> 
+getReferenceNode :: (MonadIO m) => NodeIterator -> m (Maybe Node)
+getReferenceNode self
+  = liftIO (nullableToMaybe <$> (js_getReferenceNode (self)))
+ 
+foreign import javascript unsafe
+        "($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))
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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.NodeList
+       (js_item, item, js_getLength, getLength, NodeList, castToNodeList,
+        gTypeNodeList, IsNodeList, toNodeList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$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/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,42 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Notification
+       (js_show, show, showEvent, error, close, click, Notification,
+        castToNotification, gTypeNotification)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onshow Mozilla Notification.onshow documentation> 
+showEvent :: EventName Notification MouseEvent
+showEvent = unsafeEventName (toJSString "show")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onerror Mozilla Notification.onerror documentation> 
+error :: EventName Notification UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclose Mozilla Notification.onclose documentation> 
+close :: EventName Notification CloseEvent
+close = unsafeEventName (toJSString "close")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclick Mozilla Notification.onclick documentation> 
+click :: EventName Notification MouseEvent
+click = unsafeEventName (toJSString "click")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NotificationCenter.hs b/src/GHCJS/DOM/JSFFI/Generated/NotificationCenter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NotificationCenter.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.NotificationCenter
+       (js_createNotification, createNotification, js_checkPermission,
+        checkPermission, js_requestPermission, requestPermission,
+        NotificationCenter, castToNotificationCenter,
+        gTypeNotificationCenter)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"createNotification\"]($2, $3,\n$4)" js_createNotification ::
+        NotificationCenter ->
+          JSString -> JSString -> JSString -> IO (Nullable Notification)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.createNotification Mozilla NotificationCenter.createNotification documentation> 
+createNotification ::
+                   (MonadIO m, ToJSString iconUrl, ToJSString title,
+                    ToJSString body) =>
+                     NotificationCenter ->
+                       iconUrl -> title -> body -> m (Maybe Notification)
+createNotification self iconUrl title body
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createNotification (self) (toJSString iconUrl)
+            (toJSString title)
+            (toJSString body)))
+ 
+foreign import javascript unsafe "$1[\"checkPermission\"]()"
+        js_checkPermission :: NotificationCenter -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.checkPermission Mozilla NotificationCenter.checkPermission documentation> 
+checkPermission :: (MonadIO m) => NotificationCenter -> m Int
+checkPermission self = liftIO (js_checkPermission (self))
+ 
+foreign import javascript unsafe "$1[\"requestPermission\"]($2)"
+        js_requestPermission ::
+        NotificationCenter -> Nullable VoidCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.requestPermission Mozilla NotificationCenter.requestPermission documentation> 
+requestPermission ::
+                  (MonadIO m) => NotificationCenter -> Maybe VoidCallback -> m ()
+requestPermission self callback
+  = liftIO (js_requestPermission (self) (maybeToNullable callback))
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,60 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,21 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives
+       (pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
+        OESStandardDerivatives, castToOESStandardDerivatives,
+        gTypeOESStandardDerivatives)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,20 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat
+       (pattern HALF_FLOAT_OES, OESTextureHalfFloat,
+        castToOESTextureHalfFloat, gTypeOESTextureHalfFloat)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,70 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject
+       (js_createVertexArrayOES, createVertexArrayOES,
+        js_deleteVertexArrayOES, deleteVertexArrayOES, js_isVertexArrayOES,
+        isVertexArrayOES, js_bindVertexArrayOES, bindVertexArrayOES,
+        pattern VERTEX_ARRAY_BINDING_OES, OESVertexArrayObject,
+        castToOESVertexArrayObject, gTypeOESVertexArrayObject)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"createVertexArrayOES\"]()"
+        js_createVertexArrayOES ::
+        OESVertexArrayObject -> IO (Nullable WebGLVertexArrayObjectOES)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
+createVertexArrayOES ::
+                     (MonadIO m) =>
+                       OESVertexArrayObject -> m (Maybe WebGLVertexArrayObjectOES)
+createVertexArrayOES self
+  = liftIO (nullableToMaybe <$> (js_createVertexArrayOES (self)))
+ 
+foreign import javascript unsafe "$1[\"deleteVertexArrayOES\"]($2)"
+        js_deleteVertexArrayOES ::
+        OESVertexArrayObject -> Nullable 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) (maybeToNullable arrayObject))
+ 
+foreign import javascript unsafe
+        "($1[\"isVertexArrayOES\"]($2) ? 1 : 0)" js_isVertexArrayOES ::
+        OESVertexArrayObject ->
+          Nullable 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) (maybeToNullable arrayObject))
+ 
+foreign import javascript unsafe "$1[\"bindVertexArrayOES\"]($2)"
+        js_bindVertexArrayOES ::
+        OESVertexArrayObject -> Nullable 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) (maybeToNullable 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,30 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent
+       (js_getRenderedBuffer, getRenderedBuffer,
+        OfflineAudioCompletionEvent, castToOfflineAudioCompletionEvent,
+        gTypeOfflineAudioCompletionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"renderedBuffer\"]"
+        js_getRenderedBuffer ::
+        OfflineAudioCompletionEvent -> IO (Nullable AudioBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
+getRenderedBuffer ::
+                  (MonadIO m) => OfflineAudioCompletionEvent -> m (Maybe AudioBuffer)
+getRenderedBuffer self
+  = liftIO (nullableToMaybe <$> (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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.OfflineAudioContext
+       (js_newOfflineAudioContext, newOfflineAudioContext,
+        OfflineAudioContext, castToOfflineAudioContext,
+        gTypeOfflineAudioContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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,115 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.OscillatorNode
+       (js_start, start, js_stop, stop, js_noteOn, noteOn, js_noteOff,
+        noteOff, js_setPeriodicWave, setPeriodicWave, pattern SINE,
+        pattern SQUARE, pattern SAWTOOTH, pattern TRIANGLE, pattern CUSTOM,
+        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, castToOscillatorNode, gTypeOscillatorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"start\"]($2)" js_start ::
+        OscillatorNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.start Mozilla OscillatorNode.start documentation> 
+start :: (MonadIO m) => OscillatorNode -> Double -> m ()
+start self when = liftIO (js_start (self) when)
+ 
+foreign import javascript unsafe "$1[\"stop\"]($2)" js_stop ::
+        OscillatorNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.stop Mozilla OscillatorNode.stop documentation> 
+stop :: (MonadIO m) => OscillatorNode -> Double -> m ()
+stop self when = liftIO (js_stop (self) when)
+ 
+foreign import javascript unsafe "$1[\"noteOn\"]($2)" js_noteOn ::
+        OscillatorNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.noteOn Mozilla OscillatorNode.noteOn documentation> 
+noteOn :: (MonadIO m) => OscillatorNode -> Double -> m ()
+noteOn self when = liftIO (js_noteOn (self) when)
+ 
+foreign import javascript unsafe "$1[\"noteOff\"]($2)" js_noteOff
+        :: OscillatorNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.noteOff Mozilla OscillatorNode.noteOff documentation> 
+noteOff :: (MonadIO m) => OscillatorNode -> Double -> m ()
+noteOff self when = liftIO (js_noteOff (self) when)
+ 
+foreign import javascript unsafe "$1[\"setPeriodicWave\"]($2)"
+        js_setPeriodicWave ::
+        OscillatorNode -> Nullable 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) (maybeToNullable wave))
+pattern SINE = 0
+pattern SQUARE = 1
+pattern SAWTOOTH = 2
+pattern TRIANGLE = 3
+pattern CUSTOM = 4
+pattern UNSCHEDULED_STATE = 0
+pattern SCHEDULED_STATE = 1
+pattern PLAYING_STATE = 2
+pattern FINISHED_STATE = 3
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        OscillatorNode -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => OscillatorNode -> val -> m ()
+setType self val = liftIO (js_setType (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        OscillatorNode -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => OscillatorNode -> m result
+getType self = liftIO (fromJSString <$> (js_getType (self)))
+ 
+foreign import javascript unsafe "$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[\"frequency\"]"
+        js_getFrequency :: OscillatorNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.frequency Mozilla OscillatorNode.frequency documentation> 
+getFrequency ::
+             (MonadIO m) => OscillatorNode -> m (Maybe AudioParam)
+getFrequency self
+  = liftIO (nullableToMaybe <$> (js_getFrequency (self)))
+ 
+foreign import javascript unsafe "$1[\"detune\"]" js_getDetune ::
+        OscillatorNode -> IO (Nullable AudioParam)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.detune Mozilla OscillatorNode.detune documentation> 
+getDetune :: (MonadIO m) => OscillatorNode -> m (Maybe AudioParam)
+getDetune self = liftIO (nullableToMaybe <$> (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/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,48 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.OverflowEvent
+       (pattern HORIZONTAL, pattern VERTICAL, pattern BOTH, js_getOrient,
+        getOrient, js_getHorizontalOverflow, getHorizontalOverflow,
+        js_getVerticalOverflow, getVerticalOverflow, OverflowEvent,
+        castToOverflowEvent, gTypeOverflowEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern HORIZONTAL = 0
+pattern VERTICAL = 1
+pattern BOTH = 2
+ 
+foreign import javascript unsafe "$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[\"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[\"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,26 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
+       (js_getPersisted, getPersisted, PageTransitionEvent,
+        castToPageTransitionEvent, gTypePageTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "($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,186 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.PannerNode
+       (js_setPosition, setPosition, js_setOrientation, setOrientation,
+        js_setVelocity, setVelocity, pattern EQUALPOWER, pattern HRTF,
+        pattern SOUNDFIELD, pattern LINEAR_DISTANCE,
+        pattern INVERSE_DISTANCE, pattern EXPONENTIAL_DISTANCE,
+        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,
+        castToPannerNode, gTypePannerNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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)
+pattern EQUALPOWER = 0
+pattern HRTF = 1
+pattern SOUNDFIELD = 2
+pattern LINEAR_DISTANCE = 0
+pattern INVERSE_DISTANCE = 1
+pattern EXPONENTIAL_DISTANCE = 2
+ 
+foreign import javascript unsafe "$1[\"panningModel\"] = $2;"
+        js_setPanningModel :: PannerNode -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
+setPanningModel ::
+                (MonadIO m, ToJSString val) => PannerNode -> val -> m ()
+setPanningModel self val
+  = liftIO (js_setPanningModel (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"panningModel\"]"
+        js_getPanningModel :: PannerNode -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
+getPanningModel ::
+                (MonadIO m, FromJSString result) => PannerNode -> m result
+getPanningModel self
+  = liftIO (fromJSString <$> (js_getPanningModel (self)))
+ 
+foreign import javascript unsafe "$1[\"distanceModel\"] = $2;"
+        js_setDistanceModel :: PannerNode -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
+setDistanceModel ::
+                 (MonadIO m, ToJSString val) => PannerNode -> val -> m ()
+setDistanceModel self val
+  = liftIO (js_setDistanceModel (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"distanceModel\"]"
+        js_getDistanceModel :: PannerNode -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
+getDistanceModel ::
+                 (MonadIO m, FromJSString result) => PannerNode -> m result
+getDistanceModel self
+  = liftIO (fromJSString <$> (js_getDistanceModel (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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/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,134 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Path2D
+       (js_newPath2D, newPath2D, js_newPath2D', newPath2D',
+        js_newPath2D'', newPath2D'', js_addPath, addPath, js_closePath,
+        closePath, js_moveTo, moveTo, js_lineTo, lineTo,
+        js_quadraticCurveTo, quadraticCurveTo, js_bezierCurveTo,
+        bezierCurveTo, js_arcTo, arcTo, js_rect, rect, js_arc, arc, Path2D,
+        castToPath2D, gTypePath2D)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 "new window[\"Path2D\"]($1)"
+        js_newPath2D' :: Nullable Path2D -> IO Path2D
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+newPath2D' :: (MonadIO m) => Maybe Path2D -> m Path2D
+newPath2D' path = liftIO (js_newPath2D' (maybeToNullable path))
+ 
+foreign import javascript unsafe "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[\"addPath\"]($2, $3)"
+        js_addPath ::
+        Path2D -> Nullable Path2D -> Nullable SVGMatrix -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.addPath Mozilla Path2D.addPath documentation> 
+addPath ::
+        (MonadIO m) => Path2D -> Maybe Path2D -> Maybe SVGMatrix -> m ()
+addPath self path transform
+  = liftIO
+      (js_addPath (self) (maybeToNullable path)
+         (maybeToNullable transform))
+ 
+foreign import javascript unsafe "$1[\"closePath\"]()" js_closePath
+        :: Path2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.closePath Mozilla Path2D.closePath documentation> 
+closePath :: (MonadIO m) => Path2D -> m ()
+closePath self = liftIO (js_closePath (self))
+ 
+foreign import javascript unsafe "$1[\"moveTo\"]($2, $3)" js_moveTo
+        :: Path2D -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.moveTo Mozilla Path2D.moveTo documentation> 
+moveTo :: (MonadIO m) => Path2D -> Float -> Float -> m ()
+moveTo self x y = liftIO (js_moveTo (self) x y)
+ 
+foreign import javascript unsafe "$1[\"lineTo\"]($2, $3)" js_lineTo
+        :: Path2D -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.lineTo Mozilla Path2D.lineTo documentation> 
+lineTo :: (MonadIO m) => Path2D -> Float -> Float -> m ()
+lineTo self x y = liftIO (js_lineTo (self) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"quadraticCurveTo\"]($2, $3,\n$4, $5)" js_quadraticCurveTo ::
+        Path2D -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.quadraticCurveTo Mozilla Path2D.quadraticCurveTo documentation> 
+quadraticCurveTo ::
+                 (MonadIO m) => Path2D -> Float -> Float -> Float -> Float -> m ()
+quadraticCurveTo self cpx cpy x y
+  = liftIO (js_quadraticCurveTo (self) cpx cpy x y)
+ 
+foreign import javascript unsafe
+        "$1[\"bezierCurveTo\"]($2, $3, $4,\n$5, $6, $7)" js_bezierCurveTo
+        ::
+        Path2D ->
+          Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.bezierCurveTo Mozilla Path2D.bezierCurveTo documentation> 
+bezierCurveTo ::
+              (MonadIO m) =>
+                Path2D ->
+                  Float -> Float -> Float -> Float -> Float -> Float -> m ()
+bezierCurveTo self cp1x cp1y cp2x cp2y x y
+  = liftIO (js_bezierCurveTo (self) cp1x cp1y cp2x cp2y x y)
+ 
+foreign import javascript unsafe
+        "$1[\"arcTo\"]($2, $3, $4, $5, $6)" js_arcTo ::
+        Path2D -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.arcTo Mozilla Path2D.arcTo documentation> 
+arcTo ::
+      (MonadIO m) =>
+        Path2D -> Float -> Float -> Float -> Float -> Float -> m ()
+arcTo self x1 y1 x2 y2 radius
+  = liftIO (js_arcTo (self) x1 y1 x2 y2 radius)
+ 
+foreign import javascript unsafe "$1[\"rect\"]($2, $3, $4, $5)"
+        js_rect :: Path2D -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.rect Mozilla Path2D.rect documentation> 
+rect ::
+     (MonadIO m) => Path2D -> Float -> Float -> Float -> Float -> m ()
+rect self x y width height
+  = liftIO (js_rect (self) x y width height)
+ 
+foreign import javascript unsafe
+        "$1[\"arc\"]($2, $3, $4, $5, $6,\n$7)" js_arc ::
+        Path2D ->
+          Float -> Float -> Float -> Float -> Float -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.arc Mozilla Path2D.arc documentation> 
+arc ::
+    (MonadIO m) =>
+      Path2D -> Float -> Float -> Float -> Float -> Float -> Bool -> m ()
+arc self x y radius startAngle endAngle anticlockwise
+  = liftIO
+      (js_arc (self) x y radius startAngle endAngle anticlockwise)
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,159 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Performance
+       (js_webkitGetEntries, webkitGetEntries, js_webkitGetEntriesByType,
+        webkitGetEntriesByType, js_webkitGetEntriesByName,
+        webkitGetEntriesByName, js_webkitClearResourceTimings,
+        webkitClearResourceTimings, js_webkitSetResourceTimingBufferSize,
+        webkitSetResourceTimingBufferSize, js_webkitMark, webkitMark,
+        js_webkitClearMarks, webkitClearMarks, js_webkitMeasure,
+        webkitMeasure, js_webkitClearMeasures, webkitClearMeasures, js_now,
+        now, js_getNavigation, getNavigation, js_getTiming, getTiming,
+        webKitResourceTimingBufferFull, Performance, castToPerformance,
+        gTypePerformance)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"webkitGetEntries\"]()"
+        js_webkitGetEntries ::
+        Performance -> IO (Nullable PerformanceEntryList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntries Mozilla Performance.webkitGetEntries documentation> 
+webkitGetEntries ::
+                 (MonadIO m) => Performance -> m (Maybe PerformanceEntryList)
+webkitGetEntries self
+  = liftIO (nullableToMaybe <$> (js_webkitGetEntries (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetEntriesByType\"]($2)" js_webkitGetEntriesByType ::
+        Performance -> JSString -> IO (Nullable PerformanceEntryList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntriesByType Mozilla Performance.webkitGetEntriesByType documentation> 
+webkitGetEntriesByType ::
+                       (MonadIO m, ToJSString entryType) =>
+                         Performance -> entryType -> m (Maybe PerformanceEntryList)
+webkitGetEntriesByType self entryType
+  = liftIO
+      (nullableToMaybe <$>
+         (js_webkitGetEntriesByType (self) (toJSString entryType)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetEntriesByName\"]($2,\n$3)" js_webkitGetEntriesByName
+        ::
+        Performance ->
+          JSString -> JSString -> IO (Nullable PerformanceEntryList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntriesByName Mozilla Performance.webkitGetEntriesByName documentation> 
+webkitGetEntriesByName ::
+                       (MonadIO m, ToJSString name, ToJSString entryType) =>
+                         Performance -> name -> entryType -> m (Maybe PerformanceEntryList)
+webkitGetEntriesByName self name entryType
+  = liftIO
+      (nullableToMaybe <$>
+         (js_webkitGetEntriesByName (self) (toJSString name)
+            (toJSString entryType)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitClearResourceTimings\"]()"
+        js_webkitClearResourceTimings :: Performance -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitClearResourceTimings Mozilla Performance.webkitClearResourceTimings documentation> 
+webkitClearResourceTimings :: (MonadIO m) => Performance -> m ()
+webkitClearResourceTimings self
+  = liftIO (js_webkitClearResourceTimings (self))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitSetResourceTimingBufferSize\"]($2)"
+        js_webkitSetResourceTimingBufferSize ::
+        Performance -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitSetResourceTimingBufferSize Mozilla Performance.webkitSetResourceTimingBufferSize documentation> 
+webkitSetResourceTimingBufferSize ::
+                                  (MonadIO m) => Performance -> Word -> m ()
+webkitSetResourceTimingBufferSize self maxSize
+  = liftIO (js_webkitSetResourceTimingBufferSize (self) maxSize)
+ 
+foreign import javascript unsafe "$1[\"webkitMark\"]($2)"
+        js_webkitMark :: Performance -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitMark Mozilla Performance.webkitMark documentation> 
+webkitMark ::
+           (MonadIO m, ToJSString markName) => Performance -> markName -> m ()
+webkitMark self markName
+  = liftIO (js_webkitMark (self) (toJSString markName))
+ 
+foreign import javascript unsafe "$1[\"webkitClearMarks\"]($2)"
+        js_webkitClearMarks :: Performance -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitClearMarks Mozilla Performance.webkitClearMarks documentation> 
+webkitClearMarks ::
+                 (MonadIO m, ToJSString markName) => Performance -> markName -> m ()
+webkitClearMarks self markName
+  = liftIO (js_webkitClearMarks (self) (toJSString markName))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitMeasure\"]($2, $3, $4)" js_webkitMeasure ::
+        Performance -> JSString -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitMeasure Mozilla Performance.webkitMeasure documentation> 
+webkitMeasure ::
+              (MonadIO m, ToJSString measureName, ToJSString startMark,
+               ToJSString endMark) =>
+                Performance -> measureName -> startMark -> endMark -> m ()
+webkitMeasure self measureName startMark endMark
+  = liftIO
+      (js_webkitMeasure (self) (toJSString measureName)
+         (toJSString startMark)
+         (toJSString endMark))
+ 
+foreign import javascript unsafe "$1[\"webkitClearMeasures\"]($2)"
+        js_webkitClearMeasures :: Performance -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitClearMeasures Mozilla Performance.webkitClearMeasures documentation> 
+webkitClearMeasures ::
+                    (MonadIO m, ToJSString measureName) =>
+                      Performance -> measureName -> m ()
+webkitClearMeasures self measureName
+  = liftIO (js_webkitClearMeasures (self) (toJSString measureName))
+ 
+foreign import javascript unsafe "$1[\"now\"]()" js_now ::
+        Performance -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
+now :: (MonadIO m) => Performance -> m Double
+now self = liftIO (js_now (self))
+ 
+foreign import javascript unsafe "$1[\"navigation\"]"
+        js_getNavigation ::
+        Performance -> IO (Nullable PerformanceNavigation)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.navigation Mozilla Performance.navigation documentation> 
+getNavigation ::
+              (MonadIO m) => Performance -> m (Maybe PerformanceNavigation)
+getNavigation self
+  = liftIO (nullableToMaybe <$> (js_getNavigation (self)))
+ 
+foreign import javascript unsafe "$1[\"timing\"]" js_getTiming ::
+        Performance -> IO (Nullable PerformanceTiming)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.timing Mozilla Performance.timing documentation> 
+getTiming ::
+          (MonadIO m) => Performance -> m (Maybe PerformanceTiming)
+getTiming self = liftIO (nullableToMaybe <$> (js_getTiming (self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.onwebkitresourcetimingbufferfull Mozilla Performance.onwebkitresourcetimingbufferfull documentation> 
+webKitResourceTimingBufferFull :: EventName Performance Event
+webKitResourceTimingBufferFull
+  = unsafeEventName (toJSString "webkitresourcetimingbufferfull")
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,60 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceEntry
+       (js_getName, getName, js_getEntryType, getEntryType,
+        js_getStartTime, getStartTime, js_getDuration, getDuration,
+        PerformanceEntry, castToPerformanceEntry, gTypePerformanceEntry,
+        IsPerformanceEntry, toPerformanceEntry)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"startTime\"]"
+        js_getStartTime :: PerformanceEntry -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.startTime Mozilla PerformanceEntry.startTime documentation> 
+getStartTime ::
+             (MonadIO m, IsPerformanceEntry self) => self -> m Double
+getStartTime self
+  = liftIO (js_getStartTime (toPerformanceEntry self))
+ 
+foreign import javascript unsafe "$1[\"duration\"]" js_getDuration
+        :: PerformanceEntry -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.duration Mozilla PerformanceEntry.duration documentation> 
+getDuration ::
+            (MonadIO m, IsPerformanceEntry self) => self -> m Double
+getDuration self
+  = liftIO (js_getDuration (toPerformanceEntry self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntryList.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntryList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntryList.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceEntryList
+       (js_item, item, js_getLength, getLength, PerformanceEntryList,
+        castToPerformanceEntryList, gTypePerformanceEntryList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        PerformanceEntryList -> Word -> IO (Nullable PerformanceEntry)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList.item Mozilla PerformanceEntryList.item documentation> 
+item ::
+     (MonadIO m) =>
+       PerformanceEntryList -> Word -> m (Maybe PerformanceEntry)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        PerformanceEntryList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList.length Mozilla PerformanceEntryList.length documentation> 
+getLength :: (MonadIO m) => PerformanceEntryList -> m Word
+getLength self = liftIO (js_getLength (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,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToPerformanceNavigation,
+        gTypePerformanceNavigation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"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[\"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/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,118 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
+       (js_getInitiatorType, getInitiatorType, 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_getResponseEnd, getResponseEnd, PerformanceResourceTiming,
+        castToPerformanceResourceTiming, gTypePerformanceResourceTiming)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"redirectStart\"]"
+        js_getRedirectStart :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectStart Mozilla PerformanceResourceTiming.redirectStart documentation> 
+getRedirectStart ::
+                 (MonadIO m) => PerformanceResourceTiming -> m Double
+getRedirectStart self = liftIO (js_getRedirectStart (self))
+ 
+foreign import javascript unsafe "$1[\"redirectEnd\"]"
+        js_getRedirectEnd :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectEnd Mozilla PerformanceResourceTiming.redirectEnd documentation> 
+getRedirectEnd ::
+               (MonadIO m) => PerformanceResourceTiming -> m Double
+getRedirectEnd self = liftIO (js_getRedirectEnd (self))
+ 
+foreign import javascript unsafe "$1[\"fetchStart\"]"
+        js_getFetchStart :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.fetchStart Mozilla PerformanceResourceTiming.fetchStart documentation> 
+getFetchStart ::
+              (MonadIO m) => PerformanceResourceTiming -> m Double
+getFetchStart self = liftIO (js_getFetchStart (self))
+ 
+foreign import javascript unsafe "$1[\"domainLookupStart\"]"
+        js_getDomainLookupStart :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupStart Mozilla PerformanceResourceTiming.domainLookupStart documentation> 
+getDomainLookupStart ::
+                     (MonadIO m) => PerformanceResourceTiming -> m Double
+getDomainLookupStart self = liftIO (js_getDomainLookupStart (self))
+ 
+foreign import javascript unsafe "$1[\"domainLookupEnd\"]"
+        js_getDomainLookupEnd :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupEnd Mozilla PerformanceResourceTiming.domainLookupEnd documentation> 
+getDomainLookupEnd ::
+                   (MonadIO m) => PerformanceResourceTiming -> m Double
+getDomainLookupEnd self = liftIO (js_getDomainLookupEnd (self))
+ 
+foreign import javascript unsafe "$1[\"connectStart\"]"
+        js_getConnectStart :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectStart Mozilla PerformanceResourceTiming.connectStart documentation> 
+getConnectStart ::
+                (MonadIO m) => PerformanceResourceTiming -> m Double
+getConnectStart self = liftIO (js_getConnectStart (self))
+ 
+foreign import javascript unsafe "$1[\"connectEnd\"]"
+        js_getConnectEnd :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectEnd Mozilla PerformanceResourceTiming.connectEnd documentation> 
+getConnectEnd ::
+              (MonadIO m) => PerformanceResourceTiming -> m Double
+getConnectEnd self = liftIO (js_getConnectEnd (self))
+ 
+foreign import javascript unsafe "$1[\"secureConnectionStart\"]"
+        js_getSecureConnectionStart ::
+        PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.secureConnectionStart Mozilla PerformanceResourceTiming.secureConnectionStart documentation> 
+getSecureConnectionStart ::
+                         (MonadIO m) => PerformanceResourceTiming -> m Double
+getSecureConnectionStart self
+  = liftIO (js_getSecureConnectionStart (self))
+ 
+foreign import javascript unsafe "$1[\"requestStart\"]"
+        js_getRequestStart :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.requestStart Mozilla PerformanceResourceTiming.requestStart documentation> 
+getRequestStart ::
+                (MonadIO m) => PerformanceResourceTiming -> m Double
+getRequestStart self = liftIO (js_getRequestStart (self))
+ 
+foreign import javascript unsafe "$1[\"responseEnd\"]"
+        js_getResponseEnd :: PerformanceResourceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.responseEnd Mozilla PerformanceResourceTiming.responseEnd documentation> 
+getResponseEnd ::
+               (MonadIO m) => PerformanceResourceTiming -> m Double
+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,201 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToPerformanceTiming,
+        gTypePerformanceTiming)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,71 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Plugin
+       (js_item, item, js_namedItem, namedItem, js_getName, getName,
+        js_getFilename, getFilename, js_getDescription, getDescription,
+        js_getLength, getLength, Plugin, castToPlugin, gTypePlugin)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,53 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.PluginArray
+       (js_item, item, js_namedItem, namedItem, js_refresh, refresh,
+        js_getLength, getLength, PluginArray, castToPluginArray,
+        gTypePluginArray)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($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)))
+ 
+foreign import javascript unsafe "$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[\"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,26 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.PopStateEvent
+       (js_getState, getState, PopStateEvent, castToPopStateEvent,
+        gTypePopStateEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,49 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
+newPositionCallback ::
+                    (MonadIO m) => (Maybe 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) => (Maybe 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) => (Maybe 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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.PositionError
+       (pattern PERMISSION_DENIED, pattern POSITION_UNAVAILABLE,
+        pattern TIMEOUT, js_getCode, getCode, js_getMessage, getMessage,
+        PositionError, castToPositionError, gTypePositionError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern PERMISSION_DENIED = 1
+pattern POSITION_UNAVAILABLE = 2
+pattern TIMEOUT = 3
+ 
+foreign import javascript unsafe "$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[\"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,52 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
+newPositionErrorCallback ::
+                         (MonadIO m) =>
+                           (Maybe 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) =>
+                               (Maybe 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) =>
+                                (Maybe 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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ProcessingInstruction
+       (js_getTarget, getTarget, js_getSheet, getSheet,
+        ProcessingInstruction, castToProcessingInstruction,
+        gTypeProcessingInstruction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        ProcessingInstruction -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
+getTarget ::
+          (MonadIO m, FromJSString result) =>
+            ProcessingInstruction -> m (Maybe result)
+getTarget self
+  = liftIO (fromMaybeJSString <$> (js_getTarget (self)))
+ 
+foreign import javascript unsafe "$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)))
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,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ProgressEvent
+       (js_getLengthComputable, getLengthComputable, js_getLoaded,
+        getLoaded, js_getTotal, getTotal, ProgressEvent,
+        castToProgressEvent, gTypeProgressEvent, IsProgressEvent,
+        toProgressEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($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[\"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[\"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/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,63 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement
+       (js_postEvent, postEvent, js_getMovieSize, getMovieSize,
+        js_getTimedMetaData, getTimedMetaData, js_getAccessLog,
+        getAccessLog, js_getErrorLog, getErrorLog,
+        QuickTimePluginReplacement, castToQuickTimePluginReplacement,
+        gTypeQuickTimePluginReplacement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RGBColor
+       (js_getRed, getRed, js_getGreen, getGreen, js_getBlue, getBlue,
+        RGBColor, castToRGBColor, gTypeRGBColor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"red\"]" js_getRed ::
+        RGBColor -> IO (Nullable CSSPrimitiveValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
+getRed :: (MonadIO m) => RGBColor -> m (Maybe CSSPrimitiveValue)
+getRed self = liftIO (nullableToMaybe <$> (js_getRed (self)))
+ 
+foreign import javascript unsafe "$1[\"green\"]" js_getGreen ::
+        RGBColor -> IO (Nullable CSSPrimitiveValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.green Mozilla RGBColor.green documentation> 
+getGreen :: (MonadIO m) => RGBColor -> m (Maybe CSSPrimitiveValue)
+getGreen self = liftIO (nullableToMaybe <$> (js_getGreen (self)))
+ 
+foreign import javascript unsafe "$1[\"blue\"]" js_getBlue ::
+        RGBColor -> IO (Nullable CSSPrimitiveValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.blue Mozilla RGBColor.blue documentation> 
+getBlue :: (MonadIO m) => RGBColor -> m (Maybe CSSPrimitiveValue)
+getBlue self = liftIO (nullableToMaybe <$> (js_getBlue (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCConfiguration.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCConfiguration.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCConfiguration
+       (js_getIceServers, getIceServers, js_getIceTransports,
+        getIceTransports, js_getRequestIdentity, getRequestIdentity,
+        RTCConfiguration, castToRTCConfiguration, gTypeRTCConfiguration)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"iceServers\"]"
+        js_getIceServers :: RTCConfiguration -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration.iceServers Mozilla RTCConfiguration.iceServers documentation> 
+getIceServers ::
+              (MonadIO m) => RTCConfiguration -> m [Maybe RTCIceServer]
+getIceServers self
+  = liftIO ((js_getIceServers (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"iceTransports\"]"
+        js_getIceTransports :: RTCConfiguration -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration.iceTransports Mozilla RTCConfiguration.iceTransports documentation> 
+getIceTransports ::
+                 (MonadIO m) => RTCConfiguration -> m RTCIceTransportsEnum
+getIceTransports self
+  = liftIO ((js_getIceTransports (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"requestIdentity\"]"
+        js_getRequestIdentity :: RTCConfiguration -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration.requestIdentity Mozilla RTCConfiguration.requestIdentity documentation> 
+getRequestIdentity ::
+                   (MonadIO m) => RTCConfiguration -> m RTCIdentityOptionEnum
+getRequestIdentity self
+  = liftIO ((js_getRequestIdentity (self)) >>= fromJSValUnchecked)
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,74 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCDTMFSender
+       (js_insertDTMF, insertDTMF, js_getCanInsertDTMF, getCanInsertDTMF,
+        js_getTrack, getTrack, js_getToneBuffer, getToneBuffer,
+        js_getDuration, getDuration, js_getInterToneGap, getInterToneGap,
+        toneChange, RTCDTMFSender, castToRTCDTMFSender, gTypeRTCDTMFSender)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"insertDTMF\"]($2, $3, $4)"
+        js_insertDTMF :: RTCDTMFSender -> JSString -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.insertDTMF Mozilla RTCDTMFSender.insertDTMF documentation> 
+insertDTMF ::
+           (MonadIO m, ToJSString tones) =>
+             RTCDTMFSender -> tones -> Int -> Int -> m ()
+insertDTMF self tones duration interToneGap
+  = liftIO
+      (js_insertDTMF (self) (toJSString tones) duration interToneGap)
+ 
+foreign import javascript unsafe "($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[\"track\"]" js_getTrack ::
+        RTCDTMFSender -> IO (Nullable MediaStreamTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.track Mozilla RTCDTMFSender.track documentation> 
+getTrack ::
+         (MonadIO m) => RTCDTMFSender -> m (Maybe MediaStreamTrack)
+getTrack self = liftIO (nullableToMaybe <$> (js_getTrack (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.ontonechange Mozilla RTCDTMFSender.ontonechange documentation> 
+toneChange :: EventName RTCDTMFSender Event
+toneChange = unsafeEventName (toJSString "tonechange")
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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent
+       (js_getTone, getTone, RTCDTMFToneChangeEvent,
+        castToRTCDTMFToneChangeEvent, gTypeRTCDTMFToneChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,177 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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_getMaxRetransmitTime,
+        getMaxRetransmitTime, js_getMaxRetransmits, getMaxRetransmits,
+        js_getProtocol, getProtocol, js_getNegotiated, getNegotiated,
+        js_getId, getId, js_getReadyState, getReadyState,
+        js_getBufferedAmount, getBufferedAmount, js_setBinaryType,
+        setBinaryType, js_getBinaryType, getBinaryType, open, error,
+        closeEvent, message, RTCDataChannel, castToRTCDataChannel,
+        gTypeRTCDataChannel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_send ::
+        RTCDataChannel -> Nullable ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+send ::
+     (MonadIO m, IsArrayBuffer data') =>
+       RTCDataChannel -> Maybe data' -> m ()
+send self data'
+  = liftIO
+      (js_send (self) (maybeToNullable (fmap toArrayBuffer data')))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendView ::
+        RTCDataChannel -> Nullable ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+sendView ::
+         (MonadIO m, IsArrayBufferView data') =>
+           RTCDataChannel -> Maybe data' -> m ()
+sendView self data'
+  = liftIO
+      (js_sendView (self)
+         (maybeToNullable (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendBlob ::
+        RTCDataChannel -> Nullable Blob -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+sendBlob ::
+         (MonadIO m, IsBlob data') => RTCDataChannel -> Maybe data' -> m ()
+sendBlob self data'
+  = liftIO (js_sendBlob (self) (maybeToNullable (fmap toBlob data')))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"maxRetransmitTime\"]"
+        js_getMaxRetransmitTime :: RTCDataChannel -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmitTime Mozilla RTCDataChannel.maxRetransmitTime documentation> 
+getMaxRetransmitTime :: (MonadIO m) => RTCDataChannel -> m Word
+getMaxRetransmitTime self = liftIO (js_getMaxRetransmitTime (self))
+ 
+foreign import javascript unsafe "$1[\"maxRetransmits\"]"
+        js_getMaxRetransmits :: RTCDataChannel -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
+getMaxRetransmits :: (MonadIO m) => RTCDataChannel -> m Word
+getMaxRetransmits self = liftIO (js_getMaxRetransmits (self))
+ 
+foreign import javascript unsafe "$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[\"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[\"id\"]" js_getId ::
+        RTCDataChannel -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
+getId :: (MonadIO m) => RTCDataChannel -> m Word
+getId self = liftIO (js_getId (self))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: RTCDataChannel -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.readyState Mozilla RTCDataChannel.readyState documentation> 
+getReadyState ::
+              (MonadIO m, FromJSString result) => RTCDataChannel -> m result
+getReadyState self
+  = liftIO (fromJSString <$> (js_getReadyState (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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 = unsafeEventName (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onerror Mozilla RTCDataChannel.onerror documentation> 
+error :: EventName RTCDataChannel UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onclose Mozilla RTCDataChannel.onclose documentation> 
+closeEvent :: EventName RTCDataChannel CloseEvent
+closeEvent = unsafeEventName (toJSString "close")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onmessage Mozilla RTCDataChannel.onmessage documentation> 
+message :: EventName RTCDataChannel MessageEvent
+message = unsafeEventName (toJSString "message")
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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent
+       (js_getChannel, getChannel, RTCDataChannelEvent,
+        castToRTCDataChannelEvent, gTypeRTCDataChannelEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"channel\"]" js_getChannel ::
+        RTCDataChannelEvent -> IO (Nullable RTCDataChannel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent.channel Mozilla RTCDataChannelEvent.channel documentation> 
+getChannel ::
+           (MonadIO m) => RTCDataChannelEvent -> m (Maybe RTCDataChannel)
+getChannel self
+  = liftIO (nullableToMaybe <$> (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,58 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCIceCandidate
+       (js_newRTCIceCandidate, newRTCIceCandidate, js_getCandidate,
+        getCandidate, js_getSdpMid, getSdpMid, js_getSdpMLineIndex,
+        getSdpMLineIndex, RTCIceCandidate, castToRTCIceCandidate,
+        gTypeRTCIceCandidate)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"RTCIceCandidate\"]($1)" js_newRTCIceCandidate ::
+        Nullable Dictionary -> IO RTCIceCandidate
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation> 
+newRTCIceCandidate ::
+                   (MonadIO m, IsDictionary dictionary) =>
+                     Maybe dictionary -> m RTCIceCandidate
+newRTCIceCandidate dictionary
+  = liftIO
+      (js_newRTCIceCandidate
+         (maybeToNullable (fmap toDictionary dictionary)))
+ 
+foreign import javascript unsafe "$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[\"sdpMid\"]" js_getSdpMid ::
+        RTCIceCandidate -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
+getSdpMid ::
+          (MonadIO m, FromJSString result) => RTCIceCandidate -> m result
+getSdpMid self = liftIO (fromJSString <$> (js_getSdpMid (self)))
+ 
+foreign import javascript unsafe "$1[\"sdpMLineIndex\"]"
+        js_getSdpMLineIndex :: RTCIceCandidate -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
+getSdpMLineIndex :: (MonadIO m) => RTCIceCandidate -> m Word
+getSdpMLineIndex self = liftIO (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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent
+       (js_getCandidate, getCandidate, RTCIceCandidateEvent,
+        castToRTCIceCandidateEvent, gTypeRTCIceCandidateEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"candidate\"]"
+        js_getCandidate ::
+        RTCIceCandidateEvent -> IO (Nullable RTCIceCandidate)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
+getCandidate ::
+             (MonadIO m) => RTCIceCandidateEvent -> m (Maybe RTCIceCandidate)
+getCandidate self
+  = liftIO (nullableToMaybe <$> (js_getCandidate (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceServer.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceServer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceServer.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCIceServer
+       (js_getUrls, getUrls, js_getUsername, getUsername,
+        js_getCredential, getCredential, RTCIceServer, castToRTCIceServer,
+        gTypeRTCIceServer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"urls\"]" js_getUrls ::
+        RTCIceServer -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer.urls Mozilla RTCIceServer.urls documentation> 
+getUrls ::
+        (MonadIO m, FromJSString result) => RTCIceServer -> m [result]
+getUrls self = liftIO ((js_getUrls (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"username\"]" js_getUsername
+        :: RTCIceServer -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer.username Mozilla RTCIceServer.username documentation> 
+getUsername ::
+            (MonadIO m, FromJSString result) => RTCIceServer -> m result
+getUsername self
+  = liftIO (fromJSString <$> (js_getUsername (self)))
+ 
+foreign import javascript unsafe "$1[\"credential\"]"
+        js_getCredential :: RTCIceServer -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer.credential Mozilla RTCIceServer.credential documentation> 
+getCredential ::
+              (MonadIO m, FromJSString result) => RTCIceServer -> m result
+getCredential self
+  = liftIO (fromJSString <$> (js_getCredential (self)))
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,355 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCPeerConnection
+       (js_newRTCPeerConnection, newRTCPeerConnection, js_createOffer,
+        createOffer, js_createAnswer, createAnswer, js_setLocalDescription,
+        setLocalDescription, js_setRemoteDescription, setRemoteDescription,
+        js_updateIce, updateIce, js_addIceCandidate, addIceCandidate,
+        js_getLocalStreams, getLocalStreams, js_getRemoteStreams,
+        getRemoteStreams, js_getStreamById, getStreamById,
+        js_getConfiguration, getConfiguration, js_addStream, addStream,
+        js_removeStream, removeStream, js_getStats, getStats,
+        js_createDataChannel, createDataChannel, js_createDTMFSender,
+        createDTMFSender, js_close, close, js_getLocalDescription,
+        getLocalDescription, js_getRemoteDescription, getRemoteDescription,
+        js_getSignalingState, getSignalingState, js_getIceGatheringState,
+        getIceGatheringState, js_getIceConnectionState,
+        getIceConnectionState, negotiationNeeded, iceCandidate,
+        signalingStateChange, addStreamEvent, removeStreamEvent,
+        iceConnectionStateChange, dataChannel, RTCPeerConnection,
+        castToRTCPeerConnection, gTypeRTCPeerConnection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"webkitRTCPeerConnection\"]($1)"
+        js_newRTCPeerConnection ::
+        Nullable Dictionary -> IO RTCPeerConnection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection Mozilla webkitRTCPeerConnection documentation> 
+newRTCPeerConnection ::
+                     (MonadIO m, IsDictionary rtcConfiguration) =>
+                       Maybe rtcConfiguration -> m RTCPeerConnection
+newRTCPeerConnection rtcConfiguration
+  = liftIO
+      (js_newRTCPeerConnection
+         (maybeToNullable (fmap toDictionary rtcConfiguration)))
+ 
+foreign import javascript unsafe "$1[\"createOffer\"]($2, $3, $4)"
+        js_createOffer ::
+        RTCPeerConnection ->
+          Nullable RTCSessionDescriptionCallback ->
+            Nullable RTCPeerConnectionErrorCallback ->
+              Nullable Dictionary -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
+createOffer ::
+            (MonadIO m, IsDictionary offerOptions) =>
+              RTCPeerConnection ->
+                Maybe RTCSessionDescriptionCallback ->
+                  Maybe RTCPeerConnectionErrorCallback -> Maybe offerOptions -> m ()
+createOffer self successCallback failureCallback offerOptions
+  = liftIO
+      (js_createOffer (self) (maybeToNullable successCallback)
+         (maybeToNullable failureCallback)
+         (maybeToNullable (fmap toDictionary offerOptions)))
+ 
+foreign import javascript unsafe "$1[\"createAnswer\"]($2, $3, $4)"
+        js_createAnswer ::
+        RTCPeerConnection ->
+          Nullable RTCSessionDescriptionCallback ->
+            Nullable RTCPeerConnectionErrorCallback ->
+              Nullable Dictionary -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation> 
+createAnswer ::
+             (MonadIO m, IsDictionary answerOptions) =>
+               RTCPeerConnection ->
+                 Maybe RTCSessionDescriptionCallback ->
+                   Maybe RTCPeerConnectionErrorCallback -> Maybe answerOptions -> m ()
+createAnswer self successCallback failureCallback answerOptions
+  = liftIO
+      (js_createAnswer (self) (maybeToNullable successCallback)
+         (maybeToNullable failureCallback)
+         (maybeToNullable (fmap toDictionary answerOptions)))
+ 
+foreign import javascript unsafe
+        "$1[\"setLocalDescription\"]($2,\n$3, $4)" js_setLocalDescription
+        ::
+        RTCPeerConnection ->
+          Nullable RTCSessionDescription ->
+            Nullable VoidCallback ->
+              Nullable RTCPeerConnectionErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setLocalDescription Mozilla webkitRTCPeerConnection.setLocalDescription documentation> 
+setLocalDescription ::
+                    (MonadIO m) =>
+                      RTCPeerConnection ->
+                        Maybe RTCSessionDescription ->
+                          Maybe VoidCallback -> Maybe RTCPeerConnectionErrorCallback -> m ()
+setLocalDescription self description successCallback
+  failureCallback
+  = liftIO
+      (js_setLocalDescription (self) (maybeToNullable description)
+         (maybeToNullable successCallback)
+         (maybeToNullable failureCallback))
+ 
+foreign import javascript unsafe
+        "$1[\"setRemoteDescription\"]($2,\n$3, $4)" js_setRemoteDescription
+        ::
+        RTCPeerConnection ->
+          Nullable RTCSessionDescription ->
+            Nullable VoidCallback ->
+              Nullable RTCPeerConnectionErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setRemoteDescription Mozilla webkitRTCPeerConnection.setRemoteDescription documentation> 
+setRemoteDescription ::
+                     (MonadIO m) =>
+                       RTCPeerConnection ->
+                         Maybe RTCSessionDescription ->
+                           Maybe VoidCallback -> Maybe RTCPeerConnectionErrorCallback -> m ()
+setRemoteDescription self description successCallback
+  failureCallback
+  = liftIO
+      (js_setRemoteDescription (self) (maybeToNullable description)
+         (maybeToNullable successCallback)
+         (maybeToNullable failureCallback))
+ 
+foreign import javascript unsafe "$1[\"updateIce\"]($2)"
+        js_updateIce :: RTCPeerConnection -> Nullable Dictionary -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.updateIce Mozilla webkitRTCPeerConnection.updateIce documentation> 
+updateIce ::
+          (MonadIO m, IsDictionary configuration) =>
+            RTCPeerConnection -> Maybe configuration -> m ()
+updateIce self configuration
+  = liftIO
+      (js_updateIce (self)
+         (maybeToNullable (fmap toDictionary configuration)))
+ 
+foreign import javascript unsafe
+        "$1[\"addIceCandidate\"]($2, $3,\n$4)" js_addIceCandidate ::
+        RTCPeerConnection ->
+          Nullable RTCIceCandidate ->
+            Nullable VoidCallback ->
+              Nullable RTCPeerConnectionErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addIceCandidate Mozilla webkitRTCPeerConnection.addIceCandidate documentation> 
+addIceCandidate ::
+                (MonadIO m) =>
+                  RTCPeerConnection ->
+                    Maybe RTCIceCandidate ->
+                      Maybe VoidCallback -> Maybe RTCPeerConnectionErrorCallback -> m ()
+addIceCandidate self candidate successCallback failureCallback
+  = liftIO
+      (js_addIceCandidate (self) (maybeToNullable candidate)
+         (maybeToNullable successCallback)
+         (maybeToNullable failureCallback))
+ 
+foreign import javascript unsafe "$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 [Maybe MediaStream]
+getLocalStreams self
+  = liftIO ((js_getLocalStreams (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$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 [Maybe MediaStream]
+getRemoteStreams self
+  = liftIO ((js_getRemoteStreams (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"getStreamById\"]($2)"
+        js_getStreamById ::
+        RTCPeerConnection -> JSString -> IO (Nullable MediaStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
+getStreamById ::
+              (MonadIO m, ToJSString streamId) =>
+                RTCPeerConnection -> streamId -> m (Maybe MediaStream)
+getStreamById self streamId
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getStreamById (self) (toJSString streamId)))
+ 
+foreign import javascript unsafe "$1[\"getConfiguration\"]()"
+        js_getConfiguration ::
+        RTCPeerConnection -> IO (Nullable RTCConfiguration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
+getConfiguration ::
+                 (MonadIO m) => RTCPeerConnection -> m (Maybe RTCConfiguration)
+getConfiguration self
+  = liftIO (nullableToMaybe <$> (js_getConfiguration (self)))
+ 
+foreign import javascript unsafe "$1[\"addStream\"]($2)"
+        js_addStream :: RTCPeerConnection -> Nullable MediaStream -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addStream Mozilla webkitRTCPeerConnection.addStream documentation> 
+addStream ::
+          (MonadIO m) => RTCPeerConnection -> Maybe MediaStream -> m ()
+addStream self stream
+  = liftIO (js_addStream (self) (maybeToNullable stream))
+ 
+foreign import javascript unsafe "$1[\"removeStream\"]($2)"
+        js_removeStream ::
+        RTCPeerConnection -> Nullable MediaStream -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeStream Mozilla webkitRTCPeerConnection.removeStream documentation> 
+removeStream ::
+             (MonadIO m) => RTCPeerConnection -> Maybe MediaStream -> m ()
+removeStream self stream
+  = liftIO (js_removeStream (self) (maybeToNullable stream))
+ 
+foreign import javascript unsafe "$1[\"getStats\"]($2, $3, $4)"
+        js_getStats ::
+        RTCPeerConnection ->
+          Nullable RTCStatsCallback ->
+            Nullable RTCPeerConnectionErrorCallback ->
+              Nullable MediaStreamTrack -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStats Mozilla webkitRTCPeerConnection.getStats documentation> 
+getStats ::
+         (MonadIO m, IsMediaStreamTrack selector) =>
+           RTCPeerConnection ->
+             Maybe RTCStatsCallback ->
+               Maybe RTCPeerConnectionErrorCallback -> Maybe selector -> m ()
+getStats self successCallback failureCallback selector
+  = liftIO
+      (js_getStats (self) (maybeToNullable successCallback)
+         (maybeToNullable failureCallback)
+         (maybeToNullable (fmap toMediaStreamTrack selector)))
+ 
+foreign import javascript unsafe
+        "$1[\"createDataChannel\"]($2, $3)" js_createDataChannel ::
+        RTCPeerConnection ->
+          Nullable JSString ->
+            Nullable Dictionary -> IO (Nullable RTCDataChannel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
+createDataChannel ::
+                  (MonadIO m, ToJSString label, IsDictionary options) =>
+                    RTCPeerConnection ->
+                      Maybe label -> Maybe options -> m (Maybe RTCDataChannel)
+createDataChannel self label options
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createDataChannel (self) (toMaybeJSString label)
+            (maybeToNullable (fmap toDictionary options))))
+ 
+foreign import javascript unsafe "$1[\"createDTMFSender\"]($2)"
+        js_createDTMFSender ::
+        RTCPeerConnection ->
+          Nullable MediaStreamTrack -> IO (Nullable RTCDTMFSender)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDTMFSender Mozilla webkitRTCPeerConnection.createDTMFSender documentation> 
+createDTMFSender ::
+                 (MonadIO m, IsMediaStreamTrack track) =>
+                   RTCPeerConnection -> Maybe track -> m (Maybe RTCDTMFSender)
+createDTMFSender self track
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createDTMFSender (self)
+            (maybeToNullable (fmap toMediaStreamTrack track))))
+ 
+foreign import javascript unsafe "$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[\"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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"signalingState\"]"
+        js_getSignalingState :: RTCPeerConnection -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.signalingState Mozilla webkitRTCPeerConnection.signalingState documentation> 
+getSignalingState ::
+                  (MonadIO m, FromJSString result) => RTCPeerConnection -> m result
+getSignalingState self
+  = liftIO (fromJSString <$> (js_getSignalingState (self)))
+ 
+foreign import javascript unsafe "$1[\"iceGatheringState\"]"
+        js_getIceGatheringState :: RTCPeerConnection -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceGatheringState Mozilla webkitRTCPeerConnection.iceGatheringState documentation> 
+getIceGatheringState ::
+                     (MonadIO m, FromJSString result) => RTCPeerConnection -> m result
+getIceGatheringState self
+  = liftIO (fromJSString <$> (js_getIceGatheringState (self)))
+ 
+foreign import javascript unsafe "$1[\"iceConnectionState\"]"
+        js_getIceConnectionState :: RTCPeerConnection -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceConnectionState Mozilla webkitRTCPeerConnection.iceConnectionState documentation> 
+getIceConnectionState ::
+                      (MonadIO m, FromJSString result) => RTCPeerConnection -> m result
+getIceConnectionState self
+  = liftIO (fromJSString <$> (js_getIceConnectionState (self)))
+
+-- | <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.onaddstream Mozilla webkitRTCPeerConnection.onaddstream documentation> 
+addStreamEvent :: EventName RTCPeerConnection Event
+addStreamEvent = unsafeEventName (toJSString "addstream")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onremovestream Mozilla webkitRTCPeerConnection.onremovestream documentation> 
+removeStreamEvent :: EventName RTCPeerConnection Event
+removeStreamEvent = unsafeEventName (toJSString "removestream")
+
+-- | <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.ondatachannel Mozilla webkitRTCPeerConnection.ondatachannel documentation> 
+dataChannel :: EventName RTCPeerConnection Event
+dataChannel = unsafeEventName (toJSString "datachannel")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionErrorCallback.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionErrorCallback
+       (newRTCPeerConnectionErrorCallback,
+        newRTCPeerConnectionErrorCallbackSync,
+        newRTCPeerConnectionErrorCallbackAsync,
+        RTCPeerConnectionErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionErrorCallback Mozilla RTCPeerConnectionErrorCallback documentation> 
+newRTCPeerConnectionErrorCallback ::
+                                  (MonadIO m) =>
+                                    (Maybe DOMError -> IO ()) -> m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallback callback
+  = liftIO
+      (RTCPeerConnectionErrorCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionErrorCallback Mozilla RTCPeerConnectionErrorCallback documentation> 
+newRTCPeerConnectionErrorCallbackSync ::
+                                      (MonadIO m) =>
+                                        (Maybe DOMError -> IO ()) ->
+                                          m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallbackSync callback
+  = liftIO
+      (RTCPeerConnectionErrorCallback <$>
+         syncCallback1 ContinueAsync
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionErrorCallback Mozilla RTCPeerConnectionErrorCallback documentation> 
+newRTCPeerConnectionErrorCallbackAsync ::
+                                       (MonadIO m) =>
+                                         (Maybe DOMError -> IO ()) ->
+                                           m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallbackAsync callback
+  = liftIO
+      (RTCPeerConnectionErrorCallback <$>
+         asyncCallback1
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
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,69 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
+       (js_newRTCSessionDescription, newRTCSessionDescription, js_setType,
+        setType, js_getType, getType, js_setSdp, setSdp, js_getSdp, getSdp,
+        RTCSessionDescription, castToRTCSessionDescription,
+        gTypeRTCSessionDescription)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"RTCSessionDescription\"]($1)"
+        js_newRTCSessionDescription ::
+        Nullable Dictionary -> IO RTCSessionDescription
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation> 
+newRTCSessionDescription ::
+                         (MonadIO m, IsDictionary dictionary) =>
+                           Maybe dictionary -> m RTCSessionDescription
+newRTCSessionDescription dictionary
+  = liftIO
+      (js_newRTCSessionDescription
+         (maybeToNullable (fmap toDictionary dictionary)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        RTCSessionDescription -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.type Mozilla RTCSessionDescription.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => RTCSessionDescription -> val -> m ()
+setType self val = liftIO (js_setType (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        RTCSessionDescription -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.type Mozilla RTCSessionDescription.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) =>
+          RTCSessionDescription -> m result
+getType self = liftIO (fromJSString <$> (js_getType (self)))
+ 
+foreign import javascript unsafe "$1[\"sdp\"] = $2;" js_setSdp ::
+        RTCSessionDescription -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.sdp Mozilla RTCSessionDescription.sdp documentation> 
+setSdp ::
+       (MonadIO m, ToJSString val) => RTCSessionDescription -> val -> m ()
+setSdp self val = liftIO (js_setSdp (self) (toJSString val))
+ 
+foreign import javascript unsafe "$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/RTCSessionDescriptionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescriptionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescriptionCallback.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionCallback
+       (newRTCSessionDescriptionCallback,
+        newRTCSessionDescriptionCallbackSync,
+        newRTCSessionDescriptionCallbackAsync,
+        RTCSessionDescriptionCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionCallback Mozilla RTCSessionDescriptionCallback documentation> 
+newRTCSessionDescriptionCallback ::
+                                 (MonadIO m) =>
+                                   (Maybe RTCSessionDescription -> IO ()) ->
+                                     m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallback callback
+  = liftIO
+      (RTCSessionDescriptionCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ sdp -> fromJSValUnchecked sdp >>= \ sdp' -> callback sdp'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionCallback Mozilla RTCSessionDescriptionCallback documentation> 
+newRTCSessionDescriptionCallbackSync ::
+                                     (MonadIO m) =>
+                                       (Maybe RTCSessionDescription -> IO ()) ->
+                                         m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallbackSync callback
+  = liftIO
+      (RTCSessionDescriptionCallback <$>
+         syncCallback1 ContinueAsync
+           (\ sdp -> fromJSValUnchecked sdp >>= \ sdp' -> callback sdp'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionCallback Mozilla RTCSessionDescriptionCallback documentation> 
+newRTCSessionDescriptionCallbackAsync ::
+                                      (MonadIO m) =>
+                                        (Maybe RTCSessionDescription -> IO ()) ->
+                                          m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallbackAsync callback
+  = liftIO
+      (RTCSessionDescriptionCallback <$>
+         asyncCallback1
+           (\ sdp -> fromJSValUnchecked sdp >>= \ sdp' -> callback sdp'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCStatsCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCStatsCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCStatsCallback.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCStatsCallback
+       (newRTCStatsCallback, newRTCStatsCallbackSync,
+        newRTCStatsCallbackAsync, RTCStatsCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsCallback Mozilla RTCStatsCallback documentation> 
+newRTCStatsCallback ::
+                    (MonadIO m) =>
+                      (Maybe RTCStatsResponse -> IO ()) -> m RTCStatsCallback
+newRTCStatsCallback callback
+  = liftIO
+      (RTCStatsCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ response ->
+              fromJSValUnchecked response >>= \ response' -> callback response'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsCallback Mozilla RTCStatsCallback documentation> 
+newRTCStatsCallbackSync ::
+                        (MonadIO m) =>
+                          (Maybe RTCStatsResponse -> IO ()) -> m RTCStatsCallback
+newRTCStatsCallbackSync callback
+  = liftIO
+      (RTCStatsCallback <$>
+         syncCallback1 ContinueAsync
+           (\ response ->
+              fromJSValUnchecked response >>= \ response' -> callback response'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsCallback Mozilla RTCStatsCallback documentation> 
+newRTCStatsCallbackAsync ::
+                         (MonadIO m) =>
+                           (Maybe RTCStatsResponse -> IO ()) -> m RTCStatsCallback
+newRTCStatsCallbackAsync callback
+  = liftIO
+      (RTCStatsCallback <$>
+         asyncCallback1
+           (\ response ->
+              fromJSValUnchecked response >>= \ response' -> callback response'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCStatsReport.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCStatsReport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCStatsReport.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCStatsReport
+       (js_stat, stat, js_names, names, js_getTimestamp, getTimestamp,
+        js_getId, getId, js_getType, getType, js_getLocal, getLocal,
+        js_getRemote, getRemote, RTCStatsReport, castToRTCStatsReport,
+        gTypeRTCStatsReport)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"stat\"]($2)" js_stat ::
+        RTCStatsReport -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.stat Mozilla RTCStatsReport.stat documentation> 
+stat ::
+     (MonadIO m, ToJSString name, FromJSString result) =>
+       RTCStatsReport -> name -> m result
+stat self name
+  = liftIO (fromJSString <$> (js_stat (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"names\"]()" js_names ::
+        RTCStatsReport -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.names Mozilla RTCStatsReport.names documentation> 
+names ::
+      (MonadIO m, FromJSString result) => RTCStatsReport -> m [result]
+names self = liftIO ((js_names (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"timestamp\"]"
+        js_getTimestamp :: RTCStatsReport -> IO (Nullable Date)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.timestamp Mozilla RTCStatsReport.timestamp documentation> 
+getTimestamp :: (MonadIO m) => RTCStatsReport -> m (Maybe Date)
+getTimestamp self
+  = liftIO (nullableToMaybe <$> (js_getTimestamp (self)))
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        RTCStatsReport -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.id Mozilla RTCStatsReport.id documentation> 
+getId ::
+      (MonadIO m, FromJSString result) => RTCStatsReport -> m result
+getId self = liftIO (fromJSString <$> (js_getId (self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        RTCStatsReport -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.type Mozilla RTCStatsReport.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => RTCStatsReport -> m result
+getType self = liftIO (fromJSString <$> (js_getType (self)))
+ 
+foreign import javascript unsafe "$1[\"local\"]" js_getLocal ::
+        RTCStatsReport -> IO (Nullable RTCStatsReport)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.local Mozilla RTCStatsReport.local documentation> 
+getLocal ::
+         (MonadIO m) => RTCStatsReport -> m (Maybe RTCStatsReport)
+getLocal self = liftIO (nullableToMaybe <$> (js_getLocal (self)))
+ 
+foreign import javascript unsafe "$1[\"remote\"]" js_getRemote ::
+        RTCStatsReport -> IO (Nullable RTCStatsReport)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.remote Mozilla RTCStatsReport.remote documentation> 
+getRemote ::
+          (MonadIO m) => RTCStatsReport -> m (Maybe RTCStatsReport)
+getRemote self = liftIO (nullableToMaybe <$> (js_getRemote (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCStatsResponse.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCStatsResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCStatsResponse.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RTCStatsResponse
+       (js_result, result, js_namedItem, namedItem, RTCStatsResponse,
+        castToRTCStatsResponse, gTypeRTCStatsResponse)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"result\"]()" js_result ::
+        RTCStatsResponse -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse.result Mozilla RTCStatsResponse.result documentation> 
+result ::
+       (MonadIO m) => RTCStatsResponse -> m [Maybe RTCStatsReport]
+result self = liftIO ((js_result (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        RTCStatsResponse -> JSString -> IO (Nullable RTCStatsReport)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse.namedItem Mozilla RTCStatsResponse.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            RTCStatsResponse -> name -> m (Maybe RTCStatsReport)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem (self) (toJSString name)))
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,43 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.RadioNodeList
+       (js__get, _get, js_setValue, setValue, js_getValue, getValue,
+        RadioNodeList, castToRadioNodeList, gTypeRadioNodeList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        RadioNodeList -> Word -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList._get Mozilla RadioNodeList._get documentation> 
+_get :: (MonadIO m) => RadioNodeList -> Word -> m (Maybe Node)
+_get self index
+  = liftIO (nullableToMaybe <$> (js__get (self) index))
+ 
+foreign import javascript unsafe "$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[\"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,352 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, js_deleteContents,
+        deleteContents, js_extractContents, extractContents,
+        js_cloneContents, cloneContents, js_insertNode, insertNode,
+        js_surroundContents, surroundContents, js_cloneRange, cloneRange,
+        js_toString, toString, js_detach, detach, js_getClientRects,
+        getClientRects, js_getBoundingClientRect, getBoundingClientRect,
+        js_createContextualFragment, createContextualFragment,
+        js_intersectsNode, intersectsNode, js_compareNode, compareNode,
+        js_comparePoint, comparePoint, js_isPointInRange, isPointInRange,
+        js_expand, expand, 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, castToRange, gTypeRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "$1[\"setStart\"]($2, $3)"
+        js_setStart :: Range -> Nullable Node -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStart Mozilla Range.setStart documentation> 
+setStart ::
+         (MonadIO m, IsNode refNode) =>
+           Range -> Maybe refNode -> Int -> m ()
+setStart self refNode offset
+  = liftIO
+      (js_setStart (self) (maybeToNullable (fmap toNode refNode)) offset)
+ 
+foreign import javascript unsafe "$1[\"setEnd\"]($2, $3)" js_setEnd
+        :: Range -> Nullable Node -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEnd Mozilla Range.setEnd documentation> 
+setEnd ::
+       (MonadIO m, IsNode refNode) =>
+         Range -> Maybe refNode -> Int -> m ()
+setEnd self refNode offset
+  = liftIO
+      (js_setEnd (self) (maybeToNullable (fmap toNode refNode)) offset)
+ 
+foreign import javascript unsafe "$1[\"setStartBefore\"]($2)"
+        js_setStartBefore :: Range -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartBefore Mozilla Range.setStartBefore documentation> 
+setStartBefore ::
+               (MonadIO m, IsNode refNode) => Range -> Maybe refNode -> m ()
+setStartBefore self refNode
+  = liftIO
+      (js_setStartBefore (self) (maybeToNullable (fmap toNode refNode)))
+ 
+foreign import javascript unsafe "$1[\"setStartAfter\"]($2)"
+        js_setStartAfter :: Range -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartAfter Mozilla Range.setStartAfter documentation> 
+setStartAfter ::
+              (MonadIO m, IsNode refNode) => Range -> Maybe refNode -> m ()
+setStartAfter self refNode
+  = liftIO
+      (js_setStartAfter (self) (maybeToNullable (fmap toNode refNode)))
+ 
+foreign import javascript unsafe "$1[\"setEndBefore\"]($2)"
+        js_setEndBefore :: Range -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndBefore Mozilla Range.setEndBefore documentation> 
+setEndBefore ::
+             (MonadIO m, IsNode refNode) => Range -> Maybe refNode -> m ()
+setEndBefore self refNode
+  = liftIO
+      (js_setEndBefore (self) (maybeToNullable (fmap toNode refNode)))
+ 
+foreign import javascript unsafe "$1[\"setEndAfter\"]($2)"
+        js_setEndAfter :: Range -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndAfter Mozilla Range.setEndAfter documentation> 
+setEndAfter ::
+            (MonadIO m, IsNode refNode) => Range -> Maybe refNode -> m ()
+setEndAfter self refNode
+  = liftIO
+      (js_setEndAfter (self) (maybeToNullable (fmap toNode refNode)))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"selectNode\"]($2)"
+        js_selectNode :: Range -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNode Mozilla Range.selectNode documentation> 
+selectNode ::
+           (MonadIO m, IsNode refNode) => Range -> Maybe refNode -> m ()
+selectNode self refNode
+  = liftIO
+      (js_selectNode (self) (maybeToNullable (fmap toNode refNode)))
+ 
+foreign import javascript unsafe "$1[\"selectNodeContents\"]($2)"
+        js_selectNodeContents :: Range -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNodeContents Mozilla Range.selectNodeContents documentation> 
+selectNodeContents ::
+                   (MonadIO m, IsNode refNode) => Range -> Maybe refNode -> m ()
+selectNodeContents self refNode
+  = liftIO
+      (js_selectNodeContents (self)
+         (maybeToNullable (fmap toNode refNode)))
+ 
+foreign import javascript unsafe
+        "$1[\"compareBoundaryPoints\"]($2,\n$3)" js_compareBoundaryPoints
+        :: Range -> Word -> Nullable Range -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareBoundaryPoints Mozilla Range.compareBoundaryPoints documentation> 
+compareBoundaryPoints ::
+                      (MonadIO m) => Range -> Word -> Maybe Range -> m Int
+compareBoundaryPoints self how sourceRange
+  = liftIO
+      (js_compareBoundaryPoints (self) how (maybeToNullable sourceRange))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"extractContents\"]()"
+        js_extractContents :: Range -> IO (Nullable DocumentFragment)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
+extractContents ::
+                (MonadIO m) => Range -> m (Maybe DocumentFragment)
+extractContents self
+  = liftIO (nullableToMaybe <$> (js_extractContents (self)))
+ 
+foreign import javascript unsafe "$1[\"cloneContents\"]()"
+        js_cloneContents :: Range -> IO (Nullable DocumentFragment)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
+cloneContents :: (MonadIO m) => Range -> m (Maybe DocumentFragment)
+cloneContents self
+  = liftIO (nullableToMaybe <$> (js_cloneContents (self)))
+ 
+foreign import javascript unsafe "$1[\"insertNode\"]($2)"
+        js_insertNode :: Range -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.insertNode Mozilla Range.insertNode documentation> 
+insertNode ::
+           (MonadIO m, IsNode newNode) => Range -> Maybe newNode -> m ()
+insertNode self newNode
+  = liftIO
+      (js_insertNode (self) (maybeToNullable (fmap toNode newNode)))
+ 
+foreign import javascript unsafe "$1[\"surroundContents\"]($2)"
+        js_surroundContents :: Range -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.surroundContents Mozilla Range.surroundContents documentation> 
+surroundContents ::
+                 (MonadIO m, IsNode newParent) => Range -> Maybe newParent -> m ()
+surroundContents self newParent
+  = liftIO
+      (js_surroundContents (self)
+         (maybeToNullable (fmap toNode newParent)))
+ 
+foreign import javascript unsafe "$1[\"cloneRange\"]()"
+        js_cloneRange :: Range -> IO (Nullable Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
+cloneRange :: (MonadIO m) => Range -> m (Maybe Range)
+cloneRange self
+  = liftIO (nullableToMaybe <$> (js_cloneRange (self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"getClientRects\"]()"
+        js_getClientRects :: Range -> IO (Nullable ClientRectList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
+getClientRects :: (MonadIO m) => Range -> m (Maybe ClientRectList)
+getClientRects self
+  = liftIO (nullableToMaybe <$> (js_getClientRects (self)))
+ 
+foreign import javascript unsafe "$1[\"getBoundingClientRect\"]()"
+        js_getBoundingClientRect :: Range -> IO (Nullable ClientRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
+getBoundingClientRect ::
+                      (MonadIO m) => Range -> m (Maybe ClientRect)
+getBoundingClientRect self
+  = liftIO (nullableToMaybe <$> (js_getBoundingClientRect (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createContextualFragment\"]($2)" js_createContextualFragment
+        :: Range -> JSString -> IO (Nullable DocumentFragment)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
+createContextualFragment ::
+                         (MonadIO m, ToJSString html) =>
+                           Range -> html -> m (Maybe DocumentFragment)
+createContextualFragment self html
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createContextualFragment (self) (toJSString html)))
+ 
+foreign import javascript unsafe
+        "($1[\"intersectsNode\"]($2) ? 1 : 0)" js_intersectsNode ::
+        Range -> Nullable Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.intersectsNode Mozilla Range.intersectsNode documentation> 
+intersectsNode ::
+               (MonadIO m, IsNode refNode) => Range -> Maybe refNode -> m Bool
+intersectsNode self refNode
+  = liftIO
+      (js_intersectsNode (self) (maybeToNullable (fmap toNode refNode)))
+ 
+foreign import javascript unsafe "$1[\"compareNode\"]($2)"
+        js_compareNode :: Range -> Nullable Node -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
+compareNode ::
+            (MonadIO m, IsNode refNode) => Range -> Maybe refNode -> m Int
+compareNode self refNode
+  = liftIO
+      (js_compareNode (self) (maybeToNullable (fmap toNode refNode)))
+ 
+foreign import javascript unsafe "$1[\"comparePoint\"]($2, $3)"
+        js_comparePoint :: Range -> Nullable Node -> Int -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
+comparePoint ::
+             (MonadIO m, IsNode refNode) =>
+               Range -> Maybe refNode -> Int -> m Int
+comparePoint self refNode offset
+  = liftIO
+      (js_comparePoint (self) (maybeToNullable (fmap toNode refNode))
+         offset)
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInRange\"]($2,\n$3) ? 1 : 0)" js_isPointInRange ::
+        Range -> Nullable Node -> Int -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.isPointInRange Mozilla Range.isPointInRange documentation> 
+isPointInRange ::
+               (MonadIO m, IsNode refNode) =>
+                 Range -> Maybe refNode -> Int -> m Bool
+isPointInRange self refNode offset
+  = liftIO
+      (js_isPointInRange (self) (maybeToNullable (fmap toNode refNode))
+         offset)
+ 
+foreign import javascript unsafe "$1[\"expand\"]($2)" js_expand ::
+        Range -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.expand Mozilla Range.expand documentation> 
+expand :: (MonadIO m, ToJSString unit) => Range -> unit -> m ()
+expand self unit = liftIO (js_expand (self) (toJSString unit))
+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[\"startContainer\"]"
+        js_getStartContainer :: Range -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startContainer Mozilla Range.startContainer documentation> 
+getStartContainer :: (MonadIO m) => Range -> m (Maybe Node)
+getStartContainer self
+  = liftIO (nullableToMaybe <$> (js_getStartContainer (self)))
+ 
+foreign import javascript unsafe "$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[\"endContainer\"]"
+        js_getEndContainer :: Range -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endContainer Mozilla Range.endContainer documentation> 
+getEndContainer :: (MonadIO m) => Range -> m (Maybe Node)
+getEndContainer self
+  = liftIO (nullableToMaybe <$> (js_getEndContainer (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"commonAncestorContainer\"]"
+        js_getCommonAncestorContainer :: Range -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.commonAncestorContainer Mozilla Range.commonAncestorContainer documentation> 
+getCommonAncestorContainer ::
+                           (MonadIO m) => Range -> m (Maybe Node)
+getCommonAncestorContainer self
+  = liftIO
+      (nullableToMaybe <$> (js_getCommonAncestorContainer (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,93 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ReadableStream
+       (js_newReadableStream, newReadableStream, js_read, read, js_cancel,
+        cancel, js_pipeTo, pipeTo, js_pipeThrough, pipeThrough,
+        js_getState, getState, js_getClosed, getClosed, js_getReady,
+        getReady, ReadableStream, castToReadableStream,
+        gTypeReadableStream)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"ReadableStream\"]($1)" js_newReadableStream ::
+        JSVal -> IO ReadableStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation> 
+newReadableStream :: (MonadIO m) => JSVal -> m ReadableStream
+newReadableStream properties
+  = liftIO (js_newReadableStream properties)
+ 
+foreign import javascript unsafe "$1[\"read\"]()" js_read ::
+        ReadableStream -> IO (Nullable GObject)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.read Mozilla ReadableStream.read documentation> 
+read :: (MonadIO m) => ReadableStream -> m (Maybe GObject)
+read self = liftIO (nullableToMaybe <$> (js_read (self)))
+ 
+foreign import javascript unsafe "$1[\"cancel\"]($2)" js_cancel ::
+        ReadableStream -> JSString -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
+cancel ::
+       (MonadIO m, ToJSString reason) =>
+         ReadableStream -> reason -> m (Maybe Promise)
+cancel self reason
+  = liftIO
+      (nullableToMaybe <$> (js_cancel (self) (toJSString reason)))
+ 
+foreign import javascript unsafe "$1[\"pipeTo\"]($2, $3)" js_pipeTo
+        :: ReadableStream -> JSVal -> JSVal -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
+pipeTo ::
+       (MonadIO m) =>
+         ReadableStream -> JSVal -> JSVal -> m (Maybe Promise)
+pipeTo self streams options
+  = liftIO (nullableToMaybe <$> (js_pipeTo (self) streams options))
+ 
+foreign import javascript unsafe "$1[\"pipeThrough\"]($2, $3)"
+        js_pipeThrough ::
+        ReadableStream -> JSVal -> JSVal -> IO (Nullable GObject)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
+pipeThrough ::
+            (MonadIO m) =>
+              ReadableStream -> JSVal -> JSVal -> m (Maybe GObject)
+pipeThrough self dest options
+  = liftIO (nullableToMaybe <$> (js_pipeThrough (self) dest options))
+ 
+foreign import javascript unsafe "$1[\"state\"]" js_getState ::
+        ReadableStream -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.state Mozilla ReadableStream.state documentation> 
+getState ::
+         (MonadIO m) => ReadableStream -> m ReadableStreamStateType
+getState self
+  = liftIO ((js_getState (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"closed\"]" js_getClosed ::
+        ReadableStream -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.closed Mozilla ReadableStream.closed documentation> 
+getClosed :: (MonadIO m) => ReadableStream -> m (Maybe Promise)
+getClosed self = liftIO (nullableToMaybe <$> (js_getClosed (self)))
+ 
+foreign import javascript unsafe "$1[\"ready\"]" js_getReady ::
+        ReadableStream -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.ready Mozilla ReadableStream.ready documentation> 
+getReady :: (MonadIO m) => ReadableStream -> m (Maybe Promise)
+getReady self = liftIO (nullableToMaybe <$> (js_getReady (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,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Rect
+       (js_getTop, getTop, js_getRight, getRight, js_getBottom, getBottom,
+        js_getLeft, getLeft, Rect, castToRect, gTypeRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"top\"]" js_getTop ::
+        Rect -> IO (Nullable CSSPrimitiveValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
+getTop :: (MonadIO m) => Rect -> m (Maybe CSSPrimitiveValue)
+getTop self = liftIO (nullableToMaybe <$> (js_getTop (self)))
+ 
+foreign import javascript unsafe "$1[\"right\"]" js_getRight ::
+        Rect -> IO (Nullable CSSPrimitiveValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.right Mozilla Rect.right documentation> 
+getRight :: (MonadIO m) => Rect -> m (Maybe CSSPrimitiveValue)
+getRight self = liftIO (nullableToMaybe <$> (js_getRight (self)))
+ 
+foreign import javascript unsafe "$1[\"bottom\"]" js_getBottom ::
+        Rect -> IO (Nullable CSSPrimitiveValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.bottom Mozilla Rect.bottom documentation> 
+getBottom :: (MonadIO m) => Rect -> m (Maybe CSSPrimitiveValue)
+getBottom self = liftIO (nullableToMaybe <$> (js_getBottom (self)))
+ 
+foreign import javascript unsafe "$1[\"left\"]" js_getLeft ::
+        Rect -> IO (Nullable CSSPrimitiveValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.left Mozilla Rect.left documentation> 
+getLeft :: (MonadIO m) => Rect -> m (Maybe CSSPrimitiveValue)
+getLeft self = liftIO (nullableToMaybe <$> (js_getLeft (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,56 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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/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,44 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSQLError, gTypeSQLError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"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[\"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/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,42 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SQLResultSet
+       (js_getRows, getRows, js_getInsertId, getInsertId,
+        js_getRowsAffected, getRowsAffected, SQLResultSet,
+        castToSQLResultSet, gTypeSQLResultSet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
+        SQLResultSet -> IO (Nullable SQLResultSetRowList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
+getRows ::
+        (MonadIO m) => SQLResultSet -> m (Maybe SQLResultSetRowList)
+getRows self = liftIO (nullableToMaybe <$> (js_getRows (self)))
+ 
+foreign import javascript unsafe "$1[\"insertId\"]" js_getInsertId
+        :: SQLResultSet -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.insertId Mozilla SQLResultSet.insertId documentation> 
+getInsertId :: (MonadIO m) => SQLResultSet -> m Int
+getInsertId self = liftIO (js_getInsertId (self))
+ 
+foreign import javascript unsafe "$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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList
+       (js_item, item, js_getLength, getLength, SQLResultSetRowList,
+        castToSQLResultSetRowList, gTypeSQLResultSetRowList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        SQLResultSetRowList -> Word -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
+item :: (MonadIO m) => SQLResultSetRowList -> Word -> m JSVal
+item self index = liftIO (js_item (self) index)
+ 
+foreign import javascript unsafe "$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,67 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
+newSQLStatementCallback ::
+                        (MonadIO m) =>
+                          (Maybe SQLTransaction -> Maybe 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) =>
+                              (Maybe SQLTransaction -> Maybe 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) =>
+                               (Maybe SQLTransaction -> Maybe 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,67 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
+newSQLStatementErrorCallback ::
+                             (MonadIO m) =>
+                               (Maybe SQLTransaction -> Maybe 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) =>
+                                   (Maybe SQLTransaction -> Maybe 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) =>
+                                    (Maybe SQLTransaction -> Maybe 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,42 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SQLTransaction
+       (js_executeSql, executeSql, SQLTransaction, castToSQLTransaction,
+        gTypeSQLTransaction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"executeSql\"]($2, $3, $4, $5)" js_executeSql ::
+        SQLTransaction ->
+          JSString ->
+            Nullable ObjectArray ->
+              Nullable SQLStatementCallback ->
+                Nullable SQLStatementErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction.executeSql Mozilla SQLTransaction.executeSql documentation> 
+executeSql ::
+           (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
+             SQLTransaction ->
+               sqlStatement ->
+                 Maybe arguments ->
+                   Maybe SQLStatementCallback ->
+                     Maybe SQLStatementErrorCallback -> m ()
+executeSql self sqlStatement arguments callback errorCallback
+  = liftIO
+      (js_executeSql (self) (toJSString sqlStatement)
+         (maybeToNullable (fmap toObjectArray arguments))
+         (maybeToNullable callback)
+         (maybeToNullable 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,55 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
+newSQLTransactionCallback ::
+                          (MonadIO m) =>
+                            (Maybe 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) =>
+                                (Maybe 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) =>
+                                 (Maybe 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,53 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
+newSQLTransactionErrorCallback ::
+                               (MonadIO m) =>
+                                 (Maybe 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) =>
+                                     (Maybe 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) =>
+                                      (Maybe 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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAElement
+       (js_getTarget, getTarget, SVGAElement, castToSVGAElement,
+        gTypeSVGAElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        SVGAElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
+getTarget ::
+          (MonadIO m) => SVGAElement -> m (Maybe SVGAnimatedString)
+getTarget self = liftIO (nullableToMaybe <$> (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,55 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement
+       (js_setGlyphRef, setGlyphRef, js_getGlyphRef, getGlyphRef,
+        js_setFormat, setFormat, js_getFormat, getFormat,
+        SVGAltGlyphElement, castToSVGAltGlyphElement,
+        gTypeSVGAltGlyphElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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,109 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGAngle, gTypeSVGAngle)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$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 unsafe
+        "$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[\"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 unsafe "$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[\"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 unsafe
+        "$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[\"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 unsafe "$1[\"valueAsString\"] = $2;"
+        js_setValueAsString :: SVGAngle -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
+setValueAsString ::
+                 (MonadIO m, ToJSString val) => SVGAngle -> Maybe val -> m ()
+setValueAsString self val
+  = liftIO (js_setValueAsString (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"valueAsString\"]"
+        js_getValueAsString :: SVGAngle -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
+getValueAsString ::
+                 (MonadIO m, FromJSString result) => SVGAngle -> m (Maybe result)
+getValueAsString self
+  = liftIO (fromMaybeJSString <$> (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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedAngle, castToSVGAnimatedAngle, gTypeSVGAnimatedAngle)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        SVGAnimatedAngle -> IO (Nullable SVGAngle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedAngle -> m (Maybe SVGAngle)
+getBaseVal self
+  = liftIO (nullableToMaybe <$> (js_getBaseVal (self)))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        SVGAnimatedAngle -> IO (Nullable SVGAngle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.animVal Mozilla SVGAnimatedAngle.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedAngle -> m (Maybe SVGAngle)
+getAnimVal self
+  = liftIO (nullableToMaybe <$> (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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedBoolean,
+        castToSVGAnimatedBoolean, gTypeSVGAnimatedBoolean)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedEnumeration,
+        castToSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedInteger,
+        castToSVGAnimatedInteger, gTypeSVGAnimatedInteger)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,37 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedLength, castToSVGAnimatedLength, gTypeSVGAnimatedLength)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        SVGAnimatedLength -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) => SVGAnimatedLength -> m (Maybe SVGLength)
+getBaseVal self
+  = liftIO (nullableToMaybe <$> (js_getBaseVal (self)))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        SVGAnimatedLength -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.animVal Mozilla SVGAnimatedLength.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) => SVGAnimatedLength -> m (Maybe SVGLength)
+getAnimVal self
+  = liftIO (nullableToMaybe <$> (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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedLengthList, castToSVGAnimatedLengthList,
+        gTypeSVGAnimatedLengthList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        SVGAnimatedLengthList -> IO (Nullable SVGLengthList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) => SVGAnimatedLengthList -> m (Maybe SVGLengthList)
+getBaseVal self
+  = liftIO (nullableToMaybe <$> (js_getBaseVal (self)))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        SVGAnimatedLengthList -> IO (Nullable SVGLengthList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.animVal Mozilla SVGAnimatedLengthList.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) => SVGAnimatedLengthList -> m (Maybe SVGLengthList)
+getAnimVal self
+  = liftIO (nullableToMaybe <$> (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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedNumber,
+        castToSVGAnimatedNumber, gTypeSVGAnimatedNumber)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedNumberList, castToSVGAnimatedNumberList,
+        gTypeSVGAnimatedNumberList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        SVGAnimatedNumberList -> IO (Nullable SVGNumberList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) => SVGAnimatedNumberList -> m (Maybe SVGNumberList)
+getBaseVal self
+  = liftIO (nullableToMaybe <$> (js_getBaseVal (self)))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        SVGAnimatedNumberList -> IO (Nullable SVGNumberList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.animVal Mozilla SVGAnimatedNumberList.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) => SVGAnimatedNumberList -> m (Maybe SVGNumberList)
+getAnimVal self
+  = liftIO (nullableToMaybe <$> (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,43 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedPreserveAspectRatio,
+        castToSVGAnimatedPreserveAspectRatio,
+        gTypeSVGAnimatedPreserveAspectRatio)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        SVGAnimatedPreserveAspectRatio ->
+          IO (Nullable SVGPreserveAspectRatio)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) =>
+             SVGAnimatedPreserveAspectRatio -> m (Maybe SVGPreserveAspectRatio)
+getBaseVal self
+  = liftIO (nullableToMaybe <$> (js_getBaseVal (self)))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        SVGAnimatedPreserveAspectRatio ->
+          IO (Nullable SVGPreserveAspectRatio)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.animVal Mozilla SVGAnimatedPreserveAspectRatio.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) =>
+             SVGAnimatedPreserveAspectRatio -> m (Maybe SVGPreserveAspectRatio)
+getAnimVal self
+  = liftIO (nullableToMaybe <$> (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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedRect, castToSVGAnimatedRect, gTypeSVGAnimatedRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        SVGAnimatedRect -> IO (Nullable SVGRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedRect -> m (Maybe SVGRect)
+getBaseVal self
+  = liftIO (nullableToMaybe <$> (js_getBaseVal (self)))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        SVGAnimatedRect -> IO (Nullable SVGRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.animVal Mozilla SVGAnimatedRect.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedRect -> m (Maybe SVGRect)
+getAnimVal self
+  = liftIO (nullableToMaybe <$> (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,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedString
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedString,
+        castToSVGAnimatedString, gTypeSVGAnimatedString)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedTransformList, castToSVGAnimatedTransformList,
+        gTypeSVGAnimatedTransformList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        SVGAnimatedTransformList -> IO (Nullable SVGTransformList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) =>
+             SVGAnimatedTransformList -> m (Maybe SVGTransformList)
+getBaseVal self
+  = liftIO (nullableToMaybe <$> (js_getBaseVal (self)))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        SVGAnimatedTransformList -> IO (Nullable SVGTransformList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.animVal Mozilla SVGAnimatedTransformList.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) =>
+             SVGAnimatedTransformList -> m (Maybe SVGTransformList)
+getAnimVal self
+  = liftIO (nullableToMaybe <$> (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,100 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimationElement
+       (js_getStartTime, getStartTime, js_getCurrentTime, getCurrentTime,
+        js_getSimpleDuration, getSimpleDuration, js_beginElement,
+        beginElement, js_beginElementAt, beginElementAt, js_endElement,
+        endElement, js_endElementAt, endElementAt, js_getTargetElement,
+        getTargetElement, SVGAnimationElement, castToSVGAnimationElement,
+        gTypeSVGAnimationElement, IsSVGAnimationElement,
+        toSVGAnimationElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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[\"beginElementAt\"]($2)"
+        js_beginElementAt :: SVGAnimationElement -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElementAt Mozilla SVGAnimationElement.beginElementAt documentation> 
+beginElementAt ::
+               (MonadIO m, IsSVGAnimationElement self) => self -> Float -> m ()
+beginElementAt self offset
+  = liftIO (js_beginElementAt (toSVGAnimationElement self) offset)
+ 
+foreign import javascript unsafe "$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[\"endElementAt\"]($2)"
+        js_endElementAt :: SVGAnimationElement -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElementAt Mozilla SVGAnimationElement.endElementAt documentation> 
+endElementAt ::
+             (MonadIO m, IsSVGAnimationElement self) => self -> Float -> m ()
+endElementAt self offset
+  = liftIO (js_endElementAt (toSVGAnimationElement self) offset)
+ 
+foreign import javascript unsafe "$1[\"targetElement\"]"
+        js_getTargetElement ::
+        SVGAnimationElement -> IO (Nullable SVGElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.targetElement Mozilla SVGAnimationElement.targetElement documentation> 
+getTargetElement ::
+                 (MonadIO m, IsSVGAnimationElement self) =>
+                   self -> m (Maybe SVGElement)
+getTargetElement self
+  = liftIO
+      (nullableToMaybe <$>
+         (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,43 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGCircleElement
+       (js_getCx, getCx, js_getCy, getCy, js_getR, getR, SVGCircleElement,
+        castToSVGCircleElement, gTypeSVGCircleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
+        SVGCircleElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
+getCx ::
+      (MonadIO m) => SVGCircleElement -> m (Maybe SVGAnimatedLength)
+getCx self = liftIO (nullableToMaybe <$> (js_getCx (self)))
+ 
+foreign import javascript unsafe "$1[\"cy\"]" js_getCy ::
+        SVGCircleElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cy Mozilla SVGCircleElement.cy documentation> 
+getCy ::
+      (MonadIO m) => SVGCircleElement -> m (Maybe SVGAnimatedLength)
+getCy self = liftIO (nullableToMaybe <$> (js_getCy (self)))
+ 
+foreign import javascript unsafe "$1[\"r\"]" js_getR ::
+        SVGCircleElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.r Mozilla SVGCircleElement.r documentation> 
+getR ::
+     (MonadIO m) => SVGCircleElement -> m (Maybe SVGAnimatedLength)
+getR self = liftIO (nullableToMaybe <$> (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,30 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGClipPathElement
+       (js_getClipPathUnits, getClipPathUnits, SVGClipPathElement,
+        castToSVGClipPathElement, gTypeSVGClipPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"clipPathUnits\"]"
+        js_getClipPathUnits ::
+        SVGClipPathElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
+getClipPathUnits ::
+                 (MonadIO m) =>
+                   SVGClipPathElement -> m (Maybe SVGAnimatedEnumeration)
+getClipPathUnits self
+  = liftIO (nullableToMaybe <$> (js_getClipPathUnits (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGColor.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGColor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGColor.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGColor
+       (js_setRGBColor, setRGBColor, js_setRGBColorICCColor,
+        setRGBColorICCColor, js_setColor, setColor,
+        pattern SVG_COLORTYPE_UNKNOWN, pattern SVG_COLORTYPE_RGBCOLOR,
+        pattern SVG_COLORTYPE_RGBCOLOR_ICCCOLOR,
+        pattern SVG_COLORTYPE_CURRENTCOLOR, js_getColorType, getColorType,
+        js_getRgbColor, getRgbColor, SVGColor, castToSVGColor,
+        gTypeSVGColor, IsSVGColor, toSVGColor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setRGBColor\"]($2)"
+        js_setRGBColor :: SVGColor -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.setRGBColor Mozilla SVGColor.setRGBColor documentation> 
+setRGBColor ::
+            (MonadIO m, IsSVGColor self, ToJSString rgbColor) =>
+              self -> rgbColor -> m ()
+setRGBColor self rgbColor
+  = liftIO (js_setRGBColor (toSVGColor self) (toJSString rgbColor))
+ 
+foreign import javascript unsafe
+        "$1[\"setRGBColorICCColor\"]($2,\n$3)" js_setRGBColorICCColor ::
+        SVGColor -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.setRGBColorICCColor Mozilla SVGColor.setRGBColorICCColor documentation> 
+setRGBColorICCColor ::
+                    (MonadIO m, IsSVGColor self, ToJSString rgbColor,
+                     ToJSString iccColor) =>
+                      self -> rgbColor -> iccColor -> m ()
+setRGBColorICCColor self rgbColor iccColor
+  = liftIO
+      (js_setRGBColorICCColor (toSVGColor self) (toJSString rgbColor)
+         (toJSString iccColor))
+ 
+foreign import javascript unsafe "$1[\"setColor\"]($2, $3, $4)"
+        js_setColor :: SVGColor -> Word -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.setColor Mozilla SVGColor.setColor documentation> 
+setColor ::
+         (MonadIO m, IsSVGColor self, ToJSString rgbColor,
+          ToJSString iccColor) =>
+           self -> Word -> rgbColor -> iccColor -> m ()
+setColor self colorType rgbColor iccColor
+  = liftIO
+      (js_setColor (toSVGColor self) colorType (toJSString rgbColor)
+         (toJSString iccColor))
+pattern SVG_COLORTYPE_UNKNOWN = 0
+pattern SVG_COLORTYPE_RGBCOLOR = 1
+pattern SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2
+pattern SVG_COLORTYPE_CURRENTCOLOR = 3
+ 
+foreign import javascript unsafe "$1[\"colorType\"]"
+        js_getColorType :: SVGColor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.colorType Mozilla SVGColor.colorType documentation> 
+getColorType :: (MonadIO m, IsSVGColor self) => self -> m Word
+getColorType self = liftIO (js_getColorType (toSVGColor self))
+ 
+foreign import javascript unsafe "$1[\"rgbColor\"]" js_getRgbColor
+        :: SVGColor -> IO (Nullable RGBColor)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.rgbColor Mozilla SVGColor.rgbColor documentation> 
+getRgbColor ::
+            (MonadIO m, IsSVGColor self) => self -> m (Maybe RGBColor)
+getRgbColor self
+  = liftIO (nullableToMaybe <$> (js_getRgbColor (toSVGColor 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,132 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGComponentTransferFunctionElement,
+        gTypeSVGComponentTransferFunctionElement,
+        IsSVGComponentTransferFunctionElement,
+        toSVGComponentTransferFunctionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"type\"]" js_getType ::
+        SVGComponentTransferFunctionElement ->
+          IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.type Mozilla SVGComponentTransferFunctionElement.type documentation> 
+getType ::
+        (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+          self -> m (Maybe SVGAnimatedEnumeration)
+getType self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getType (toSVGComponentTransferFunctionElement self)))
+ 
+foreign import javascript unsafe "$1[\"tableValues\"]"
+        js_getTableValues ::
+        SVGComponentTransferFunctionElement ->
+          IO (Nullable SVGAnimatedNumberList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.tableValues Mozilla SVGComponentTransferFunctionElement.tableValues documentation> 
+getTableValues ::
+               (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+                 self -> m (Maybe SVGAnimatedNumberList)
+getTableValues self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getTableValues (toSVGComponentTransferFunctionElement self)))
+ 
+foreign import javascript unsafe "$1[\"slope\"]" js_getSlope ::
+        SVGComponentTransferFunctionElement ->
+          IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.slope Mozilla SVGComponentTransferFunctionElement.slope documentation> 
+getSlope ::
+         (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+           self -> m (Maybe SVGAnimatedNumber)
+getSlope self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getSlope (toSVGComponentTransferFunctionElement self)))
+ 
+foreign import javascript unsafe "$1[\"intercept\"]"
+        js_getIntercept ::
+        SVGComponentTransferFunctionElement ->
+          IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.intercept Mozilla SVGComponentTransferFunctionElement.intercept documentation> 
+getIntercept ::
+             (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+               self -> m (Maybe SVGAnimatedNumber)
+getIntercept self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getIntercept (toSVGComponentTransferFunctionElement self)))
+ 
+foreign import javascript unsafe "$1[\"amplitude\"]"
+        js_getAmplitude ::
+        SVGComponentTransferFunctionElement ->
+          IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.amplitude Mozilla SVGComponentTransferFunctionElement.amplitude documentation> 
+getAmplitude ::
+             (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+               self -> m (Maybe SVGAnimatedNumber)
+getAmplitude self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getAmplitude (toSVGComponentTransferFunctionElement self)))
+ 
+foreign import javascript unsafe "$1[\"exponent\"]" js_getExponent
+        ::
+        SVGComponentTransferFunctionElement ->
+          IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.exponent Mozilla SVGComponentTransferFunctionElement.exponent documentation> 
+getExponent ::
+            (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+              self -> m (Maybe SVGAnimatedNumber)
+getExponent self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getExponent (toSVGComponentTransferFunctionElement self)))
+ 
+foreign import javascript unsafe "$1[\"offset\"]" js_getOffset ::
+        SVGComponentTransferFunctionElement ->
+          IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.offset Mozilla SVGComponentTransferFunctionElement.offset documentation> 
+getOffset ::
+          (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+            self -> m (Maybe SVGAnimatedNumber)
+getOffset self
+  = liftIO
+      (nullableToMaybe <$>
+         (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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGCursorElement
+       (js_getX, getX, js_getY, getY, SVGCursorElement,
+        castToSVGCursorElement, gTypeSVGCursorElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGCursorElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGCursorElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGCursorElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.y Mozilla SVGCursorElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGCursorElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGDocument.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGDocument.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGDocument
+       (js_createEvent, createEvent, js_getRootElement, getRootElement,
+        SVGDocument, castToSVGDocument, gTypeSVGDocument)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"createEvent\"]($2)"
+        js_createEvent :: SVGDocument -> JSString -> IO (Nullable Event)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.createEvent Mozilla SVGDocument.createEvent documentation> 
+createEvent ::
+            (MonadIO m, ToJSString eventType) =>
+              SVGDocument -> eventType -> m (Maybe Event)
+createEvent self eventType
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createEvent (self) (toJSString eventType)))
+ 
+foreign import javascript unsafe "$1[\"rootElement\"]"
+        js_getRootElement :: SVGDocument -> IO (Nullable SVGSVGElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.rootElement Mozilla SVGDocument.rootElement documentation> 
+getRootElement ::
+               (MonadIO m) => SVGDocument -> m (Maybe SVGSVGElement)
+getRootElement self
+  = liftIO (nullableToMaybe <$> (js_getRootElement (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,158 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGElement
+       (js_getPresentationAttribute, getPresentationAttribute,
+        js_setXmlbase, setXmlbase, js_getXmlbase, getXmlbase,
+        js_getOwnerSVGElement, getOwnerSVGElement, js_getViewportElement,
+        getViewportElement, js_setXmllang, setXmllang, js_getXmllang,
+        getXmllang, js_setXmlspace, setXmlspace, js_getXmlspace,
+        getXmlspace, js_getClassName, getClassName, js_getStyle, getStyle,
+        js_setTabIndex, setTabIndex, js_getTabIndex, getTabIndex,
+        SVGElement, castToSVGElement, gTypeSVGElement, IsSVGElement,
+        toSVGElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getPresentationAttribute\"]($2)" js_getPresentationAttribute
+        :: SVGElement -> JSString -> IO (Nullable CSSValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
+getPresentationAttribute ::
+                         (MonadIO m, IsSVGElement self, ToJSString name) =>
+                           self -> name -> m (Maybe CSSValue)
+getPresentationAttribute self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getPresentationAttribute (toSVGElement self)
+            (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"xmlbase\"] = $2;"
+        js_setXmlbase :: SVGElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlbase Mozilla SVGElement.xmlbase documentation> 
+setXmlbase ::
+           (MonadIO m, IsSVGElement self, ToJSString val) =>
+             self -> Maybe val -> m ()
+setXmlbase self val
+  = liftIO (js_setXmlbase (toSVGElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"xmlbase\"]" js_getXmlbase ::
+        SVGElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlbase Mozilla SVGElement.xmlbase documentation> 
+getXmlbase ::
+           (MonadIO m, IsSVGElement self, FromJSString result) =>
+             self -> m (Maybe result)
+getXmlbase self
+  = liftIO
+      (fromMaybeJSString <$> (js_getXmlbase (toSVGElement self)))
+ 
+foreign import javascript unsafe "$1[\"ownerSVGElement\"]"
+        js_getOwnerSVGElement :: SVGElement -> IO (Nullable SVGSVGElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.ownerSVGElement Mozilla SVGElement.ownerSVGElement documentation> 
+getOwnerSVGElement ::
+                   (MonadIO m, IsSVGElement self) => self -> m (Maybe SVGSVGElement)
+getOwnerSVGElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getOwnerSVGElement (toSVGElement self)))
+ 
+foreign import javascript unsafe "$1[\"viewportElement\"]"
+        js_getViewportElement :: SVGElement -> IO (Nullable SVGElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.viewportElement Mozilla SVGElement.viewportElement documentation> 
+getViewportElement ::
+                   (MonadIO m, IsSVGElement self) => self -> m (Maybe SVGElement)
+getViewportElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getViewportElement (toSVGElement self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"className\"]"
+        js_getClassName :: SVGElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.className Mozilla SVGElement.className documentation> 
+getClassName ::
+             (MonadIO m, IsSVGElement self) =>
+               self -> m (Maybe SVGAnimatedString)
+getClassName self
+  = liftIO
+      (nullableToMaybe <$> (js_getClassName (toSVGElement self)))
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        SVGElement -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.style Mozilla SVGElement.style documentation> 
+getStyle ::
+         (MonadIO m, IsSVGElement self) =>
+           self -> m (Maybe CSSStyleDeclaration)
+getStyle self
+  = liftIO (nullableToMaybe <$> (js_getStyle (toSVGElement self)))
+ 
+foreign import javascript unsafe "$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[\"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))
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,52 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
+       (js_getCx, getCx, js_getCy, getCy, js_getRx, getRx, js_getRy,
+        getRy, SVGEllipseElement, castToSVGEllipseElement,
+        gTypeSVGEllipseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
+        SVGEllipseElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
+getCx ::
+      (MonadIO m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
+getCx self = liftIO (nullableToMaybe <$> (js_getCx (self)))
+ 
+foreign import javascript unsafe "$1[\"cy\"]" js_getCy ::
+        SVGEllipseElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cy Mozilla SVGEllipseElement.cy documentation> 
+getCy ::
+      (MonadIO m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
+getCy self = liftIO (nullableToMaybe <$> (js_getCy (self)))
+ 
+foreign import javascript unsafe "$1[\"rx\"]" js_getRx ::
+        SVGEllipseElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.rx Mozilla SVGEllipseElement.rx documentation> 
+getRx ::
+      (MonadIO m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
+getRx self = liftIO (nullableToMaybe <$> (js_getRx (self)))
+ 
+foreign import javascript unsafe "$1[\"ry\"]" js_getRy ::
+        SVGEllipseElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.ry Mozilla SVGEllipseElement.ry documentation> 
+getRy ::
+      (MonadIO m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
+getRy self = liftIO (nullableToMaybe <$> (js_getRy (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,32 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired
+       (js_getExternalResourcesRequired, getExternalResourcesRequired,
+        SVGExternalResourcesRequired, castToSVGExternalResourcesRequired,
+        gTypeSVGExternalResourcesRequired)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"externalResourcesRequired\"]" js_getExternalResourcesRequired
+        :: SVGExternalResourcesRequired -> IO (Nullable SVGAnimatedBoolean)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
+getExternalResourcesRequired ::
+                             (MonadIO m) =>
+                               SVGExternalResourcesRequired -> m (Maybe SVGAnimatedBoolean)
+getExternalResourcesRequired self
+  = liftIO
+      (nullableToMaybe <$> (js_getExternalResourcesRequired (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,53 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGFEBlendElement, gTypeSVGFEBlendElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"in1\"]" js_getIn1 ::
+        SVGFEBlendElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in1 Mozilla SVGFEBlendElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEBlendElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"in2\"]" js_getIn2 ::
+        SVGFEBlendElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in2 Mozilla SVGFEBlendElement.in2 documentation> 
+getIn2 ::
+       (MonadIO m) => SVGFEBlendElement -> m (Maybe SVGAnimatedString)
+getIn2 self = liftIO (nullableToMaybe <$> (js_getIn2 (self)))
+ 
+foreign import javascript unsafe "$1[\"mode\"]" js_getMode ::
+        SVGFEBlendElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.mode Mozilla SVGFEBlendElement.mode documentation> 
+getMode ::
+        (MonadIO m) =>
+          SVGFEBlendElement -> m (Maybe SVGAnimatedEnumeration)
+getMode self = liftIO (nullableToMaybe <$> (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,57 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGFEColorMatrixElement,
+        gTypeSVGFEColorMatrixElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"in1\"]" js_getIn1 ::
+        SVGFEColorMatrixElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.in1 Mozilla SVGFEColorMatrixElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFEColorMatrixElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        SVGFEColorMatrixElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.type Mozilla SVGFEColorMatrixElement.type documentation> 
+getType ::
+        (MonadIO m) =>
+          SVGFEColorMatrixElement -> m (Maybe SVGAnimatedEnumeration)
+getType self = liftIO (nullableToMaybe <$> (js_getType (self)))
+ 
+foreign import javascript unsafe "$1[\"values\"]" js_getValues ::
+        SVGFEColorMatrixElement -> IO (Nullable SVGAnimatedNumberList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.values Mozilla SVGFEColorMatrixElement.values documentation> 
+getValues ::
+          (MonadIO m) =>
+            SVGFEColorMatrixElement -> m (Maybe SVGAnimatedNumberList)
+getValues self = liftIO (nullableToMaybe <$> (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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement
+       (js_getIn1, getIn1, SVGFEComponentTransferElement,
+        castToSVGFEComponentTransferElement,
+        gTypeSVGFEComponentTransferElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        SVGFEComponentTransferElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFEComponentTransferElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (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,93 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGFECompositeElement,
+        gTypeSVGFECompositeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"in1\"]" js_getIn1 ::
+        SVGFECompositeElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in1 Mozilla SVGFECompositeElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFECompositeElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"in2\"]" js_getIn2 ::
+        SVGFECompositeElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in2 Mozilla SVGFECompositeElement.in2 documentation> 
+getIn2 ::
+       (MonadIO m) => SVGFECompositeElement -> m (Maybe SVGAnimatedString)
+getIn2 self = liftIO (nullableToMaybe <$> (js_getIn2 (self)))
+ 
+foreign import javascript unsafe "$1[\"operator\"]" js_getOperator
+        :: SVGFECompositeElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.operator Mozilla SVGFECompositeElement.operator documentation> 
+getOperator ::
+            (MonadIO m) =>
+              SVGFECompositeElement -> m (Maybe SVGAnimatedEnumeration)
+getOperator self
+  = liftIO (nullableToMaybe <$> (js_getOperator (self)))
+ 
+foreign import javascript unsafe "$1[\"k1\"]" js_getK1 ::
+        SVGFECompositeElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k1 Mozilla SVGFECompositeElement.k1 documentation> 
+getK1 ::
+      (MonadIO m) => SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
+getK1 self = liftIO (nullableToMaybe <$> (js_getK1 (self)))
+ 
+foreign import javascript unsafe "$1[\"k2\"]" js_getK2 ::
+        SVGFECompositeElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k2 Mozilla SVGFECompositeElement.k2 documentation> 
+getK2 ::
+      (MonadIO m) => SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
+getK2 self = liftIO (nullableToMaybe <$> (js_getK2 (self)))
+ 
+foreign import javascript unsafe "$1[\"k3\"]" js_getK3 ::
+        SVGFECompositeElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k3 Mozilla SVGFECompositeElement.k3 documentation> 
+getK3 ::
+      (MonadIO m) => SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
+getK3 self = liftIO (nullableToMaybe <$> (js_getK3 (self)))
+ 
+foreign import javascript unsafe "$1[\"k4\"]" js_getK4 ::
+        SVGFECompositeElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k4 Mozilla SVGFECompositeElement.k4 documentation> 
+getK4 ::
+      (MonadIO m) => SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
+getK4 self = liftIO (nullableToMaybe <$> (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,152 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGFEConvolveMatrixElement,
+        gTypeSVGFEConvolveMatrixElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"in1\"]" js_getIn1 ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.in1 Mozilla SVGFEConvolveMatrixElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"orderX\"]" js_getOrderX ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedInteger)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderX Mozilla SVGFEConvolveMatrixElement.orderX documentation> 
+getOrderX ::
+          (MonadIO m) =>
+            SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedInteger)
+getOrderX self = liftIO (nullableToMaybe <$> (js_getOrderX (self)))
+ 
+foreign import javascript unsafe "$1[\"orderY\"]" js_getOrderY ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedInteger)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderY Mozilla SVGFEConvolveMatrixElement.orderY documentation> 
+getOrderY ::
+          (MonadIO m) =>
+            SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedInteger)
+getOrderY self = liftIO (nullableToMaybe <$> (js_getOrderY (self)))
+ 
+foreign import javascript unsafe "$1[\"kernelMatrix\"]"
+        js_getKernelMatrix ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedNumberList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelMatrix Mozilla SVGFEConvolveMatrixElement.kernelMatrix documentation> 
+getKernelMatrix ::
+                (MonadIO m) =>
+                  SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumberList)
+getKernelMatrix self
+  = liftIO (nullableToMaybe <$> (js_getKernelMatrix (self)))
+ 
+foreign import javascript unsafe "$1[\"divisor\"]" js_getDivisor ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.divisor Mozilla SVGFEConvolveMatrixElement.divisor documentation> 
+getDivisor ::
+           (MonadIO m) =>
+             SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumber)
+getDivisor self
+  = liftIO (nullableToMaybe <$> (js_getDivisor (self)))
+ 
+foreign import javascript unsafe "$1[\"bias\"]" js_getBias ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.bias Mozilla SVGFEConvolveMatrixElement.bias documentation> 
+getBias ::
+        (MonadIO m) =>
+          SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumber)
+getBias self = liftIO (nullableToMaybe <$> (js_getBias (self)))
+ 
+foreign import javascript unsafe "$1[\"targetX\"]" js_getTargetX ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedInteger)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetX Mozilla SVGFEConvolveMatrixElement.targetX documentation> 
+getTargetX ::
+           (MonadIO m) =>
+             SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedInteger)
+getTargetX self
+  = liftIO (nullableToMaybe <$> (js_getTargetX (self)))
+ 
+foreign import javascript unsafe "$1[\"targetY\"]" js_getTargetY ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedInteger)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetY Mozilla SVGFEConvolveMatrixElement.targetY documentation> 
+getTargetY ::
+           (MonadIO m) =>
+             SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedInteger)
+getTargetY self
+  = liftIO (nullableToMaybe <$> (js_getTargetY (self)))
+ 
+foreign import javascript unsafe "$1[\"edgeMode\"]" js_getEdgeMode
+        ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.edgeMode Mozilla SVGFEConvolveMatrixElement.edgeMode documentation> 
+getEdgeMode ::
+            (MonadIO m) =>
+              SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedEnumeration)
+getEdgeMode self
+  = liftIO (nullableToMaybe <$> (js_getEdgeMode (self)))
+ 
+foreign import javascript unsafe "$1[\"kernelUnitLengthX\"]"
+        js_getKernelUnitLengthX ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthX Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthX documentation> 
+getKernelUnitLengthX ::
+                     (MonadIO m) =>
+                       SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumber)
+getKernelUnitLengthX self
+  = liftIO (nullableToMaybe <$> (js_getKernelUnitLengthX (self)))
+ 
+foreign import javascript unsafe "$1[\"kernelUnitLengthY\"]"
+        js_getKernelUnitLengthY ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthY Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthY documentation> 
+getKernelUnitLengthY ::
+                     (MonadIO m) =>
+                       SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedNumber)
+getKernelUnitLengthY self
+  = liftIO (nullableToMaybe <$> (js_getKernelUnitLengthY (self)))
+ 
+foreign import javascript unsafe "$1[\"preserveAlpha\"]"
+        js_getPreserveAlpha ::
+        SVGFEConvolveMatrixElement -> IO (Nullable SVGAnimatedBoolean)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.preserveAlpha Mozilla SVGFEConvolveMatrixElement.preserveAlpha documentation> 
+getPreserveAlpha ::
+                 (MonadIO m) =>
+                   SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedBoolean)
+getPreserveAlpha self
+  = liftIO (nullableToMaybe <$> (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,76 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement
+       (js_getIn1, getIn1, js_getSurfaceScale, getSurfaceScale,
+        js_getDiffuseConstant, getDiffuseConstant, js_getKernelUnitLengthX,
+        getKernelUnitLengthX, js_getKernelUnitLengthY,
+        getKernelUnitLengthY, SVGFEDiffuseLightingElement,
+        castToSVGFEDiffuseLightingElement,
+        gTypeSVGFEDiffuseLightingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        SVGFEDiffuseLightingElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"surfaceScale\"]"
+        js_getSurfaceScale ::
+        SVGFEDiffuseLightingElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.surfaceScale Mozilla SVGFEDiffuseLightingElement.surfaceScale documentation> 
+getSurfaceScale ::
+                (MonadIO m) =>
+                  SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
+getSurfaceScale self
+  = liftIO (nullableToMaybe <$> (js_getSurfaceScale (self)))
+ 
+foreign import javascript unsafe "$1[\"diffuseConstant\"]"
+        js_getDiffuseConstant ::
+        SVGFEDiffuseLightingElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.diffuseConstant Mozilla SVGFEDiffuseLightingElement.diffuseConstant documentation> 
+getDiffuseConstant ::
+                   (MonadIO m) =>
+                     SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
+getDiffuseConstant self
+  = liftIO (nullableToMaybe <$> (js_getDiffuseConstant (self)))
+ 
+foreign import javascript unsafe "$1[\"kernelUnitLengthX\"]"
+        js_getKernelUnitLengthX ::
+        SVGFEDiffuseLightingElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthX Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthX documentation> 
+getKernelUnitLengthX ::
+                     (MonadIO m) =>
+                       SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
+getKernelUnitLengthX self
+  = liftIO (nullableToMaybe <$> (js_getKernelUnitLengthX (self)))
+ 
+foreign import javascript unsafe "$1[\"kernelUnitLengthY\"]"
+        js_getKernelUnitLengthY ::
+        SVGFEDiffuseLightingElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthY Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthY documentation> 
+getKernelUnitLengthY ::
+                     (MonadIO m) =>
+                       SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
+getKernelUnitLengthY self
+  = liftIO (nullableToMaybe <$> (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,78 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGFEDisplacementMapElement,
+        gTypeSVGFEDisplacementMapElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"in1\"]" js_getIn1 ::
+        SVGFEDisplacementMapElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in1 Mozilla SVGFEDisplacementMapElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"in2\"]" js_getIn2 ::
+        SVGFEDisplacementMapElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in2 Mozilla SVGFEDisplacementMapElement.in2 documentation> 
+getIn2 ::
+       (MonadIO m) =>
+         SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedString)
+getIn2 self = liftIO (nullableToMaybe <$> (js_getIn2 (self)))
+ 
+foreign import javascript unsafe "$1[\"scale\"]" js_getScale ::
+        SVGFEDisplacementMapElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.scale Mozilla SVGFEDisplacementMapElement.scale documentation> 
+getScale ::
+         (MonadIO m) =>
+           SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedNumber)
+getScale self = liftIO (nullableToMaybe <$> (js_getScale (self)))
+ 
+foreign import javascript unsafe "$1[\"xChannelSelector\"]"
+        js_getXChannelSelector ::
+        SVGFEDisplacementMapElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.xChannelSelector Mozilla SVGFEDisplacementMapElement.xChannelSelector documentation> 
+getXChannelSelector ::
+                    (MonadIO m) =>
+                      SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedEnumeration)
+getXChannelSelector self
+  = liftIO (nullableToMaybe <$> (js_getXChannelSelector (self)))
+ 
+foreign import javascript unsafe "$1[\"yChannelSelector\"]"
+        js_getYChannelSelector ::
+        SVGFEDisplacementMapElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.yChannelSelector Mozilla SVGFEDisplacementMapElement.yChannelSelector documentation> 
+getYChannelSelector ::
+                    (MonadIO m) =>
+                      SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedEnumeration)
+getYChannelSelector self
+  = liftIO (nullableToMaybe <$> (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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement
+       (js_getAzimuth, getAzimuth, js_getElevation, getElevation,
+        SVGFEDistantLightElement, castToSVGFEDistantLightElement,
+        gTypeSVGFEDistantLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"azimuth\"]" js_getAzimuth ::
+        SVGFEDistantLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
+getAzimuth ::
+           (MonadIO m) =>
+             SVGFEDistantLightElement -> m (Maybe SVGAnimatedNumber)
+getAzimuth self
+  = liftIO (nullableToMaybe <$> (js_getAzimuth (self)))
+ 
+foreign import javascript unsafe "$1[\"elevation\"]"
+        js_getElevation ::
+        SVGFEDistantLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.elevation Mozilla SVGFEDistantLightElement.elevation documentation> 
+getElevation ::
+             (MonadIO m) =>
+               SVGFEDistantLightElement -> m (Maybe SVGAnimatedNumber)
+getElevation self
+  = liftIO (nullableToMaybe <$> (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,80 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGFEDropShadowElement, gTypeSVGFEDropShadowElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setStdDeviation\"]($2, $3)"
+        js_setStdDeviation ::
+        SVGFEDropShadowElement -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.setStdDeviation Mozilla SVGFEDropShadowElement.setStdDeviation documentation> 
+setStdDeviation ::
+                (MonadIO m) => SVGFEDropShadowElement -> Float -> Float -> m ()
+setStdDeviation self stdDeviationX stdDeviationY
+  = liftIO (js_setStdDeviation (self) stdDeviationX stdDeviationY)
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        SVGFEDropShadowElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.in1 Mozilla SVGFEDropShadowElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFEDropShadowElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"dx\"]" js_getDx ::
+        SVGFEDropShadowElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dx Mozilla SVGFEDropShadowElement.dx documentation> 
+getDx ::
+      (MonadIO m) =>
+        SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
+getDx self = liftIO (nullableToMaybe <$> (js_getDx (self)))
+ 
+foreign import javascript unsafe "$1[\"dy\"]" js_getDy ::
+        SVGFEDropShadowElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dy Mozilla SVGFEDropShadowElement.dy documentation> 
+getDy ::
+      (MonadIO m) =>
+        SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
+getDy self = liftIO (nullableToMaybe <$> (js_getDy (self)))
+ 
+foreign import javascript unsafe "$1[\"stdDeviationX\"]"
+        js_getStdDeviationX ::
+        SVGFEDropShadowElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationX Mozilla SVGFEDropShadowElement.stdDeviationX documentation> 
+getStdDeviationX ::
+                 (MonadIO m) =>
+                   SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
+getStdDeviationX self
+  = liftIO (nullableToMaybe <$> (js_getStdDeviationX (self)))
+ 
+foreign import javascript unsafe "$1[\"stdDeviationY\"]"
+        js_getStdDeviationY ::
+        SVGFEDropShadowElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationY Mozilla SVGFEDropShadowElement.stdDeviationY documentation> 
+getStdDeviationY ::
+                 (MonadIO m) =>
+                   SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
+getStdDeviationY self
+  = liftIO (nullableToMaybe <$> (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,78 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGFEGaussianBlurElement, gTypeSVGFEGaussianBlurElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setStdDeviation\"]($2, $3)"
+        js_setStdDeviation ::
+        SVGFEGaussianBlurElement -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.setStdDeviation Mozilla SVGFEGaussianBlurElement.setStdDeviation documentation> 
+setStdDeviation ::
+                (MonadIO m) => SVGFEGaussianBlurElement -> Float -> Float -> m ()
+setStdDeviation self stdDeviationX stdDeviationY
+  = liftIO (js_setStdDeviation (self) stdDeviationX 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[\"in1\"]" js_getIn1 ::
+        SVGFEGaussianBlurElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.in1 Mozilla SVGFEGaussianBlurElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"stdDeviationX\"]"
+        js_getStdDeviationX ::
+        SVGFEGaussianBlurElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationX Mozilla SVGFEGaussianBlurElement.stdDeviationX documentation> 
+getStdDeviationX ::
+                 (MonadIO m) =>
+                   SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedNumber)
+getStdDeviationX self
+  = liftIO (nullableToMaybe <$> (js_getStdDeviationX (self)))
+ 
+foreign import javascript unsafe "$1[\"stdDeviationY\"]"
+        js_getStdDeviationY ::
+        SVGFEGaussianBlurElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationY Mozilla SVGFEGaussianBlurElement.stdDeviationY documentation> 
+getStdDeviationY ::
+                 (MonadIO m) =>
+                   SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedNumber)
+getStdDeviationY self
+  = liftIO (nullableToMaybe <$> (js_getStdDeviationY (self)))
+ 
+foreign import javascript unsafe "$1[\"edgeMode\"]" js_getEdgeMode
+        :: SVGFEGaussianBlurElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.edgeMode Mozilla SVGFEGaussianBlurElement.edgeMode documentation> 
+getEdgeMode ::
+            (MonadIO m) =>
+              SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedEnumeration)
+getEdgeMode self
+  = liftIO (nullableToMaybe <$> (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,30 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEImageElement
+       (js_getPreserveAspectRatio, getPreserveAspectRatio,
+        SVGFEImageElement, castToSVGFEImageElement, gTypeSVGFEImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"preserveAspectRatio\"]"
+        js_getPreserveAspectRatio ::
+        SVGFEImageElement -> IO (Nullable SVGAnimatedPreserveAspectRatio)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadIO m) =>
+                         SVGFEImageElement -> m (Maybe SVGAnimatedPreserveAspectRatio)
+getPreserveAspectRatio self
+  = liftIO (nullableToMaybe <$> (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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement
+       (js_getIn1, getIn1, SVGFEMergeNodeElement,
+        castToSVGFEMergeNodeElement, gTypeSVGFEMergeNodeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        SVGFEMergeNodeElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEMergeNodeElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (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,74 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGFEMorphologyElement, gTypeSVGFEMorphologyElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setRadius\"]($2, $3)"
+        js_setRadius :: SVGFEMorphologyElement -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.setRadius Mozilla SVGFEMorphologyElement.setRadius documentation> 
+setRadius ::
+          (MonadIO m) => SVGFEMorphologyElement -> Float -> Float -> m ()
+setRadius self radiusX radiusY
+  = liftIO (js_setRadius (self) radiusX radiusY)
+pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0
+pattern SVG_MORPHOLOGY_OPERATOR_ERODE = 1
+pattern SVG_MORPHOLOGY_OPERATOR_DILATE = 2
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        SVGFEMorphologyElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.in1 Mozilla SVGFEMorphologyElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFEMorphologyElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"operator\"]" js_getOperator
+        :: SVGFEMorphologyElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.operator Mozilla SVGFEMorphologyElement.operator documentation> 
+getOperator ::
+            (MonadIO m) =>
+              SVGFEMorphologyElement -> m (Maybe SVGAnimatedEnumeration)
+getOperator self
+  = liftIO (nullableToMaybe <$> (js_getOperator (self)))
+ 
+foreign import javascript unsafe "$1[\"radiusX\"]" js_getRadiusX ::
+        SVGFEMorphologyElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusX Mozilla SVGFEMorphologyElement.radiusX documentation> 
+getRadiusX ::
+           (MonadIO m) =>
+             SVGFEMorphologyElement -> m (Maybe SVGAnimatedNumber)
+getRadiusX self
+  = liftIO (nullableToMaybe <$> (js_getRadiusX (self)))
+ 
+foreign import javascript unsafe "$1[\"radiusY\"]" js_getRadiusY ::
+        SVGFEMorphologyElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusY Mozilla SVGFEMorphologyElement.radiusY documentation> 
+getRadiusY ::
+           (MonadIO m) =>
+             SVGFEMorphologyElement -> m (Maybe SVGAnimatedNumber)
+getRadiusY self
+  = liftIO (nullableToMaybe <$> (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,44 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement
+       (js_getIn1, getIn1, js_getDx, getDx, js_getDy, getDy,
+        SVGFEOffsetElement, castToSVGFEOffsetElement,
+        gTypeSVGFEOffsetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        SVGFEOffsetElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEOffsetElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"dx\"]" js_getDx ::
+        SVGFEOffsetElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dx Mozilla SVGFEOffsetElement.dx documentation> 
+getDx ::
+      (MonadIO m) => SVGFEOffsetElement -> m (Maybe SVGAnimatedNumber)
+getDx self = liftIO (nullableToMaybe <$> (js_getDx (self)))
+ 
+foreign import javascript unsafe "$1[\"dy\"]" js_getDy ::
+        SVGFEOffsetElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dy Mozilla SVGFEOffsetElement.dy documentation> 
+getDy ::
+      (MonadIO m) => SVGFEOffsetElement -> m (Maybe SVGAnimatedNumber)
+getDy self = liftIO (nullableToMaybe <$> (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,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement
+       (js_getX, getX, js_getY, getY, js_getZ, getZ,
+        SVGFEPointLightElement, castToSVGFEPointLightElement,
+        gTypeSVGFEPointLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGFEPointLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
+getX ::
+     (MonadIO m) =>
+       SVGFEPointLightElement -> m (Maybe SVGAnimatedNumber)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGFEPointLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.y Mozilla SVGFEPointLightElement.y documentation> 
+getY ::
+     (MonadIO m) =>
+       SVGFEPointLightElement -> m (Maybe SVGAnimatedNumber)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"z\"]" js_getZ ::
+        SVGFEPointLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.z Mozilla SVGFEPointLightElement.z documentation> 
+getZ ::
+     (MonadIO m) =>
+       SVGFEPointLightElement -> m (Maybe SVGAnimatedNumber)
+getZ self = liftIO (nullableToMaybe <$> (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,64 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement
+       (js_getIn1, getIn1, js_getSurfaceScale, getSurfaceScale,
+        js_getSpecularConstant, getSpecularConstant,
+        js_getSpecularExponent, getSpecularExponent,
+        SVGFESpecularLightingElement, castToSVGFESpecularLightingElement,
+        gTypeSVGFESpecularLightingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        SVGFESpecularLightingElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) =>
+         SVGFESpecularLightingElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (js_getIn1 (self)))
+ 
+foreign import javascript unsafe "$1[\"surfaceScale\"]"
+        js_getSurfaceScale ::
+        SVGFESpecularLightingElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.surfaceScale Mozilla SVGFESpecularLightingElement.surfaceScale documentation> 
+getSurfaceScale ::
+                (MonadIO m) =>
+                  SVGFESpecularLightingElement -> m (Maybe SVGAnimatedNumber)
+getSurfaceScale self
+  = liftIO (nullableToMaybe <$> (js_getSurfaceScale (self)))
+ 
+foreign import javascript unsafe "$1[\"specularConstant\"]"
+        js_getSpecularConstant ::
+        SVGFESpecularLightingElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularConstant Mozilla SVGFESpecularLightingElement.specularConstant documentation> 
+getSpecularConstant ::
+                    (MonadIO m) =>
+                      SVGFESpecularLightingElement -> m (Maybe SVGAnimatedNumber)
+getSpecularConstant self
+  = liftIO (nullableToMaybe <$> (js_getSpecularConstant (self)))
+ 
+foreign import javascript unsafe "$1[\"specularExponent\"]"
+        js_getSpecularExponent ::
+        SVGFESpecularLightingElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularExponent Mozilla SVGFESpecularLightingElement.specularExponent documentation> 
+getSpecularExponent ::
+                    (MonadIO m) =>
+                      SVGFESpecularLightingElement -> m (Maybe SVGAnimatedNumber)
+getSpecularExponent self
+  = liftIO (nullableToMaybe <$> (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,97 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGFESpotLightElement,
+        gTypeSVGFESpotLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGFESpotLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGFESpotLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.y Mozilla SVGFESpotLightElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"z\"]" js_getZ ::
+        SVGFESpotLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.z Mozilla SVGFESpotLightElement.z documentation> 
+getZ ::
+     (MonadIO m) => SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getZ self = liftIO (nullableToMaybe <$> (js_getZ (self)))
+ 
+foreign import javascript unsafe "$1[\"pointsAtX\"]"
+        js_getPointsAtX ::
+        SVGFESpotLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtX Mozilla SVGFESpotLightElement.pointsAtX documentation> 
+getPointsAtX ::
+             (MonadIO m) => SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getPointsAtX self
+  = liftIO (nullableToMaybe <$> (js_getPointsAtX (self)))
+ 
+foreign import javascript unsafe "$1[\"pointsAtY\"]"
+        js_getPointsAtY ::
+        SVGFESpotLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtY Mozilla SVGFESpotLightElement.pointsAtY documentation> 
+getPointsAtY ::
+             (MonadIO m) => SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getPointsAtY self
+  = liftIO (nullableToMaybe <$> (js_getPointsAtY (self)))
+ 
+foreign import javascript unsafe "$1[\"pointsAtZ\"]"
+        js_getPointsAtZ ::
+        SVGFESpotLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtZ Mozilla SVGFESpotLightElement.pointsAtZ documentation> 
+getPointsAtZ ::
+             (MonadIO m) => SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getPointsAtZ self
+  = liftIO (nullableToMaybe <$> (js_getPointsAtZ (self)))
+ 
+foreign import javascript unsafe "$1[\"specularExponent\"]"
+        js_getSpecularExponent ::
+        SVGFESpotLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.specularExponent Mozilla SVGFESpotLightElement.specularExponent documentation> 
+getSpecularExponent ::
+                    (MonadIO m) => SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getSpecularExponent self
+  = liftIO (nullableToMaybe <$> (js_getSpecularExponent (self)))
+ 
+foreign import javascript unsafe "$1[\"limitingConeAngle\"]"
+        js_getLimitingConeAngle ::
+        SVGFESpotLightElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.limitingConeAngle Mozilla SVGFESpotLightElement.limitingConeAngle documentation> 
+getLimitingConeAngle ::
+                     (MonadIO m) => SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
+getLimitingConeAngle self
+  = liftIO (nullableToMaybe <$> (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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFETileElement
+       (js_getIn1, getIn1, SVGFETileElement, castToSVGFETileElement,
+        gTypeSVGFETileElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        SVGFETileElement -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFETileElement -> m (Maybe SVGAnimatedString)
+getIn1 self = liftIO (nullableToMaybe <$> (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,95 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGFETurbulenceElement,
+        gTypeSVGFETurbulenceElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"baseFrequencyX\"]"
+        js_getBaseFrequencyX ::
+        SVGFETurbulenceElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyX Mozilla SVGFETurbulenceElement.baseFrequencyX documentation> 
+getBaseFrequencyX ::
+                  (MonadIO m) =>
+                    SVGFETurbulenceElement -> m (Maybe SVGAnimatedNumber)
+getBaseFrequencyX self
+  = liftIO (nullableToMaybe <$> (js_getBaseFrequencyX (self)))
+ 
+foreign import javascript unsafe "$1[\"baseFrequencyY\"]"
+        js_getBaseFrequencyY ::
+        SVGFETurbulenceElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyY Mozilla SVGFETurbulenceElement.baseFrequencyY documentation> 
+getBaseFrequencyY ::
+                  (MonadIO m) =>
+                    SVGFETurbulenceElement -> m (Maybe SVGAnimatedNumber)
+getBaseFrequencyY self
+  = liftIO (nullableToMaybe <$> (js_getBaseFrequencyY (self)))
+ 
+foreign import javascript unsafe "$1[\"numOctaves\"]"
+        js_getNumOctaves ::
+        SVGFETurbulenceElement -> IO (Nullable SVGAnimatedInteger)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.numOctaves Mozilla SVGFETurbulenceElement.numOctaves documentation> 
+getNumOctaves ::
+              (MonadIO m) =>
+                SVGFETurbulenceElement -> m (Maybe SVGAnimatedInteger)
+getNumOctaves self
+  = liftIO (nullableToMaybe <$> (js_getNumOctaves (self)))
+ 
+foreign import javascript unsafe "$1[\"seed\"]" js_getSeed ::
+        SVGFETurbulenceElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.seed Mozilla SVGFETurbulenceElement.seed documentation> 
+getSeed ::
+        (MonadIO m) =>
+          SVGFETurbulenceElement -> m (Maybe SVGAnimatedNumber)
+getSeed self = liftIO (nullableToMaybe <$> (js_getSeed (self)))
+ 
+foreign import javascript unsafe "$1[\"stitchTiles\"]"
+        js_getStitchTiles ::
+        SVGFETurbulenceElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.stitchTiles Mozilla SVGFETurbulenceElement.stitchTiles documentation> 
+getStitchTiles ::
+               (MonadIO m) =>
+                 SVGFETurbulenceElement -> m (Maybe SVGAnimatedEnumeration)
+getStitchTiles self
+  = liftIO (nullableToMaybe <$> (js_getStitchTiles (self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        SVGFETurbulenceElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.type Mozilla SVGFETurbulenceElement.type documentation> 
+getType ::
+        (MonadIO m) =>
+          SVGFETurbulenceElement -> m (Maybe SVGAnimatedEnumeration)
+getType self = liftIO (nullableToMaybe <$> (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, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGFilterElement, gTypeSVGFilterElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setFilterRes\"]($2, $3)"
+        js_setFilterRes :: SVGFilterElement -> Word -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.setFilterRes Mozilla SVGFilterElement.setFilterRes documentation> 
+setFilterRes ::
+             (MonadIO m) => SVGFilterElement -> Word -> Word -> m ()
+setFilterRes self filterResX filterResY
+  = liftIO (js_setFilterRes (self) filterResX filterResY)
+ 
+foreign import javascript unsafe "$1[\"filterUnits\"]"
+        js_getFilterUnits ::
+        SVGFilterElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterUnits Mozilla SVGFilterElement.filterUnits documentation> 
+getFilterUnits ::
+               (MonadIO m) => SVGFilterElement -> m (Maybe SVGAnimatedEnumeration)
+getFilterUnits self
+  = liftIO (nullableToMaybe <$> (js_getFilterUnits (self)))
+ 
+foreign import javascript unsafe "$1[\"primitiveUnits\"]"
+        js_getPrimitiveUnits ::
+        SVGFilterElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.primitiveUnits Mozilla SVGFilterElement.primitiveUnits documentation> 
+getPrimitiveUnits ::
+                  (MonadIO m) => SVGFilterElement -> m (Maybe SVGAnimatedEnumeration)
+getPrimitiveUnits self
+  = liftIO (nullableToMaybe <$> (js_getPrimitiveUnits (self)))
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGFilterElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.x Mozilla SVGFilterElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGFilterElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGFilterElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.y Mozilla SVGFilterElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGFilterElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGFilterElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.width Mozilla SVGFilterElement.width documentation> 
+getWidth ::
+         (MonadIO m) => SVGFilterElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGFilterElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.height Mozilla SVGFilterElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGFilterElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (js_getHeight (self)))
+ 
+foreign import javascript unsafe "$1[\"filterResX\"]"
+        js_getFilterResX ::
+        SVGFilterElement -> IO (Nullable SVGAnimatedInteger)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResX Mozilla SVGFilterElement.filterResX documentation> 
+getFilterResX ::
+              (MonadIO m) => SVGFilterElement -> m (Maybe SVGAnimatedInteger)
+getFilterResX self
+  = liftIO (nullableToMaybe <$> (js_getFilterResX (self)))
+ 
+foreign import javascript unsafe "$1[\"filterResY\"]"
+        js_getFilterResY ::
+        SVGFilterElement -> IO (Nullable SVGAnimatedInteger)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResY Mozilla SVGFilterElement.filterResY documentation> 
+getFilterResY ::
+              (MonadIO m) => SVGFilterElement -> m (Maybe SVGAnimatedInteger)
+getFilterResY self
+  = liftIO (nullableToMaybe <$> (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,72 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, js_getResult, getResult,
+        SVGFilterPrimitiveStandardAttributes,
+        castToSVGFilterPrimitiveStandardAttributes,
+        gTypeSVGFilterPrimitiveStandardAttributes)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGFilterPrimitiveStandardAttributes ->
+          IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
+getX ::
+     (MonadIO m) =>
+       SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGFilterPrimitiveStandardAttributes ->
+          IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.y Mozilla SVGFilterPrimitiveStandardAttributes.y documentation> 
+getY ::
+     (MonadIO m) =>
+       SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGFilterPrimitiveStandardAttributes ->
+          IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.width Mozilla SVGFilterPrimitiveStandardAttributes.width documentation> 
+getWidth ::
+         (MonadIO m) =>
+           SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGFilterPrimitiveStandardAttributes ->
+          IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.height Mozilla SVGFilterPrimitiveStandardAttributes.height documentation> 
+getHeight ::
+          (MonadIO m) =>
+            SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (js_getHeight (self)))
+ 
+foreign import javascript unsafe "$1[\"result\"]" js_getResult ::
+        SVGFilterPrimitiveStandardAttributes ->
+          IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.result Mozilla SVGFilterPrimitiveStandardAttributes.result documentation> 
+getResult ::
+          (MonadIO m) =>
+            SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedString)
+getResult self = liftIO (nullableToMaybe <$> (js_getResult (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,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox
+       (js_getViewBox, getViewBox, js_getPreserveAspectRatio,
+        getPreserveAspectRatio, SVGFitToViewBox, castToSVGFitToViewBox,
+        gTypeSVGFitToViewBox)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"viewBox\"]" js_getViewBox ::
+        SVGFitToViewBox -> IO (Nullable SVGAnimatedRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
+getViewBox ::
+           (MonadIO m) => SVGFitToViewBox -> m (Maybe SVGAnimatedRect)
+getViewBox self
+  = liftIO (nullableToMaybe <$> (js_getViewBox (self)))
+ 
+foreign import javascript unsafe "$1[\"preserveAspectRatio\"]"
+        js_getPreserveAspectRatio ::
+        SVGFitToViewBox -> IO (Nullable SVGAnimatedPreserveAspectRatio)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.preserveAspectRatio Mozilla SVGFitToViewBox.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadIO m) =>
+                         SVGFitToViewBox -> m (Maybe SVGAnimatedPreserveAspectRatio)
+getPreserveAspectRatio self
+  = liftIO (nullableToMaybe <$> (js_getPreserveAspectRatio (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,56 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, SVGForeignObjectElement, castToSVGForeignObjectElement,
+        gTypeSVGForeignObjectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGForeignObjectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
+getX ::
+     (MonadIO m) =>
+       SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGForeignObjectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.y Mozilla SVGForeignObjectElement.y documentation> 
+getY ::
+     (MonadIO m) =>
+       SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGForeignObjectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.width Mozilla SVGForeignObjectElement.width documentation> 
+getWidth ::
+         (MonadIO m) =>
+           SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGForeignObjectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.height Mozilla SVGForeignObjectElement.height documentation> 
+getHeight ::
+          (MonadIO m) =>
+            SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (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,113 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGGlyphRefElement,
+        gTypeSVGGlyphRefElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,67 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGGradientElement,
+        gTypeSVGGradientElement, IsSVGGradientElement,
+        toSVGGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"gradientUnits\"]"
+        js_getGradientUnits ::
+        SVGGradientElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientUnits Mozilla SVGGradientElement.gradientUnits documentation> 
+getGradientUnits ::
+                 (MonadIO m, IsSVGGradientElement self) =>
+                   self -> m (Maybe SVGAnimatedEnumeration)
+getGradientUnits self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getGradientUnits (toSVGGradientElement self)))
+ 
+foreign import javascript unsafe "$1[\"gradientTransform\"]"
+        js_getGradientTransform ::
+        SVGGradientElement -> IO (Nullable SVGAnimatedTransformList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientTransform Mozilla SVGGradientElement.gradientTransform documentation> 
+getGradientTransform ::
+                     (MonadIO m, IsSVGGradientElement self) =>
+                       self -> m (Maybe SVGAnimatedTransformList)
+getGradientTransform self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getGradientTransform (toSVGGradientElement self)))
+ 
+foreign import javascript unsafe "$1[\"spreadMethod\"]"
+        js_getSpreadMethod ::
+        SVGGradientElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.spreadMethod Mozilla SVGGradientElement.spreadMethod documentation> 
+getSpreadMethod ::
+                (MonadIO m, IsSVGGradientElement self) =>
+                  self -> m (Maybe SVGAnimatedEnumeration)
+getSpreadMethod self
+  = liftIO
+      (nullableToMaybe <$>
+         (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,109 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement
+       (js_getBBox, getBBox, js_getCTM, getCTM, js_getScreenCTM,
+        getScreenCTM, js_getTransformToElement, getTransformToElement,
+        js_getTransform, getTransform, js_getNearestViewportElement,
+        getNearestViewportElement, js_getFarthestViewportElement,
+        getFarthestViewportElement, SVGGraphicsElement,
+        castToSVGGraphicsElement, gTypeSVGGraphicsElement,
+        IsSVGGraphicsElement, toSVGGraphicsElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getBBox\"]()" js_getBBox ::
+        SVGGraphicsElement -> IO (Nullable SVGRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
+getBBox ::
+        (MonadIO m, IsSVGGraphicsElement self) => self -> m (Maybe SVGRect)
+getBBox self
+  = liftIO
+      (nullableToMaybe <$> (js_getBBox (toSVGGraphicsElement self)))
+ 
+foreign import javascript unsafe "$1[\"getCTM\"]()" js_getCTM ::
+        SVGGraphicsElement -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
+getCTM ::
+       (MonadIO m, IsSVGGraphicsElement self) =>
+         self -> m (Maybe SVGMatrix)
+getCTM self
+  = liftIO
+      (nullableToMaybe <$> (js_getCTM (toSVGGraphicsElement self)))
+ 
+foreign import javascript unsafe "$1[\"getScreenCTM\"]()"
+        js_getScreenCTM :: SVGGraphicsElement -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
+getScreenCTM ::
+             (MonadIO m, IsSVGGraphicsElement self) =>
+               self -> m (Maybe SVGMatrix)
+getScreenCTM self
+  = liftIO
+      (nullableToMaybe <$> (js_getScreenCTM (toSVGGraphicsElement self)))
+ 
+foreign import javascript unsafe
+        "$1[\"getTransformToElement\"]($2)" js_getTransformToElement ::
+        SVGGraphicsElement ->
+          Nullable SVGElement -> IO (Nullable 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 (Maybe SVGMatrix)
+getTransformToElement self element
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getTransformToElement (toSVGGraphicsElement self)
+            (maybeToNullable (fmap toSVGElement element))))
+ 
+foreign import javascript unsafe "$1[\"transform\"]"
+        js_getTransform ::
+        SVGGraphicsElement -> IO (Nullable SVGAnimatedTransformList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.transform Mozilla SVGGraphicsElement.transform documentation> 
+getTransform ::
+             (MonadIO m, IsSVGGraphicsElement self) =>
+               self -> m (Maybe SVGAnimatedTransformList)
+getTransform self
+  = liftIO
+      (nullableToMaybe <$> (js_getTransform (toSVGGraphicsElement self)))
+ 
+foreign import javascript unsafe "$1[\"nearestViewportElement\"]"
+        js_getNearestViewportElement ::
+        SVGGraphicsElement -> IO (Nullable SVGElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.nearestViewportElement Mozilla SVGGraphicsElement.nearestViewportElement documentation> 
+getNearestViewportElement ::
+                          (MonadIO m, IsSVGGraphicsElement self) =>
+                            self -> m (Maybe SVGElement)
+getNearestViewportElement self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getNearestViewportElement (toSVGGraphicsElement self)))
+ 
+foreign import javascript unsafe "$1[\"farthestViewportElement\"]"
+        js_getFarthestViewportElement ::
+        SVGGraphicsElement -> IO (Nullable SVGElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.farthestViewportElement Mozilla SVGGraphicsElement.farthestViewportElement documentation> 
+getFarthestViewportElement ::
+                           (MonadIO m, IsSVGGraphicsElement self) =>
+                             self -> m (Maybe SVGElement)
+getFarthestViewportElement self
+  = liftIO
+      (nullableToMaybe <$>
+         (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,63 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGImageElement
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, js_getPreserveAspectRatio, getPreserveAspectRatio,
+        SVGImageElement, castToSVGImageElement, gTypeSVGImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGImageElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGImageElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGImageElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.y Mozilla SVGImageElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGImageElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGImageElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.width Mozilla SVGImageElement.width documentation> 
+getWidth ::
+         (MonadIO m) => SVGImageElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGImageElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.height Mozilla SVGImageElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGImageElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (js_getHeight (self)))
+ 
+foreign import javascript unsafe "$1[\"preserveAspectRatio\"]"
+        js_getPreserveAspectRatio ::
+        SVGImageElement -> IO (Nullable SVGAnimatedPreserveAspectRatio)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.preserveAspectRatio Mozilla SVGImageElement.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadIO m) =>
+                         SVGImageElement -> m (Maybe SVGAnimatedPreserveAspectRatio)
+getPreserveAspectRatio self
+  = liftIO (nullableToMaybe <$> (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,118 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGLength, gTypeSVGLength)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$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 unsafe
+        "$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[\"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 unsafe "$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 unsafe "$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 unsafe
+        "$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[\"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 unsafe "$1[\"valueAsString\"] = $2;"
+        js_setValueAsString :: SVGLength -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
+setValueAsString ::
+                 (MonadIO m, ToJSString val) => SVGLength -> Maybe val -> m ()
+setValueAsString self val
+  = liftIO (js_setValueAsString (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"valueAsString\"]"
+        js_getValueAsString :: SVGLength -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
+getValueAsString ::
+                 (MonadIO m, FromJSString result) => SVGLength -> m (Maybe result)
+getValueAsString self
+  = liftIO (fromMaybeJSString <$> (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,106 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGLengthList
+       (js_clear, clear, js_initialize, initialize, js_getItem, getItem,
+        js_insertItemBefore, insertItemBefore, js_replaceItem, replaceItem,
+        js_removeItem, removeItem, js_appendItem, appendItem,
+        js_getNumberOfItems, getNumberOfItems, SVGLengthList,
+        castToSVGLengthList, gTypeSVGLengthList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        SVGLengthList -> Nullable SVGLength -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
+initialize ::
+           (MonadIO m) =>
+             SVGLengthList -> Maybe SVGLength -> m (Maybe SVGLength)
+initialize self item
+  = liftIO
+      (nullableToMaybe <$> (js_initialize (self) (maybeToNullable item)))
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: SVGLengthList -> Word -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
+getItem ::
+        (MonadIO m) => SVGLengthList -> Word -> m (Maybe SVGLength)
+getItem self index
+  = liftIO (nullableToMaybe <$> (js_getItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        SVGLengthList ->
+          Nullable SVGLength -> Word -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m) =>
+                   SVGLengthList -> Maybe SVGLength -> Word -> m (Maybe SVGLength)
+insertItemBefore self item index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_insertItemBefore (self) (maybeToNullable item) index))
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        SVGLengthList ->
+          Nullable SVGLength -> Word -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m) =>
+              SVGLengthList -> Maybe SVGLength -> Word -> m (Maybe SVGLength)
+replaceItem self item index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_replaceItem (self) (maybeToNullable item) index))
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem :: SVGLengthList -> Word -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
+removeItem ::
+           (MonadIO m) => SVGLengthList -> Word -> m (Maybe SVGLength)
+removeItem self index
+  = liftIO (nullableToMaybe <$> (js_removeItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        SVGLengthList -> Nullable SVGLength -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
+appendItem ::
+           (MonadIO m) =>
+             SVGLengthList -> Maybe SVGLength -> m (Maybe SVGLength)
+appendItem self item
+  = liftIO
+      (nullableToMaybe <$> (js_appendItem (self) (maybeToNullable item)))
+ 
+foreign import javascript unsafe "$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,51 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGLineElement
+       (js_getX1, getX1, js_getY1, getY1, js_getX2, getX2, js_getY2,
+        getY2, SVGLineElement, castToSVGLineElement, gTypeSVGLineElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
+        SVGLineElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
+getX1 ::
+      (MonadIO m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
+getX1 self = liftIO (nullableToMaybe <$> (js_getX1 (self)))
+ 
+foreign import javascript unsafe "$1[\"y1\"]" js_getY1 ::
+        SVGLineElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y1 Mozilla SVGLineElement.y1 documentation> 
+getY1 ::
+      (MonadIO m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
+getY1 self = liftIO (nullableToMaybe <$> (js_getY1 (self)))
+ 
+foreign import javascript unsafe "$1[\"x2\"]" js_getX2 ::
+        SVGLineElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x2 Mozilla SVGLineElement.x2 documentation> 
+getX2 ::
+      (MonadIO m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
+getX2 self = liftIO (nullableToMaybe <$> (js_getX2 (self)))
+ 
+foreign import javascript unsafe "$1[\"y2\"]" js_getY2 ::
+        SVGLineElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y2 Mozilla SVGLineElement.y2 documentation> 
+getY2 ::
+      (MonadIO m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
+getY2 self = liftIO (nullableToMaybe <$> (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,56 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement
+       (js_getX1, getX1, js_getY1, getY1, js_getX2, getX2, js_getY2,
+        getY2, SVGLinearGradientElement, castToSVGLinearGradientElement,
+        gTypeSVGLinearGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
+        SVGLinearGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
+getX1 ::
+      (MonadIO m) =>
+        SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
+getX1 self = liftIO (nullableToMaybe <$> (js_getX1 (self)))
+ 
+foreign import javascript unsafe "$1[\"y1\"]" js_getY1 ::
+        SVGLinearGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y1 Mozilla SVGLinearGradientElement.y1 documentation> 
+getY1 ::
+      (MonadIO m) =>
+        SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
+getY1 self = liftIO (nullableToMaybe <$> (js_getY1 (self)))
+ 
+foreign import javascript unsafe "$1[\"x2\"]" js_getX2 ::
+        SVGLinearGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x2 Mozilla SVGLinearGradientElement.x2 documentation> 
+getX2 ::
+      (MonadIO m) =>
+        SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
+getX2 self = liftIO (nullableToMaybe <$> (js_getX2 (self)))
+ 
+foreign import javascript unsafe "$1[\"y2\"]" js_getY2 ::
+        SVGLinearGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y2 Mozilla SVGLinearGradientElement.y2 documentation> 
+getY2 ::
+      (MonadIO m) =>
+        SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
+getY2 self = liftIO (nullableToMaybe <$> (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,116 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGMarkerElement, gTypeSVGMarkerElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"setOrientToAngle\"]($2)"
+        js_setOrientToAngle ::
+        SVGMarkerElement -> Nullable SVGAngle -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAngle Mozilla SVGMarkerElement.setOrientToAngle documentation> 
+setOrientToAngle ::
+                 (MonadIO m) => SVGMarkerElement -> Maybe SVGAngle -> m ()
+setOrientToAngle self angle
+  = liftIO (js_setOrientToAngle (self) (maybeToNullable 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[\"refX\"]" js_getRefX ::
+        SVGMarkerElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refX Mozilla SVGMarkerElement.refX documentation> 
+getRefX ::
+        (MonadIO m) => SVGMarkerElement -> m (Maybe SVGAnimatedLength)
+getRefX self = liftIO (nullableToMaybe <$> (js_getRefX (self)))
+ 
+foreign import javascript unsafe "$1[\"refY\"]" js_getRefY ::
+        SVGMarkerElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refY Mozilla SVGMarkerElement.refY documentation> 
+getRefY ::
+        (MonadIO m) => SVGMarkerElement -> m (Maybe SVGAnimatedLength)
+getRefY self = liftIO (nullableToMaybe <$> (js_getRefY (self)))
+ 
+foreign import javascript unsafe "$1[\"markerUnits\"]"
+        js_getMarkerUnits ::
+        SVGMarkerElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerUnits Mozilla SVGMarkerElement.markerUnits documentation> 
+getMarkerUnits ::
+               (MonadIO m) => SVGMarkerElement -> m (Maybe SVGAnimatedEnumeration)
+getMarkerUnits self
+  = liftIO (nullableToMaybe <$> (js_getMarkerUnits (self)))
+ 
+foreign import javascript unsafe "$1[\"markerWidth\"]"
+        js_getMarkerWidth ::
+        SVGMarkerElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerWidth Mozilla SVGMarkerElement.markerWidth documentation> 
+getMarkerWidth ::
+               (MonadIO m) => SVGMarkerElement -> m (Maybe SVGAnimatedLength)
+getMarkerWidth self
+  = liftIO (nullableToMaybe <$> (js_getMarkerWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"markerHeight\"]"
+        js_getMarkerHeight ::
+        SVGMarkerElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerHeight Mozilla SVGMarkerElement.markerHeight documentation> 
+getMarkerHeight ::
+                (MonadIO m) => SVGMarkerElement -> m (Maybe SVGAnimatedLength)
+getMarkerHeight self
+  = liftIO (nullableToMaybe <$> (js_getMarkerHeight (self)))
+ 
+foreign import javascript unsafe "$1[\"orientType\"]"
+        js_getOrientType ::
+        SVGMarkerElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientType Mozilla SVGMarkerElement.orientType documentation> 
+getOrientType ::
+              (MonadIO m) => SVGMarkerElement -> m (Maybe SVGAnimatedEnumeration)
+getOrientType self
+  = liftIO (nullableToMaybe <$> (js_getOrientType (self)))
+ 
+foreign import javascript unsafe "$1[\"orientAngle\"]"
+        js_getOrientAngle ::
+        SVGMarkerElement -> IO (Nullable SVGAnimatedAngle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientAngle Mozilla SVGMarkerElement.orientAngle documentation> 
+getOrientAngle ::
+               (MonadIO m) => SVGMarkerElement -> m (Maybe SVGAnimatedAngle)
+getOrientAngle self
+  = liftIO (nullableToMaybe <$> (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,73 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGMaskElement, gTypeSVGMaskElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"maskUnits\"]"
+        js_getMaskUnits ::
+        SVGMaskElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
+getMaskUnits ::
+             (MonadIO m) => SVGMaskElement -> m (Maybe SVGAnimatedEnumeration)
+getMaskUnits self
+  = liftIO (nullableToMaybe <$> (js_getMaskUnits (self)))
+ 
+foreign import javascript unsafe "$1[\"maskContentUnits\"]"
+        js_getMaskContentUnits ::
+        SVGMaskElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskContentUnits Mozilla SVGMaskElement.maskContentUnits documentation> 
+getMaskContentUnits ::
+                    (MonadIO m) => SVGMaskElement -> m (Maybe SVGAnimatedEnumeration)
+getMaskContentUnits self
+  = liftIO (nullableToMaybe <$> (js_getMaskContentUnits (self)))
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGMaskElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.x Mozilla SVGMaskElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGMaskElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.y Mozilla SVGMaskElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGMaskElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.width Mozilla SVGMaskElement.width documentation> 
+getWidth ::
+         (MonadIO m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGMaskElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.height Mozilla SVGMaskElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (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,205 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGMatrix
+       (js_multiply, multiply, js_inverse, inverse, js_translate,
+        translate, js_scale, scale, js_scaleNonUniform, scaleNonUniform,
+        js_rotate, rotate, js_rotateFromVector, rotateFromVector, js_flipX,
+        flipX, js_flipY, flipY, js_skewX, skewX, js_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,
+        castToSVGMatrix, gTypeSVGMatrix)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"multiply\"]($2)" js_multiply
+        :: SVGMatrix -> Nullable SVGMatrix -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
+multiply ::
+         (MonadIO m) => SVGMatrix -> Maybe SVGMatrix -> m (Maybe SVGMatrix)
+multiply self secondMatrix
+  = liftIO
+      (nullableToMaybe <$>
+         (js_multiply (self) (maybeToNullable secondMatrix)))
+ 
+foreign import javascript unsafe "$1[\"inverse\"]()" js_inverse ::
+        SVGMatrix -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
+inverse :: (MonadIO m) => SVGMatrix -> m (Maybe SVGMatrix)
+inverse self = liftIO (nullableToMaybe <$> (js_inverse (self)))
+ 
+foreign import javascript unsafe "$1[\"translate\"]($2, $3)"
+        js_translate ::
+        SVGMatrix -> Float -> Float -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
+translate ::
+          (MonadIO m) => SVGMatrix -> Float -> Float -> m (Maybe SVGMatrix)
+translate self x y
+  = liftIO (nullableToMaybe <$> (js_translate (self) x y))
+ 
+foreign import javascript unsafe "$1[\"scale\"]($2)" js_scale ::
+        SVGMatrix -> Float -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
+scale :: (MonadIO m) => SVGMatrix -> Float -> m (Maybe SVGMatrix)
+scale self scaleFactor
+  = liftIO (nullableToMaybe <$> (js_scale (self) scaleFactor))
+ 
+foreign import javascript unsafe "$1[\"scaleNonUniform\"]($2, $3)"
+        js_scaleNonUniform ::
+        SVGMatrix -> Float -> Float -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
+scaleNonUniform ::
+                (MonadIO m) => SVGMatrix -> Float -> Float -> m (Maybe SVGMatrix)
+scaleNonUniform self scaleFactorX scaleFactorY
+  = liftIO
+      (nullableToMaybe <$>
+         (js_scaleNonUniform (self) scaleFactorX scaleFactorY))
+ 
+foreign import javascript unsafe "$1[\"rotate\"]($2)" js_rotate ::
+        SVGMatrix -> Float -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
+rotate :: (MonadIO m) => SVGMatrix -> Float -> m (Maybe SVGMatrix)
+rotate self angle
+  = liftIO (nullableToMaybe <$> (js_rotate (self) angle))
+ 
+foreign import javascript unsafe "$1[\"rotateFromVector\"]($2, $3)"
+        js_rotateFromVector ::
+        SVGMatrix -> Float -> Float -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
+rotateFromVector ::
+                 (MonadIO m) => SVGMatrix -> Float -> Float -> m (Maybe SVGMatrix)
+rotateFromVector self x y
+  = liftIO (nullableToMaybe <$> (js_rotateFromVector (self) x y))
+ 
+foreign import javascript unsafe "$1[\"flipX\"]()" js_flipX ::
+        SVGMatrix -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
+flipX :: (MonadIO m) => SVGMatrix -> m (Maybe SVGMatrix)
+flipX self = liftIO (nullableToMaybe <$> (js_flipX (self)))
+ 
+foreign import javascript unsafe "$1[\"flipY\"]()" js_flipY ::
+        SVGMatrix -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
+flipY :: (MonadIO m) => SVGMatrix -> m (Maybe SVGMatrix)
+flipY self = liftIO (nullableToMaybe <$> (js_flipY (self)))
+ 
+foreign import javascript unsafe "$1[\"skewX\"]($2)" js_skewX ::
+        SVGMatrix -> Float -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
+skewX :: (MonadIO m) => SVGMatrix -> Float -> m (Maybe SVGMatrix)
+skewX self angle
+  = liftIO (nullableToMaybe <$> (js_skewX (self) angle))
+ 
+foreign import javascript unsafe "$1[\"skewY\"]($2)" js_skewY ::
+        SVGMatrix -> Float -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
+skewY :: (MonadIO m) => SVGMatrix -> Float -> m (Maybe SVGMatrix)
+skewY self angle
+  = liftIO (nullableToMaybe <$> (js_skewY (self) angle))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGNumber
+       (js_setValue, setValue, js_getValue, getValue, SVGNumber,
+        castToSVGNumber, gTypeSVGNumber)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,106 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGNumberList
+       (js_clear, clear, js_initialize, initialize, js_getItem, getItem,
+        js_insertItemBefore, insertItemBefore, js_replaceItem, replaceItem,
+        js_removeItem, removeItem, js_appendItem, appendItem,
+        js_getNumberOfItems, getNumberOfItems, SVGNumberList,
+        castToSVGNumberList, gTypeSVGNumberList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        SVGNumberList -> Nullable SVGNumber -> IO (Nullable SVGNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
+initialize ::
+           (MonadIO m) =>
+             SVGNumberList -> Maybe SVGNumber -> m (Maybe SVGNumber)
+initialize self item
+  = liftIO
+      (nullableToMaybe <$> (js_initialize (self) (maybeToNullable item)))
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: SVGNumberList -> Word -> IO (Nullable SVGNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
+getItem ::
+        (MonadIO m) => SVGNumberList -> Word -> m (Maybe SVGNumber)
+getItem self index
+  = liftIO (nullableToMaybe <$> (js_getItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        SVGNumberList ->
+          Nullable SVGNumber -> Word -> IO (Nullable SVGNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m) =>
+                   SVGNumberList -> Maybe SVGNumber -> Word -> m (Maybe SVGNumber)
+insertItemBefore self item index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_insertItemBefore (self) (maybeToNullable item) index))
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        SVGNumberList ->
+          Nullable SVGNumber -> Word -> IO (Nullable SVGNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m) =>
+              SVGNumberList -> Maybe SVGNumber -> Word -> m (Maybe SVGNumber)
+replaceItem self item index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_replaceItem (self) (maybeToNullable item) index))
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem :: SVGNumberList -> Word -> IO (Nullable SVGNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
+removeItem ::
+           (MonadIO m) => SVGNumberList -> Word -> m (Maybe SVGNumber)
+removeItem self index
+  = liftIO (nullableToMaybe <$> (js_removeItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        SVGNumberList -> Nullable SVGNumber -> IO (Nullable SVGNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
+appendItem ::
+           (MonadIO m) =>
+             SVGNumberList -> Maybe SVGNumber -> m (Maybe SVGNumber)
+appendItem self item
+  = liftIO
+      (nullableToMaybe <$> (js_appendItem (self) (maybeToNullable item)))
+ 
+foreign import javascript unsafe "$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/SVGPaint.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPaint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPaint.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPaint
+       (js_setUri, setUri, js_setPaint, setPaint,
+        pattern SVG_PAINTTYPE_UNKNOWN, pattern SVG_PAINTTYPE_RGBCOLOR,
+        pattern SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR,
+        pattern SVG_PAINTTYPE_NONE, pattern SVG_PAINTTYPE_CURRENTCOLOR,
+        pattern SVG_PAINTTYPE_URI_NONE,
+        pattern SVG_PAINTTYPE_URI_CURRENTCOLOR,
+        pattern SVG_PAINTTYPE_URI_RGBCOLOR,
+        pattern SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR,
+        pattern SVG_PAINTTYPE_URI, js_getPaintType, getPaintType,
+        js_getUri, getUri, SVGPaint, castToSVGPaint, gTypeSVGPaint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setUri\"]($2)" js_setUri ::
+        SVGPaint -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.setUri Mozilla SVGPaint.setUri documentation> 
+setUri :: (MonadIO m, ToJSString uri) => SVGPaint -> uri -> m ()
+setUri self uri = liftIO (js_setUri (self) (toJSString uri))
+ 
+foreign import javascript unsafe "$1[\"setPaint\"]($2, $3, $4, $5)"
+        js_setPaint ::
+        SVGPaint -> Word -> JSString -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.setPaint Mozilla SVGPaint.setPaint documentation> 
+setPaint ::
+         (MonadIO m, ToJSString uri, ToJSString rgbColor,
+          ToJSString iccColor) =>
+           SVGPaint -> Word -> uri -> rgbColor -> iccColor -> m ()
+setPaint self paintType uri rgbColor iccColor
+  = liftIO
+      (js_setPaint (self) paintType (toJSString uri)
+         (toJSString rgbColor)
+         (toJSString iccColor))
+pattern SVG_PAINTTYPE_UNKNOWN = 0
+pattern SVG_PAINTTYPE_RGBCOLOR = 1
+pattern SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2
+pattern SVG_PAINTTYPE_NONE = 101
+pattern SVG_PAINTTYPE_CURRENTCOLOR = 102
+pattern SVG_PAINTTYPE_URI_NONE = 103
+pattern SVG_PAINTTYPE_URI_CURRENTCOLOR = 104
+pattern SVG_PAINTTYPE_URI_RGBCOLOR = 105
+pattern SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106
+pattern SVG_PAINTTYPE_URI = 107
+ 
+foreign import javascript unsafe "$1[\"paintType\"]"
+        js_getPaintType :: SVGPaint -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.paintType Mozilla SVGPaint.paintType documentation> 
+getPaintType :: (MonadIO m) => SVGPaint -> m Word
+getPaintType self = liftIO (js_getPaintType (self))
+ 
+foreign import javascript unsafe "$1[\"uri\"]" js_getUri ::
+        SVGPaint -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.uri Mozilla SVGPaint.uri documentation> 
+getUri :: (MonadIO m, FromJSString result) => SVGPaint -> m result
+getUri self = liftIO (fromJSString <$> (js_getUri (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,474 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathElement
+       (js_getTotalLength, getTotalLength, js_getPointAtLength,
+        getPointAtLength, js_getPathSegAtLength, getPathSegAtLength,
+        js_createSVGPathSegClosePath, createSVGPathSegClosePath,
+        js_createSVGPathSegMovetoAbs, createSVGPathSegMovetoAbs,
+        js_createSVGPathSegMovetoRel, createSVGPathSegMovetoRel,
+        js_createSVGPathSegLinetoAbs, createSVGPathSegLinetoAbs,
+        js_createSVGPathSegLinetoRel, createSVGPathSegLinetoRel,
+        js_createSVGPathSegCurvetoCubicAbs,
+        createSVGPathSegCurvetoCubicAbs,
+        js_createSVGPathSegCurvetoCubicRel,
+        createSVGPathSegCurvetoCubicRel,
+        js_createSVGPathSegCurvetoQuadraticAbs,
+        createSVGPathSegCurvetoQuadraticAbs,
+        js_createSVGPathSegCurvetoQuadraticRel,
+        createSVGPathSegCurvetoQuadraticRel, js_createSVGPathSegArcAbs,
+        createSVGPathSegArcAbs, js_createSVGPathSegArcRel,
+        createSVGPathSegArcRel, js_createSVGPathSegLinetoHorizontalAbs,
+        createSVGPathSegLinetoHorizontalAbs,
+        js_createSVGPathSegLinetoHorizontalRel,
+        createSVGPathSegLinetoHorizontalRel,
+        js_createSVGPathSegLinetoVerticalAbs,
+        createSVGPathSegLinetoVerticalAbs,
+        js_createSVGPathSegLinetoVerticalRel,
+        createSVGPathSegLinetoVerticalRel,
+        js_createSVGPathSegCurvetoCubicSmoothAbs,
+        createSVGPathSegCurvetoCubicSmoothAbs,
+        js_createSVGPathSegCurvetoCubicSmoothRel,
+        createSVGPathSegCurvetoCubicSmoothRel,
+        js_createSVGPathSegCurvetoQuadraticSmoothAbs,
+        createSVGPathSegCurvetoQuadraticSmoothAbs,
+        js_createSVGPathSegCurvetoQuadraticSmoothRel,
+        createSVGPathSegCurvetoQuadraticSmoothRel, js_getPathLength,
+        getPathLength, js_getPathSegList, getPathSegList,
+        js_getNormalizedPathSegList, getNormalizedPathSegList,
+        js_getAnimatedPathSegList, getAnimatedPathSegList,
+        js_getAnimatedNormalizedPathSegList,
+        getAnimatedNormalizedPathSegList, SVGPathElement,
+        castToSVGPathElement, gTypeSVGPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$1[\"getPointAtLength\"]($2)"
+        js_getPointAtLength ::
+        SVGPathElement -> Float -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
+getPointAtLength ::
+                 (MonadIO m) => SVGPathElement -> Float -> m (Maybe SVGPoint)
+getPointAtLength self distance
+  = liftIO
+      (nullableToMaybe <$> (js_getPointAtLength (self) distance))
+ 
+foreign import javascript unsafe "$1[\"getPathSegAtLength\"]($2)"
+        js_getPathSegAtLength :: SVGPathElement -> Float -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPathSegAtLength Mozilla SVGPathElement.getPathSegAtLength documentation> 
+getPathSegAtLength ::
+                   (MonadIO m) => SVGPathElement -> Float -> m Word
+getPathSegAtLength self distance
+  = liftIO (js_getPathSegAtLength (self) distance)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegClosePath\"]()" js_createSVGPathSegClosePath
+        :: SVGPathElement -> IO (Nullable SVGPathSegClosePath)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
+createSVGPathSegClosePath ::
+                          (MonadIO m) => SVGPathElement -> m (Maybe SVGPathSegClosePath)
+createSVGPathSegClosePath self
+  = liftIO
+      (nullableToMaybe <$> (js_createSVGPathSegClosePath (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegMovetoAbs\"]($2,\n$3)"
+        js_createSVGPathSegMovetoAbs ::
+        SVGPathElement ->
+          Float -> Float -> IO (Nullable SVGPathSegMovetoAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
+createSVGPathSegMovetoAbs ::
+                          (MonadIO m) =>
+                            SVGPathElement -> Float -> Float -> m (Maybe SVGPathSegMovetoAbs)
+createSVGPathSegMovetoAbs self x y
+  = liftIO
+      (nullableToMaybe <$> (js_createSVGPathSegMovetoAbs (self) x y))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegMovetoRel\"]($2,\n$3)"
+        js_createSVGPathSegMovetoRel ::
+        SVGPathElement ->
+          Float -> Float -> IO (Nullable SVGPathSegMovetoRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
+createSVGPathSegMovetoRel ::
+                          (MonadIO m) =>
+                            SVGPathElement -> Float -> Float -> m (Maybe SVGPathSegMovetoRel)
+createSVGPathSegMovetoRel self x y
+  = liftIO
+      (nullableToMaybe <$> (js_createSVGPathSegMovetoRel (self) x y))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoAbs\"]($2,\n$3)"
+        js_createSVGPathSegLinetoAbs ::
+        SVGPathElement ->
+          Float -> Float -> IO (Nullable SVGPathSegLinetoAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
+createSVGPathSegLinetoAbs ::
+                          (MonadIO m) =>
+                            SVGPathElement -> Float -> Float -> m (Maybe SVGPathSegLinetoAbs)
+createSVGPathSegLinetoAbs self x y
+  = liftIO
+      (nullableToMaybe <$> (js_createSVGPathSegLinetoAbs (self) x y))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoRel\"]($2,\n$3)"
+        js_createSVGPathSegLinetoRel ::
+        SVGPathElement ->
+          Float -> Float -> IO (Nullable SVGPathSegLinetoRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
+createSVGPathSegLinetoRel ::
+                          (MonadIO m) =>
+                            SVGPathElement -> Float -> Float -> m (Maybe SVGPathSegLinetoRel)
+createSVGPathSegLinetoRel self x y
+  = liftIO
+      (nullableToMaybe <$> (js_createSVGPathSegLinetoRel (self) x y))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoCubicAbs\"]($2,\n$3, $4, $5, $6, $7)"
+        js_createSVGPathSegCurvetoCubicAbs ::
+        SVGPathElement ->
+          Float ->
+            Float ->
+              Float ->
+                Float -> Float -> Float -> IO (Nullable SVGPathSegCurvetoCubicAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
+createSVGPathSegCurvetoCubicAbs ::
+                                (MonadIO m) =>
+                                  SVGPathElement ->
+                                    Float ->
+                                      Float ->
+                                        Float ->
+                                          Float ->
+                                            Float -> Float -> m (Maybe SVGPathSegCurvetoCubicAbs)
+createSVGPathSegCurvetoCubicAbs self x y x1 y1 x2 y2
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegCurvetoCubicAbs (self) x y x1 y1 x2 y2))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoCubicRel\"]($2,\n$3, $4, $5, $6, $7)"
+        js_createSVGPathSegCurvetoCubicRel ::
+        SVGPathElement ->
+          Float ->
+            Float ->
+              Float ->
+                Float -> Float -> Float -> IO (Nullable SVGPathSegCurvetoCubicRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
+createSVGPathSegCurvetoCubicRel ::
+                                (MonadIO m) =>
+                                  SVGPathElement ->
+                                    Float ->
+                                      Float ->
+                                        Float ->
+                                          Float ->
+                                            Float -> Float -> m (Maybe SVGPathSegCurvetoCubicRel)
+createSVGPathSegCurvetoCubicRel self x y x1 y1 x2 y2
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegCurvetoCubicRel (self) x y x1 y1 x2 y2))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoQuadraticAbs\"]($2,\n$3, $4, $5)"
+        js_createSVGPathSegCurvetoQuadraticAbs ::
+        SVGPathElement ->
+          Float ->
+            Float ->
+              Float -> Float -> IO (Nullable SVGPathSegCurvetoQuadraticAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
+createSVGPathSegCurvetoQuadraticAbs ::
+                                    (MonadIO m) =>
+                                      SVGPathElement ->
+                                        Float ->
+                                          Float ->
+                                            Float ->
+                                              Float -> m (Maybe SVGPathSegCurvetoQuadraticAbs)
+createSVGPathSegCurvetoQuadraticAbs self x y x1 y1
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegCurvetoQuadraticAbs (self) x y x1 y1))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoQuadraticRel\"]($2,\n$3, $4, $5)"
+        js_createSVGPathSegCurvetoQuadraticRel ::
+        SVGPathElement ->
+          Float ->
+            Float ->
+              Float -> Float -> IO (Nullable SVGPathSegCurvetoQuadraticRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
+createSVGPathSegCurvetoQuadraticRel ::
+                                    (MonadIO m) =>
+                                      SVGPathElement ->
+                                        Float ->
+                                          Float ->
+                                            Float ->
+                                              Float -> m (Maybe SVGPathSegCurvetoQuadraticRel)
+createSVGPathSegCurvetoQuadraticRel self x y x1 y1
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegCurvetoQuadraticRel (self) x y x1 y1))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegArcAbs\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_createSVGPathSegArcAbs ::
+        SVGPathElement ->
+          Float ->
+            Float ->
+              Float ->
+                Float -> Float -> Bool -> Bool -> IO (Nullable SVGPathSegArcAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
+createSVGPathSegArcAbs ::
+                       (MonadIO m) =>
+                         SVGPathElement ->
+                           Float ->
+                             Float ->
+                               Float ->
+                                 Float -> Float -> Bool -> Bool -> m (Maybe SVGPathSegArcAbs)
+createSVGPathSegArcAbs self x y r1 r2 angle largeArcFlag sweepFlag
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegArcAbs (self) x y r1 r2 angle largeArcFlag
+            sweepFlag))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegArcRel\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_createSVGPathSegArcRel ::
+        SVGPathElement ->
+          Float ->
+            Float ->
+              Float ->
+                Float -> Float -> Bool -> Bool -> IO (Nullable SVGPathSegArcRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
+createSVGPathSegArcRel ::
+                       (MonadIO m) =>
+                         SVGPathElement ->
+                           Float ->
+                             Float ->
+                               Float ->
+                                 Float -> Float -> Bool -> Bool -> m (Maybe SVGPathSegArcRel)
+createSVGPathSegArcRel self x y r1 r2 angle largeArcFlag sweepFlag
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegArcRel (self) x y r1 r2 angle largeArcFlag
+            sweepFlag))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoHorizontalAbs\"]($2)"
+        js_createSVGPathSegLinetoHorizontalAbs ::
+        SVGPathElement ->
+          Float -> IO (Nullable SVGPathSegLinetoHorizontalAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
+createSVGPathSegLinetoHorizontalAbs ::
+                                    (MonadIO m) =>
+                                      SVGPathElement ->
+                                        Float -> m (Maybe SVGPathSegLinetoHorizontalAbs)
+createSVGPathSegLinetoHorizontalAbs self x
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegLinetoHorizontalAbs (self) x))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoHorizontalRel\"]($2)"
+        js_createSVGPathSegLinetoHorizontalRel ::
+        SVGPathElement ->
+          Float -> IO (Nullable SVGPathSegLinetoHorizontalRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
+createSVGPathSegLinetoHorizontalRel ::
+                                    (MonadIO m) =>
+                                      SVGPathElement ->
+                                        Float -> m (Maybe SVGPathSegLinetoHorizontalRel)
+createSVGPathSegLinetoHorizontalRel self x
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegLinetoHorizontalRel (self) x))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoVerticalAbs\"]($2)"
+        js_createSVGPathSegLinetoVerticalAbs ::
+        SVGPathElement ->
+          Float -> IO (Nullable SVGPathSegLinetoVerticalAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
+createSVGPathSegLinetoVerticalAbs ::
+                                  (MonadIO m) =>
+                                    SVGPathElement -> Float -> m (Maybe SVGPathSegLinetoVerticalAbs)
+createSVGPathSegLinetoVerticalAbs self y
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegLinetoVerticalAbs (self) y))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoVerticalRel\"]($2)"
+        js_createSVGPathSegLinetoVerticalRel ::
+        SVGPathElement ->
+          Float -> IO (Nullable SVGPathSegLinetoVerticalRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
+createSVGPathSegLinetoVerticalRel ::
+                                  (MonadIO m) =>
+                                    SVGPathElement -> Float -> m (Maybe SVGPathSegLinetoVerticalRel)
+createSVGPathSegLinetoVerticalRel self y
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegLinetoVerticalRel (self) y))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoCubicSmoothAbs\"]($2,\n$3, $4, $5)"
+        js_createSVGPathSegCurvetoCubicSmoothAbs ::
+        SVGPathElement ->
+          Float ->
+            Float ->
+              Float -> Float -> IO (Nullable SVGPathSegCurvetoCubicSmoothAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
+createSVGPathSegCurvetoCubicSmoothAbs ::
+                                      (MonadIO m) =>
+                                        SVGPathElement ->
+                                          Float ->
+                                            Float ->
+                                              Float ->
+                                                Float -> m (Maybe SVGPathSegCurvetoCubicSmoothAbs)
+createSVGPathSegCurvetoCubicSmoothAbs self x y x2 y2
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegCurvetoCubicSmoothAbs (self) x y x2 y2))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoCubicSmoothRel\"]($2,\n$3, $4, $5)"
+        js_createSVGPathSegCurvetoCubicSmoothRel ::
+        SVGPathElement ->
+          Float ->
+            Float ->
+              Float -> Float -> IO (Nullable SVGPathSegCurvetoCubicSmoothRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
+createSVGPathSegCurvetoCubicSmoothRel ::
+                                      (MonadIO m) =>
+                                        SVGPathElement ->
+                                          Float ->
+                                            Float ->
+                                              Float ->
+                                                Float -> m (Maybe SVGPathSegCurvetoCubicSmoothRel)
+createSVGPathSegCurvetoCubicSmoothRel self x y x2 y2
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegCurvetoCubicSmoothRel (self) x y x2 y2))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoQuadraticSmoothAbs\"]($2,\n$3)"
+        js_createSVGPathSegCurvetoQuadraticSmoothAbs ::
+        SVGPathElement ->
+          Float -> Float -> IO (Nullable SVGPathSegCurvetoQuadraticSmoothAbs)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
+createSVGPathSegCurvetoQuadraticSmoothAbs ::
+                                          (MonadIO m) =>
+                                            SVGPathElement ->
+                                              Float ->
+                                                Float ->
+                                                  m (Maybe SVGPathSegCurvetoQuadraticSmoothAbs)
+createSVGPathSegCurvetoQuadraticSmoothAbs self x y
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegCurvetoQuadraticSmoothAbs (self) x y))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoQuadraticSmoothRel\"]($2,\n$3)"
+        js_createSVGPathSegCurvetoQuadraticSmoothRel ::
+        SVGPathElement ->
+          Float -> Float -> IO (Nullable SVGPathSegCurvetoQuadraticSmoothRel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
+createSVGPathSegCurvetoQuadraticSmoothRel ::
+                                          (MonadIO m) =>
+                                            SVGPathElement ->
+                                              Float ->
+                                                Float ->
+                                                  m (Maybe SVGPathSegCurvetoQuadraticSmoothRel)
+createSVGPathSegCurvetoQuadraticSmoothRel self x y
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGPathSegCurvetoQuadraticSmoothRel (self) x y))
+ 
+foreign import javascript unsafe "$1[\"pathLength\"]"
+        js_getPathLength ::
+        SVGPathElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathLength Mozilla SVGPathElement.pathLength documentation> 
+getPathLength ::
+              (MonadIO m) => SVGPathElement -> m (Maybe SVGAnimatedNumber)
+getPathLength self
+  = liftIO (nullableToMaybe <$> (js_getPathLength (self)))
+ 
+foreign import javascript unsafe "$1[\"pathSegList\"]"
+        js_getPathSegList :: SVGPathElement -> IO (Nullable SVGPathSegList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathSegList Mozilla SVGPathElement.pathSegList documentation> 
+getPathSegList ::
+               (MonadIO m) => SVGPathElement -> m (Maybe SVGPathSegList)
+getPathSegList self
+  = liftIO (nullableToMaybe <$> (js_getPathSegList (self)))
+ 
+foreign import javascript unsafe "$1[\"normalizedPathSegList\"]"
+        js_getNormalizedPathSegList ::
+        SVGPathElement -> IO (Nullable SVGPathSegList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.normalizedPathSegList Mozilla SVGPathElement.normalizedPathSegList documentation> 
+getNormalizedPathSegList ::
+                         (MonadIO m) => SVGPathElement -> m (Maybe SVGPathSegList)
+getNormalizedPathSegList self
+  = liftIO (nullableToMaybe <$> (js_getNormalizedPathSegList (self)))
+ 
+foreign import javascript unsafe "$1[\"animatedPathSegList\"]"
+        js_getAnimatedPathSegList ::
+        SVGPathElement -> IO (Nullable SVGPathSegList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedPathSegList Mozilla SVGPathElement.animatedPathSegList documentation> 
+getAnimatedPathSegList ::
+                       (MonadIO m) => SVGPathElement -> m (Maybe SVGPathSegList)
+getAnimatedPathSegList self
+  = liftIO (nullableToMaybe <$> (js_getAnimatedPathSegList (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"animatedNormalizedPathSegList\"]"
+        js_getAnimatedNormalizedPathSegList ::
+        SVGPathElement -> IO (Nullable SVGPathSegList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedNormalizedPathSegList Mozilla SVGPathElement.animatedNormalizedPathSegList documentation> 
+getAnimatedNormalizedPathSegList ::
+                                 (MonadIO m) => SVGPathElement -> m (Maybe SVGPathSegList)
+getAnimatedNormalizedPathSegList self
+  = liftIO
+      (nullableToMaybe <$> (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,74 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGPathSeg, gTypeSVGPathSeg, IsSVGPathSeg,
+        toSVGPathSeg)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"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[\"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,121 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGPathSegArcAbs, gTypeSVGPathSegArcAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,121 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGPathSegArcRel, gTypeSVGPathSegArcRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,106 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGPathSegCurvetoCubicAbs,
+        gTypeSVGPathSegCurvetoCubicAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,106 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGPathSegCurvetoCubicRel,
+        gTypeSVGPathSegCurvetoCubicRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,82 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGPathSegCurvetoCubicSmoothAbs,
+        gTypeSVGPathSegCurvetoCubicSmoothAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,82 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGPathSegCurvetoCubicSmoothRel,
+        gTypeSVGPathSegCurvetoCubicSmoothRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,81 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGPathSegCurvetoQuadraticAbs,
+        gTypeSVGPathSegCurvetoQuadraticAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,81 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGPathSegCurvetoQuadraticRel,
+        gTypeSVGPathSegCurvetoQuadraticRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,53 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegCurvetoQuadraticSmoothAbs,
+        castToSVGPathSegCurvetoQuadraticSmoothAbs,
+        gTypeSVGPathSegCurvetoQuadraticSmoothAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,53 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegCurvetoQuadraticSmoothRel,
+        castToSVGPathSegCurvetoQuadraticSmoothRel,
+        gTypeSVGPathSegCurvetoQuadraticSmoothRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,48 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegLinetoAbs, castToSVGPathSegLinetoAbs,
+        gTypeSVGPathSegLinetoAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs
+       (js_setX, setX, js_getX, getX, SVGPathSegLinetoHorizontalAbs,
+        castToSVGPathSegLinetoHorizontalAbs,
+        gTypeSVGPathSegLinetoHorizontalAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel
+       (js_setX, setX, js_getX, getX, SVGPathSegLinetoHorizontalRel,
+        castToSVGPathSegLinetoHorizontalRel,
+        gTypeSVGPathSegLinetoHorizontalRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,48 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegLinetoRel, castToSVGPathSegLinetoRel,
+        gTypeSVGPathSegLinetoRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,34 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs
+       (js_setY, setY, js_getY, getY, SVGPathSegLinetoVerticalAbs,
+        castToSVGPathSegLinetoVerticalAbs,
+        gTypeSVGPathSegLinetoVerticalAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,34 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel
+       (js_setY, setY, js_getY, getY, SVGPathSegLinetoVerticalRel,
+        castToSVGPathSegLinetoVerticalRel,
+        gTypeSVGPathSegLinetoVerticalRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,114 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegList
+       (js_clear, clear, js_initialize, initialize, js_getItem, getItem,
+        js_insertItemBefore, insertItemBefore, js_replaceItem, replaceItem,
+        js_removeItem, removeItem, js_appendItem, appendItem,
+        js_getNumberOfItems, getNumberOfItems, SVGPathSegList,
+        castToSVGPathSegList, gTypeSVGPathSegList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        SVGPathSegList -> Nullable SVGPathSeg -> IO (Nullable 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 (Maybe SVGPathSeg)
+initialize self newItem
+  = liftIO
+      (nullableToMaybe <$>
+         (js_initialize (self)
+            (maybeToNullable (fmap toSVGPathSeg newItem))))
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: SVGPathSegList -> Word -> IO (Nullable SVGPathSeg)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
+getItem ::
+        (MonadIO m) => SVGPathSegList -> Word -> m (Maybe SVGPathSeg)
+getItem self index
+  = liftIO (nullableToMaybe <$> (js_getItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        SVGPathSegList ->
+          Nullable SVGPathSeg -> Word -> IO (Nullable 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 (Maybe SVGPathSeg)
+insertItemBefore self newItem index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_insertItemBefore (self)
+            (maybeToNullable (fmap toSVGPathSeg newItem))
+            index))
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        SVGPathSegList ->
+          Nullable SVGPathSeg -> Word -> IO (Nullable 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 (Maybe SVGPathSeg)
+replaceItem self newItem index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_replaceItem (self)
+            (maybeToNullable (fmap toSVGPathSeg newItem))
+            index))
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem :: SVGPathSegList -> Word -> IO (Nullable SVGPathSeg)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
+removeItem ::
+           (MonadIO m) => SVGPathSegList -> Word -> m (Maybe SVGPathSeg)
+removeItem self index
+  = liftIO (nullableToMaybe <$> (js_removeItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        SVGPathSegList -> Nullable SVGPathSeg -> IO (Nullable 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 (Maybe SVGPathSeg)
+appendItem self newItem
+  = liftIO
+      (nullableToMaybe <$>
+         (js_appendItem (self)
+            (maybeToNullable (fmap toSVGPathSeg newItem))))
+ 
+foreign import javascript unsafe "$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,48 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegMovetoAbs, castToSVGPathSegMovetoAbs,
+        gTypeSVGPathSegMovetoAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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,48 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegMovetoRel, castToSVGPathSegMovetoRel,
+        gTypeSVGPathSegMovetoRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGPatternElement, gTypeSVGPatternElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"patternUnits\"]"
+        js_getPatternUnits ::
+        SVGPatternElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
+getPatternUnits ::
+                (MonadIO m) =>
+                  SVGPatternElement -> m (Maybe SVGAnimatedEnumeration)
+getPatternUnits self
+  = liftIO (nullableToMaybe <$> (js_getPatternUnits (self)))
+ 
+foreign import javascript unsafe "$1[\"patternContentUnits\"]"
+        js_getPatternContentUnits ::
+        SVGPatternElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternContentUnits Mozilla SVGPatternElement.patternContentUnits documentation> 
+getPatternContentUnits ::
+                       (MonadIO m) =>
+                         SVGPatternElement -> m (Maybe SVGAnimatedEnumeration)
+getPatternContentUnits self
+  = liftIO (nullableToMaybe <$> (js_getPatternContentUnits (self)))
+ 
+foreign import javascript unsafe "$1[\"patternTransform\"]"
+        js_getPatternTransform ::
+        SVGPatternElement -> IO (Nullable SVGAnimatedTransformList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternTransform Mozilla SVGPatternElement.patternTransform documentation> 
+getPatternTransform ::
+                    (MonadIO m) =>
+                      SVGPatternElement -> m (Maybe SVGAnimatedTransformList)
+getPatternTransform self
+  = liftIO (nullableToMaybe <$> (js_getPatternTransform (self)))
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGPatternElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.x Mozilla SVGPatternElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGPatternElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.y Mozilla SVGPatternElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGPatternElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.width Mozilla SVGPatternElement.width documentation> 
+getWidth ::
+         (MonadIO m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGPatternElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.height Mozilla SVGPatternElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (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,60 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPoint
+       (js_matrixTransform, matrixTransform, js_setX, setX, js_getX, getX,
+        js_setY, setY, js_getY, getY, SVGPoint, castToSVGPoint,
+        gTypeSVGPoint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"matrixTransform\"]($2)"
+        js_matrixTransform ::
+        SVGPoint -> Nullable SVGMatrix -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
+matrixTransform ::
+                (MonadIO m) => SVGPoint -> Maybe SVGMatrix -> m (Maybe SVGPoint)
+matrixTransform self matrix
+  = liftIO
+      (nullableToMaybe <$>
+         (js_matrixTransform (self) (maybeToNullable matrix)))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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,102 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPointList
+       (js_clear, clear, js_initialize, initialize, js_getItem, getItem,
+        js_insertItemBefore, insertItemBefore, js_replaceItem, replaceItem,
+        js_removeItem, removeItem, js_appendItem, appendItem,
+        js_getNumberOfItems, getNumberOfItems, SVGPointList,
+        castToSVGPointList, gTypeSVGPointList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        SVGPointList -> Nullable SVGPoint -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
+initialize ::
+           (MonadIO m) => SVGPointList -> Maybe SVGPoint -> m (Maybe SVGPoint)
+initialize self item
+  = liftIO
+      (nullableToMaybe <$> (js_initialize (self) (maybeToNullable item)))
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: SVGPointList -> Word -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
+getItem ::
+        (MonadIO m) => SVGPointList -> Word -> m (Maybe SVGPoint)
+getItem self index
+  = liftIO (nullableToMaybe <$> (js_getItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        SVGPointList -> Nullable SVGPoint -> Word -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m) =>
+                   SVGPointList -> Maybe SVGPoint -> Word -> m (Maybe SVGPoint)
+insertItemBefore self item index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_insertItemBefore (self) (maybeToNullable item) index))
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        SVGPointList -> Nullable SVGPoint -> Word -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m) =>
+              SVGPointList -> Maybe SVGPoint -> Word -> m (Maybe SVGPoint)
+replaceItem self item index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_replaceItem (self) (maybeToNullable item) index))
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem :: SVGPointList -> Word -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
+removeItem ::
+           (MonadIO m) => SVGPointList -> Word -> m (Maybe SVGPoint)
+removeItem self index
+  = liftIO (nullableToMaybe <$> (js_removeItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        SVGPointList -> Nullable SVGPoint -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
+appendItem ::
+           (MonadIO m) => SVGPointList -> Maybe SVGPoint -> m (Maybe SVGPoint)
+appendItem self item
+  = liftIO
+      (nullableToMaybe <$> (js_appendItem (self) (maybeToNullable item)))
+ 
+foreign import javascript unsafe "$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,37 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPolygonElement
+       (js_getPoints, getPoints, js_getAnimatedPoints, getAnimatedPoints,
+        SVGPolygonElement, castToSVGPolygonElement, gTypeSVGPolygonElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"points\"]" js_getPoints ::
+        SVGPolygonElement -> IO (Nullable SVGPointList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
+getPoints ::
+          (MonadIO m) => SVGPolygonElement -> m (Maybe SVGPointList)
+getPoints self = liftIO (nullableToMaybe <$> (js_getPoints (self)))
+ 
+foreign import javascript unsafe "$1[\"animatedPoints\"]"
+        js_getAnimatedPoints ::
+        SVGPolygonElement -> IO (Nullable SVGPointList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.animatedPoints Mozilla SVGPolygonElement.animatedPoints documentation> 
+getAnimatedPoints ::
+                  (MonadIO m) => SVGPolygonElement -> m (Maybe SVGPointList)
+getAnimatedPoints self
+  = liftIO (nullableToMaybe <$> (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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPolylineElement
+       (js_getPoints, getPoints, js_getAnimatedPoints, getAnimatedPoints,
+        SVGPolylineElement, castToSVGPolylineElement,
+        gTypeSVGPolylineElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"points\"]" js_getPoints ::
+        SVGPolylineElement -> IO (Nullable SVGPointList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
+getPoints ::
+          (MonadIO m) => SVGPolylineElement -> m (Maybe SVGPointList)
+getPoints self = liftIO (nullableToMaybe <$> (js_getPoints (self)))
+ 
+foreign import javascript unsafe "$1[\"animatedPoints\"]"
+        js_getAnimatedPoints ::
+        SVGPolylineElement -> IO (Nullable SVGPointList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.animatedPoints Mozilla SVGPolylineElement.animatedPoints documentation> 
+getAnimatedPoints ::
+                  (MonadIO m) => SVGPolylineElement -> m (Maybe SVGPointList)
+getAnimatedPoints self
+  = liftIO (nullableToMaybe <$> (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,76 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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 unsafe "$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[\"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 unsafe "$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[\"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,74 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGRadialGradientElement, gTypeSVGRadialGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
+        SVGRadialGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
+getCx ::
+      (MonadIO m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getCx self = liftIO (nullableToMaybe <$> (js_getCx (self)))
+ 
+foreign import javascript unsafe "$1[\"cy\"]" js_getCy ::
+        SVGRadialGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cy Mozilla SVGRadialGradientElement.cy documentation> 
+getCy ::
+      (MonadIO m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getCy self = liftIO (nullableToMaybe <$> (js_getCy (self)))
+ 
+foreign import javascript unsafe "$1[\"r\"]" js_getR ::
+        SVGRadialGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.r Mozilla SVGRadialGradientElement.r documentation> 
+getR ::
+     (MonadIO m) =>
+       SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getR self = liftIO (nullableToMaybe <$> (js_getR (self)))
+ 
+foreign import javascript unsafe "$1[\"fx\"]" js_getFx ::
+        SVGRadialGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fx Mozilla SVGRadialGradientElement.fx documentation> 
+getFx ::
+      (MonadIO m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getFx self = liftIO (nullableToMaybe <$> (js_getFx (self)))
+ 
+foreign import javascript unsafe "$1[\"fy\"]" js_getFy ::
+        SVGRadialGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fy Mozilla SVGRadialGradientElement.fy documentation> 
+getFy ::
+      (MonadIO m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getFy self = liftIO (nullableToMaybe <$> (js_getFy (self)))
+ 
+foreign import javascript unsafe "$1[\"fr\"]" js_getFr ::
+        SVGRadialGradientElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fr Mozilla SVGRadialGradientElement.fr documentation> 
+getFr ::
+      (MonadIO m) =>
+        SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
+getFr self = liftIO (nullableToMaybe <$> (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,77 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGRect,
+        gTypeSVGRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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,68 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGRectElement, gTypeSVGRectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGRectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGRectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.y Mozilla SVGRectElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGRectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.width Mozilla SVGRectElement.width documentation> 
+getWidth ::
+         (MonadIO m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGRectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.height Mozilla SVGRectElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (js_getHeight (self)))
+ 
+foreign import javascript unsafe "$1[\"rx\"]" js_getRx ::
+        SVGRectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.rx Mozilla SVGRectElement.rx documentation> 
+getRx ::
+      (MonadIO m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getRx self = liftIO (nullableToMaybe <$> (js_getRx (self)))
+ 
+foreign import javascript unsafe "$1[\"ry\"]" js_getRy ::
+        SVGRectElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.ry Mozilla SVGRectElement.ry documentation> 
+getRy ::
+      (MonadIO m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
+getRy self = liftIO (nullableToMaybe <$> (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,29 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGRenderingIntent, gTypeSVGRenderingIntent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,420 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGSVGElement
+       (js_suspendRedraw, suspendRedraw, js_unsuspendRedraw,
+        unsuspendRedraw, js_unsuspendRedrawAll, unsuspendRedrawAll,
+        js_forceRedraw, forceRedraw, js_pauseAnimations, pauseAnimations,
+        js_unpauseAnimations, unpauseAnimations, js_animationsPaused,
+        animationsPaused, js_getCurrentTime, getCurrentTime,
+        js_setCurrentTime, setCurrentTime, js_getIntersectionList,
+        getIntersectionList, js_getEnclosureList, getEnclosureList,
+        js_checkIntersection, checkIntersection, js_checkEnclosure,
+        checkEnclosure, js_deselectAll, deselectAll, js_createSVGNumber,
+        createSVGNumber, js_createSVGLength, createSVGLength,
+        js_createSVGAngle, createSVGAngle, js_createSVGPoint,
+        createSVGPoint, js_createSVGMatrix, createSVGMatrix,
+        js_createSVGRect, createSVGRect, js_createSVGTransform,
+        createSVGTransform, js_createSVGTransformFromMatrix,
+        createSVGTransformFromMatrix, js_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, castToSVGSVGElement, gTypeSVGSVGElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"suspendRedraw\"]($2)"
+        js_suspendRedraw :: SVGSVGElement -> Word -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
+suspendRedraw :: (MonadIO m) => SVGSVGElement -> Word -> m Word
+suspendRedraw self maxWaitMilliseconds
+  = liftIO (js_suspendRedraw (self) maxWaitMilliseconds)
+ 
+foreign import javascript unsafe "$1[\"unsuspendRedraw\"]($2)"
+        js_unsuspendRedraw :: SVGSVGElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedraw Mozilla SVGSVGElement.unsuspendRedraw documentation> 
+unsuspendRedraw :: (MonadIO m) => SVGSVGElement -> Word -> m ()
+unsuspendRedraw self suspendHandleId
+  = liftIO (js_unsuspendRedraw (self) suspendHandleId)
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$1[\"setCurrentTime\"]($2)"
+        js_setCurrentTime :: SVGSVGElement -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.setCurrentTime Mozilla SVGSVGElement.setCurrentTime documentation> 
+setCurrentTime :: (MonadIO m) => SVGSVGElement -> Float -> m ()
+setCurrentTime self seconds
+  = liftIO (js_setCurrentTime (self) seconds)
+ 
+foreign import javascript unsafe
+        "$1[\"getIntersectionList\"]($2,\n$3)" js_getIntersectionList ::
+        SVGSVGElement ->
+          Nullable SVGRect -> Nullable SVGElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
+getIntersectionList ::
+                    (MonadIO m, IsSVGElement referenceElement) =>
+                      SVGSVGElement ->
+                        Maybe SVGRect -> Maybe referenceElement -> m (Maybe NodeList)
+getIntersectionList self rect referenceElement
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getIntersectionList (self) (maybeToNullable rect)
+            (maybeToNullable (fmap toSVGElement referenceElement))))
+ 
+foreign import javascript unsafe "$1[\"getEnclosureList\"]($2, $3)"
+        js_getEnclosureList ::
+        SVGSVGElement ->
+          Nullable SVGRect -> Nullable SVGElement -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
+getEnclosureList ::
+                 (MonadIO m, IsSVGElement referenceElement) =>
+                   SVGSVGElement ->
+                     Maybe SVGRect -> Maybe referenceElement -> m (Maybe NodeList)
+getEnclosureList self rect referenceElement
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getEnclosureList (self) (maybeToNullable rect)
+            (maybeToNullable (fmap toSVGElement referenceElement))))
+ 
+foreign import javascript unsafe
+        "($1[\"checkIntersection\"]($2,\n$3) ? 1 : 0)" js_checkIntersection
+        ::
+        SVGSVGElement -> Nullable SVGElement -> Nullable 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 -> Maybe SVGRect -> m Bool
+checkIntersection self element rect
+  = liftIO
+      (js_checkIntersection (self)
+         (maybeToNullable (fmap toSVGElement element))
+         (maybeToNullable rect))
+ 
+foreign import javascript unsafe
+        "($1[\"checkEnclosure\"]($2,\n$3) ? 1 : 0)" js_checkEnclosure ::
+        SVGSVGElement -> Nullable SVGElement -> Nullable 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 -> Maybe SVGRect -> m Bool
+checkEnclosure self element rect
+  = liftIO
+      (js_checkEnclosure (self)
+         (maybeToNullable (fmap toSVGElement element))
+         (maybeToNullable rect))
+ 
+foreign import javascript unsafe "$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[\"createSVGNumber\"]()"
+        js_createSVGNumber :: SVGSVGElement -> IO (Nullable SVGNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
+createSVGNumber ::
+                (MonadIO m) => SVGSVGElement -> m (Maybe SVGNumber)
+createSVGNumber self
+  = liftIO (nullableToMaybe <$> (js_createSVGNumber (self)))
+ 
+foreign import javascript unsafe "$1[\"createSVGLength\"]()"
+        js_createSVGLength :: SVGSVGElement -> IO (Nullable SVGLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
+createSVGLength ::
+                (MonadIO m) => SVGSVGElement -> m (Maybe SVGLength)
+createSVGLength self
+  = liftIO (nullableToMaybe <$> (js_createSVGLength (self)))
+ 
+foreign import javascript unsafe "$1[\"createSVGAngle\"]()"
+        js_createSVGAngle :: SVGSVGElement -> IO (Nullable SVGAngle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
+createSVGAngle ::
+               (MonadIO m) => SVGSVGElement -> m (Maybe SVGAngle)
+createSVGAngle self
+  = liftIO (nullableToMaybe <$> (js_createSVGAngle (self)))
+ 
+foreign import javascript unsafe "$1[\"createSVGPoint\"]()"
+        js_createSVGPoint :: SVGSVGElement -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
+createSVGPoint ::
+               (MonadIO m) => SVGSVGElement -> m (Maybe SVGPoint)
+createSVGPoint self
+  = liftIO (nullableToMaybe <$> (js_createSVGPoint (self)))
+ 
+foreign import javascript unsafe "$1[\"createSVGMatrix\"]()"
+        js_createSVGMatrix :: SVGSVGElement -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
+createSVGMatrix ::
+                (MonadIO m) => SVGSVGElement -> m (Maybe SVGMatrix)
+createSVGMatrix self
+  = liftIO (nullableToMaybe <$> (js_createSVGMatrix (self)))
+ 
+foreign import javascript unsafe "$1[\"createSVGRect\"]()"
+        js_createSVGRect :: SVGSVGElement -> IO (Nullable SVGRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
+createSVGRect :: (MonadIO m) => SVGSVGElement -> m (Maybe SVGRect)
+createSVGRect self
+  = liftIO (nullableToMaybe <$> (js_createSVGRect (self)))
+ 
+foreign import javascript unsafe "$1[\"createSVGTransform\"]()"
+        js_createSVGTransform ::
+        SVGSVGElement -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
+createSVGTransform ::
+                   (MonadIO m) => SVGSVGElement -> m (Maybe SVGTransform)
+createSVGTransform self
+  = liftIO (nullableToMaybe <$> (js_createSVGTransform (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGTransformFromMatrix\"]($2)"
+        js_createSVGTransformFromMatrix ::
+        SVGSVGElement -> Nullable SVGMatrix -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrix ::
+                             (MonadIO m) =>
+                               SVGSVGElement -> Maybe SVGMatrix -> m (Maybe SVGTransform)
+createSVGTransformFromMatrix self matrix
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGTransformFromMatrix (self) (maybeToNullable matrix)))
+ 
+foreign import javascript unsafe "$1[\"getElementById\"]($2)"
+        js_getElementById ::
+        SVGSVGElement -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
+getElementById ::
+               (MonadIO m, ToJSString elementId) =>
+                 SVGSVGElement -> elementId -> m (Maybe Element)
+getElementById self elementId
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementById (self) (toJSString elementId)))
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGSVGElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.x Mozilla SVGSVGElement.x documentation> 
+getX :: (MonadIO m) => SVGSVGElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGSVGElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.y Mozilla SVGSVGElement.y documentation> 
+getY :: (MonadIO m) => SVGSVGElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGSVGElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.width Mozilla SVGSVGElement.width documentation> 
+getWidth ::
+         (MonadIO m) => SVGSVGElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGSVGElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.height Mozilla SVGSVGElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGSVGElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (js_getHeight (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"viewport\"]" js_getViewport
+        :: SVGSVGElement -> IO (Nullable SVGRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.viewport Mozilla SVGSVGElement.viewport documentation> 
+getViewport :: (MonadIO m) => SVGSVGElement -> m (Maybe SVGRect)
+getViewport self
+  = liftIO (nullableToMaybe <$> (js_getViewport (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"currentView\"]"
+        js_getCurrentView :: SVGSVGElement -> IO (Nullable SVGViewSpec)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentView Mozilla SVGSVGElement.currentView documentation> 
+getCurrentView ::
+               (MonadIO m) => SVGSVGElement -> m (Maybe SVGViewSpec)
+getCurrentView self
+  = liftIO (nullableToMaybe <$> (js_getCurrentView (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"currentTranslate\"]"
+        js_getCurrentTranslate :: SVGSVGElement -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentTranslate Mozilla SVGSVGElement.currentTranslate documentation> 
+getCurrentTranslate ::
+                    (MonadIO m) => SVGSVGElement -> m (Maybe SVGPoint)
+getCurrentTranslate self
+  = liftIO (nullableToMaybe <$> (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,37 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGScriptElement
+       (js_setType, setType, js_getType, getType, SVGScriptElement,
+        castToSVGScriptElement, gTypeSVGScriptElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        SVGScriptElement -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) =>
+          SVGScriptElement -> Maybe val -> m ()
+setType self val = liftIO (js_setType (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        SVGScriptElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) =>
+          SVGScriptElement -> m (Maybe result)
+getType self = liftIO (fromMaybeJSString <$> (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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGStopElement
+       (js_getOffset, getOffset, SVGStopElement, castToSVGStopElement,
+        gTypeSVGStopElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"offset\"]" js_getOffset ::
+        SVGStopElement -> IO (Nullable SVGAnimatedNumber)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
+getOffset ::
+          (MonadIO m) => SVGStopElement -> m (Maybe SVGAnimatedNumber)
+getOffset self = liftIO (nullableToMaybe <$> (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,102 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGStringList
+       (js_clear, clear, js_initialize, initialize, js_getItem, getItem,
+        js_insertItemBefore, insertItemBefore, js_replaceItem, replaceItem,
+        js_removeItem, removeItem, js_appendItem, appendItem,
+        js_getNumberOfItems, getNumberOfItems, SVGStringList,
+        castToSVGStringList, gTypeSVGStringList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 unsafe "$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)))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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,84 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGStyleElement,
+        gTypeSVGStyleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,59 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTests
+       (js_hasExtension, hasExtension, js_getRequiredFeatures,
+        getRequiredFeatures, js_getRequiredExtensions,
+        getRequiredExtensions, js_getSystemLanguage, getSystemLanguage,
+        SVGTests, castToSVGTests, gTypeSVGTests)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"hasExtension\"]($2) ? 1 : 0)" js_hasExtension ::
+        SVGTests -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
+hasExtension ::
+             (MonadIO m, ToJSString extension) =>
+               SVGTests -> extension -> m Bool
+hasExtension self extension
+  = liftIO (js_hasExtension (self) (toJSString extension))
+ 
+foreign import javascript unsafe "$1[\"requiredFeatures\"]"
+        js_getRequiredFeatures :: SVGTests -> IO (Nullable SVGStringList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredFeatures Mozilla SVGTests.requiredFeatures documentation> 
+getRequiredFeatures ::
+                    (MonadIO m) => SVGTests -> m (Maybe SVGStringList)
+getRequiredFeatures self
+  = liftIO (nullableToMaybe <$> (js_getRequiredFeatures (self)))
+ 
+foreign import javascript unsafe "$1[\"requiredExtensions\"]"
+        js_getRequiredExtensions :: SVGTests -> IO (Nullable SVGStringList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredExtensions Mozilla SVGTests.requiredExtensions documentation> 
+getRequiredExtensions ::
+                      (MonadIO m) => SVGTests -> m (Maybe SVGStringList)
+getRequiredExtensions self
+  = liftIO (nullableToMaybe <$> (js_getRequiredExtensions (self)))
+ 
+foreign import javascript unsafe "$1[\"systemLanguage\"]"
+        js_getSystemLanguage :: SVGTests -> IO (Nullable SVGStringList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.systemLanguage Mozilla SVGTests.systemLanguage documentation> 
+getSystemLanguage ::
+                  (MonadIO m) => SVGTests -> m (Maybe SVGStringList)
+getSystemLanguage self
+  = liftIO (nullableToMaybe <$> (js_getSystemLanguage (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,165 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTextContentElement
+       (js_getNumberOfChars, getNumberOfChars, js_getComputedTextLength,
+        getComputedTextLength, js_getSubStringLength, getSubStringLength,
+        js_getStartPositionOfChar, getStartPositionOfChar,
+        js_getEndPositionOfChar, getEndPositionOfChar, js_getExtentOfChar,
+        getExtentOfChar, js_getRotationOfChar, getRotationOfChar,
+        js_getCharNumAtPosition, getCharNumAtPosition, js_selectSubString,
+        selectSubString, pattern LENGTHADJUST_UNKNOWN,
+        pattern LENGTHADJUST_SPACING,
+        pattern LENGTHADJUST_SPACINGANDGLYPHS, js_getTextLength,
+        getTextLength, js_getLengthAdjust, getLengthAdjust,
+        SVGTextContentElement, castToSVGTextContentElement,
+        gTypeSVGTextContentElement, IsSVGTextContentElement,
+        toSVGTextContentElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe
+        "$1[\"getSubStringLength\"]($2, $3)" js_getSubStringLength ::
+        SVGTextContentElement -> Word -> Word -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
+getSubStringLength ::
+                   (MonadIO m, IsSVGTextContentElement self) =>
+                     self -> Word -> Word -> m Float
+getSubStringLength self offset length
+  = liftIO
+      (js_getSubStringLength (toSVGTextContentElement self) offset
+         length)
+ 
+foreign import javascript unsafe
+        "$1[\"getStartPositionOfChar\"]($2)" js_getStartPositionOfChar ::
+        SVGTextContentElement -> Word -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
+getStartPositionOfChar ::
+                       (MonadIO m, IsSVGTextContentElement self) =>
+                         self -> Word -> m (Maybe SVGPoint)
+getStartPositionOfChar self offset
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getStartPositionOfChar (toSVGTextContentElement self) offset))
+ 
+foreign import javascript unsafe "$1[\"getEndPositionOfChar\"]($2)"
+        js_getEndPositionOfChar ::
+        SVGTextContentElement -> Word -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
+getEndPositionOfChar ::
+                     (MonadIO m, IsSVGTextContentElement self) =>
+                       self -> Word -> m (Maybe SVGPoint)
+getEndPositionOfChar self offset
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getEndPositionOfChar (toSVGTextContentElement self) offset))
+ 
+foreign import javascript unsafe "$1[\"getExtentOfChar\"]($2)"
+        js_getExtentOfChar ::
+        SVGTextContentElement -> Word -> IO (Nullable SVGRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
+getExtentOfChar ::
+                (MonadIO m, IsSVGTextContentElement self) =>
+                  self -> Word -> m (Maybe SVGRect)
+getExtentOfChar self offset
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getExtentOfChar (toSVGTextContentElement self) offset))
+ 
+foreign import javascript unsafe "$1[\"getRotationOfChar\"]($2)"
+        js_getRotationOfChar :: SVGTextContentElement -> Word -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getRotationOfChar Mozilla SVGTextContentElement.getRotationOfChar documentation> 
+getRotationOfChar ::
+                  (MonadIO m, IsSVGTextContentElement self) =>
+                    self -> Word -> m Float
+getRotationOfChar self offset
+  = liftIO
+      (js_getRotationOfChar (toSVGTextContentElement self) offset)
+ 
+foreign import javascript unsafe "$1[\"getCharNumAtPosition\"]($2)"
+        js_getCharNumAtPosition ::
+        SVGTextContentElement -> Nullable SVGPoint -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getCharNumAtPosition Mozilla SVGTextContentElement.getCharNumAtPosition documentation> 
+getCharNumAtPosition ::
+                     (MonadIO m, IsSVGTextContentElement self) =>
+                       self -> Maybe SVGPoint -> m Int
+getCharNumAtPosition self point
+  = liftIO
+      (js_getCharNumAtPosition (toSVGTextContentElement self)
+         (maybeToNullable point))
+ 
+foreign import javascript unsafe "$1[\"selectSubString\"]($2, $3)"
+        js_selectSubString ::
+        SVGTextContentElement -> Word -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.selectSubString Mozilla SVGTextContentElement.selectSubString documentation> 
+selectSubString ::
+                (MonadIO m, IsSVGTextContentElement self) =>
+                  self -> Word -> Word -> m ()
+selectSubString self offset length
+  = liftIO
+      (js_selectSubString (toSVGTextContentElement self) offset length)
+pattern LENGTHADJUST_UNKNOWN = 0
+pattern LENGTHADJUST_SPACING = 1
+pattern LENGTHADJUST_SPACINGANDGLYPHS = 2
+ 
+foreign import javascript unsafe "$1[\"textLength\"]"
+        js_getTextLength ::
+        SVGTextContentElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.textLength Mozilla SVGTextContentElement.textLength documentation> 
+getTextLength ::
+              (MonadIO m, IsSVGTextContentElement self) =>
+                self -> m (Maybe SVGAnimatedLength)
+getTextLength self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getTextLength (toSVGTextContentElement self)))
+ 
+foreign import javascript unsafe "$1[\"lengthAdjust\"]"
+        js_getLengthAdjust ::
+        SVGTextContentElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.lengthAdjust Mozilla SVGTextContentElement.lengthAdjust documentation> 
+getLengthAdjust ::
+                (MonadIO m, IsSVGTextContentElement self) =>
+                  self -> m (Maybe SVGAnimatedEnumeration)
+getLengthAdjust self
+  = liftIO
+      (nullableToMaybe <$>
+         (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,61 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGTextPathElement,
+        gTypeSVGTextPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"startOffset\"]"
+        js_getStartOffset ::
+        SVGTextPathElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.startOffset Mozilla SVGTextPathElement.startOffset documentation> 
+getStartOffset ::
+               (MonadIO m) => SVGTextPathElement -> m (Maybe SVGAnimatedLength)
+getStartOffset self
+  = liftIO (nullableToMaybe <$> (js_getStartOffset (self)))
+ 
+foreign import javascript unsafe "$1[\"method\"]" js_getMethod ::
+        SVGTextPathElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.method Mozilla SVGTextPathElement.method documentation> 
+getMethod ::
+          (MonadIO m) =>
+            SVGTextPathElement -> m (Maybe SVGAnimatedEnumeration)
+getMethod self = liftIO (nullableToMaybe <$> (js_getMethod (self)))
+ 
+foreign import javascript unsafe "$1[\"spacing\"]" js_getSpacing ::
+        SVGTextPathElement -> IO (Nullable SVGAnimatedEnumeration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.spacing Mozilla SVGTextPathElement.spacing documentation> 
+getSpacing ::
+           (MonadIO m) =>
+             SVGTextPathElement -> m (Maybe SVGAnimatedEnumeration)
+getSpacing self
+  = liftIO (nullableToMaybe <$> (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,77 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement
+       (js_getX, getX, js_getY, getY, js_getDx, getDx, js_getDy, getDy,
+        js_getRotate, getRotate, SVGTextPositioningElement,
+        castToSVGTextPositioningElement, gTypeSVGTextPositioningElement,
+        IsSVGTextPositioningElement, toSVGTextPositioningElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGTextPositioningElement -> IO (Nullable SVGAnimatedLengthList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
+getX ::
+     (MonadIO m, IsSVGTextPositioningElement self) =>
+       self -> m (Maybe SVGAnimatedLengthList)
+getX self
+  = liftIO
+      (nullableToMaybe <$> (js_getX (toSVGTextPositioningElement self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGTextPositioningElement -> IO (Nullable SVGAnimatedLengthList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.y Mozilla SVGTextPositioningElement.y documentation> 
+getY ::
+     (MonadIO m, IsSVGTextPositioningElement self) =>
+       self -> m (Maybe SVGAnimatedLengthList)
+getY self
+  = liftIO
+      (nullableToMaybe <$> (js_getY (toSVGTextPositioningElement self)))
+ 
+foreign import javascript unsafe "$1[\"dx\"]" js_getDx ::
+        SVGTextPositioningElement -> IO (Nullable SVGAnimatedLengthList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dx Mozilla SVGTextPositioningElement.dx documentation> 
+getDx ::
+      (MonadIO m, IsSVGTextPositioningElement self) =>
+        self -> m (Maybe SVGAnimatedLengthList)
+getDx self
+  = liftIO
+      (nullableToMaybe <$> (js_getDx (toSVGTextPositioningElement self)))
+ 
+foreign import javascript unsafe "$1[\"dy\"]" js_getDy ::
+        SVGTextPositioningElement -> IO (Nullable SVGAnimatedLengthList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dy Mozilla SVGTextPositioningElement.dy documentation> 
+getDy ::
+      (MonadIO m, IsSVGTextPositioningElement self) =>
+        self -> m (Maybe SVGAnimatedLengthList)
+getDy self
+  = liftIO
+      (nullableToMaybe <$> (js_getDy (toSVGTextPositioningElement self)))
+ 
+foreign import javascript unsafe "$1[\"rotate\"]" js_getRotate ::
+        SVGTextPositioningElement -> IO (Nullable SVGAnimatedNumberList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.rotate Mozilla SVGTextPositioningElement.rotate documentation> 
+getRotate ::
+          (MonadIO m, IsSVGTextPositioningElement self) =>
+            self -> m (Maybe SVGAnimatedNumberList)
+getRotate self
+  = liftIO
+      (nullableToMaybe <$>
+         (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,99 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGTransform, gTypeSVGTransform)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setMatrix\"]($2)"
+        js_setMatrix :: SVGTransform -> Nullable SVGMatrix -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setMatrix Mozilla SVGTransform.setMatrix documentation> 
+setMatrix :: (MonadIO m) => SVGTransform -> Maybe SVGMatrix -> m ()
+setMatrix self matrix
+  = liftIO (js_setMatrix (self) (maybeToNullable matrix))
+ 
+foreign import javascript unsafe "$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 unsafe "$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 unsafe "$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 unsafe "$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 unsafe "$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[\"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[\"matrix\"]" js_getMatrix ::
+        SVGTransform -> IO (Nullable SVGMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.matrix Mozilla SVGTransform.matrix documentation> 
+getMatrix :: (MonadIO m) => SVGTransform -> m (Maybe SVGMatrix)
+getMatrix self = liftIO (nullableToMaybe <$> (js_getMatrix (self)))
+ 
+foreign import javascript unsafe "$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,136 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTransformList
+       (js_clear, clear, js_initialize, initialize, js_getItem, getItem,
+        js_insertItemBefore, insertItemBefore, js_replaceItem, replaceItem,
+        js_removeItem, removeItem, js_appendItem, appendItem,
+        js_createSVGTransformFromMatrix, createSVGTransformFromMatrix,
+        js_consolidate, consolidate, js_getNumberOfItems, getNumberOfItems,
+        SVGTransformList, castToSVGTransformList, gTypeSVGTransformList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        SVGTransformList ->
+          Nullable SVGTransform -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
+initialize ::
+           (MonadIO m) =>
+             SVGTransformList -> Maybe SVGTransform -> m (Maybe SVGTransform)
+initialize self item
+  = liftIO
+      (nullableToMaybe <$> (js_initialize (self) (maybeToNullable item)))
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: SVGTransformList -> Word -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
+getItem ::
+        (MonadIO m) => SVGTransformList -> Word -> m (Maybe SVGTransform)
+getItem self index
+  = liftIO (nullableToMaybe <$> (js_getItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        SVGTransformList ->
+          Nullable SVGTransform -> Word -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m) =>
+                   SVGTransformList ->
+                     Maybe SVGTransform -> Word -> m (Maybe SVGTransform)
+insertItemBefore self item index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_insertItemBefore (self) (maybeToNullable item) index))
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        SVGTransformList ->
+          Nullable SVGTransform -> Word -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m) =>
+              SVGTransformList ->
+                Maybe SVGTransform -> Word -> m (Maybe SVGTransform)
+replaceItem self item index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_replaceItem (self) (maybeToNullable item) index))
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem ::
+        SVGTransformList -> Word -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
+removeItem ::
+           (MonadIO m) => SVGTransformList -> Word -> m (Maybe SVGTransform)
+removeItem self index
+  = liftIO (nullableToMaybe <$> (js_removeItem (self) index))
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        SVGTransformList ->
+          Nullable SVGTransform -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
+appendItem ::
+           (MonadIO m) =>
+             SVGTransformList -> Maybe SVGTransform -> m (Maybe SVGTransform)
+appendItem self item
+  = liftIO
+      (nullableToMaybe <$> (js_appendItem (self) (maybeToNullable item)))
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGTransformFromMatrix\"]($2)"
+        js_createSVGTransformFromMatrix ::
+        SVGTransformList ->
+          Nullable SVGMatrix -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrix ::
+                             (MonadIO m) =>
+                               SVGTransformList -> Maybe SVGMatrix -> m (Maybe SVGTransform)
+createSVGTransformFromMatrix self matrix
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createSVGTransformFromMatrix (self) (maybeToNullable matrix)))
+ 
+foreign import javascript unsafe "$1[\"consolidate\"]()"
+        js_consolidate :: SVGTransformList -> IO (Nullable SVGTransform)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
+consolidate ::
+            (MonadIO m) => SVGTransformList -> m (Maybe SVGTransform)
+consolidate self
+  = liftIO (nullableToMaybe <$> (js_consolidate (self)))
+ 
+foreign import javascript unsafe "$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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGURIReference
+       (js_getHref, getHref, SVGURIReference, castToSVGURIReference,
+        gTypeSVGURIReference)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        SVGURIReference -> IO (Nullable SVGAnimatedString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
+getHref ::
+        (MonadIO m) => SVGURIReference -> m (Maybe SVGAnimatedString)
+getHref self = liftIO (nullableToMaybe <$> (js_getHref (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,24 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGUnitTypes
+       (pattern SVG_UNIT_TYPE_UNKNOWN,
+        pattern SVG_UNIT_TYPE_USERSPACEONUSE,
+        pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX, SVGUnitTypes,
+        castToSVGUnitTypes, gTypeSVGUnitTypes)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,49 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGUseElement
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, SVGUseElement, castToSVGUseElement, gTypeSVGUseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        SVGUseElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
+getX :: (MonadIO m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
+getX self = liftIO (nullableToMaybe <$> (js_getX (self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        SVGUseElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.y Mozilla SVGUseElement.y documentation> 
+getY :: (MonadIO m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
+getY self = liftIO (nullableToMaybe <$> (js_getY (self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        SVGUseElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.width Mozilla SVGUseElement.width documentation> 
+getWidth ::
+         (MonadIO m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
+getWidth self = liftIO (nullableToMaybe <$> (js_getWidth (self)))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        SVGUseElement -> IO (Nullable SVGAnimatedLength)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.height Mozilla SVGUseElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
+getHeight self = liftIO (nullableToMaybe <$> (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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGViewElement
+       (js_getViewTarget, getViewTarget, SVGViewElement,
+        castToSVGViewElement, gTypeSVGViewElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"viewTarget\"]"
+        js_getViewTarget :: SVGViewElement -> IO (Nullable SVGStringList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
+getViewTarget ::
+              (MonadIO m) => SVGViewElement -> m (Maybe SVGStringList)
+getViewTarget self
+  = liftIO (nullableToMaybe <$> (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,93 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToSVGViewSpec,
+        gTypeSVGViewSpec)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"transform\"]"
+        js_getTransform :: SVGViewSpec -> IO (Nullable SVGTransformList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
+getTransform ::
+             (MonadIO m) => SVGViewSpec -> m (Maybe SVGTransformList)
+getTransform self
+  = liftIO (nullableToMaybe <$> (js_getTransform (self)))
+ 
+foreign import javascript unsafe "$1[\"viewTarget\"]"
+        js_getViewTarget :: SVGViewSpec -> IO (Nullable SVGElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
+getViewTarget :: (MonadIO m) => SVGViewSpec -> m (Maybe SVGElement)
+getViewTarget self
+  = liftIO (nullableToMaybe <$> (js_getViewTarget (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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 unsafe "$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[\"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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToSVGZoomAndPan, gTypeSVGZoomAndPan)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"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) => SVGZoomAndPan -> Word -> m ()
+setZoomAndPan self val = liftIO (js_setZoomAndPan (self) val)
+ 
+foreign import javascript unsafe "$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) => SVGZoomAndPan -> m Word
+getZoomAndPan self = liftIO (js_getZoomAndPan (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,62 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SVGZoomEvent
+       (js_getZoomRectScreen, getZoomRectScreen, js_getPreviousScale,
+        getPreviousScale, js_getPreviousTranslate, getPreviousTranslate,
+        js_getNewScale, getNewScale, js_getNewTranslate, getNewTranslate,
+        SVGZoomEvent, castToSVGZoomEvent, gTypeSVGZoomEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"zoomRectScreen\"]"
+        js_getZoomRectScreen :: SVGZoomEvent -> IO (Nullable SVGRect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
+getZoomRectScreen ::
+                  (MonadIO m) => SVGZoomEvent -> m (Maybe SVGRect)
+getZoomRectScreen self
+  = liftIO (nullableToMaybe <$> (js_getZoomRectScreen (self)))
+ 
+foreign import javascript unsafe "$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[\"previousTranslate\"]"
+        js_getPreviousTranslate :: SVGZoomEvent -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousTranslate Mozilla SVGZoomEvent.previousTranslate documentation> 
+getPreviousTranslate ::
+                     (MonadIO m) => SVGZoomEvent -> m (Maybe SVGPoint)
+getPreviousTranslate self
+  = liftIO (nullableToMaybe <$> (js_getPreviousTranslate (self)))
+ 
+foreign import javascript unsafe "$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[\"newTranslate\"]"
+        js_getNewTranslate :: SVGZoomEvent -> IO (Nullable SVGPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newTranslate Mozilla SVGZoomEvent.newTranslate documentation> 
+getNewTranslate ::
+                (MonadIO m) => SVGZoomEvent -> m (Maybe SVGPoint)
+getNewTranslate self
+  = liftIO (nullableToMaybe <$> (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,78 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToScreen, gTypeScreen)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,31 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode
+       (audioProcess, js_getBufferSize, getBufferSize,
+        ScriptProcessorNode, castToScriptProcessorNode,
+        gTypeScriptProcessorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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[\"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/ScriptProfile.hs b/src/GHCJS/DOM/JSFFI/Generated/ScriptProfile.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScriptProfile.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ScriptProfile
+       (js_getTitle, getTitle, js_getUid, getUid, js_getRootNode,
+        getRootNode, ScriptProfile, castToScriptProfile,
+        gTypeScriptProfile)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"title\"]" js_getTitle ::
+        ScriptProfile -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.title Mozilla ScriptProfile.title documentation> 
+getTitle ::
+         (MonadIO m, FromJSString result) => ScriptProfile -> m result
+getTitle self = liftIO (fromJSString <$> (js_getTitle (self)))
+ 
+foreign import javascript unsafe "$1[\"uid\"]" js_getUid ::
+        ScriptProfile -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.uid Mozilla ScriptProfile.uid documentation> 
+getUid :: (MonadIO m) => ScriptProfile -> m Word
+getUid self = liftIO (js_getUid (self))
+ 
+foreign import javascript unsafe "$1[\"rootNode\"]" js_getRootNode
+        :: ScriptProfile -> IO (Nullable ScriptProfileNode)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.rootNode Mozilla ScriptProfile.rootNode documentation> 
+getRootNode ::
+            (MonadIO m) => ScriptProfile -> m (Maybe ScriptProfileNode)
+getRootNode self
+  = liftIO (nullableToMaybe <$> (js_getRootNode (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScriptProfileNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ScriptProfileNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScriptProfileNode.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ScriptProfileNode
+       (js_children, children, js_getId, getId, js_getFunctionName,
+        getFunctionName, js_getUrl, getUrl, js_getLineNumber,
+        getLineNumber, js_getColumnNumber, getColumnNumber,
+        ScriptProfileNode, castToScriptProfileNode, gTypeScriptProfileNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"children\"]()" js_children
+        :: ScriptProfileNode -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.children Mozilla ScriptProfileNode.children documentation> 
+children ::
+         (MonadIO m) => ScriptProfileNode -> m [Maybe ScriptProfileNode]
+children self
+  = liftIO ((js_children (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        ScriptProfileNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.id Mozilla ScriptProfileNode.id documentation> 
+getId :: (MonadIO m) => ScriptProfileNode -> m Word
+getId self = liftIO (js_getId (self))
+ 
+foreign import javascript unsafe "$1[\"functionName\"]"
+        js_getFunctionName :: ScriptProfileNode -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.functionName Mozilla ScriptProfileNode.functionName documentation> 
+getFunctionName ::
+                (MonadIO m, FromJSString result) => ScriptProfileNode -> m result
+getFunctionName self
+  = liftIO (fromJSString <$> (js_getFunctionName (self)))
+ 
+foreign import javascript unsafe "$1[\"url\"]" js_getUrl ::
+        ScriptProfileNode -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.url Mozilla ScriptProfileNode.url documentation> 
+getUrl ::
+       (MonadIO m, FromJSString result) => ScriptProfileNode -> m result
+getUrl self = liftIO (fromJSString <$> (js_getUrl (self)))
+ 
+foreign import javascript unsafe "$1[\"lineNumber\"]"
+        js_getLineNumber :: ScriptProfileNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.lineNumber Mozilla ScriptProfileNode.lineNumber documentation> 
+getLineNumber :: (MonadIO m) => ScriptProfileNode -> m Word
+getLineNumber self = liftIO (js_getLineNumber (self))
+ 
+foreign import javascript unsafe "$1[\"columnNumber\"]"
+        js_getColumnNumber :: ScriptProfileNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.columnNumber Mozilla ScriptProfileNode.columnNumber documentation> 
+getColumnNumber :: (MonadIO m) => ScriptProfileNode -> m Word
+getColumnNumber self = liftIO (js_getColumnNumber (self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicy.hs b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicy.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SecurityPolicy
+       (js_allowsConnectionTo, allowsConnectionTo, js_allowsFontFrom,
+        allowsFontFrom, js_allowsFormAction, allowsFormAction,
+        js_allowsFrameFrom, allowsFrameFrom, js_allowsImageFrom,
+        allowsImageFrom, js_allowsMediaFrom, allowsMediaFrom,
+        js_allowsObjectFrom, allowsObjectFrom, js_allowsPluginType,
+        allowsPluginType, js_allowsScriptFrom, allowsScriptFrom,
+        js_allowsStyleFrom, allowsStyleFrom, js_getAllowsEval,
+        getAllowsEval, js_getAllowsInlineScript, getAllowsInlineScript,
+        js_getAllowsInlineStyle, getAllowsInlineStyle, js_getIsActive,
+        getIsActive, js_getReportURIs, getReportURIs, SecurityPolicy,
+        castToSecurityPolicy, gTypeSecurityPolicy)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"allowsConnectionTo\"]($2) ? 1 : 0)" js_allowsConnectionTo ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsConnectionTo Mozilla SecurityPolicy.allowsConnectionTo documentation> 
+allowsConnectionTo ::
+                   (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsConnectionTo self url
+  = liftIO (js_allowsConnectionTo (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsFontFrom\"]($2) ? 1 : 0)" js_allowsFontFrom ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsFontFrom Mozilla SecurityPolicy.allowsFontFrom documentation> 
+allowsFontFrom ::
+               (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsFontFrom self url
+  = liftIO (js_allowsFontFrom (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsFormAction\"]($2) ? 1 : 0)" js_allowsFormAction ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsFormAction Mozilla SecurityPolicy.allowsFormAction documentation> 
+allowsFormAction ::
+                 (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsFormAction self url
+  = liftIO (js_allowsFormAction (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsFrameFrom\"]($2) ? 1 : 0)" js_allowsFrameFrom ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsFrameFrom Mozilla SecurityPolicy.allowsFrameFrom documentation> 
+allowsFrameFrom ::
+                (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsFrameFrom self url
+  = liftIO (js_allowsFrameFrom (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsImageFrom\"]($2) ? 1 : 0)" js_allowsImageFrom ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsImageFrom Mozilla SecurityPolicy.allowsImageFrom documentation> 
+allowsImageFrom ::
+                (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsImageFrom self url
+  = liftIO (js_allowsImageFrom (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsMediaFrom\"]($2) ? 1 : 0)" js_allowsMediaFrom ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsMediaFrom Mozilla SecurityPolicy.allowsMediaFrom documentation> 
+allowsMediaFrom ::
+                (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsMediaFrom self url
+  = liftIO (js_allowsMediaFrom (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsObjectFrom\"]($2) ? 1 : 0)" js_allowsObjectFrom ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsObjectFrom Mozilla SecurityPolicy.allowsObjectFrom documentation> 
+allowsObjectFrom ::
+                 (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsObjectFrom self url
+  = liftIO (js_allowsObjectFrom (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsPluginType\"]($2) ? 1 : 0)" js_allowsPluginType ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsPluginType Mozilla SecurityPolicy.allowsPluginType documentation> 
+allowsPluginType ::
+                 (MonadIO m, ToJSString type') => SecurityPolicy -> type' -> m Bool
+allowsPluginType self type'
+  = liftIO (js_allowsPluginType (self) (toJSString type'))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsScriptFrom\"]($2) ? 1 : 0)" js_allowsScriptFrom ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsScriptFrom Mozilla SecurityPolicy.allowsScriptFrom documentation> 
+allowsScriptFrom ::
+                 (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsScriptFrom self url
+  = liftIO (js_allowsScriptFrom (self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsStyleFrom\"]($2) ? 1 : 0)" js_allowsStyleFrom ::
+        SecurityPolicy -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsStyleFrom Mozilla SecurityPolicy.allowsStyleFrom documentation> 
+allowsStyleFrom ::
+                (MonadIO m, ToJSString url) => SecurityPolicy -> url -> m Bool
+allowsStyleFrom self url
+  = liftIO (js_allowsStyleFrom (self) (toJSString url))
+ 
+foreign import javascript unsafe "($1[\"allowsEval\"] ? 1 : 0)"
+        js_getAllowsEval :: SecurityPolicy -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsEval Mozilla SecurityPolicy.allowsEval documentation> 
+getAllowsEval :: (MonadIO m) => SecurityPolicy -> m Bool
+getAllowsEval self = liftIO (js_getAllowsEval (self))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsInlineScript\"] ? 1 : 0)" js_getAllowsInlineScript ::
+        SecurityPolicy -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsInlineScript Mozilla SecurityPolicy.allowsInlineScript documentation> 
+getAllowsInlineScript :: (MonadIO m) => SecurityPolicy -> m Bool
+getAllowsInlineScript self
+  = liftIO (js_getAllowsInlineScript (self))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsInlineStyle\"] ? 1 : 0)" js_getAllowsInlineStyle ::
+        SecurityPolicy -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsInlineStyle Mozilla SecurityPolicy.allowsInlineStyle documentation> 
+getAllowsInlineStyle :: (MonadIO m) => SecurityPolicy -> m Bool
+getAllowsInlineStyle self = liftIO (js_getAllowsInlineStyle (self))
+ 
+foreign import javascript unsafe "($1[\"isActive\"] ? 1 : 0)"
+        js_getIsActive :: SecurityPolicy -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.isActive Mozilla SecurityPolicy.isActive documentation> 
+getIsActive :: (MonadIO m) => SecurityPolicy -> m Bool
+getIsActive self = liftIO (js_getIsActive (self))
+ 
+foreign import javascript unsafe "$1[\"reportURIs\"]"
+        js_getReportURIs :: SecurityPolicy -> IO (Nullable DOMStringList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.reportURIs Mozilla SecurityPolicy.reportURIs documentation> 
+getReportURIs ::
+              (MonadIO m) => SecurityPolicy -> m (Maybe DOMStringList)
+getReportURIs self
+  = liftIO (nullableToMaybe <$> (js_getReportURIs (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,104 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
+       (js_getDocumentURI, getDocumentURI, js_getReferrer, getReferrer,
+        js_getBlockedURI, getBlockedURI, js_getViolatedDirective,
+        getViolatedDirective, js_getEffectiveDirective,
+        getEffectiveDirective, js_getOriginalPolicy, getOriginalPolicy,
+        js_getSourceFile, getSourceFile, js_getLineNumber, getLineNumber,
+        SecurityPolicyViolationEvent, castToSecurityPolicyViolationEvent,
+        gTypeSecurityPolicyViolationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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))
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,255 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Selection
+       (js_collapse, collapse, js_collapseToEnd, collapseToEnd,
+        js_collapseToStart, collapseToStart, js_deleteFromDocument,
+        deleteFromDocument, js_containsNode, containsNode,
+        js_selectAllChildren, selectAllChildren, js_extend, extend,
+        js_getRangeAt, getRangeAt, js_removeAllRanges, removeAllRanges,
+        js_addRange, addRange, js_toString, toString, js_modify, modify,
+        js_setBaseAndExtent, setBaseAndExtent, js_setPosition, setPosition,
+        js_empty, empty, js_getAnchorNode, getAnchorNode,
+        js_getAnchorOffset, getAnchorOffset, js_getFocusNode, getFocusNode,
+        js_getFocusOffset, getFocusOffset, js_getIsCollapsed,
+        getIsCollapsed, js_getRangeCount, getRangeCount, js_getBaseNode,
+        getBaseNode, js_getBaseOffset, getBaseOffset, js_getExtentNode,
+        getExtentNode, js_getExtentOffset, getExtentOffset, js_getType,
+        getType, Selection, castToSelection, gTypeSelection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"collapse\"]($2, $3)"
+        js_collapse :: Selection -> Nullable Node -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapse Mozilla Selection.collapse documentation> 
+collapse ::
+         (MonadIO m, IsNode node) => Selection -> Maybe node -> Int -> m ()
+collapse self node index
+  = liftIO
+      (js_collapse (self) (maybeToNullable (fmap toNode node)) index)
+ 
+foreign import javascript unsafe "$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 unsafe "$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[\"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[\"containsNode\"]($2,\n$3) ? 1 : 0)" js_containsNode ::
+        Selection -> Nullable 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 -> Maybe node -> Bool -> m Bool
+containsNode self node allowPartial
+  = liftIO
+      (js_containsNode (self) (maybeToNullable (fmap toNode node))
+         allowPartial)
+ 
+foreign import javascript unsafe "$1[\"selectAllChildren\"]($2)"
+        js_selectAllChildren :: Selection -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.selectAllChildren Mozilla Selection.selectAllChildren documentation> 
+selectAllChildren ::
+                  (MonadIO m, IsNode node) => Selection -> Maybe node -> m ()
+selectAllChildren self node
+  = liftIO
+      (js_selectAllChildren (self) (maybeToNullable (fmap toNode node)))
+ 
+foreign import javascript unsafe "$1[\"extend\"]($2, $3)" js_extend
+        :: Selection -> Nullable Node -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extend Mozilla Selection.extend documentation> 
+extend ::
+       (MonadIO m, IsNode node) => Selection -> Maybe node -> Int -> m ()
+extend self node offset
+  = liftIO
+      (js_extend (self) (maybeToNullable (fmap toNode node)) offset)
+ 
+foreign import javascript unsafe "$1[\"getRangeAt\"]($2)"
+        js_getRangeAt :: Selection -> Int -> IO (Nullable Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
+getRangeAt :: (MonadIO m) => Selection -> Int -> m (Maybe Range)
+getRangeAt self index
+  = liftIO (nullableToMaybe <$> (js_getRangeAt (self) index))
+ 
+foreign import javascript unsafe "$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[\"addRange\"]($2)" js_addRange
+        :: Selection -> Nullable Range -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.addRange Mozilla Selection.addRange documentation> 
+addRange :: (MonadIO m) => Selection -> Maybe Range -> m ()
+addRange self range
+  = liftIO (js_addRange (self) (maybeToNullable range))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"modify\"]($2, $3, $4)"
+        js_modify :: Selection -> JSString -> JSString -> 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 -> alter -> direction -> granularity -> m ()
+modify self alter direction granularity
+  = liftIO
+      (js_modify (self) (toJSString alter) (toJSString direction)
+         (toJSString granularity))
+ 
+foreign import javascript unsafe
+        "$1[\"setBaseAndExtent\"]($2, $3,\n$4, $5)" js_setBaseAndExtent ::
+        Selection -> Nullable Node -> Int -> Nullable Node -> Int -> 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 -> Int -> Maybe extentNode -> Int -> m ()
+setBaseAndExtent self baseNode baseOffset extentNode extentOffset
+  = liftIO
+      (js_setBaseAndExtent (self)
+         (maybeToNullable (fmap toNode baseNode))
+         baseOffset
+         (maybeToNullable (fmap toNode extentNode))
+         extentOffset)
+ 
+foreign import javascript unsafe "$1[\"setPosition\"]($2, $3)"
+        js_setPosition :: Selection -> Nullable Node -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setPosition Mozilla Selection.setPosition documentation> 
+setPosition ::
+            (MonadIO m, IsNode node) => Selection -> Maybe node -> Int -> m ()
+setPosition self node offset
+  = liftIO
+      (js_setPosition (self) (maybeToNullable (fmap toNode node)) offset)
+ 
+foreign import javascript unsafe "$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[\"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)))
+ 
+foreign import javascript unsafe "$1[\"anchorOffset\"]"
+        js_getAnchorOffset :: Selection -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorOffset Mozilla Selection.anchorOffset documentation> 
+getAnchorOffset :: (MonadIO m) => Selection -> m Int
+getAnchorOffset self = liftIO (js_getAnchorOffset (self))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"focusOffset\"]"
+        js_getFocusOffset :: Selection -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusOffset Mozilla Selection.focusOffset documentation> 
+getFocusOffset :: (MonadIO m) => Selection -> m Int
+getFocusOffset self = liftIO (js_getFocusOffset (self))
+ 
+foreign import javascript unsafe "($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[\"rangeCount\"]"
+        js_getRangeCount :: Selection -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.rangeCount Mozilla Selection.rangeCount documentation> 
+getRangeCount :: (MonadIO m) => Selection -> m Int
+getRangeCount self = liftIO (js_getRangeCount (self))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"baseOffset\"]"
+        js_getBaseOffset :: Selection -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseOffset Mozilla Selection.baseOffset documentation> 
+getBaseOffset :: (MonadIO m) => Selection -> m Int
+getBaseOffset self = liftIO (js_getBaseOffset (self))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"extentOffset\"]"
+        js_getExtentOffset :: Selection -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentOffset Mozilla Selection.extentOffset documentation> 
+getExtentOffset :: (MonadIO m) => Selection -> m Int
+getExtentOffset self = liftIO (js_getExtentOffset (self))
+ 
+foreign import javascript unsafe "$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)))
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,170 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SourceBuffer
+       (js_appendBuffer, appendBuffer, js_appendBufferView,
+        appendBufferView, 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, SourceBuffer, castToSourceBuffer,
+        gTypeSourceBuffer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"appendBuffer\"]($2)"
+        js_appendBuffer :: SourceBuffer -> Nullable ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
+appendBuffer ::
+             (MonadIO m, IsArrayBuffer data') =>
+               SourceBuffer -> Maybe data' -> m ()
+appendBuffer self data'
+  = liftIO
+      (js_appendBuffer (self)
+         (maybeToNullable (fmap toArrayBuffer data')))
+ 
+foreign import javascript unsafe "$1[\"appendBuffer\"]($2)"
+        js_appendBufferView ::
+        SourceBuffer -> Nullable ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
+appendBufferView ::
+                 (MonadIO m, IsArrayBufferView data') =>
+                   SourceBuffer -> Maybe data' -> m ()
+appendBufferView self data'
+  = liftIO
+      (js_appendBufferView (self)
+         (maybeToNullable (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe "$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 unsafe "$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 unsafe "$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[\"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[\"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 unsafe "$1[\"buffered\"]" js_getBuffered
+        :: SourceBuffer -> IO (Nullable TimeRanges)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.buffered Mozilla SourceBuffer.buffered documentation> 
+getBuffered :: (MonadIO m) => SourceBuffer -> m (Maybe TimeRanges)
+getBuffered self
+  = liftIO (nullableToMaybe <$> (js_getBuffered (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"audioTracks\"]"
+        js_getAudioTracks :: SourceBuffer -> IO (Nullable AudioTrackList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.audioTracks Mozilla SourceBuffer.audioTracks documentation> 
+getAudioTracks ::
+               (MonadIO m) => SourceBuffer -> m (Maybe AudioTrackList)
+getAudioTracks self
+  = liftIO (nullableToMaybe <$> (js_getAudioTracks (self)))
+ 
+foreign import javascript unsafe "$1[\"videoTracks\"]"
+        js_getVideoTracks :: SourceBuffer -> IO (Nullable VideoTrackList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.videoTracks Mozilla SourceBuffer.videoTracks documentation> 
+getVideoTracks ::
+               (MonadIO m) => SourceBuffer -> m (Maybe VideoTrackList)
+getVideoTracks self
+  = liftIO (nullableToMaybe <$> (js_getVideoTracks (self)))
+ 
+foreign import javascript unsafe "$1[\"textTracks\"]"
+        js_getTextTracks :: SourceBuffer -> IO (Nullable TextTrackList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.textTracks Mozilla SourceBuffer.textTracks documentation> 
+getTextTracks ::
+              (MonadIO m) => SourceBuffer -> m (Maybe TextTrackList)
+getTextTracks self
+  = liftIO (nullableToMaybe <$> (js_getTextTracks (self)))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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))
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,35 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SourceBufferList
+       (js_item, item, js_getLength, getLength, SourceBufferList,
+        castToSourceBufferList, gTypeSourceBufferList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        SourceBufferList -> Word -> IO (Nullable SourceBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
+item ::
+     (MonadIO m) => SourceBufferList -> Word -> m (Maybe SourceBuffer)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$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))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SourceInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/SourceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SourceInfo.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SourceInfo
+       (js_getSourceId, getSourceId, js_getKind, getKind, js_getLabel,
+        getLabel, SourceInfo, castToSourceInfo, gTypeSourceInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"sourceId\"]" js_getSourceId
+        :: SourceInfo -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo.sourceId Mozilla SourceInfo.sourceId documentation> 
+getSourceId ::
+            (MonadIO m, FromJSString result) => SourceInfo -> m result
+getSourceId self
+  = liftIO (fromJSString <$> (js_getSourceId (self)))
+ 
+foreign import javascript unsafe "$1[\"kind\"]" js_getKind ::
+        SourceInfo -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo.kind Mozilla SourceInfo.kind documentation> 
+getKind ::
+        (MonadIO m, FromJSString result) => SourceInfo -> m result
+getKind self = liftIO (fromJSString <$> (js_getKind (self)))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        SourceInfo -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo.label Mozilla SourceInfo.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => SourceInfo -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel (self)))
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,82 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
+       (js_speak, speak, js_cancel, cancel, js_pause, pause, js_resume,
+        resume, js_getVoices, getVoices, js_getPending, getPending,
+        js_getSpeaking, getSpeaking, js_getPaused, getPaused,
+        SpeechSynthesis, castToSpeechSynthesis, gTypeSpeechSynthesis)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"speak\"]($2)" js_speak ::
+        SpeechSynthesis -> Nullable SpeechSynthesisUtterance -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speak Mozilla SpeechSynthesis.speak documentation> 
+speak ::
+      (MonadIO m) =>
+        SpeechSynthesis -> Maybe SpeechSynthesisUtterance -> m ()
+speak self utterance
+  = liftIO (js_speak (self) (maybeToNullable utterance))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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 [Maybe SpeechSynthesisVoice]
+getVoices self
+  = liftIO ((js_getVoices (self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "($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[\"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[\"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,43 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
+       (js_getCharIndex, getCharIndex, js_getElapsedTime, getElapsedTime,
+        js_getName, getName, SpeechSynthesisEvent,
+        castToSpeechSynthesisEvent, gTypeSpeechSynthesisEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,164 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        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, castToSpeechSynthesisUtterance,
+        gTypeSpeechSynthesisUtterance)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"SpeechSynthesisUtterance\"]($1)"
+        js_newSpeechSynthesisUtterance ::
+        JSString -> IO SpeechSynthesisUtterance
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation> 
+newSpeechSynthesisUtterance ::
+                            (MonadIO m, ToJSString text) => text -> m SpeechSynthesisUtterance
+newSpeechSynthesisUtterance text
+  = liftIO (js_newSpeechSynthesisUtterance (toJSString text))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"voice\"] = $2;" js_setVoice
+        ::
+        SpeechSynthesisUtterance -> Nullable 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) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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 = unsafeEventName (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,63 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
+       (js_getVoiceURI, getVoiceURI, js_getName, getName, js_getLang,
+        getLang, js_getLocalService, getLocalService, js_getDefault,
+        getDefault, SpeechSynthesisVoice, castToSpeechSynthesisVoice,
+        gTypeSpeechSynthesisVoice)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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/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,73 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Storage
+       (js_key, key, js_getItem, getItem, js_setItem, setItem,
+        js_removeItem, removeItem, js_clear, clear, js_getLength,
+        getLength, Storage, castToStorage, gTypeStorage)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($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)))
+ 
+foreign import javascript unsafe "$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 unsafe "$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 unsafe "$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 unsafe "$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,52 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
+newStorageErrorCallback ::
+                        (MonadIO m) =>
+                          (Maybe 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) =>
+                              (Maybe 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) =>
+                               (Maybe 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,99 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.StorageEvent
+       (js_initStorageEvent, initStorageEvent, js_getKey, getKey,
+        js_getOldValue, getOldValue, js_getNewValue, getNewValue,
+        js_getUrl, getUrl, js_getStorageArea, getStorageArea, StorageEvent,
+        castToStorageEvent, gTypeStorageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initStorageEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9)"
+        js_initStorageEvent ::
+        StorageEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSString ->
+                  Nullable JSString ->
+                    Nullable JSString -> JSString -> Nullable 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 ->
+                     typeArg ->
+                       Bool ->
+                         Bool ->
+                           keyArg ->
+                             Maybe oldValueArg ->
+                               Maybe newValueArg -> urlArg -> Maybe Storage -> m ()
+initStorageEvent self typeArg canBubbleArg cancelableArg keyArg
+  oldValueArg newValueArg urlArg storageAreaArg
+  = liftIO
+      (js_initStorageEvent (self) (toJSString typeArg) canBubbleArg
+         cancelableArg
+         (toJSString keyArg)
+         (toMaybeJSString oldValueArg)
+         (toMaybeJSString newValueArg)
+         (toJSString urlArg)
+         (maybeToNullable storageAreaArg))
+ 
+foreign import javascript unsafe "$1[\"key\"]" js_getKey ::
+        StorageEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
+getKey ::
+       (MonadIO m, FromJSString result) => StorageEvent -> m result
+getKey self = liftIO (fromJSString <$> (js_getKey (self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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)))
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,63 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.StorageInfo
+       (js_queryUsageAndQuota, queryUsageAndQuota, js_requestQuota,
+        requestQuota, pattern TEMPORARY, pattern PERSISTENT, StorageInfo,
+        castToStorageInfo, gTypeStorageInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"queryUsageAndQuota\"]($2, $3,\n$4)" js_queryUsageAndQuota ::
+        StorageInfo ->
+          Word ->
+            Nullable StorageUsageCallback ->
+              Nullable 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
+         (maybeToNullable usageCallback)
+         (maybeToNullable errorCallback))
+ 
+foreign import javascript unsafe
+        "$1[\"requestQuota\"]($2, $3, $4,\n$5)" js_requestQuota ::
+        StorageInfo ->
+          Word ->
+            Double ->
+              Nullable StorageQuotaCallback ->
+                Nullable 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)
+         (maybeToNullable quotaCallback)
+         (maybeToNullable 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,54 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.StorageQuota
+       (js_queryUsageAndQuota, queryUsageAndQuota, js_requestQuota,
+        requestQuota, StorageQuota, castToStorageQuota, gTypeStorageQuota)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"queryUsageAndQuota\"]($2, $3)" js_queryUsageAndQuota ::
+        StorageQuota ->
+          Nullable StorageUsageCallback ->
+            Nullable StorageErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.queryUsageAndQuota Mozilla StorageQuota.queryUsageAndQuota documentation> 
+queryUsageAndQuota ::
+                   (MonadIO m) =>
+                     StorageQuota ->
+                       Maybe StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
+queryUsageAndQuota self usageCallback errorCallback
+  = liftIO
+      (js_queryUsageAndQuota (self) (maybeToNullable usageCallback)
+         (maybeToNullable errorCallback))
+ 
+foreign import javascript unsafe "$1[\"requestQuota\"]($2, $3, $4)"
+        js_requestQuota ::
+        StorageQuota ->
+          Double ->
+            Nullable StorageQuotaCallback ->
+              Nullable 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)
+         (maybeToNullable quotaCallback)
+         (maybeToNullable 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,52 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,64 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,52 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.StyleMedia
+       (js_matchMedium, matchMedium, js_getType, getType, StyleMedia,
+        castToStyleMedia, gTypeStyleMedia)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"matchMedium\"]($2) ? 1 : 0)" js_matchMedium ::
+        StyleMedia -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
+matchMedium ::
+            (MonadIO m, ToJSString mediaquery) =>
+              StyleMedia -> mediaquery -> m Bool
+matchMedium self mediaquery
+  = liftIO (js_matchMedium (self) (toJSString mediaquery))
+ 
+foreign import javascript unsafe "$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,97 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.StyleSheet
+       (js_getType, getType, js_setDisabled, setDisabled, js_getDisabled,
+        getDisabled, js_getOwnerNode, getOwnerNode, js_getParentStyleSheet,
+        getParentStyleSheet, js_getHref, getHref, js_getTitle, getTitle,
+        js_getMedia, getMedia, StyleSheet, castToStyleSheet,
+        gTypeStyleSheet, IsStyleSheet, toStyleSheet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"ownerNode\"]"
+        js_getOwnerNode :: StyleSheet -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.ownerNode Mozilla StyleSheet.ownerNode documentation> 
+getOwnerNode ::
+             (MonadIO m, IsStyleSheet self) => self -> m (Maybe Node)
+getOwnerNode self
+  = liftIO
+      (nullableToMaybe <$> (js_getOwnerNode (toStyleSheet self)))
+ 
+foreign import javascript unsafe "$1[\"parentStyleSheet\"]"
+        js_getParentStyleSheet :: StyleSheet -> IO (Nullable StyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.parentStyleSheet Mozilla StyleSheet.parentStyleSheet documentation> 
+getParentStyleSheet ::
+                    (MonadIO m, IsStyleSheet self) => self -> m (Maybe StyleSheet)
+getParentStyleSheet self
+  = liftIO
+      (nullableToMaybe <$> (js_getParentStyleSheet (toStyleSheet self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        StyleSheet -> IO (Nullable MediaList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.media Mozilla StyleSheet.media documentation> 
+getMedia ::
+         (MonadIO m, IsStyleSheet self) => self -> m (Maybe MediaList)
+getMedia self
+  = liftIO (nullableToMaybe <$> (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,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.StyleSheetList
+       (js_item, item, js__get, _get, js_getLength, getLength,
+        StyleSheetList, castToStyleSheetList, gTypeStyleSheetList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        StyleSheetList -> JSString -> IO (Nullable CSSStyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList._get Mozilla StyleSheetList._get documentation> 
+_get ::
+     (MonadIO m, ToJSString name) =>
+       StyleSheetList -> name -> m (Maybe CSSStyleSheet)
+_get self name
+  = liftIO (nullableToMaybe <$> (js__get (self) (toJSString name)))
+ 
+foreign import javascript unsafe "$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,223 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.SubtleCrypto
+       (js_encrypt, encrypt, js_decrypt, decrypt, js_sign, sign,
+        js_verify, verify, js_digest, digest, js_generateKey, generateKey,
+        js_importKey, importKey, js_exportKey, exportKey, js_wrapKey,
+        wrapKey, js_unwrapKey, unwrapKey, SubtleCrypto, castToSubtleCrypto,
+        gTypeSubtleCrypto)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"encrypt\"]($2, $3, $4)"
+        js_encrypt ::
+        SubtleCrypto ->
+          JSString -> Nullable CryptoKey -> JSVal -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
+encrypt ::
+        (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+          SubtleCrypto ->
+            algorithm -> Maybe CryptoKey -> [Maybe data'] -> m (Maybe Promise)
+encrypt self algorithm key data'
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal data' >>=
+            \ data'' ->
+              js_encrypt (self) (toJSString algorithm) (maybeToNullable key)
+                data''))
+ 
+foreign import javascript unsafe "$1[\"decrypt\"]($2, $3, $4)"
+        js_decrypt ::
+        SubtleCrypto ->
+          JSString -> Nullable CryptoKey -> JSVal -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
+decrypt ::
+        (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+          SubtleCrypto ->
+            algorithm -> Maybe CryptoKey -> [Maybe data'] -> m (Maybe Promise)
+decrypt self algorithm key data'
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal data' >>=
+            \ data'' ->
+              js_decrypt (self) (toJSString algorithm) (maybeToNullable key)
+                data''))
+ 
+foreign import javascript unsafe "$1[\"sign\"]($2, $3, $4)" js_sign
+        ::
+        SubtleCrypto ->
+          JSString -> Nullable CryptoKey -> JSVal -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
+sign ::
+     (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+       SubtleCrypto ->
+         algorithm -> Maybe CryptoKey -> [Maybe data'] -> m (Maybe Promise)
+sign self algorithm key data'
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal data' >>=
+            \ data'' ->
+              js_sign (self) (toJSString algorithm) (maybeToNullable key)
+                data''))
+ 
+foreign import javascript unsafe "$1[\"verify\"]($2, $3, $4, $5)"
+        js_verify ::
+        SubtleCrypto ->
+          JSString ->
+            Nullable CryptoKey ->
+              Nullable CryptoOperationData -> JSVal -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
+verify ::
+       (MonadIO m, ToJSString algorithm, IsCryptoOperationData signature,
+        IsCryptoOperationData data') =>
+         SubtleCrypto ->
+           algorithm ->
+             Maybe CryptoKey ->
+               Maybe signature -> [Maybe data'] -> m (Maybe Promise)
+verify self algorithm key signature data'
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal data' >>=
+            \ data'' ->
+              js_verify (self) (toJSString algorithm) (maybeToNullable key)
+                (maybeToNullable (fmap toCryptoOperationData signature))
+                data''))
+ 
+foreign import javascript unsafe "$1[\"digest\"]($2, $3)" js_digest
+        :: SubtleCrypto -> JSString -> JSVal -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
+digest ::
+       (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+         SubtleCrypto -> algorithm -> [Maybe data'] -> m (Maybe Promise)
+digest self algorithm data'
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal data' >>=
+            \ data'' -> js_digest (self) (toJSString algorithm) data''))
+ 
+foreign import javascript unsafe "$1[\"generateKey\"]($2, $3, $4)"
+        js_generateKey ::
+        SubtleCrypto -> JSString -> Bool -> JSVal -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
+generateKey ::
+            (MonadIO m, ToJSString algorithm) =>
+              SubtleCrypto ->
+                algorithm -> Bool -> [KeyUsage] -> m (Maybe Promise)
+generateKey self algorithm extractable keyUsages
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_generateKey (self) (toJSString algorithm) extractable
+                keyUsages'))
+ 
+foreign import javascript unsafe
+        "$1[\"importKey\"]($2, $3, $4, $5,\n$6)" js_importKey ::
+        SubtleCrypto ->
+          JSString ->
+            Nullable CryptoOperationData ->
+              JSString -> Bool -> JSVal -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
+importKey ::
+          (MonadIO m, ToJSString format, IsCryptoOperationData keyData,
+           ToJSString algorithm) =>
+            SubtleCrypto ->
+              format ->
+                Maybe keyData ->
+                  algorithm -> Bool -> [KeyUsage] -> m (Maybe Promise)
+importKey self format keyData algorithm extractable keyUsages
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_importKey (self) (toJSString format)
+                (maybeToNullable (fmap toCryptoOperationData keyData))
+                (toJSString algorithm)
+                extractable
+                keyUsages'))
+ 
+foreign import javascript unsafe "$1[\"exportKey\"]($2, $3)"
+        js_exportKey ::
+        SubtleCrypto ->
+          JSString -> Nullable CryptoKey -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
+exportKey ::
+          (MonadIO m, ToJSString format) =>
+            SubtleCrypto -> format -> Maybe CryptoKey -> m (Maybe Promise)
+exportKey self format key
+  = liftIO
+      (nullableToMaybe <$>
+         (js_exportKey (self) (toJSString format) (maybeToNullable key)))
+ 
+foreign import javascript unsafe "$1[\"wrapKey\"]($2, $3, $4, $5)"
+        js_wrapKey ::
+        SubtleCrypto ->
+          JSString ->
+            Nullable CryptoKey ->
+              Nullable CryptoKey -> JSString -> IO (Nullable Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
+wrapKey ::
+        (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
+          SubtleCrypto ->
+            format ->
+              Maybe CryptoKey ->
+                Maybe CryptoKey -> wrapAlgorithm -> m (Maybe Promise)
+wrapKey self format key wrappingKey wrapAlgorithm
+  = liftIO
+      (nullableToMaybe <$>
+         (js_wrapKey (self) (toJSString format) (maybeToNullable key)
+            (maybeToNullable wrappingKey)
+            (toJSString wrapAlgorithm)))
+ 
+foreign import javascript unsafe
+        "$1[\"unwrapKey\"]($2, $3, $4, $5,\n$6, $7, $8)" js_unwrapKey ::
+        SubtleCrypto ->
+          JSString ->
+            Nullable CryptoOperationData ->
+              Nullable CryptoKey ->
+                JSString -> JSString -> Bool -> JSVal -> IO (Nullable Promise)
+
+-- | <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) =>
+            SubtleCrypto ->
+              format ->
+                Maybe wrappedKey ->
+                  Maybe CryptoKey ->
+                    unwrapAlgorithm ->
+                      unwrappedKeyAlgorithm -> Bool -> [KeyUsage] -> m (Maybe Promise)
+unwrapKey self format wrappedKey unwrappingKey unwrapAlgorithm
+  unwrappedKeyAlgorithm extractable keyUsages
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_unwrapKey (self) (toJSString format)
+                (maybeToNullable (fmap toCryptoOperationData wrappedKey))
+                (maybeToNullable 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,57 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Text
+       (js_newText, newText, js_splitText, splitText, js_replaceWholeText,
+        replaceWholeText, js_getWholeText, getWholeText, Text, castToText,
+        gTypeText, IsText, toText)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"Text\"]($1)"
+        js_newText :: JSString -> IO Text
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation> 
+newText :: (MonadIO m, ToJSString data') => data' -> m Text
+newText data' = liftIO (js_newText (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"splitText\"]($2)"
+        js_splitText :: Text -> Word -> IO (Nullable Text)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
+splitText ::
+          (MonadIO m, IsText self) => self -> Word -> m (Maybe Text)
+splitText self offset
+  = liftIO (nullableToMaybe <$> (js_splitText (toText self) offset))
+ 
+foreign import javascript unsafe "$1[\"replaceWholeText\"]($2)"
+        js_replaceWholeText :: Text -> JSString -> IO (Nullable Text)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.replaceWholeText Mozilla Text.replaceWholeText documentation> 
+replaceWholeText ::
+                 (MonadIO m, IsText self, ToJSString content) =>
+                   self -> content -> m (Maybe Text)
+replaceWholeText self content
+  = liftIO
+      (nullableToMaybe <$>
+         (js_replaceWholeText (toText self) (toJSString content)))
+ 
+foreign import javascript unsafe "$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/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,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TextEvent
+       (js_initTextEvent, initTextEvent, js_getData, getData, TextEvent,
+        castToTextEvent, gTypeTextEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initTextEvent\"]($2, $3, $4,\n$5, $6)" js_initTextEvent ::
+        TextEvent ->
+          JSString -> Bool -> Bool -> Nullable Window -> 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 ->
+                  typeArg -> Bool -> Bool -> Maybe Window -> dataArg -> m ()
+initTextEvent self typeArg canBubbleArg cancelableArg viewArg
+  dataArg
+  = liftIO
+      (js_initTextEvent (self) (toJSString typeArg) canBubbleArg
+         cancelableArg
+         (maybeToNullable viewArg)
+         (toJSString dataArg))
+ 
+foreign import javascript unsafe "$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,26 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TextMetrics
+       (js_getWidth, getWidth, TextMetrics, castToTextMetrics,
+        gTypeTextMetrics)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,172 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, js_getActiveCues,
+        getActiveCues, cueChange, js_getRegions, getRegions,
+        js_getSourceBuffer, getSourceBuffer, TextTrack, castToTextTrack,
+        gTypeTextTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"addCue\"]($2)" js_addCue ::
+        TextTrack -> Nullable TextTrackCue -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addCue Mozilla TextTrack.addCue documentation> 
+addCue ::
+       (MonadIO m, IsTextTrackCue cue) => TextTrack -> Maybe cue -> m ()
+addCue self cue
+  = liftIO
+      (js_addCue (self) (maybeToNullable (fmap toTextTrackCue cue)))
+ 
+foreign import javascript unsafe "$1[\"removeCue\"]($2)"
+        js_removeCue :: TextTrack -> Nullable TextTrackCue -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeCue Mozilla TextTrack.removeCue documentation> 
+removeCue ::
+          (MonadIO m, IsTextTrackCue cue) => TextTrack -> Maybe cue -> m ()
+removeCue self cue
+  = liftIO
+      (js_removeCue (self) (maybeToNullable (fmap toTextTrackCue cue)))
+ 
+foreign import javascript unsafe "$1[\"addRegion\"]($2)"
+        js_addRegion :: TextTrack -> Nullable 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) (maybeToNullable region))
+ 
+foreign import javascript unsafe "$1[\"removeRegion\"]($2)"
+        js_removeRegion :: TextTrack -> Nullable 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) (maybeToNullable region))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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)))
+ 
+foreign import javascript unsafe "$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.oncuechange Mozilla TextTrack.oncuechange documentation> 
+cueChange :: EventName TextTrack Event
+cueChange = unsafeEventName (toJSString "cuechange")
+ 
+foreign import javascript unsafe "$1[\"regions\"]" js_getRegions ::
+        TextTrack -> IO (Nullable VTTRegionList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.regions Mozilla TextTrack.regions documentation> 
+getRegions :: (MonadIO m) => TextTrack -> m (Maybe VTTRegionList)
+getRegions self
+  = liftIO (nullableToMaybe <$> (js_getRegions (self)))
+ 
+foreign import javascript unsafe "$1[\"sourceBuffer\"]"
+        js_getSourceBuffer :: TextTrack -> IO (Nullable SourceBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.sourceBuffer Mozilla TextTrack.sourceBuffer documentation> 
+getSourceBuffer ::
+                (MonadIO m) => TextTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self
+  = liftIO (nullableToMaybe <$> (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,125 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TextTrackCue
+       (js_newTextTrackCue, newTextTrackCue, 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,
+        castToTextTrackCue, gTypeTextTrackCue, IsTextTrackCue,
+        toTextTrackCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"TextTrackCue\"]($1,\n$2, $3)" js_newTextTrackCue ::
+        Double -> Double -> JSString -> IO TextTrackCue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue Mozilla TextTrackCue documentation> 
+newTextTrackCue ::
+                (MonadIO m, ToJSString text) =>
+                  Double -> Double -> text -> m TextTrackCue
+newTextTrackCue startTime endTime text
+  = liftIO (js_newTextTrackCue startTime endTime (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        TextTrackCue -> IO (Nullable TextTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.track Mozilla TextTrackCue.track documentation> 
+getTrack ::
+         (MonadIO m, IsTextTrackCue self) => self -> m (Maybe TextTrack)
+getTrack self
+  = liftIO (nullableToMaybe <$> (js_getTrack (toTextTrackCue self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,47 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TextTrackCueList
+       (js_item, item, js_getCueById, getCueById, js_getLength, getLength,
+        TextTrackCueList, castToTextTrackCueList, gTypeTextTrackCueList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        TextTrackCueList -> Word -> IO (Nullable TextTrackCue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
+item ::
+     (MonadIO m) => TextTrackCueList -> Word -> m (Maybe TextTrackCue)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"getCueById\"]($2)"
+        js_getCueById ::
+        TextTrackCueList -> JSString -> IO (Nullable TextTrackCue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
+getCueById ::
+           (MonadIO m, ToJSString id) =>
+             TextTrackCueList -> id -> m (Maybe TextTrackCue)
+getCueById self id
+  = liftIO
+      (nullableToMaybe <$> (js_getCueById (self) (toJSString id)))
+ 
+foreign import javascript unsafe "$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,59 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TextTrackList
+       (js_item, item, js_getTrackById, getTrackById, js_getLength,
+        getLength, addTrack, change, removeTrack, TextTrackList,
+        castToTextTrackList, gTypeTextTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        TextTrackList -> Word -> IO (Nullable TextTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
+item :: (MonadIO m) => TextTrackList -> Word -> m (Maybe TextTrack)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"getTrackById\"]($2)"
+        js_getTrackById ::
+        TextTrackList -> JSString -> IO (Nullable TextTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadIO m, ToJSString id) =>
+               TextTrackList -> id -> m (Maybe TextTrack)
+getTrackById self id
+  = liftIO
+      (nullableToMaybe <$> (js_getTrackById (self) (toJSString id)))
+ 
+foreign import javascript unsafe "$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,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TimeRanges
+       (js_start, start, js_end, end, js_getLength, getLength, TimeRanges,
+        castToTimeRanges, gTypeTimeRanges)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)
+ 
+foreign import javascript unsafe "$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)
+ 
+foreign import javascript unsafe "$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,109 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToTouch, gTypeTouch)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"target\"]" js_getTarget ::
+        Touch -> IO (Nullable EventTarget)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.target Mozilla Touch.target documentation> 
+getTarget :: (MonadIO m) => Touch -> m (Maybe EventTarget)
+getTarget self = liftIO (nullableToMaybe <$> (js_getTarget (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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,114 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TouchEvent
+       (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, castToTouchEvent, gTypeTouchEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initTouchEvent\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12, $13, $14)"
+        js_initTouchEvent ::
+        TouchEvent ->
+          Nullable TouchList ->
+            Nullable TouchList ->
+              Nullable TouchList ->
+                JSString ->
+                  Nullable Window ->
+                    Int -> Int -> Int -> 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 ->
+                         type' ->
+                           Maybe Window ->
+                             Int -> Int -> Int -> 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) (maybeToNullable touches)
+         (maybeToNullable targetTouches)
+         (maybeToNullable changedTouches)
+         (toJSString type')
+         (maybeToNullable view)
+         screenX
+         screenY
+         clientX
+         clientY
+         ctrlKey
+         altKey
+         shiftKey
+         metaKey)
+ 
+foreign import javascript unsafe "$1[\"touches\"]" js_getTouches ::
+        TouchEvent -> IO (Nullable TouchList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.touches Mozilla TouchEvent.touches documentation> 
+getTouches :: (MonadIO m) => TouchEvent -> m (Maybe TouchList)
+getTouches self
+  = liftIO (nullableToMaybe <$> (js_getTouches (self)))
+ 
+foreign import javascript unsafe "$1[\"targetTouches\"]"
+        js_getTargetTouches :: TouchEvent -> IO (Nullable TouchList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.targetTouches Mozilla TouchEvent.targetTouches documentation> 
+getTargetTouches ::
+                 (MonadIO m) => TouchEvent -> m (Maybe TouchList)
+getTargetTouches self
+  = liftIO (nullableToMaybe <$> (js_getTargetTouches (self)))
+ 
+foreign import javascript unsafe "$1[\"changedTouches\"]"
+        js_getChangedTouches :: TouchEvent -> IO (Nullable TouchList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches Mozilla TouchEvent.changedTouches documentation> 
+getChangedTouches ::
+                  (MonadIO m) => TouchEvent -> m (Maybe TouchList)
+getChangedTouches self
+  = liftIO (nullableToMaybe <$> (js_getChangedTouches (self)))
+ 
+foreign import javascript unsafe "($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[\"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[\"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[\"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,34 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TouchList
+       (js_item, item, js_getLength, getLength, TouchList,
+        castToTouchList, gTypeTouchList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        TouchList -> Word -> IO (Nullable Touch)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
+item :: (MonadIO m) => TouchList -> Word -> m (Maybe Touch)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$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,26 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TrackEvent
+       (js_getTrack, getTrack, TrackEvent, castToTrackEvent,
+        gTypeTrackEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        TrackEvent -> IO (Nullable GObject)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
+getTrack :: (MonadIO m) => TrackEvent -> m (Maybe GObject)
+getTrack self = liftIO (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,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TransitionEvent
+       (js_getPropertyName, getPropertyName, js_getElapsedTime,
+        getElapsedTime, js_getPseudoElement, getPseudoElement,
+        TransitionEvent, castToTransitionEvent, gTypeTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,127 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TreeWalker
+       (js_parentNode, parentNode, js_firstChild, firstChild,
+        js_lastChild, lastChild, js_previousSibling, previousSibling,
+        js_nextSibling, nextSibling, js_previousNode, previousNode,
+        js_nextNode, nextNode, js_getRoot, getRoot, js_getWhatToShow,
+        getWhatToShow, js_getFilter, getFilter,
+        js_getExpandEntityReferences, getExpandEntityReferences,
+        js_setCurrentNode, setCurrentNode, js_getCurrentNode,
+        getCurrentNode, TreeWalker, castToTreeWalker, gTypeTreeWalker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"root\"]" js_getRoot ::
+        TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.root Mozilla TreeWalker.root documentation> 
+getRoot :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+getRoot self = liftIO (nullableToMaybe <$> (js_getRoot (self)))
+ 
+foreign import javascript unsafe "$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[\"filter\"]" js_getFilter ::
+        TreeWalker -> IO (Nullable NodeFilter)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.filter Mozilla TreeWalker.filter documentation> 
+getFilter :: (MonadIO m) => TreeWalker -> m (Maybe NodeFilter)
+getFilter self = liftIO (nullableToMaybe <$> (js_getFilter (self)))
+ 
+foreign import javascript unsafe
+        "($1[\"expandEntityReferences\"] ? 1 : 0)"
+        js_getExpandEntityReferences :: TreeWalker -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.expandEntityReferences Mozilla TreeWalker.expandEntityReferences documentation> 
+getExpandEntityReferences :: (MonadIO m) => TreeWalker -> m Bool
+getExpandEntityReferences self
+  = liftIO (js_getExpandEntityReferences (self))
+ 
+foreign import javascript unsafe "$1[\"currentNode\"] = $2;"
+        js_setCurrentNode :: TreeWalker -> Nullable Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
+setCurrentNode ::
+               (MonadIO m, IsNode val) => TreeWalker -> Maybe val -> m ()
+setCurrentNode self val
+  = liftIO
+      (js_setCurrentNode (self) (maybeToNullable (fmap toNode val)))
+ 
+foreign import javascript unsafe "$1[\"currentNode\"]"
+        js_getCurrentNode :: TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
+getCurrentNode :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+getCurrentNode self
+  = liftIO (nullableToMaybe <$> (js_getCurrentNode (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TypeConversions.hs b/src/GHCJS/DOM/JSFFI/Generated/TypeConversions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TypeConversions.hs
@@ -0,0 +1,332 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.TypeConversions
+       (js_setTestLong, setTestLong, js_getTestLong, getTestLong,
+        js_setTestEnforceRangeLong, setTestEnforceRangeLong,
+        js_getTestEnforceRangeLong, getTestEnforceRangeLong,
+        js_setTestUnsignedLong, setTestUnsignedLong,
+        js_getTestUnsignedLong, getTestUnsignedLong,
+        js_setTestEnforceRangeUnsignedLong,
+        setTestEnforceRangeUnsignedLong,
+        js_getTestEnforceRangeUnsignedLong,
+        getTestEnforceRangeUnsignedLong, js_setTestLongLong,
+        setTestLongLong, js_getTestLongLong, getTestLongLong,
+        js_setTestEnforceRangeLongLong, setTestEnforceRangeLongLong,
+        js_getTestEnforceRangeLongLong, getTestEnforceRangeLongLong,
+        js_setTestUnsignedLongLong, setTestUnsignedLongLong,
+        js_getTestUnsignedLongLong, getTestUnsignedLongLong,
+        js_setTestEnforceRangeUnsignedLongLong,
+        setTestEnforceRangeUnsignedLongLong,
+        js_getTestEnforceRangeUnsignedLongLong,
+        getTestEnforceRangeUnsignedLongLong, js_setTestByte, setTestByte,
+        js_getTestByte, getTestByte, js_setTestEnforceRangeByte,
+        setTestEnforceRangeByte, js_getTestEnforceRangeByte,
+        getTestEnforceRangeByte, js_setTestOctet, setTestOctet,
+        js_getTestOctet, getTestOctet, js_setTestEnforceRangeOctet,
+        setTestEnforceRangeOctet, js_getTestEnforceRangeOctet,
+        getTestEnforceRangeOctet, js_setTestShort, setTestShort,
+        js_getTestShort, getTestShort, js_setTestEnforceRangeShort,
+        setTestEnforceRangeShort, js_getTestEnforceRangeShort,
+        getTestEnforceRangeShort, js_setTestUnsignedShort,
+        setTestUnsignedShort, js_getTestUnsignedShort,
+        getTestUnsignedShort, js_setTestEnforceRangeUnsignedShort,
+        setTestEnforceRangeUnsignedShort,
+        js_getTestEnforceRangeUnsignedShort,
+        getTestEnforceRangeUnsignedShort, TypeConversions,
+        castToTypeConversions, gTypeTypeConversions)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"testLong\"] = $2;"
+        js_setTestLong :: TypeConversions -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLong Mozilla TypeConversions.testLong documentation> 
+setTestLong :: (MonadIO m) => TypeConversions -> Int -> m ()
+setTestLong self val = liftIO (js_setTestLong (self) val)
+ 
+foreign import javascript unsafe "$1[\"testLong\"]" js_getTestLong
+        :: TypeConversions -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLong Mozilla TypeConversions.testLong documentation> 
+getTestLong :: (MonadIO m) => TypeConversions -> m Int
+getTestLong self = liftIO (js_getTestLong (self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeLong\"] = $2;" js_setTestEnforceRangeLong ::
+        TypeConversions -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeLong Mozilla TypeConversions.testEnforceRangeLong documentation> 
+setTestEnforceRangeLong ::
+                        (MonadIO m) => TypeConversions -> Int -> m ()
+setTestEnforceRangeLong self val
+  = liftIO (js_setTestEnforceRangeLong (self) val)
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeLong\"]"
+        js_getTestEnforceRangeLong :: TypeConversions -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeLong Mozilla TypeConversions.testEnforceRangeLong documentation> 
+getTestEnforceRangeLong :: (MonadIO m) => TypeConversions -> m Int
+getTestEnforceRangeLong self
+  = liftIO (js_getTestEnforceRangeLong (self))
+ 
+foreign import javascript unsafe "$1[\"testUnsignedLong\"] = $2;"
+        js_setTestUnsignedLong :: TypeConversions -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedLong Mozilla TypeConversions.testUnsignedLong documentation> 
+setTestUnsignedLong ::
+                    (MonadIO m) => TypeConversions -> Word -> m ()
+setTestUnsignedLong self val
+  = liftIO (js_setTestUnsignedLong (self) val)
+ 
+foreign import javascript unsafe "$1[\"testUnsignedLong\"]"
+        js_getTestUnsignedLong :: TypeConversions -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedLong Mozilla TypeConversions.testUnsignedLong documentation> 
+getTestUnsignedLong :: (MonadIO m) => TypeConversions -> m Word
+getTestUnsignedLong self = liftIO (js_getTestUnsignedLong (self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedLong\"] = $2;"
+        js_setTestEnforceRangeUnsignedLong ::
+        TypeConversions -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedLong Mozilla TypeConversions.testEnforceRangeUnsignedLong documentation> 
+setTestEnforceRangeUnsignedLong ::
+                                (MonadIO m) => TypeConversions -> Word -> m ()
+setTestEnforceRangeUnsignedLong self val
+  = liftIO (js_setTestEnforceRangeUnsignedLong (self) val)
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedLong\"]"
+        js_getTestEnforceRangeUnsignedLong :: TypeConversions -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedLong Mozilla TypeConversions.testEnforceRangeUnsignedLong documentation> 
+getTestEnforceRangeUnsignedLong ::
+                                (MonadIO m) => TypeConversions -> m Word
+getTestEnforceRangeUnsignedLong self
+  = liftIO (js_getTestEnforceRangeUnsignedLong (self))
+ 
+foreign import javascript unsafe "$1[\"testLongLong\"] = $2;"
+        js_setTestLongLong :: TypeConversions -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLongLong Mozilla TypeConversions.testLongLong documentation> 
+setTestLongLong :: (MonadIO m) => TypeConversions -> Int64 -> m ()
+setTestLongLong self val
+  = liftIO (js_setTestLongLong (self) (fromIntegral val))
+ 
+foreign import javascript unsafe "$1[\"testLongLong\"]"
+        js_getTestLongLong :: TypeConversions -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLongLong Mozilla TypeConversions.testLongLong documentation> 
+getTestLongLong :: (MonadIO m) => TypeConversions -> m Int64
+getTestLongLong self
+  = liftIO (round <$> (js_getTestLongLong (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeLongLong\"] = $2;"
+        js_setTestEnforceRangeLongLong ::
+        TypeConversions -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeLongLong Mozilla TypeConversions.testEnforceRangeLongLong documentation> 
+setTestEnforceRangeLongLong ::
+                            (MonadIO m) => TypeConversions -> Int64 -> m ()
+setTestEnforceRangeLongLong self val
+  = liftIO (js_setTestEnforceRangeLongLong (self) (fromIntegral val))
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeLongLong\"]"
+        js_getTestEnforceRangeLongLong :: TypeConversions -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeLongLong Mozilla TypeConversions.testEnforceRangeLongLong documentation> 
+getTestEnforceRangeLongLong ::
+                            (MonadIO m) => TypeConversions -> m Int64
+getTestEnforceRangeLongLong self
+  = liftIO (round <$> (js_getTestEnforceRangeLongLong (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"testUnsignedLongLong\"] = $2;" js_setTestUnsignedLongLong ::
+        TypeConversions -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedLongLong Mozilla TypeConversions.testUnsignedLongLong documentation> 
+setTestUnsignedLongLong ::
+                        (MonadIO m) => TypeConversions -> Word64 -> m ()
+setTestUnsignedLongLong self val
+  = liftIO (js_setTestUnsignedLongLong (self) (fromIntegral val))
+ 
+foreign import javascript unsafe "$1[\"testUnsignedLongLong\"]"
+        js_getTestUnsignedLongLong :: TypeConversions -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedLongLong Mozilla TypeConversions.testUnsignedLongLong documentation> 
+getTestUnsignedLongLong ::
+                        (MonadIO m) => TypeConversions -> m Word64
+getTestUnsignedLongLong self
+  = liftIO (round <$> (js_getTestUnsignedLongLong (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedLongLong\"] = $2;"
+        js_setTestEnforceRangeUnsignedLongLong ::
+        TypeConversions -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedLongLong Mozilla TypeConversions.testEnforceRangeUnsignedLongLong documentation> 
+setTestEnforceRangeUnsignedLongLong ::
+                                    (MonadIO m) => TypeConversions -> Word64 -> m ()
+setTestEnforceRangeUnsignedLongLong self val
+  = liftIO
+      (js_setTestEnforceRangeUnsignedLongLong (self) (fromIntegral val))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedLongLong\"]"
+        js_getTestEnforceRangeUnsignedLongLong ::
+        TypeConversions -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedLongLong Mozilla TypeConversions.testEnforceRangeUnsignedLongLong documentation> 
+getTestEnforceRangeUnsignedLongLong ::
+                                    (MonadIO m) => TypeConversions -> m Word64
+getTestEnforceRangeUnsignedLongLong self
+  = liftIO
+      (round <$> (js_getTestEnforceRangeUnsignedLongLong (self)))
+ 
+foreign import javascript unsafe "$1[\"testByte\"] = $2;"
+        js_setTestByte :: TypeConversions -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testByte Mozilla TypeConversions.testByte documentation> 
+setTestByte :: (MonadIO m) => TypeConversions -> Int -> m ()
+setTestByte self val = liftIO (js_setTestByte (self) val)
+ 
+foreign import javascript unsafe "$1[\"testByte\"]" js_getTestByte
+        :: TypeConversions -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testByte Mozilla TypeConversions.testByte documentation> 
+getTestByte :: (MonadIO m) => TypeConversions -> m Int
+getTestByte self = liftIO (js_getTestByte (self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeByte\"] = $2;" js_setTestEnforceRangeByte ::
+        TypeConversions -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeByte Mozilla TypeConversions.testEnforceRangeByte documentation> 
+setTestEnforceRangeByte ::
+                        (MonadIO m) => TypeConversions -> Int -> m ()
+setTestEnforceRangeByte self val
+  = liftIO (js_setTestEnforceRangeByte (self) val)
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeByte\"]"
+        js_getTestEnforceRangeByte :: TypeConversions -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeByte Mozilla TypeConversions.testEnforceRangeByte documentation> 
+getTestEnforceRangeByte :: (MonadIO m) => TypeConversions -> m Int
+getTestEnforceRangeByte self
+  = liftIO (js_getTestEnforceRangeByte (self))
+ 
+foreign import javascript unsafe "$1[\"testOctet\"] = $2;"
+        js_setTestOctet :: TypeConversions -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testOctet Mozilla TypeConversions.testOctet documentation> 
+setTestOctet :: (MonadIO m) => TypeConversions -> Word -> m ()
+setTestOctet self val = liftIO (js_setTestOctet (self) val)
+ 
+foreign import javascript unsafe "$1[\"testOctet\"]"
+        js_getTestOctet :: TypeConversions -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testOctet Mozilla TypeConversions.testOctet documentation> 
+getTestOctet :: (MonadIO m) => TypeConversions -> m Word
+getTestOctet self = liftIO (js_getTestOctet (self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeOctet\"] = $2;" js_setTestEnforceRangeOctet
+        :: TypeConversions -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeOctet Mozilla TypeConversions.testEnforceRangeOctet documentation> 
+setTestEnforceRangeOctet ::
+                         (MonadIO m) => TypeConversions -> Word -> m ()
+setTestEnforceRangeOctet self val
+  = liftIO (js_setTestEnforceRangeOctet (self) val)
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeOctet\"]"
+        js_getTestEnforceRangeOctet :: TypeConversions -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeOctet Mozilla TypeConversions.testEnforceRangeOctet documentation> 
+getTestEnforceRangeOctet ::
+                         (MonadIO m) => TypeConversions -> m Word
+getTestEnforceRangeOctet self
+  = liftIO (js_getTestEnforceRangeOctet (self))
+ 
+foreign import javascript unsafe "$1[\"testShort\"] = $2;"
+        js_setTestShort :: TypeConversions -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testShort Mozilla TypeConversions.testShort documentation> 
+setTestShort :: (MonadIO m) => TypeConversions -> Int -> m ()
+setTestShort self val = liftIO (js_setTestShort (self) val)
+ 
+foreign import javascript unsafe "$1[\"testShort\"]"
+        js_getTestShort :: TypeConversions -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testShort Mozilla TypeConversions.testShort documentation> 
+getTestShort :: (MonadIO m) => TypeConversions -> m Int
+getTestShort self = liftIO (js_getTestShort (self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeShort\"] = $2;" js_setTestEnforceRangeShort
+        :: TypeConversions -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeShort Mozilla TypeConversions.testEnforceRangeShort documentation> 
+setTestEnforceRangeShort ::
+                         (MonadIO m) => TypeConversions -> Int -> m ()
+setTestEnforceRangeShort self val
+  = liftIO (js_setTestEnforceRangeShort (self) val)
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeShort\"]"
+        js_getTestEnforceRangeShort :: TypeConversions -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeShort Mozilla TypeConversions.testEnforceRangeShort documentation> 
+getTestEnforceRangeShort :: (MonadIO m) => TypeConversions -> m Int
+getTestEnforceRangeShort self
+  = liftIO (js_getTestEnforceRangeShort (self))
+ 
+foreign import javascript unsafe "$1[\"testUnsignedShort\"] = $2;"
+        js_setTestUnsignedShort :: TypeConversions -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedShort Mozilla TypeConversions.testUnsignedShort documentation> 
+setTestUnsignedShort ::
+                     (MonadIO m) => TypeConversions -> Word -> m ()
+setTestUnsignedShort self val
+  = liftIO (js_setTestUnsignedShort (self) val)
+ 
+foreign import javascript unsafe "$1[\"testUnsignedShort\"]"
+        js_getTestUnsignedShort :: TypeConversions -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testUnsignedShort Mozilla TypeConversions.testUnsignedShort documentation> 
+getTestUnsignedShort :: (MonadIO m) => TypeConversions -> m Word
+getTestUnsignedShort self = liftIO (js_getTestUnsignedShort (self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedShort\"] = $2;"
+        js_setTestEnforceRangeUnsignedShort ::
+        TypeConversions -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedShort Mozilla TypeConversions.testEnforceRangeUnsignedShort documentation> 
+setTestEnforceRangeUnsignedShort ::
+                                 (MonadIO m) => TypeConversions -> Word -> m ()
+setTestEnforceRangeUnsignedShort self val
+  = liftIO (js_setTestEnforceRangeUnsignedShort (self) val)
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedShort\"]"
+        js_getTestEnforceRangeUnsignedShort :: TypeConversions -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testEnforceRangeUnsignedShort Mozilla TypeConversions.testEnforceRangeUnsignedShort documentation> 
+getTestEnforceRangeUnsignedShort ::
+                                 (MonadIO m) => TypeConversions -> m Word
+getTestEnforceRangeUnsignedShort self
+  = liftIO (js_getTestEnforceRangeUnsignedShort (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,101 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.UIEvent
+       (js_initUIEvent, initUIEvent, js_getView, getView, js_getDetail,
+        getDetail, js_getKeyCode, getKeyCode, js_getCharCode, getCharCode,
+        js_getLayerX, getLayerX, js_getLayerY, getLayerY, js_getPageX,
+        getPageX, js_getPageY, getPageY, js_getWhich, getWhich, UIEvent,
+        castToUIEvent, gTypeUIEvent, IsUIEvent, toUIEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initUIEvent\"]($2, $3, $4,\n$5, $6)" js_initUIEvent ::
+        UIEvent ->
+          JSString -> Bool -> Bool -> Nullable Window -> 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 -> type' -> Bool -> Bool -> Maybe Window -> Int -> m ()
+initUIEvent self type' canBubble cancelable view detail
+  = liftIO
+      (js_initUIEvent (toUIEvent self) (toJSString type') canBubble
+         cancelable
+         (maybeToNullable view)
+         detail)
+ 
+foreign import javascript unsafe "$1[\"view\"]" js_getView ::
+        UIEvent -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.view Mozilla UIEvent.view documentation> 
+getView :: (MonadIO m, IsUIEvent self) => self -> m (Maybe Window)
+getView self
+  = liftIO (nullableToMaybe <$> (js_getView (toUIEvent self)))
+ 
+foreign import javascript unsafe "$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[\"keyCode\"]" js_getKeyCode ::
+        UIEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.keyCode Mozilla UIEvent.keyCode documentation> 
+getKeyCode :: (MonadIO m, IsUIEvent self) => self -> m Int
+getKeyCode self = liftIO (js_getKeyCode (toUIEvent self))
+ 
+foreign import javascript unsafe "$1[\"charCode\"]" js_getCharCode
+        :: UIEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.charCode Mozilla UIEvent.charCode documentation> 
+getCharCode :: (MonadIO m, IsUIEvent self) => self -> m Int
+getCharCode self = liftIO (js_getCharCode (toUIEvent self))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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/UIRequestEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/UIRequestEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/UIRequestEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.UIRequestEvent
+       (js_getReceiver, getReceiver, UIRequestEvent, castToUIRequestEvent,
+        gTypeUIRequestEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"receiver\"]" js_getReceiver
+        :: UIRequestEvent -> IO (Nullable EventTarget)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent.receiver Mozilla UIRequestEvent.receiver documentation> 
+getReceiver ::
+            (MonadIO m) => UIRequestEvent -> m (Maybe EventTarget)
+getReceiver self
+  = liftIO (nullableToMaybe <$> (js_getReceiver (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,96 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.URL
+       (js_newURL, newURL, js_newURL', newURL', js_newURL'', newURL'',
+        js_createObjectURL, createObjectURL, js_revokeObjectURL,
+        revokeObjectURL, js_createObjectURLSource, createObjectURLSource,
+        js_createObjectURLStream, createObjectURLStream, URL, castToURL,
+        gTypeURL)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "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 unsafe "new window[\"URL\"]($1, $2)"
+        js_newURL'' :: JSString -> Nullable URL -> IO URL
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
+newURL'' ::
+         (MonadIO m, ToJSString url) => url -> Maybe URL -> m URL
+newURL'' url base
+  = liftIO (js_newURL'' (toJSString url) (maybeToNullable base))
+ 
+foreign import javascript unsafe "$1[\"createObjectURL\"]($2)"
+        js_createObjectURL ::
+        URL -> Nullable Blob -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURL ::
+                (MonadIO m, IsBlob blob, FromJSString result) =>
+                  URL -> Maybe blob -> m (Maybe result)
+createObjectURL self blob
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_createObjectURL (self) (maybeToNullable (fmap toBlob blob))))
+ 
+foreign import javascript unsafe "$1[\"revokeObjectURL\"]($2)"
+        js_revokeObjectURL :: URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.revokeObjectURL Mozilla URL.revokeObjectURL documentation> 
+revokeObjectURL ::
+                (MonadIO m, ToJSString url) => URL -> url -> m ()
+revokeObjectURL self url
+  = liftIO (js_revokeObjectURL (self) (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"createObjectURL\"]($2)"
+        js_createObjectURLSource ::
+        URL -> Nullable MediaSource -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLSource ::
+                      (MonadIO m, FromJSString result) =>
+                        URL -> Maybe MediaSource -> m (Maybe result)
+createObjectURLSource self source
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_createObjectURLSource (self) (maybeToNullable source)))
+ 
+foreign import javascript unsafe "$1[\"createObjectURL\"]($2)"
+        js_createObjectURLStream ::
+        URL -> Nullable MediaStream -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLStream ::
+                      (MonadIO m, FromJSString result) =>
+                        URL -> Maybe MediaStream -> m (Maybe result)
+createObjectURLStream self stream
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_createObjectURLStream (self) (maybeToNullable stream)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLUtils.hs b/src/GHCJS/DOM/JSFFI/Generated/URLUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLUtils.hs
@@ -0,0 +1,213 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.URLUtils
+       (js_toString, toString, 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,
+        URLUtils, castToURLUtils, gTypeURLUtils)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: URLUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.toString Mozilla URLUtils.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => URLUtils -> m result
+toString self = liftIO (fromJSString <$> (js_toString (self)))
+ 
+foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+        URLUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.href Mozilla URLUtils.href documentation> 
+setHref :: (MonadIO m, ToJSString val) => URLUtils -> val -> m ()
+setHref self val = liftIO (js_setHref (self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        URLUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.href Mozilla URLUtils.href documentation> 
+getHref :: (MonadIO m, FromJSString result) => URLUtils -> m result
+getHref self = liftIO (fromJSString <$> (js_getHref (self)))
+ 
+foreign import javascript unsafe "$1[\"origin\"]" js_getOrigin ::
+        URLUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.origin Mozilla URLUtils.origin documentation> 
+getOrigin ::
+          (MonadIO m, FromJSString result) => URLUtils -> m result
+getOrigin self = liftIO (fromJSString <$> (js_getOrigin (self)))
+ 
+foreign import javascript unsafe "$1[\"protocol\"] = $2;"
+        js_setProtocol :: URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.protocol Mozilla URLUtils.protocol documentation> 
+setProtocol ::
+            (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setProtocol self val
+  = liftIO (js_setProtocol (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.protocol Mozilla URLUtils.protocol documentation> 
+getProtocol ::
+            (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getProtocol self
+  = liftIO (fromMaybeJSString <$> (js_getProtocol (self)))
+ 
+foreign import javascript unsafe "$1[\"username\"] = $2;"
+        js_setUsername :: URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.username Mozilla URLUtils.username documentation> 
+setUsername ::
+            (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setUsername self val
+  = liftIO (js_setUsername (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"username\"]" js_getUsername
+        :: URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.username Mozilla URLUtils.username documentation> 
+getUsername ::
+            (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getUsername self
+  = liftIO (fromMaybeJSString <$> (js_getUsername (self)))
+ 
+foreign import javascript unsafe "$1[\"password\"] = $2;"
+        js_setPassword :: URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.password Mozilla URLUtils.password documentation> 
+setPassword ::
+            (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setPassword self val
+  = liftIO (js_setPassword (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"password\"]" js_getPassword
+        :: URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.password Mozilla URLUtils.password documentation> 
+getPassword ::
+            (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getPassword self
+  = liftIO (fromMaybeJSString <$> (js_getPassword (self)))
+ 
+foreign import javascript unsafe "$1[\"host\"] = $2;" js_setHost ::
+        URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.host Mozilla URLUtils.host documentation> 
+setHost ::
+        (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setHost self val = liftIO (js_setHost (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"host\"]" js_getHost ::
+        URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.host Mozilla URLUtils.host documentation> 
+getHost ::
+        (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getHost self = liftIO (fromMaybeJSString <$> (js_getHost (self)))
+ 
+foreign import javascript unsafe "$1[\"hostname\"] = $2;"
+        js_setHostname :: URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hostname Mozilla URLUtils.hostname documentation> 
+setHostname ::
+            (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setHostname self val
+  = liftIO (js_setHostname (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"hostname\"]" js_getHostname
+        :: URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hostname Mozilla URLUtils.hostname documentation> 
+getHostname ::
+            (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getHostname self
+  = liftIO (fromMaybeJSString <$> (js_getHostname (self)))
+ 
+foreign import javascript unsafe "$1[\"port\"] = $2;" js_setPort ::
+        URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.port Mozilla URLUtils.port documentation> 
+setPort ::
+        (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setPort self val = liftIO (js_setPort (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"port\"]" js_getPort ::
+        URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.port Mozilla URLUtils.port documentation> 
+getPort ::
+        (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getPort self = liftIO (fromMaybeJSString <$> (js_getPort (self)))
+ 
+foreign import javascript unsafe "$1[\"pathname\"] = $2;"
+        js_setPathname :: URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.pathname Mozilla URLUtils.pathname documentation> 
+setPathname ::
+            (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setPathname self val
+  = liftIO (js_setPathname (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"pathname\"]" js_getPathname
+        :: URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.pathname Mozilla URLUtils.pathname documentation> 
+getPathname ::
+            (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getPathname self
+  = liftIO (fromMaybeJSString <$> (js_getPathname (self)))
+ 
+foreign import javascript unsafe "$1[\"search\"] = $2;"
+        js_setSearch :: URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.search Mozilla URLUtils.search documentation> 
+setSearch ::
+          (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setSearch self val
+  = liftIO (js_setSearch (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"search\"]" js_getSearch ::
+        URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.search Mozilla URLUtils.search documentation> 
+getSearch ::
+          (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getSearch self
+  = liftIO (fromMaybeJSString <$> (js_getSearch (self)))
+ 
+foreign import javascript unsafe "$1[\"hash\"] = $2;" js_setHash ::
+        URLUtils -> Nullable JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hash Mozilla URLUtils.hash documentation> 
+setHash ::
+        (MonadIO m, ToJSString val) => URLUtils -> Maybe val -> m ()
+setHash self val = liftIO (js_setHash (self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"hash\"]" js_getHash ::
+        URLUtils -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hash Mozilla URLUtils.hash documentation> 
+getHash ::
+        (MonadIO m, FromJSString result) => URLUtils -> m (Maybe result)
+getHash self = liftIO (fromMaybeJSString <$> (js_getHash (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,32 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.UserMessageHandler
+       (js_postMessage, postMessage, UserMessageHandler,
+        castToUserMessageHandler, gTypeUserMessageHandler)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2)"
+        js_postMessage ::
+        UserMessageHandler -> Nullable SerializedScriptValue -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler.postMessage Mozilla UserMessageHandler.postMessage documentation> 
+postMessage ::
+            (MonadIO m, IsSerializedScriptValue message) =>
+              UserMessageHandler -> Maybe message -> m ()
+postMessage self message
+  = liftIO
+      (js_postMessage (self)
+         (maybeToNullable (fmap 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,163 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.VTTCue
+       (js_newVTTCue, newVTTCue, js_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,
+        castToVTTCue, gTypeVTTCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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[\"getCueAsHTML\"]()"
+        js_getCueAsHTML :: VTTCue -> IO (Nullable DocumentFragment)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
+getCueAsHTML :: (MonadIO m) => VTTCue -> m (Maybe DocumentFragment)
+getCueAsHTML self
+  = liftIO (nullableToMaybe <$> (js_getCueAsHTML (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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[\"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[\"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[\"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[\"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,157 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToVTTRegion, gTypeVTTRegion)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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[\"track\"]" js_getTrack ::
+        VTTRegion -> IO (Nullable TextTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.track Mozilla VTTRegion.track documentation> 
+getTrack :: (MonadIO m) => VTTRegion -> m (Maybe TextTrack)
+getTrack self = liftIO (nullableToMaybe <$> (js_getTrack (self)))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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 unsafe "$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[\"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,46 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.VTTRegionList
+       (js_item, item, js_getRegionById, getRegionById, js_getLength,
+        getLength, VTTRegionList, castToVTTRegionList, gTypeVTTRegionList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($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))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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,95 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.ValidityState
+       (js_getValueMissing, getValueMissing, js_getTypeMismatch,
+        getTypeMismatch, js_getPatternMismatch, getPatternMismatch,
+        js_getTooLong, getTooLong, js_getRangeUnderflow, getRangeUnderflow,
+        js_getRangeOverflow, getRangeOverflow, js_getStepMismatch,
+        getStepMismatch, js_getBadInput, getBadInput, js_getCustomError,
+        getCustomError, js_getValid, getValid, ValidityState,
+        castToValidityState, gTypeValidityState)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "($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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,64 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality
+       (js_getCreationTime, getCreationTime, js_getTotalVideoFrames,
+        getTotalVideoFrames, js_getDroppedVideoFrames,
+        getDroppedVideoFrames, js_getCorruptedVideoFrames,
+        getCorruptedVideoFrames, js_getTotalFrameDelay, getTotalFrameDelay,
+        VideoPlaybackQuality, castToVideoPlaybackQuality,
+        gTypeVideoPlaybackQuality)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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/VideoStreamTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoStreamTrack.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.VideoStreamTrack
+       (js_newVideoStreamTrack, newVideoStreamTrack, VideoStreamTrack,
+        castToVideoStreamTrack, gTypeVideoStreamTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"VideoStreamTrack\"]($1)" js_newVideoStreamTrack ::
+        Nullable Dictionary -> IO VideoStreamTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoStreamTrack Mozilla VideoStreamTrack documentation> 
+newVideoStreamTrack ::
+                    (MonadIO m, IsDictionary videoConstraints) =>
+                      Maybe videoConstraints -> m VideoStreamTrack
+newVideoStreamTrack videoConstraints
+  = liftIO
+      (js_newVideoStreamTrack
+         (maybeToNullable (fmap toDictionary videoConstraints)))
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,93 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToVideoTrack, gTypeVideoTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"sourceBuffer\"]"
+        js_getSourceBuffer :: VideoTrack -> IO (Nullable SourceBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.sourceBuffer Mozilla VideoTrack.sourceBuffer documentation> 
+getSourceBuffer ::
+                (MonadIO m) => VideoTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self
+  = liftIO (nullableToMaybe <$> (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,68 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.VideoTrackList
+       (js_item, item, js_getTrackById, getTrackById, js_getLength,
+        getLength, js_getSelectedIndex, getSelectedIndex, change, addTrack,
+        removeTrack, VideoTrackList, castToVideoTrackList,
+        gTypeVideoTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        VideoTrackList -> Word -> IO (Nullable VideoTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
+item ::
+     (MonadIO m) => VideoTrackList -> Word -> m (Maybe VideoTrack)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (self) index))
+ 
+foreign import javascript unsafe "$1[\"getTrackById\"]($2)"
+        js_getTrackById ::
+        VideoTrackList -> JSString -> IO (Nullable VideoTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadIO m, ToJSString id) =>
+               VideoTrackList -> id -> m (Maybe VideoTrack)
+getTrackById self id
+  = liftIO
+      (nullableToMaybe <$> (js_getTrackById (self) (toJSString id)))
+ 
+foreign import javascript unsafe "$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[\"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,34 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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 Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,55 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WaveShaperNode
+       (js_setCurve, setCurve, js_getCurve, getCurve, js_setOversample,
+        setOversample, js_getOversample, getOversample, WaveShaperNode,
+        castToWaveShaperNode, gTypeWaveShaperNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"curve\"] = $2;" js_setCurve
+        :: WaveShaperNode -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
+setCurve ::
+         (MonadIO m, IsFloat32Array val) =>
+           WaveShaperNode -> Maybe val -> m ()
+setCurve self val
+  = liftIO
+      (js_setCurve (self) (maybeToNullable (fmap toFloat32Array val)))
+ 
+foreign import javascript unsafe "$1[\"curve\"]" js_getCurve ::
+        WaveShaperNode -> IO (Nullable Float32Array)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
+getCurve :: (MonadIO m) => WaveShaperNode -> m (Maybe Float32Array)
+getCurve self = liftIO (nullableToMaybe <$> (js_getCurve (self)))
+ 
+foreign import javascript unsafe "$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[\"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,1953 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
+       (js_copyBufferSubData, copyBufferSubData, js_getBufferSubDataView,
+        getBufferSubDataView, js_getBufferSubData, getBufferSubData,
+        js_getFramebufferAttachmentParameter,
+        getFramebufferAttachmentParameter, js_blitFramebuffer,
+        blitFramebuffer, js_framebufferTextureLayer,
+        framebufferTextureLayer, js_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_texSubImage3DData, texSubImage3DData, js_texSubImage3D,
+        texSubImage3D, js_texSubImage3DCanvas, texSubImage3DCanvas,
+        js_texSubImage3DVideo, texSubImage3DVideo, js_copyTexSubImage3D,
+        copyTexSubImage3D, js_compressedTexImage3D, compressedTexImage3D,
+        js_compressedTexSubImage3D, compressedTexSubImage3D,
+        js_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, js_deleteQuery,
+        deleteQuery, js_isQuery, isQuery, js_beginQuery, beginQuery,
+        js_endQuery, endQuery, js_getQuery, getQuery, js_getQueryParameter,
+        getQueryParameter, js_createSampler, createSampler,
+        js_deleteSampler, deleteSampler, js_isSampler, isSampler,
+        js_bindSampler, bindSampler, js_samplerParameteri,
+        samplerParameteri, js_samplerParameterf, samplerParameterf,
+        js_getSamplerParameter, getSamplerParameter, js_fenceSync,
+        fenceSync, js_isSync, isSync, js_deleteSync, deleteSync,
+        js_clientWaitSync, clientWaitSync, js_waitSync, waitSync,
+        js_getSyncParameter, getSyncParameter, js_createTransformFeedback,
+        createTransformFeedback, js_deleteTransformFeedback,
+        deleteTransformFeedback, js_isTransformFeedback,
+        isTransformFeedback, js_bindTransformFeedback,
+        bindTransformFeedback, js_beginTransformFeedback,
+        beginTransformFeedback, js_endTransformFeedback,
+        endTransformFeedback, js_transformFeedbackVaryings,
+        transformFeedbackVaryings, js_getTransformFeedbackVarying,
+        getTransformFeedbackVarying, js_pauseTransformFeedback,
+        pauseTransformFeedback, js_resumeTransformFeedback,
+        resumeTransformFeedback, js_bindBufferBase, bindBufferBase,
+        js_bindBufferRange, bindBufferRange, js_getIndexedParameter,
+        getIndexedParameter, js_getUniformIndices, getUniformIndices,
+        js_getActiveUniforms, getActiveUniforms, js_getUniformBlockIndex,
+        getUniformBlockIndex, js_getActiveUniformBlockParameter,
+        getActiveUniformBlockParameter, js_getActiveUniformBlockName,
+        getActiveUniformBlockName, js_uniformBlockBinding,
+        uniformBlockBinding, js_createVertexArray, createVertexArray,
+        js_deleteVertexArray, deleteVertexArray, js_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 TIMEOUT_IGNORED, WebGL2RenderingContext,
+        castToWebGL2RenderingContext, gTypeWebGL2RenderingContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$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[\"getBufferSubData\"]($2, $3,\n$4)" js_getBufferSubDataView ::
+        WebGL2RenderingContext ->
+          GLenum -> Double -> Nullable ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getBufferSubData Mozilla WebGL2RenderingContext.getBufferSubData documentation> 
+getBufferSubDataView ::
+                     (MonadIO m, IsArrayBufferView returnedData) =>
+                       WebGL2RenderingContext ->
+                         GLenum -> GLintptr -> Maybe returnedData -> m ()
+getBufferSubDataView self target offset returnedData
+  = liftIO
+      (js_getBufferSubDataView (self) target (fromIntegral offset)
+         (maybeToNullable (fmap toArrayBufferView returnedData)))
+ 
+foreign import javascript unsafe
+        "$1[\"getBufferSubData\"]($2, $3,\n$4)" js_getBufferSubData ::
+        WebGL2RenderingContext ->
+          GLenum -> Double -> Nullable ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getBufferSubData Mozilla WebGL2RenderingContext.getBufferSubData documentation> 
+getBufferSubData ::
+                 (MonadIO m, IsArrayBuffer returnedData) =>
+                   WebGL2RenderingContext ->
+                     GLenum -> GLintptr -> Maybe returnedData -> m ()
+getBufferSubData self target offset returnedData
+  = liftIO
+      (js_getBufferSubData (self) target (fromIntegral offset)
+         (maybeToNullable (fmap toArrayBuffer returnedData)))
+ 
+foreign import javascript unsafe
+        "$1[\"getFramebufferAttachmentParameter\"]($2,\n$3, $4)"
+        js_getFramebufferAttachmentParameter ::
+        WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFramebufferAttachmentParameter Mozilla WebGL2RenderingContext.getFramebufferAttachmentParameter documentation> 
+getFramebufferAttachmentParameter ::
+                                  (MonadIO m) =>
+                                    WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m JSVal
+getFramebufferAttachmentParameter self target attachment pname
+  = liftIO
+      (js_getFramebufferAttachmentParameter (self) target attachment
+         pname)
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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)
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"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[\"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[\"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[\"texImage3D\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10, $11)"
+        js_texImage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLsizei ->
+                  GLsizei ->
+                    GLsizei ->
+                      GLint -> GLenum -> GLenum -> Nullable 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'
+         (maybeToNullable (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript unsafe
+        "$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 -> Nullable 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'
+         (maybeToNullable (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_texSubImage3DData ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLint -> GLenum -> GLenum -> Nullable ImageData -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3DData ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext ->
+                      GLenum ->
+                        GLint ->
+                          GLint ->
+                            GLint -> GLint -> GLenum -> GLenum -> Maybe ImageData -> m ()
+texSubImage3DData self target level xoffset yoffset zoffset format
+  type' source
+  = liftIO
+      (js_texSubImage3DData (self) target level xoffset yoffset zoffset
+         format
+         type'
+         (maybeToNullable source))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_texSubImage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint -> GLenum -> GLenum -> Nullable HTMLImageElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3D ::
+              (MonadIO m) =>
+                WebGL2RenderingContext ->
+                  GLenum ->
+                    GLint ->
+                      GLint ->
+                        GLint ->
+                          GLint -> GLenum -> GLenum -> Maybe HTMLImageElement -> m ()
+texSubImage3D self target level xoffset yoffset zoffset format
+  type' source
+  = liftIO
+      (js_texSubImage3D (self) target level xoffset yoffset zoffset
+         format
+         type'
+         (maybeToNullable source))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_texSubImage3DCanvas ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint -> GLenum -> GLenum -> Nullable HTMLCanvasElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3DCanvas ::
+                    (MonadIO m) =>
+                      WebGL2RenderingContext ->
+                        GLenum ->
+                          GLint ->
+                            GLint ->
+                              GLint ->
+                                GLint -> GLenum -> GLenum -> Maybe HTMLCanvasElement -> m ()
+texSubImage3DCanvas self target level xoffset yoffset zoffset
+  format type' source
+  = liftIO
+      (js_texSubImage3DCanvas (self) target level xoffset yoffset zoffset
+         format
+         type'
+         (maybeToNullable source))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_texSubImage3DVideo ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint -> GLenum -> GLenum -> Nullable HTMLVideoElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3DVideo ::
+                   (MonadIO m) =>
+                     WebGL2RenderingContext ->
+                       GLenum ->
+                         GLint ->
+                           GLint ->
+                             GLint ->
+                               GLint -> GLenum -> GLenum -> Maybe HTMLVideoElement -> m ()
+texSubImage3DVideo self target level xoffset yoffset zoffset format
+  type' source
+  = liftIO
+      (js_texSubImage3DVideo (self) target level xoffset yoffset zoffset
+         format
+         type'
+         (maybeToNullable source))
+ 
+foreign import javascript unsafe
+        "$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[\"compressedTexImage3D\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10)"
+        js_compressedTexImage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLenum ->
+                GLsizei ->
+                  GLsizei ->
+                    GLsizei -> GLint -> GLsizei -> Nullable 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
+         (maybeToNullable (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe
+        "$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 -> Nullable 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
+         (maybeToNullable (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe
+        "$1[\"getFragDataLocation\"]($2,\n$3)" js_getFragDataLocation ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable program)
+         (toJSString name))
+ 
+foreign import javascript unsafe "$1[\"uniform1ui\"]($2, $3)"
+        js_uniform1ui ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable location) v0)
+ 
+foreign import javascript unsafe "$1[\"uniform2ui\"]($2, $3, $4)"
+        js_uniform2ui ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable location) v0 v1)
+ 
+foreign import javascript unsafe
+        "$1[\"uniform3ui\"]($2, $3, $4, $5)" js_uniform3ui ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable location) v0 v1 v2)
+ 
+foreign import javascript unsafe
+        "$1[\"uniform4ui\"]($2, $3, $4, $5,\n$6)" js_uniform4ui ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable location) v0 v1 v2 v3)
+ 
+foreign import javascript unsafe "$1[\"uniform1uiv\"]($2, $3)"
+        js_uniform1uiv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation -> Nullable 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) (maybeToNullable location)
+         (maybeToNullable (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe "$1[\"uniform2uiv\"]($2, $3)"
+        js_uniform2uiv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation -> Nullable 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) (maybeToNullable location)
+         (maybeToNullable (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe "$1[\"uniform3uiv\"]($2, $3)"
+        js_uniform3uiv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation -> Nullable 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) (maybeToNullable location)
+         (maybeToNullable (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe "$1[\"uniform4uiv\"]($2, $3)"
+        js_uniform4uiv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation -> Nullable 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) (maybeToNullable location)
+         (maybeToNullable (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix2x3fv\"]($2, $3,\n$4)" js_uniformMatrix2x3fv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable 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) (maybeToNullable location) transpose
+         (maybeToNullable (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix3x2fv\"]($2, $3,\n$4)" js_uniformMatrix3x2fv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable 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) (maybeToNullable location) transpose
+         (maybeToNullable (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix2x4fv\"]($2, $3,\n$4)" js_uniformMatrix2x4fv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable 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) (maybeToNullable location) transpose
+         (maybeToNullable (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix4x2fv\"]($2, $3,\n$4)" js_uniformMatrix4x2fv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable 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) (maybeToNullable location) transpose
+         (maybeToNullable (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix3x4fv\"]($2, $3,\n$4)" js_uniformMatrix3x4fv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable 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) (maybeToNullable location) transpose
+         (maybeToNullable (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix4x3fv\"]($2, $3,\n$4)" js_uniformMatrix4x3fv ::
+        WebGL2RenderingContext ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable 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) (maybeToNullable location) transpose
+         (maybeToNullable (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "$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[\"vertexAttribI4iv\"]($2, $3)"
+        js_vertexAttribI4iv ::
+        WebGL2RenderingContext -> GLuint -> Nullable 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
+         (maybeToNullable (fmap toInt32Array v)))
+ 
+foreign import javascript unsafe
+        "$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[\"vertexAttribI4uiv\"]($2, $3)" js_vertexAttribI4uiv ::
+        WebGL2RenderingContext -> GLuint -> Nullable 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
+         (maybeToNullable (fmap toUint32Array v)))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"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[\"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[\"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[\"clearBufferiv\"]($2, $3, $4)" js_clearBufferiv ::
+        WebGL2RenderingContext ->
+          GLenum -> GLint -> Nullable 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
+         (maybeToNullable (fmap toInt32Array value)))
+ 
+foreign import javascript unsafe
+        "$1[\"clearBufferuiv\"]($2, $3, $4)" js_clearBufferuiv ::
+        WebGL2RenderingContext ->
+          GLenum -> GLint -> Nullable 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
+         (maybeToNullable (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe
+        "$1[\"clearBufferfv\"]($2, $3, $4)" js_clearBufferfv ::
+        WebGL2RenderingContext ->
+          GLenum -> GLint -> Nullable 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
+         (maybeToNullable (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "$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[\"createQuery\"]()"
+        js_createQuery ::
+        WebGL2RenderingContext -> IO (Nullable WebGLQuery)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
+createQuery ::
+            (MonadIO m) => WebGL2RenderingContext -> m (Maybe WebGLQuery)
+createQuery self
+  = liftIO (nullableToMaybe <$> (js_createQuery (self)))
+ 
+foreign import javascript unsafe "$1[\"deleteQuery\"]($2)"
+        js_deleteQuery ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable query))
+ 
+foreign import javascript unsafe "$1[\"isQuery\"]($2)" js_isQuery
+        :: WebGL2RenderingContext -> Nullable 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) (maybeToNullable query))
+ 
+foreign import javascript unsafe "$1[\"beginQuery\"]($2, $3)"
+        js_beginQuery ::
+        WebGL2RenderingContext -> GLenum -> Nullable 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 (maybeToNullable query))
+ 
+foreign import javascript unsafe "$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[\"getQuery\"]($2, $3)"
+        js_getQuery ::
+        WebGL2RenderingContext ->
+          GLenum -> GLenum -> IO (Nullable WebGLQuery)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
+getQuery ::
+         (MonadIO m) =>
+           WebGL2RenderingContext -> GLenum -> GLenum -> m (Maybe WebGLQuery)
+getQuery self target pname
+  = liftIO (nullableToMaybe <$> (js_getQuery (self) target pname))
+ 
+foreign import javascript unsafe
+        "$1[\"getQueryParameter\"]($2, $3)" js_getQueryParameter ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable query) pname)
+ 
+foreign import javascript unsafe "$1[\"createSampler\"]()"
+        js_createSampler ::
+        WebGL2RenderingContext -> IO (Nullable WebGLSampler)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
+createSampler ::
+              (MonadIO m) => WebGL2RenderingContext -> m (Maybe WebGLSampler)
+createSampler self
+  = liftIO (nullableToMaybe <$> (js_createSampler (self)))
+ 
+foreign import javascript unsafe "$1[\"deleteSampler\"]($2)"
+        js_deleteSampler ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable sampler))
+ 
+foreign import javascript unsafe "$1[\"isSampler\"]($2)"
+        js_isSampler ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable sampler))
+ 
+foreign import javascript unsafe "$1[\"bindSampler\"]($2, $3)"
+        js_bindSampler ::
+        WebGL2RenderingContext -> GLuint -> Nullable 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 (maybeToNullable sampler))
+ 
+foreign import javascript unsafe
+        "$1[\"samplerParameteri\"]($2, $3,\n$4)" js_samplerParameteri ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable sampler) pname param)
+ 
+foreign import javascript unsafe
+        "$1[\"samplerParameterf\"]($2, $3,\n$4)" js_samplerParameterf ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable sampler) pname param)
+ 
+foreign import javascript unsafe
+        "$1[\"getSamplerParameter\"]($2,\n$3)" js_getSamplerParameter ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable sampler) pname)
+ 
+foreign import javascript unsafe "$1[\"fenceSync\"]($2, $3)"
+        js_fenceSync ::
+        WebGL2RenderingContext ->
+          GLenum -> GLbitfield -> IO (Nullable WebGLSync)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
+fenceSync ::
+          (MonadIO m) =>
+            WebGL2RenderingContext ->
+              GLenum -> GLbitfield -> m (Maybe WebGLSync)
+fenceSync self condition flags
+  = liftIO
+      (nullableToMaybe <$> (js_fenceSync (self) condition flags))
+ 
+foreign import javascript unsafe "$1[\"isSync\"]($2)" js_isSync ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable sync))
+ 
+foreign import javascript unsafe "$1[\"deleteSync\"]($2)"
+        js_deleteSync ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable sync))
+ 
+foreign import javascript unsafe
+        "$1[\"clientWaitSync\"]($2, $3, $4)" js_clientWaitSync ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable sync) flags
+         (fromIntegral timeout))
+ 
+foreign import javascript unsafe "$1[\"waitSync\"]($2, $3, $4)"
+        js_waitSync ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable sync) flags
+         (fromIntegral timeout))
+ 
+foreign import javascript unsafe "$1[\"getSyncParameter\"]($2, $3)"
+        js_getSyncParameter ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable sync) pname)
+ 
+foreign import javascript unsafe
+        "$1[\"createTransformFeedback\"]()" js_createTransformFeedback ::
+        WebGL2RenderingContext -> IO (Nullable WebGLTransformFeedback)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
+createTransformFeedback ::
+                        (MonadIO m) =>
+                          WebGL2RenderingContext -> m (Maybe WebGLTransformFeedback)
+createTransformFeedback self
+  = liftIO (nullableToMaybe <$> (js_createTransformFeedback (self)))
+ 
+foreign import javascript unsafe
+        "$1[\"deleteTransformFeedback\"]($2)" js_deleteTransformFeedback ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable id))
+ 
+foreign import javascript unsafe "$1[\"isTransformFeedback\"]($2)"
+        js_isTransformFeedback ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable id))
+ 
+foreign import javascript unsafe
+        "$1[\"bindTransformFeedback\"]($2,\n$3)" js_bindTransformFeedback
+        ::
+        WebGL2RenderingContext ->
+          GLenum -> Nullable 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 (maybeToNullable id))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"transformFeedbackVaryings\"]($2,\n$3, $4)"
+        js_transformFeedbackVaryings ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable program)
+             varyings'
+         bufferMode)
+ 
+foreign import javascript unsafe
+        "$1[\"getTransformFeedbackVarying\"]($2,\n$3)"
+        js_getTransformFeedbackVarying ::
+        WebGL2RenderingContext ->
+          Nullable WebGLProgram -> GLuint -> IO (Nullable WebGLActiveInfo)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
+getTransformFeedbackVarying ::
+                            (MonadIO m) =>
+                              WebGL2RenderingContext ->
+                                Maybe WebGLProgram -> GLuint -> m (Maybe WebGLActiveInfo)
+getTransformFeedbackVarying self program index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getTransformFeedbackVarying (self) (maybeToNullable program)
+            index))
+ 
+foreign import javascript unsafe "$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[\"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[\"bindBufferBase\"]($2, $3, $4)" js_bindBufferBase ::
+        WebGL2RenderingContext ->
+          GLenum -> GLuint -> Nullable 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 (maybeToNullable buffer))
+ 
+foreign import javascript unsafe
+        "$1[\"bindBufferRange\"]($2, $3,\n$4, $5, $6)" js_bindBufferRange
+        ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLuint -> Nullable 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 (maybeToNullable buffer)
+         (fromIntegral offset)
+         (fromIntegral size))
+ 
+foreign import javascript unsafe
+        "$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)
+ 
+foreign import javascript unsafe
+        "$1[\"getUniformIndices\"]($2, $3)" js_getUniformIndices ::
+        WebGL2RenderingContext ->
+          Nullable WebGLProgram -> JSVal -> IO (Nullable 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 (Maybe Uint32Array)
+getUniformIndices self program uniformNames
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal uniformNames >>=
+            \ uniformNames' ->
+              js_getUniformIndices (self) (maybeToNullable program)
+                uniformNames'))
+ 
+foreign import javascript unsafe
+        "$1[\"getActiveUniforms\"]($2, $3,\n$4)" js_getActiveUniforms ::
+        WebGL2RenderingContext ->
+          Nullable WebGLProgram ->
+            Nullable Uint32Array -> GLenum -> IO (Nullable 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 (Maybe Int32Array)
+getActiveUniforms self program uniformIndices pname
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getActiveUniforms (self) (maybeToNullable program)
+            (maybeToNullable (fmap toUint32Array uniformIndices))
+            pname))
+ 
+foreign import javascript unsafe
+        "$1[\"getUniformBlockIndex\"]($2,\n$3)" js_getUniformBlockIndex ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable program)
+         (toJSString uniformBlockName))
+ 
+foreign import javascript unsafe
+        "$1[\"getActiveUniformBlockParameter\"]($2,\n$3, $4)"
+        js_getActiveUniformBlockParameter ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable program)
+         uniformBlockIndex
+         pname)
+ 
+foreign import javascript unsafe
+        "$1[\"getActiveUniformBlockName\"]($2,\n$3)"
+        js_getActiveUniformBlockName ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable program)
+         uniformBlockIndex)
+ 
+foreign import javascript unsafe
+        "$1[\"uniformBlockBinding\"]($2,\n$3, $4)" js_uniformBlockBinding
+        ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable program)
+         uniformBlockIndex
+         uniformBlockBinding)
+ 
+foreign import javascript unsafe "$1[\"createVertexArray\"]()"
+        js_createVertexArray ::
+        WebGL2RenderingContext -> IO (Nullable WebGLVertexArrayObject)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
+createVertexArray ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext -> m (Maybe WebGLVertexArrayObject)
+createVertexArray self
+  = liftIO (nullableToMaybe <$> (js_createVertexArray (self)))
+ 
+foreign import javascript unsafe "$1[\"deleteVertexArray\"]($2)"
+        js_deleteVertexArray ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable vertexArray))
+ 
+foreign import javascript unsafe "$1[\"isVertexArray\"]($2)"
+        js_isVertexArray ::
+        WebGL2RenderingContext ->
+          Nullable 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) (maybeToNullable vertexArray))
+ 
+foreign import javascript unsafe "$1[\"bindVertexArray\"]($2)"
+        js_bindVertexArray ::
+        WebGL2RenderingContext -> Nullable 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) (maybeToNullable 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 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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo
+       (js_getSize, getSize, js_getType, getType, js_getName, getName,
+        WebGLActiveInfo, castToWebGLActiveInfo, gTypeWebGLActiveInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,25 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToWebGLCompressedTextureATC,
+        gTypeWebGLCompressedTextureATC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,27 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, castToWebGLCompressedTexturePVRTC,
+        gTypeWebGLCompressedTexturePVRTC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,26 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToWebGLCompressedTextureS3TC, gTypeWebGLCompressedTextureS3TC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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/WebGLContextAttributes.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextAttributes.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLContextAttributes
+       (js_setAlpha, setAlpha, js_getAlpha, getAlpha, js_setDepth,
+        setDepth, js_getDepth, getDepth, js_setStencil, setStencil,
+        js_getStencil, getStencil, js_setAntialias, setAntialias,
+        js_getAntialias, getAntialias, js_setPremultipliedAlpha,
+        setPremultipliedAlpha, js_getPremultipliedAlpha,
+        getPremultipliedAlpha, js_setPreserveDrawingBuffer,
+        setPreserveDrawingBuffer, js_getPreserveDrawingBuffer,
+        getPreserveDrawingBuffer, WebGLContextAttributes,
+        castToWebGLContextAttributes, gTypeWebGLContextAttributes)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"alpha\"] = $2;" js_setAlpha
+        :: WebGLContextAttributes -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.alpha Mozilla WebGLContextAttributes.alpha documentation> 
+setAlpha :: (MonadIO m) => WebGLContextAttributes -> Bool -> m ()
+setAlpha self val = liftIO (js_setAlpha (self) val)
+ 
+foreign import javascript unsafe "($1[\"alpha\"] ? 1 : 0)"
+        js_getAlpha :: WebGLContextAttributes -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.alpha Mozilla WebGLContextAttributes.alpha documentation> 
+getAlpha :: (MonadIO m) => WebGLContextAttributes -> m Bool
+getAlpha self = liftIO (js_getAlpha (self))
+ 
+foreign import javascript unsafe "$1[\"depth\"] = $2;" js_setDepth
+        :: WebGLContextAttributes -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.depth Mozilla WebGLContextAttributes.depth documentation> 
+setDepth :: (MonadIO m) => WebGLContextAttributes -> Bool -> m ()
+setDepth self val = liftIO (js_setDepth (self) val)
+ 
+foreign import javascript unsafe "($1[\"depth\"] ? 1 : 0)"
+        js_getDepth :: WebGLContextAttributes -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.depth Mozilla WebGLContextAttributes.depth documentation> 
+getDepth :: (MonadIO m) => WebGLContextAttributes -> m Bool
+getDepth self = liftIO (js_getDepth (self))
+ 
+foreign import javascript unsafe "$1[\"stencil\"] = $2;"
+        js_setStencil :: WebGLContextAttributes -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.stencil Mozilla WebGLContextAttributes.stencil documentation> 
+setStencil :: (MonadIO m) => WebGLContextAttributes -> Bool -> m ()
+setStencil self val = liftIO (js_setStencil (self) val)
+ 
+foreign import javascript unsafe "($1[\"stencil\"] ? 1 : 0)"
+        js_getStencil :: WebGLContextAttributes -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.stencil Mozilla WebGLContextAttributes.stencil documentation> 
+getStencil :: (MonadIO m) => WebGLContextAttributes -> m Bool
+getStencil self = liftIO (js_getStencil (self))
+ 
+foreign import javascript unsafe "$1[\"antialias\"] = $2;"
+        js_setAntialias :: WebGLContextAttributes -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.antialias Mozilla WebGLContextAttributes.antialias documentation> 
+setAntialias ::
+             (MonadIO m) => WebGLContextAttributes -> Bool -> m ()
+setAntialias self val = liftIO (js_setAntialias (self) val)
+ 
+foreign import javascript unsafe "($1[\"antialias\"] ? 1 : 0)"
+        js_getAntialias :: WebGLContextAttributes -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.antialias Mozilla WebGLContextAttributes.antialias documentation> 
+getAntialias :: (MonadIO m) => WebGLContextAttributes -> m Bool
+getAntialias self = liftIO (js_getAntialias (self))
+ 
+foreign import javascript unsafe "$1[\"premultipliedAlpha\"] = $2;"
+        js_setPremultipliedAlpha :: WebGLContextAttributes -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.premultipliedAlpha Mozilla WebGLContextAttributes.premultipliedAlpha documentation> 
+setPremultipliedAlpha ::
+                      (MonadIO m) => WebGLContextAttributes -> Bool -> m ()
+setPremultipliedAlpha self val
+  = liftIO (js_setPremultipliedAlpha (self) val)
+ 
+foreign import javascript unsafe
+        "($1[\"premultipliedAlpha\"] ? 1 : 0)" js_getPremultipliedAlpha ::
+        WebGLContextAttributes -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.premultipliedAlpha Mozilla WebGLContextAttributes.premultipliedAlpha documentation> 
+getPremultipliedAlpha ::
+                      (MonadIO m) => WebGLContextAttributes -> m Bool
+getPremultipliedAlpha self
+  = liftIO (js_getPremultipliedAlpha (self))
+ 
+foreign import javascript unsafe
+        "$1[\"preserveDrawingBuffer\"] = $2;" js_setPreserveDrawingBuffer
+        :: WebGLContextAttributes -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.preserveDrawingBuffer Mozilla WebGLContextAttributes.preserveDrawingBuffer documentation> 
+setPreserveDrawingBuffer ::
+                         (MonadIO m) => WebGLContextAttributes -> Bool -> m ()
+setPreserveDrawingBuffer self val
+  = liftIO (js_setPreserveDrawingBuffer (self) val)
+ 
+foreign import javascript unsafe
+        "($1[\"preserveDrawingBuffer\"] ? 1 : 0)"
+        js_getPreserveDrawingBuffer :: WebGLContextAttributes -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.preserveDrawingBuffer Mozilla WebGLContextAttributes.preserveDrawingBuffer documentation> 
+getPreserveDrawingBuffer ::
+                         (MonadIO m) => WebGLContextAttributes -> m Bool
+getPreserveDrawingBuffer self
+  = liftIO (js_getPreserveDrawingBuffer (self))
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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLContextEvent
+       (js_getStatusMessage, getStatusMessage, WebGLContextEvent,
+        castToWebGLContextEvent, gTypeWebGLContextEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,22 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo
+       (pattern UNMASKED_VENDOR_WEBGL, pattern UNMASKED_RENDERER_WEBGL,
+        WebGLDebugRendererInfo, castToWebGLDebugRendererInfo,
+        gTypeWebGLDebugRendererInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders
+       (js_getTranslatedShaderSource, getTranslatedShaderSource,
+        WebGLDebugShaders, castToWebGLDebugShaders, gTypeWebGLDebugShaders)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getTranslatedShaderSource\"]($2)"
+        js_getTranslatedShaderSource ::
+        WebGLDebugShaders -> Nullable 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) (maybeToNullable 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,20 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture
+       (pattern UNSIGNED_INT_24_8_WEBGL, WebGLDepthTexture,
+        castToWebGLDepthTexture, gTypeWebGLDepthTexture)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+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,82 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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,
+        castToWebGLDrawBuffers, gTypeWebGLDrawBuffers)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,33 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLLoseContext
+       (js_loseContext, loseContext, js_restoreContext, restoreContext,
+        WebGLLoseContext, castToWebGLLoseContext, gTypeWebGLLoseContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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,2801 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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_bufferDataView, bufferDataView, js_bufferDataPtr,
+        bufferDataPtr, js_bufferSubData, bufferSubData,
+        js_bufferSubDataView, bufferSubDataView, js_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,
+        js_createFramebuffer, createFramebuffer, js_createProgram,
+        createProgram, js_createRenderbuffer, createRenderbuffer,
+        js_createShader, createShader, js_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, js_getActiveUniform, getActiveUniform,
+        js_getAttachedShaders, getAttachedShaders, js_getAttribLocation,
+        getAttribLocation, js_getBufferParameter, getBufferParameter,
+        js_getContextAttributes, getContextAttributes, js_getError,
+        getError, js_getExtension, getExtension,
+        js_getFramebufferAttachmentParameter,
+        getFramebufferAttachmentParameter, js_getParameter, getParameter,
+        js_getProgramParameter, getProgramParameter, js_getProgramInfoLog,
+        getProgramInfoLog, js_getRenderbufferParameter,
+        getRenderbufferParameter, js_getShaderParameter,
+        getShaderParameter, js_getShaderInfoLog, getShaderInfoLog,
+        js_getShaderPrecisionFormat, getShaderPrecisionFormat,
+        js_getShaderSource, getShaderSource, js_getSupportedExtensions,
+        getSupportedExtensions, js_getTexParameter, getTexParameter,
+        js_getUniform, getUniform, js_getUniformLocation,
+        getUniformLocation, js_getVertexAttrib, getVertexAttrib,
+        js_getVertexAttribOffset, getVertexAttribOffset, js_hint, hint,
+        js_isBuffer, isBuffer, js_isContextLost, isContextLost,
+        js_isEnabled, isEnabled, js_isFramebuffer, isFramebuffer,
+        js_isProgram, isProgram, js_isRenderbuffer, isRenderbuffer,
+        js_isShader, isShader, js_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_texImage2DData,
+        texImage2DData, js_texImage2D, texImage2D, js_texImage2DCanvas,
+        texImage2DCanvas, js_texImage2DVideo, texImage2DVideo,
+        js_texSubImage2DView, texSubImage2DView, js_texSubImage2DData,
+        texSubImage2DData, js_texSubImage2D, texSubImage2D,
+        js_texSubImage2DCanvas, texSubImage2DCanvas, js_texSubImage2DVideo,
+        texSubImage2DVideo, js_uniform1f, uniform1f, js_uniform1fv,
+        uniform1fv, js_uniform1i, uniform1i, js_uniform1iv, uniform1iv,
+        js_uniform2f, uniform2f, js_uniform2fv, uniform2fv, js_uniform2i,
+        uniform2i, js_uniform2iv, uniform2iv, js_uniform3f, uniform3f,
+        js_uniform3fv, uniform3fv, js_uniform3i, uniform3i, js_uniform3iv,
+        uniform3iv, js_uniform4f, uniform4f, js_uniform4fv, uniform4fv,
+        js_uniform4i, uniform4i, js_uniform4iv, uniform4iv,
+        js_uniformMatrix2fv, uniformMatrix2fv, js_uniformMatrix3fv,
+        uniformMatrix3fv, js_uniformMatrix4fv, uniformMatrix4fv,
+        js_useProgram, useProgram, js_validateProgram, validateProgram,
+        js_vertexAttrib1f, vertexAttrib1f, js_vertexAttrib1fv,
+        vertexAttrib1fv, js_vertexAttrib2f, vertexAttrib2f,
+        js_vertexAttrib2fv, vertexAttrib2fv, js_vertexAttrib3f,
+        vertexAttrib3f, js_vertexAttrib3fv, vertexAttrib3fv,
+        js_vertexAttrib4f, vertexAttrib4f, 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_getDrawingBufferWidth,
+        getDrawingBufferWidth, js_getDrawingBufferHeight,
+        getDrawingBufferHeight, WebGLRenderingContextBase,
+        castToWebGLRenderingContextBase, gTypeWebGLRenderingContextBase,
+        IsWebGLRenderingContextBase, toWebGLRenderingContextBase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"attachShader\"]($2, $3)"
+        js_attachShader ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLProgram -> Nullable 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)
+         (maybeToNullable program)
+         (maybeToNullable shader))
+ 
+foreign import javascript unsafe
+        "$1[\"bindAttribLocation\"]($2, $3,\n$4)" js_bindAttribLocation ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable program)
+         index
+         (toJSString name))
+ 
+foreign import javascript unsafe "$1[\"bindBuffer\"]($2, $3)"
+        js_bindBuffer ::
+        WebGLRenderingContextBase ->
+          GLenum -> Nullable 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
+         (maybeToNullable buffer))
+ 
+foreign import javascript unsafe "$1[\"bindFramebuffer\"]($2, $3)"
+        js_bindFramebuffer ::
+        WebGLRenderingContextBase ->
+          GLenum -> Nullable 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
+         (maybeToNullable framebuffer))
+ 
+foreign import javascript unsafe "$1[\"bindRenderbuffer\"]($2, $3)"
+        js_bindRenderbuffer ::
+        WebGLRenderingContextBase ->
+          GLenum -> Nullable 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
+         (maybeToNullable renderbuffer))
+ 
+foreign import javascript unsafe "$1[\"bindTexture\"]($2, $3)"
+        js_bindTexture ::
+        WebGLRenderingContextBase ->
+          GLenum -> Nullable 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
+         (maybeToNullable texture))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"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[\"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[\"bufferData\"]($2, $3, $4)"
+        js_bufferData ::
+        WebGLRenderingContextBase ->
+          GLenum -> Nullable ArrayBuffer -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
+bufferData ::
+           (MonadIO m, IsWebGLRenderingContextBase self,
+            IsArrayBuffer data') =>
+             self -> GLenum -> Maybe data' -> GLenum -> m ()
+bufferData self target data' usage
+  = liftIO
+      (js_bufferData (toWebGLRenderingContextBase self) target
+         (maybeToNullable (fmap toArrayBuffer data'))
+         usage)
+ 
+foreign import javascript unsafe "$1[\"bufferData\"]($2, $3, $4)"
+        js_bufferDataView ::
+        WebGLRenderingContextBase ->
+          GLenum -> Nullable ArrayBufferView -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
+bufferDataView ::
+               (MonadIO m, IsWebGLRenderingContextBase self,
+                IsArrayBufferView data') =>
+                 self -> GLenum -> Maybe data' -> GLenum -> m ()
+bufferDataView self target data' usage
+  = liftIO
+      (js_bufferDataView (toWebGLRenderingContextBase self) target
+         (maybeToNullable (fmap toArrayBufferView data'))
+         usage)
+ 
+foreign import javascript unsafe "$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[\"bufferSubData\"]($2, $3, $4)" js_bufferSubData ::
+        WebGLRenderingContextBase ->
+          GLenum -> Double -> Nullable ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferSubData Mozilla WebGLRenderingContextBase.bufferSubData documentation> 
+bufferSubData ::
+              (MonadIO m, IsWebGLRenderingContextBase self,
+               IsArrayBuffer data') =>
+                self -> GLenum -> GLintptr -> Maybe data' -> m ()
+bufferSubData self target offset data'
+  = liftIO
+      (js_bufferSubData (toWebGLRenderingContextBase self) target
+         (fromIntegral offset)
+         (maybeToNullable (fmap toArrayBuffer data')))
+ 
+foreign import javascript unsafe
+        "$1[\"bufferSubData\"]($2, $3, $4)" js_bufferSubDataView ::
+        WebGLRenderingContextBase ->
+          GLenum -> Double -> Nullable ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferSubData Mozilla WebGLRenderingContextBase.bufferSubData documentation> 
+bufferSubDataView ::
+                  (MonadIO m, IsWebGLRenderingContextBase self,
+                   IsArrayBufferView data') =>
+                    self -> GLenum -> GLintptr -> Maybe data' -> m ()
+bufferSubDataView self target offset data'
+  = liftIO
+      (js_bufferSubDataView (toWebGLRenderingContextBase self) target
+         (fromIntegral offset)
+         (maybeToNullable (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe
+        "$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)
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"compileShader\"]($2)"
+        js_compileShader ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable shader))
+ 
+foreign import javascript unsafe
+        "$1[\"compressedTexImage2D\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_compressedTexImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum ->
+                GLsizei -> GLsizei -> GLint -> Nullable 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 -> Maybe data' -> m ()
+compressedTexImage2D self target level internalformat width height
+  border data'
+  = liftIO
+      (js_compressedTexImage2D (toWebGLRenderingContextBase self) target
+         level
+         internalformat
+         width
+         height
+         border
+         (maybeToNullable (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe
+        "$1[\"compressedTexSubImage2D\"]($2,\n$3, $4, $5, $6, $7, $8, $9)"
+        js_compressedTexSubImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLsizei -> GLsizei -> GLenum -> Nullable 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 -> Maybe data' -> m ()
+compressedTexSubImage2D self target level xoffset yoffset width
+  height format data'
+  = liftIO
+      (js_compressedTexSubImage2D (toWebGLRenderingContextBase self)
+         target
+         level
+         xoffset
+         yoffset
+         width
+         height
+         format
+         (maybeToNullable (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"createBuffer\"]()"
+        js_createBuffer ::
+        WebGLRenderingContextBase -> IO (Nullable WebGLBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
+createBuffer ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> m (Maybe WebGLBuffer)
+createBuffer self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createBuffer (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$1[\"createFramebuffer\"]()"
+        js_createFramebuffer ::
+        WebGLRenderingContextBase -> IO (Nullable WebGLFramebuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
+createFramebuffer ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self -> m (Maybe WebGLFramebuffer)
+createFramebuffer self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createFramebuffer (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$1[\"createProgram\"]()"
+        js_createProgram ::
+        WebGLRenderingContextBase -> IO (Nullable WebGLProgram)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
+createProgram ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> m (Maybe WebGLProgram)
+createProgram self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createProgram (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$1[\"createRenderbuffer\"]()"
+        js_createRenderbuffer ::
+        WebGLRenderingContextBase -> IO (Nullable WebGLRenderbuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
+createRenderbuffer ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self -> m (Maybe WebGLRenderbuffer)
+createRenderbuffer self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createRenderbuffer (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$1[\"createShader\"]($2)"
+        js_createShader ::
+        WebGLRenderingContextBase -> GLenum -> IO (Nullable WebGLShader)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
+createShader ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> GLenum -> m (Maybe WebGLShader)
+createShader self type'
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createShader (toWebGLRenderingContextBase self) type'))
+ 
+foreign import javascript unsafe "$1[\"createTexture\"]()"
+        js_createTexture ::
+        WebGLRenderingContextBase -> IO (Nullable WebGLTexture)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
+createTexture ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> m (Maybe WebGLTexture)
+createTexture self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createTexture (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$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[\"deleteBuffer\"]($2)"
+        js_deleteBuffer ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable buffer))
+ 
+foreign import javascript unsafe "$1[\"deleteFramebuffer\"]($2)"
+        js_deleteFramebuffer ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable framebuffer))
+ 
+foreign import javascript unsafe "$1[\"deleteProgram\"]($2)"
+        js_deleteProgram ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable program))
+ 
+foreign import javascript unsafe "$1[\"deleteRenderbuffer\"]($2)"
+        js_deleteRenderbuffer ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable renderbuffer))
+ 
+foreign import javascript unsafe "$1[\"deleteShader\"]($2)"
+        js_deleteShader ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable shader))
+ 
+foreign import javascript unsafe "$1[\"deleteTexture\"]($2)"
+        js_deleteTexture ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable texture))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"detachShader\"]($2, $3)"
+        js_detachShader ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLProgram -> Nullable 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)
+         (maybeToNullable program)
+         (maybeToNullable shader))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"framebufferRenderbuffer\"]($2,\n$3, $4, $5)"
+        js_framebufferRenderbuffer ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLenum -> Nullable 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
+         (maybeToNullable renderbuffer))
+ 
+foreign import javascript unsafe
+        "$1[\"framebufferTexture2D\"]($2,\n$3, $4, $5, $6)"
+        js_framebufferTexture2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLenum -> GLenum -> Nullable 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
+         (maybeToNullable texture)
+         level)
+ 
+foreign import javascript unsafe "$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[\"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[\"getActiveAttrib\"]($2, $3)"
+        js_getActiveAttrib ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLProgram -> GLuint -> IO (Nullable 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 (Maybe WebGLActiveInfo)
+getActiveAttrib self program index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getActiveAttrib (toWebGLRenderingContextBase self)
+            (maybeToNullable program)
+            index))
+ 
+foreign import javascript unsafe "$1[\"getActiveUniform\"]($2, $3)"
+        js_getActiveUniform ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLProgram -> GLuint -> IO (Nullable 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 (Maybe WebGLActiveInfo)
+getActiveUniform self program index
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getActiveUniform (toWebGLRenderingContextBase self)
+            (maybeToNullable program)
+            index))
+ 
+foreign import javascript unsafe "$1[\"getAttachedShaders\"]($2)"
+        js_getAttachedShaders ::
+        WebGLRenderingContextBase -> Nullable WebGLProgram -> IO ()
+
+-- | <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
+      (js_getAttachedShaders (toWebGLRenderingContextBase self)
+         (maybeToNullable program))
+ 
+foreign import javascript unsafe
+        "$1[\"getAttribLocation\"]($2, $3)" js_getAttribLocation ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable program)
+         (toJSString name))
+ 
+foreign import javascript unsafe
+        "$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)
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$1[\"getExtension\"]($2)"
+        js_getExtension ::
+        WebGLRenderingContextBase -> JSString -> IO JSVal
+
+-- | <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 JSVal
+getExtension self name
+  = liftIO
+      (js_getExtension (toWebGLRenderingContextBase self)
+         (toJSString name))
+ 
+foreign import javascript unsafe
+        "$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)
+ 
+foreign import javascript unsafe "$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)
+ 
+foreign import javascript unsafe
+        "$1[\"getProgramParameter\"]($2,\n$3)" js_getProgramParameter ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable program)
+         pname)
+ 
+foreign import javascript unsafe "$1[\"getProgramInfoLog\"]($2)"
+        js_getProgramInfoLog ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+            (maybeToNullable program)))
+ 
+foreign import javascript unsafe
+        "$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)
+ 
+foreign import javascript unsafe
+        "$1[\"getShaderParameter\"]($2, $3)" js_getShaderParameter ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable shader)
+         pname)
+ 
+foreign import javascript unsafe "$1[\"getShaderInfoLog\"]($2)"
+        js_getShaderInfoLog ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+            (maybeToNullable shader)))
+ 
+foreign import javascript unsafe
+        "$1[\"getShaderPrecisionFormat\"]($2,\n$3)"
+        js_getShaderPrecisionFormat ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLenum -> IO (Nullable 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 (Maybe WebGLShaderPrecisionFormat)
+getShaderPrecisionFormat self shadertype precisiontype
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getShaderPrecisionFormat (toWebGLRenderingContextBase self)
+            shadertype
+            precisiontype))
+ 
+foreign import javascript unsafe "$1[\"getShaderSource\"]($2)"
+        js_getShaderSource ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+            (maybeToNullable shader)))
+ 
+foreign import javascript unsafe "$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 [result]
+getSupportedExtensions self
+  = liftIO
+      ((js_getSupportedExtensions (toWebGLRenderingContextBase self)) >>=
+         fromJSValUnchecked)
+ 
+foreign import javascript unsafe "$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)
+ 
+foreign import javascript unsafe "$1[\"getUniform\"]($2, $3)"
+        js_getUniform ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLProgram -> Nullable 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)
+         (maybeToNullable program)
+         (maybeToNullable location))
+ 
+foreign import javascript unsafe
+        "$1[\"getUniformLocation\"]($2, $3)" js_getUniformLocation ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLProgram ->
+            JSString -> IO (Nullable 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 (Maybe WebGLUniformLocation)
+getUniformLocation self program name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getUniformLocation (toWebGLRenderingContextBase self)
+            (maybeToNullable program)
+            (toJSString name)))
+ 
+foreign import javascript unsafe "$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)
+ 
+foreign import javascript unsafe
+        "$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))
+ 
+foreign import javascript unsafe "$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[\"isBuffer\"]($2)" js_isBuffer
+        ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable buffer))
+ 
+foreign import javascript unsafe "$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))
+ 
+foreign import javascript unsafe "$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)
+ 
+foreign import javascript unsafe "$1[\"isFramebuffer\"]($2)"
+        js_isFramebuffer ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable framebuffer))
+ 
+foreign import javascript unsafe "$1[\"isProgram\"]($2)"
+        js_isProgram ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable program))
+ 
+foreign import javascript unsafe "$1[\"isRenderbuffer\"]($2)"
+        js_isRenderbuffer ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable renderbuffer))
+ 
+foreign import javascript unsafe "$1[\"isShader\"]($2)" js_isShader
+        ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable shader))
+ 
+foreign import javascript unsafe "$1[\"isTexture\"]($2)"
+        js_isTexture ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable texture))
+ 
+foreign import javascript unsafe "$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[\"linkProgram\"]($2)"
+        js_linkProgram ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable program))
+ 
+foreign import javascript unsafe "$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[\"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[\"readPixels\"]($2, $3, $4, $5,\n$6, $7, $8)" js_readPixels ::
+        WebGLRenderingContextBase ->
+          GLint ->
+            GLint ->
+              GLsizei ->
+                GLsizei -> GLenum -> GLenum -> Nullable 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 -> Maybe pixels -> m ()
+readPixels self x y width height format type' pixels
+  = liftIO
+      (js_readPixels (toWebGLRenderingContextBase self) x y width height
+         format
+         type'
+         (maybeToNullable (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"shaderSource\"]($2, $3)"
+        js_shaderSource ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable shader)
+         (toJSString string))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
+        js_texImage2DView ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum ->
+                GLsizei ->
+                  GLsizei ->
+                    GLint -> GLenum -> GLenum -> Nullable 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'
+         (maybeToNullable (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2DData ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint -> GLenum -> GLenum -> GLenum -> Nullable ImageData -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2DData ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self ->
+                   GLenum ->
+                     GLint -> GLenum -> GLenum -> GLenum -> Maybe ImageData -> m ()
+texImage2DData self target level internalformat format type' pixels
+  = liftIO
+      (js_texImage2DData (toWebGLRenderingContextBase self) target level
+         internalformat
+         format
+         type'
+         (maybeToNullable pixels))
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLenum -> GLenum -> Nullable HTMLImageElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2D ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self ->
+               GLenum ->
+                 GLint ->
+                   GLenum -> GLenum -> GLenum -> Maybe HTMLImageElement -> m ()
+texImage2D self target level internalformat format type' image
+  = liftIO
+      (js_texImage2D (toWebGLRenderingContextBase self) target level
+         internalformat
+         format
+         type'
+         (maybeToNullable image))
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2DCanvas
+        ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLenum -> GLenum -> Nullable HTMLCanvasElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2DCanvas ::
+                 (MonadIO m, IsWebGLRenderingContextBase self) =>
+                   self ->
+                     GLenum ->
+                       GLint ->
+                         GLenum -> GLenum -> GLenum -> Maybe HTMLCanvasElement -> m ()
+texImage2DCanvas self target level internalformat format type'
+  canvas
+  = liftIO
+      (js_texImage2DCanvas (toWebGLRenderingContextBase self) target
+         level
+         internalformat
+         format
+         type'
+         (maybeToNullable canvas))
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2DVideo ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLenum -> GLenum -> Nullable HTMLVideoElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2DVideo ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self ->
+                    GLenum ->
+                      GLint ->
+                        GLenum -> GLenum -> GLenum -> Maybe HTMLVideoElement -> m ()
+texImage2DVideo self target level internalformat format type' video
+  = liftIO
+      (js_texImage2DVideo (toWebGLRenderingContextBase self) target level
+         internalformat
+         format
+         type'
+         (maybeToNullable video))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10)"
+        js_texSubImage2DView ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLsizei ->
+                    GLsizei -> GLenum -> GLenum -> Nullable 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'
+         (maybeToNullable (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_texSubImage2DData ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint -> GLint -> GLenum -> GLenum -> Nullable ImageData -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2DData ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self ->
+                      GLenum ->
+                        GLint ->
+                          GLint -> GLint -> GLenum -> GLenum -> Maybe ImageData -> m ()
+texSubImage2DData self target level xoffset yoffset format type'
+  pixels
+  = liftIO
+      (js_texSubImage2DData (toWebGLRenderingContextBase self) target
+         level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybeToNullable pixels))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_texSubImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLenum -> GLenum -> Nullable HTMLImageElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2D ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self ->
+                  GLenum ->
+                    GLint ->
+                      GLint ->
+                        GLint -> GLenum -> GLenum -> Maybe HTMLImageElement -> m ()
+texSubImage2D self target level xoffset yoffset format type' image
+  = liftIO
+      (js_texSubImage2D (toWebGLRenderingContextBase self) target level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybeToNullable image))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_texSubImage2DCanvas ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLenum -> GLenum -> Nullable HTMLCanvasElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2DCanvas ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self ->
+                        GLenum ->
+                          GLint ->
+                            GLint ->
+                              GLint -> GLenum -> GLenum -> Maybe HTMLCanvasElement -> m ()
+texSubImage2DCanvas self target level xoffset yoffset format type'
+  canvas
+  = liftIO
+      (js_texSubImage2DCanvas (toWebGLRenderingContextBase self) target
+         level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybeToNullable canvas))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_texSubImage2DVideo ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLenum -> GLenum -> Nullable HTMLVideoElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2DVideo ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self ->
+                       GLenum ->
+                         GLint ->
+                           GLint ->
+                             GLint -> GLenum -> GLenum -> Maybe HTMLVideoElement -> m ()
+texSubImage2DVideo self target level xoffset yoffset format type'
+  video
+  = liftIO
+      (js_texSubImage2DVideo (toWebGLRenderingContextBase self) target
+         level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybeToNullable video))
+ 
+foreign import javascript unsafe "$1[\"uniform1f\"]($2, $3)"
+        js_uniform1f ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable location)
+         x)
+ 
+foreign import javascript unsafe "$1[\"uniform1fv\"]($2, $3)"
+        js_uniform1fv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1fv Mozilla WebGLRenderingContextBase.uniform1fv documentation> 
+uniform1fv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform1fv self location v
+  = liftIO
+      (js_uniform1fv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         (maybeToNullable (fmap toFloat32Array v)))
+ 
+foreign import javascript unsafe "$1[\"uniform1i\"]($2, $3)"
+        js_uniform1i ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable location)
+         x)
+ 
+foreign import javascript unsafe "$1[\"uniform1iv\"]($2, $3)"
+        js_uniform1iv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation -> Nullable Int32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1iv Mozilla WebGLRenderingContextBase.uniform1iv documentation> 
+uniform1iv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform1iv self location v
+  = liftIO
+      (js_uniform1iv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         (maybeToNullable (fmap toInt32Array v)))
+ 
+foreign import javascript unsafe "$1[\"uniform2f\"]($2, $3, $4)"
+        js_uniform2f ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable location)
+         x
+         y)
+ 
+foreign import javascript unsafe "$1[\"uniform2fv\"]($2, $3)"
+        js_uniform2fv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2fv Mozilla WebGLRenderingContextBase.uniform2fv documentation> 
+uniform2fv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform2fv self location v
+  = liftIO
+      (js_uniform2fv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         (maybeToNullable (fmap toFloat32Array v)))
+ 
+foreign import javascript unsafe "$1[\"uniform2i\"]($2, $3, $4)"
+        js_uniform2i ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable location)
+         x
+         y)
+ 
+foreign import javascript unsafe "$1[\"uniform2iv\"]($2, $3)"
+        js_uniform2iv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation -> Nullable Int32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2iv Mozilla WebGLRenderingContextBase.uniform2iv documentation> 
+uniform2iv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform2iv self location v
+  = liftIO
+      (js_uniform2iv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         (maybeToNullable (fmap toInt32Array v)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniform3f\"]($2, $3, $4, $5)" js_uniform3f ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable location)
+         x
+         y
+         z)
+ 
+foreign import javascript unsafe "$1[\"uniform3fv\"]($2, $3)"
+        js_uniform3fv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3fv Mozilla WebGLRenderingContextBase.uniform3fv documentation> 
+uniform3fv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform3fv self location v
+  = liftIO
+      (js_uniform3fv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         (maybeToNullable (fmap toFloat32Array v)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniform3i\"]($2, $3, $4, $5)" js_uniform3i ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable location)
+         x
+         y
+         z)
+ 
+foreign import javascript unsafe "$1[\"uniform3iv\"]($2, $3)"
+        js_uniform3iv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation -> Nullable Int32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3iv Mozilla WebGLRenderingContextBase.uniform3iv documentation> 
+uniform3iv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform3iv self location v
+  = liftIO
+      (js_uniform3iv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         (maybeToNullable (fmap toInt32Array v)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniform4f\"]($2, $3, $4, $5,\n$6)" js_uniform4f ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable location)
+         x
+         y
+         z
+         w)
+ 
+foreign import javascript unsafe "$1[\"uniform4fv\"]($2, $3)"
+        js_uniform4fv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4fv Mozilla WebGLRenderingContextBase.uniform4fv documentation> 
+uniform4fv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform4fv self location v
+  = liftIO
+      (js_uniform4fv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         (maybeToNullable (fmap toFloat32Array v)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniform4i\"]($2, $3, $4, $5,\n$6)" js_uniform4i ::
+        WebGLRenderingContextBase ->
+          Nullable 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)
+         (maybeToNullable location)
+         x
+         y
+         z
+         w)
+ 
+foreign import javascript unsafe "$1[\"uniform4iv\"]($2, $3)"
+        js_uniform4iv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation -> Nullable Int32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4iv Mozilla WebGLRenderingContextBase.uniform4iv documentation> 
+uniform4iv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32Array v) =>
+             self -> Maybe WebGLUniformLocation -> Maybe v -> m ()
+uniform4iv self location v
+  = liftIO
+      (js_uniform4iv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         (maybeToNullable (fmap toInt32Array v)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix2fv\"]($2, $3,\n$4)" js_uniformMatrix2fv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix2fv Mozilla WebGLRenderingContextBase.uniformMatrix2fv documentation> 
+uniformMatrix2fv ::
+                 (MonadIO m, IsWebGLRenderingContextBase self,
+                  IsFloat32Array array) =>
+                   self ->
+                     Maybe WebGLUniformLocation -> GLboolean -> Maybe array -> m ()
+uniformMatrix2fv self location transpose array
+  = liftIO
+      (js_uniformMatrix2fv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         transpose
+         (maybeToNullable (fmap toFloat32Array array)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix3fv\"]($2, $3,\n$4)" js_uniformMatrix3fv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix3fv Mozilla WebGLRenderingContextBase.uniformMatrix3fv documentation> 
+uniformMatrix3fv ::
+                 (MonadIO m, IsWebGLRenderingContextBase self,
+                  IsFloat32Array array) =>
+                   self ->
+                     Maybe WebGLUniformLocation -> GLboolean -> Maybe array -> m ()
+uniformMatrix3fv self location transpose array
+  = liftIO
+      (js_uniformMatrix3fv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         transpose
+         (maybeToNullable (fmap toFloat32Array array)))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix4fv\"]($2, $3,\n$4)" js_uniformMatrix4fv ::
+        WebGLRenderingContextBase ->
+          Nullable WebGLUniformLocation ->
+            GLboolean -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix4fv Mozilla WebGLRenderingContextBase.uniformMatrix4fv documentation> 
+uniformMatrix4fv ::
+                 (MonadIO m, IsWebGLRenderingContextBase self,
+                  IsFloat32Array array) =>
+                   self ->
+                     Maybe WebGLUniformLocation -> GLboolean -> Maybe array -> m ()
+uniformMatrix4fv self location transpose array
+  = liftIO
+      (js_uniformMatrix4fv (toWebGLRenderingContextBase self)
+         (maybeToNullable location)
+         transpose
+         (maybeToNullable (fmap toFloat32Array array)))
+ 
+foreign import javascript unsafe "$1[\"useProgram\"]($2)"
+        js_useProgram ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable program))
+ 
+foreign import javascript unsafe "$1[\"validateProgram\"]($2)"
+        js_validateProgram ::
+        WebGLRenderingContextBase -> Nullable 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)
+         (maybeToNullable program))
+ 
+foreign import javascript unsafe "$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 indx x
+  = liftIO
+      (js_vertexAttrib1f (toWebGLRenderingContextBase self) indx x)
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib1fv\"]($2, $3)"
+        js_vertexAttrib1fv ::
+        WebGLRenderingContextBase ->
+          GLuint -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1fv Mozilla WebGLRenderingContextBase.vertexAttrib1fv documentation> 
+vertexAttrib1fv ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 IsFloat32Array values) =>
+                  self -> GLuint -> Maybe values -> m ()
+vertexAttrib1fv self indx values
+  = liftIO
+      (js_vertexAttrib1fv (toWebGLRenderingContextBase self) indx
+         (maybeToNullable (fmap toFloat32Array values)))
+ 
+foreign import javascript unsafe
+        "$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 indx x y
+  = liftIO
+      (js_vertexAttrib2f (toWebGLRenderingContextBase self) indx x y)
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib2fv\"]($2, $3)"
+        js_vertexAttrib2fv ::
+        WebGLRenderingContextBase ->
+          GLuint -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2fv Mozilla WebGLRenderingContextBase.vertexAttrib2fv documentation> 
+vertexAttrib2fv ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 IsFloat32Array values) =>
+                  self -> GLuint -> Maybe values -> m ()
+vertexAttrib2fv self indx values
+  = liftIO
+      (js_vertexAttrib2fv (toWebGLRenderingContextBase self) indx
+         (maybeToNullable (fmap toFloat32Array values)))
+ 
+foreign import javascript unsafe
+        "$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 indx x y z
+  = liftIO
+      (js_vertexAttrib3f (toWebGLRenderingContextBase self) indx x y z)
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib3fv\"]($2, $3)"
+        js_vertexAttrib3fv ::
+        WebGLRenderingContextBase ->
+          GLuint -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3fv Mozilla WebGLRenderingContextBase.vertexAttrib3fv documentation> 
+vertexAttrib3fv ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 IsFloat32Array values) =>
+                  self -> GLuint -> Maybe values -> m ()
+vertexAttrib3fv self indx values
+  = liftIO
+      (js_vertexAttrib3fv (toWebGLRenderingContextBase self) indx
+         (maybeToNullable (fmap toFloat32Array values)))
+ 
+foreign import javascript unsafe
+        "$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 indx x y z w
+  = liftIO
+      (js_vertexAttrib4f (toWebGLRenderingContextBase self) indx x y z w)
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib4fv\"]($2, $3)"
+        js_vertexAttrib4fv ::
+        WebGLRenderingContextBase ->
+          GLuint -> Nullable Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4fv Mozilla WebGLRenderingContextBase.vertexAttrib4fv documentation> 
+vertexAttrib4fv ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 IsFloat32Array values) =>
+                  self -> GLuint -> Maybe values -> m ()
+vertexAttrib4fv self indx values
+  = liftIO
+      (js_vertexAttrib4fv (toWebGLRenderingContextBase self) indx
+         (maybeToNullable (fmap toFloat32Array values)))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"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,41 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat
+       (js_getRangeMin, getRangeMin, js_getRangeMax, getRangeMax,
+        js_getPrecision, getPrecision, WebGLShaderPrecisionFormat,
+        castToWebGLShaderPrecisionFormat, gTypeWebGLShaderPrecisionFormat)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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/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,37 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent
+       (js_getAnimationName, getAnimationName, js_getElapsedTime,
+        getElapsedTime, WebKitAnimationEvent, castToWebKitAnimationEvent,
+        gTypeWebKitAnimationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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/WebKitCSSFilterValue.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSFilterValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSFilterValue.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitCSSFilterValue
+       (js__get, _get, pattern CSS_FILTER_REFERENCE,
+        pattern CSS_FILTER_GRAYSCALE, pattern CSS_FILTER_SEPIA,
+        pattern CSS_FILTER_SATURATE, pattern CSS_FILTER_HUE_ROTATE,
+        pattern CSS_FILTER_INVERT, pattern CSS_FILTER_OPACITY,
+        pattern CSS_FILTER_BRIGHTNESS, pattern CSS_FILTER_CONTRAST,
+        pattern CSS_FILTER_BLUR, pattern CSS_FILTER_DROP_SHADOW,
+        js_getOperationType, getOperationType, WebKitCSSFilterValue,
+        castToWebKitCSSFilterValue, gTypeWebKitCSSFilterValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        WebKitCSSFilterValue -> Word -> IO (Nullable CSSValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue._get Mozilla WebKitCSSFilterValue._get documentation> 
+_get ::
+     (MonadIO m) => WebKitCSSFilterValue -> Word -> m (Maybe CSSValue)
+_get self index
+  = liftIO (nullableToMaybe <$> (js__get (self) index))
+pattern CSS_FILTER_REFERENCE = 1
+pattern CSS_FILTER_GRAYSCALE = 2
+pattern CSS_FILTER_SEPIA = 3
+pattern CSS_FILTER_SATURATE = 4
+pattern CSS_FILTER_HUE_ROTATE = 5
+pattern CSS_FILTER_INVERT = 6
+pattern CSS_FILTER_OPACITY = 7
+pattern CSS_FILTER_BRIGHTNESS = 8
+pattern CSS_FILTER_CONTRAST = 9
+pattern CSS_FILTER_BLUR = 10
+pattern CSS_FILTER_DROP_SHADOW = 11
+ 
+foreign import javascript unsafe "$1[\"operationType\"]"
+        js_getOperationType :: WebKitCSSFilterValue -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue.operationType Mozilla WebKitCSSFilterValue.operationType documentation> 
+getOperationType :: (MonadIO m) => WebKitCSSFilterValue -> m Word
+getOperationType self = liftIO (js_getOperationType (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,468 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix
+       (js_newWebKitCSSMatrix, newWebKitCSSMatrix, js_setMatrixValue,
+        setMatrixValue, js_multiply, multiply, js_inverse, inverse,
+        js_translate, translate, js_scale, scale, js_rotate, rotate,
+        js_rotateAxisAngle, rotateAxisAngle, js_skewX, skewX, js_skewY,
+        skewY, js_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,
+        castToWebKitCSSMatrix, gTypeWebKitCSSMatrix)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"WebKitCSSMatrix\"]($1)" js_newWebKitCSSMatrix ::
+        JSString -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation> 
+newWebKitCSSMatrix ::
+                   (MonadIO m, ToJSString cssValue) => cssValue -> m WebKitCSSMatrix
+newWebKitCSSMatrix cssValue
+  = liftIO (js_newWebKitCSSMatrix (toJSString cssValue))
+ 
+foreign import javascript unsafe "$1[\"setMatrixValue\"]($2)"
+        js_setMatrixValue :: WebKitCSSMatrix -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.setMatrixValue Mozilla WebKitCSSMatrix.setMatrixValue documentation> 
+setMatrixValue ::
+               (MonadIO m, ToJSString string) => WebKitCSSMatrix -> string -> m ()
+setMatrixValue self string
+  = liftIO (js_setMatrixValue (self) (toJSString string))
+ 
+foreign import javascript unsafe "$1[\"multiply\"]($2)" js_multiply
+        ::
+        WebKitCSSMatrix ->
+          Nullable WebKitCSSMatrix -> IO (Nullable WebKitCSSMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
+multiply ::
+         (MonadIO m) =>
+           WebKitCSSMatrix ->
+             Maybe WebKitCSSMatrix -> m (Maybe WebKitCSSMatrix)
+multiply self secondMatrix
+  = liftIO
+      (nullableToMaybe <$>
+         (js_multiply (self) (maybeToNullable secondMatrix)))
+ 
+foreign import javascript unsafe "$1[\"inverse\"]()" js_inverse ::
+        WebKitCSSMatrix -> IO (Nullable WebKitCSSMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
+inverse ::
+        (MonadIO m) => WebKitCSSMatrix -> m (Maybe WebKitCSSMatrix)
+inverse self = liftIO (nullableToMaybe <$> (js_inverse (self)))
+ 
+foreign import javascript unsafe "$1[\"translate\"]($2, $3, $4)"
+        js_translate ::
+        WebKitCSSMatrix ->
+          Double -> Double -> Double -> IO (Nullable WebKitCSSMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
+translate ::
+          (MonadIO m) =>
+            WebKitCSSMatrix ->
+              Double -> Double -> Double -> m (Maybe WebKitCSSMatrix)
+translate self x y z
+  = liftIO (nullableToMaybe <$> (js_translate (self) x y z))
+ 
+foreign import javascript unsafe "$1[\"scale\"]($2, $3, $4)"
+        js_scale ::
+        WebKitCSSMatrix ->
+          Double -> Double -> Double -> IO (Nullable WebKitCSSMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
+scale ::
+      (MonadIO m) =>
+        WebKitCSSMatrix ->
+          Double -> Double -> Double -> m (Maybe WebKitCSSMatrix)
+scale self scaleX scaleY scaleZ
+  = liftIO
+      (nullableToMaybe <$> (js_scale (self) scaleX scaleY scaleZ))
+ 
+foreign import javascript unsafe "$1[\"rotate\"]($2, $3, $4)"
+        js_rotate ::
+        WebKitCSSMatrix ->
+          Double -> Double -> Double -> IO (Nullable WebKitCSSMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
+rotate ::
+       (MonadIO m) =>
+         WebKitCSSMatrix ->
+           Double -> Double -> Double -> m (Maybe WebKitCSSMatrix)
+rotate self rotX rotY rotZ
+  = liftIO (nullableToMaybe <$> (js_rotate (self) rotX rotY rotZ))
+ 
+foreign import javascript unsafe
+        "$1[\"rotateAxisAngle\"]($2, $3,\n$4, $5)" js_rotateAxisAngle ::
+        WebKitCSSMatrix ->
+          Double ->
+            Double -> Double -> Double -> IO (Nullable WebKitCSSMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
+rotateAxisAngle ::
+                (MonadIO m) =>
+                  WebKitCSSMatrix ->
+                    Double -> Double -> Double -> Double -> m (Maybe WebKitCSSMatrix)
+rotateAxisAngle self x y z angle
+  = liftIO
+      (nullableToMaybe <$> (js_rotateAxisAngle (self) x y z angle))
+ 
+foreign import javascript unsafe "$1[\"skewX\"]($2)" js_skewX ::
+        WebKitCSSMatrix -> Double -> IO (Nullable WebKitCSSMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
+skewX ::
+      (MonadIO m) =>
+        WebKitCSSMatrix -> Double -> m (Maybe WebKitCSSMatrix)
+skewX self angle
+  = liftIO (nullableToMaybe <$> (js_skewX (self) angle))
+ 
+foreign import javascript unsafe "$1[\"skewY\"]($2)" js_skewY ::
+        WebKitCSSMatrix -> Double -> IO (Nullable WebKitCSSMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
+skewY ::
+      (MonadIO m) =>
+        WebKitCSSMatrix -> Double -> m (Maybe WebKitCSSMatrix)
+skewY self angle
+  = liftIO (nullableToMaybe <$> (js_skewY (self) angle))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule
+       (js_getCssRules, getCssRules, WebKitCSSRegionRule,
+        castToWebKitCSSRegionRule, gTypeWebKitCSSRegionRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: WebKitCSSRegionRule -> IO (Nullable CSSRuleList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
+getCssRules ::
+            (MonadIO m) => WebKitCSSRegionRule -> m (Maybe CSSRuleList)
+getCssRules self
+  = liftIO (nullableToMaybe <$> (js_getCssRules (self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSTransformValue.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSTransformValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSTransformValue.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitCSSTransformValue
+       (js__get, _get, pattern CSS_TRANSLATE, pattern CSS_TRANSLATEX,
+        pattern CSS_TRANSLATEY, pattern CSS_ROTATE, pattern CSS_SCALE,
+        pattern CSS_SCALEX, pattern CSS_SCALEY, pattern CSS_SKEW,
+        pattern CSS_SKEWX, pattern CSS_SKEWY, pattern CSS_MATRIX,
+        pattern CSS_TRANSLATEZ, pattern CSS_TRANSLATE3D,
+        pattern CSS_ROTATEX, pattern CSS_ROTATEY, pattern CSS_ROTATEZ,
+        pattern CSS_ROTATE3D, pattern CSS_SCALEZ, pattern CSS_SCALE3D,
+        pattern CSS_PERSPECTIVE, pattern CSS_MATRIX3D, js_getOperationType,
+        getOperationType, WebKitCSSTransformValue,
+        castToWebKitCSSTransformValue, gTypeWebKitCSSTransformValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        WebKitCSSTransformValue -> Word -> IO (Nullable CSSValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue._get Mozilla WebKitCSSTransformValue._get documentation> 
+_get ::
+     (MonadIO m) =>
+       WebKitCSSTransformValue -> Word -> m (Maybe CSSValue)
+_get self index
+  = liftIO (nullableToMaybe <$> (js__get (self) index))
+pattern CSS_TRANSLATE = 1
+pattern CSS_TRANSLATEX = 2
+pattern CSS_TRANSLATEY = 3
+pattern CSS_ROTATE = 4
+pattern CSS_SCALE = 5
+pattern CSS_SCALEX = 6
+pattern CSS_SCALEY = 7
+pattern CSS_SKEW = 8
+pattern CSS_SKEWX = 9
+pattern CSS_SKEWY = 10
+pattern CSS_MATRIX = 11
+pattern CSS_TRANSLATEZ = 12
+pattern CSS_TRANSLATE3D = 13
+pattern CSS_ROTATEX = 14
+pattern CSS_ROTATEY = 15
+pattern CSS_ROTATEZ = 16
+pattern CSS_ROTATE3D = 17
+pattern CSS_SCALEZ = 18
+pattern CSS_SCALE3D = 19
+pattern CSS_PERSPECTIVE = 20
+pattern CSS_MATRIX3D = 21
+ 
+foreign import javascript unsafe "$1[\"operationType\"]"
+        js_getOperationType :: WebKitCSSTransformValue -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue.operationType Mozilla WebKitCSSTransformValue.operationType documentation> 
+getOperationType ::
+                 (MonadIO m) => WebKitCSSTransformValue -> m Word
+getOperationType self = liftIO (js_getOperationType (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,28 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule
+       (js_getStyle, getStyle, WebKitCSSViewportRule,
+        castToWebKitCSSViewportRule, gTypeWebKitCSSViewportRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        WebKitCSSViewportRule -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
+getStyle ::
+         (MonadIO m) =>
+           WebKitCSSViewportRule -> m (Maybe CSSStyleDeclaration)
+getStyle self = liftIO (nullableToMaybe <$> (js_getStyle (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,75 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow
+       (js_getRegionsByContent, getRegionsByContent, js_getRegions,
+        getRegions, js_getContent, getContent, js_getName, getName,
+        js_getOverset, getOverset, js_getFirstEmptyRegionIndex,
+        getFirstEmptyRegionIndex, WebKitNamedFlow, castToWebKitNamedFlow,
+        gTypeWebKitNamedFlow)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"getRegionsByContent\"]($2)"
+        js_getRegionsByContent ::
+        WebKitNamedFlow -> Nullable Node -> IO (Nullable 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 (Maybe NodeList)
+getRegionsByContent self contentNode
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getRegionsByContent (self)
+            (maybeToNullable (fmap toNode contentNode))))
+ 
+foreign import javascript unsafe "$1[\"getRegions\"]()"
+        js_getRegions :: WebKitNamedFlow -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
+getRegions :: (MonadIO m) => WebKitNamedFlow -> m (Maybe NodeList)
+getRegions self
+  = liftIO (nullableToMaybe <$> (js_getRegions (self)))
+ 
+foreign import javascript unsafe "$1[\"getContent\"]()"
+        js_getContent :: WebKitNamedFlow -> IO (Nullable NodeList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
+getContent :: (MonadIO m) => WebKitNamedFlow -> m (Maybe NodeList)
+getContent self
+  = liftIO (nullableToMaybe <$> (js_getContent (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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,30 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitNamespace
+       (js_getMessageHandlers, getMessageHandlers, WebKitNamespace,
+        castToWebKitNamespace, gTypeWebKitNamespace)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"messageHandlers\"]"
+        js_getMessageHandlers ::
+        WebKitNamespace -> IO (Nullable UserMessageHandlersNamespace)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
+getMessageHandlers ::
+                   (MonadIO m) =>
+                     WebKitNamespace -> m (Maybe UserMessageHandlersNamespace)
+getMessageHandlers self
+  = liftIO (nullableToMaybe <$> (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,32 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent
+       (js_getAvailability, getAvailability,
+        WebKitPlaybackTargetAvailabilityEvent,
+        castToWebKitPlaybackTargetAvailabilityEvent,
+        gTypeWebKitPlaybackTargetAvailabilityEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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,63 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitPoint
+       (js_newWebKitPoint, newWebKitPoint, js_newWebKitPoint',
+        newWebKitPoint', js_setX, setX, js_getX, getX, js_setY, setY,
+        js_getY, getY, WebKitPoint, castToWebKitPoint, gTypeWebKitPoint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"WebKitPoint\"]()"
+        js_newWebKitPoint :: IO WebKitPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
+newWebKitPoint :: (MonadIO m) => m WebKitPoint
+newWebKitPoint = liftIO (js_newWebKitPoint)
+ 
+foreign import javascript unsafe
+        "new window[\"WebKitPoint\"]($1,\n$2)" js_newWebKitPoint' ::
+        Float -> Float -> IO WebKitPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
+newWebKitPoint' :: (MonadIO m) => Float -> Float -> m WebKitPoint
+newWebKitPoint' x y = liftIO (js_newWebKitPoint' x y)
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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/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,48 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent
+       (js_getPropertyName, getPropertyName, js_getElapsedTime,
+        getElapsedTime, js_getPseudoElement, getPseudoElement,
+        WebKitTransitionEvent, castToWebKitTransitionEvent,
+        gTypeWebKitTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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[\"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,178 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+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, js_getExtensions, getExtensions,
+        js_setBinaryType, setBinaryType, js_getBinaryType, getBinaryType,
+        WebSocket, castToWebSocket, gTypeWebSocket)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 -> Maybe [protocols] -> m WebSocket
+newWebSocket url protocols
+  = liftIO
+      (toJSVal protocols >>=
+         \ protocols' -> js_newWebSocket (toJSString url) protocols')
+ 
+foreign import javascript unsafe
+        "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 unsafe "$1[\"send\"]($2)" js_send ::
+        WebSocket -> Nullable ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+send ::
+     (MonadIO m, IsArrayBuffer data') =>
+       WebSocket -> Maybe data' -> m ()
+send self data'
+  = liftIO
+      (js_send (self) (maybeToNullable (fmap toArrayBuffer data')))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendView ::
+        WebSocket -> Nullable ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+sendView ::
+         (MonadIO m, IsArrayBufferView data') =>
+           WebSocket -> Maybe data' -> m ()
+sendView self data'
+  = liftIO
+      (js_sendView (self)
+         (maybeToNullable (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendBlob ::
+        WebSocket -> Nullable Blob -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+sendBlob ::
+         (MonadIO m, IsBlob data') => WebSocket -> Maybe data' -> m ()
+sendBlob self data'
+  = liftIO (js_sendBlob (self) (maybeToNullable (fmap toBlob data')))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"close\"]($2, $3)" js_close
+        :: WebSocket -> Word -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.close Mozilla WebSocket.close documentation> 
+close ::
+      (MonadIO m, ToJSString reason) =>
+        WebSocket -> Word -> reason -> m ()
+close self code reason
+  = liftIO (js_close (self) code (toJSString reason))
+pattern CONNECTING = 0
+pattern OPEN = 1
+pattern CLOSING = 2
+pattern CLOSED = 3
+ 
+foreign import javascript unsafe "$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[\"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[\"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 = unsafeEventName (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onmessage Mozilla WebSocket.onmessage documentation> 
+message :: EventName WebSocket MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onerror Mozilla WebSocket.onerror documentation> 
+error :: EventName WebSocket UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onclose Mozilla WebSocket.onclose documentation> 
+closeEvent :: EventName WebSocket CloseEvent
+closeEvent = unsafeEventName (toJSString "close")
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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,119 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WheelEvent
+       (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, castToWheelEvent,
+        gTypeWheelEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initWebKitWheelEvent\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10,\n$11, $12)"
+        js_initWebKitWheelEvent ::
+        WheelEvent ->
+          Int ->
+            Int ->
+              Nullable Window ->
+                Int -> Int -> Int -> 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 ->
+                         Int ->
+                           Int ->
+                             Maybe Window ->
+                               Int -> Int -> Int -> Int -> Bool -> Bool -> Bool -> Bool -> m ()
+initWebKitWheelEvent self wheelDeltaX wheelDeltaY view screenX
+  screenY clientX clientY ctrlKey altKey shiftKey metaKey
+  = liftIO
+      (js_initWebKitWheelEvent (self) wheelDeltaX wheelDeltaY
+         (maybeToNullable view)
+         screenX
+         screenY
+         clientX
+         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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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,1250 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Window
+       (js_openDatabase, openDatabase, js_getSelection, getSelection,
+        js_focus, focus, js_blur, blur, js_close, close, js_print, print,
+        js_stop, stop, js_open, open, js_showModalDialog, showModalDialog,
+        js_alert, alert, js_confirm, confirm, js_prompt, prompt, js_find,
+        find, js_scrollBy, scrollBy, js_scrollTo, scrollTo, js_scroll,
+        scroll, js_moveBy, moveBy, js_moveTo, moveTo, js_resizeBy,
+        resizeBy, js_resizeTo, resizeTo, js_matchMedia, matchMedia,
+        js_getComputedStyle, getComputedStyle, js_getMatchedCSSRules,
+        getMatchedCSSRules, js_webkitConvertPointFromPageToNode,
+        webkitConvertPointFromPageToNode,
+        js_webkitConvertPointFromNodeToPage,
+        webkitConvertPointFromNodeToPage, js_postMessage, postMessage,
+        js_requestAnimationFrame, requestAnimationFrame,
+        js_cancelAnimationFrame, cancelAnimationFrame,
+        js_webkitRequestAnimationFrame, webkitRequestAnimationFrame,
+        js_webkitCancelAnimationFrame, webkitCancelAnimationFrame,
+        js_webkitCancelRequestAnimationFrame,
+        webkitCancelRequestAnimationFrame, js_captureEvents, captureEvents,
+        js_releaseEvents, releaseEvents, js_getWebkitIndexedDB,
+        getWebkitIndexedDB, js_getIndexedDB, getIndexedDB,
+        js_getWebkitStorageInfo, getWebkitStorageInfo,
+        js_getSpeechSynthesis, getSpeechSynthesis, js_getScreen, getScreen,
+        js_getHistory, getHistory, js_getLocationbar, getLocationbar,
+        js_getMenubar, getMenubar, js_getPersonalbar, getPersonalbar,
+        js_getScrollbars, getScrollbars, js_getStatusbar, getStatusbar,
+        js_getToolbar, getToolbar, js_getNavigator, getNavigator,
+        js_getClientInformation, getClientInformation, js_getCrypto,
+        getCrypto, js_setLocation, setLocation, js_getLocation,
+        getLocation, js_getEvent, getEvent, js_getFrameElement,
+        getFrameElement, js_getOffscreenBuffering, getOffscreenBuffering,
+        js_getOuterHeight, getOuterHeight, js_getOuterWidth, getOuterWidth,
+        js_getInnerHeight, getInnerHeight, js_getInnerWidth, getInnerWidth,
+        js_getScreenX, getScreenX, js_getScreenY, getScreenY,
+        js_getScreenLeft, getScreenLeft, js_getScreenTop, getScreenTop,
+        js_getScrollX, getScrollX, js_getScrollY, getScrollY,
+        js_getPageXOffset, getPageXOffset, js_getPageYOffset,
+        getPageYOffset, js_getClosed, getClosed, js_getLength, getLength,
+        js_setName, setName, js_getName, getName, js_setStatus, setStatus,
+        js_getStatus, getStatus, js_setDefaultStatus, setDefaultStatus,
+        js_getDefaultStatus, getDefaultStatus, js_setDefaultstatus,
+        setDefaultstatus, js_getDefaultstatus, getDefaultstatus,
+        js_getSelf, getSelf, js_getWindow, getWindow, js_getFrames,
+        getFrames, js_getOpener, getOpener, js_getParent, getParent,
+        js_getTop, getTop, js_getDocument, getDocument, js_getStyleMedia,
+        getStyleMedia, js_getDevicePixelRatio, getDevicePixelRatio,
+        js_getApplicationCache, getApplicationCache, js_getSessionStorage,
+        getSessionStorage, js_getLocalStorage, getLocalStorage,
+        js_getOrientation, getOrientation, js_getPerformance,
+        getPerformance, js_getCSS, getCSS, abort, beforeUnload, blurEvent,
+        canPlay, canPlayThrough, change, click, contextMenu, dblClick,
+        drag, dragEnd, dragEnter, dragLeave, dragOver, dragStart, drop,
+        durationChange, emptied, ended, error, focusEvent, hashChange,
+        input, invalid, keyDown, keyPress, keyUp, load, loadedData,
+        loadedMetadata, loadStart, message, mouseDown, mouseEnter,
+        mouseLeave, mouseMove, mouseOut, mouseOver, mouseUp, mouseWheel,
+        offline, online, pageHide, pageShow, pause, play, playing,
+        popState, progress, rateChange, resize, scrollEvent, seeked,
+        seeking, select, stalled, storage, submit, suspend, timeUpdate,
+        unload, volumeChange, waiting, wheel, reset, search,
+        webKitAnimationEnd, webKitAnimationIteration, webKitAnimationStart,
+        animationEnd, animationIteration, animationStart,
+        webKitTransitionEnd, transitionEnd, orientationChange, touchStart,
+        touchMove, touchEnd, touchCancel, gestureStart, gestureChange,
+        gestureEnd, deviceMotion, deviceOrientation, webKitDeviceProximity,
+        webKitWillRevealBottom, webKitWillRevealLeft,
+        webKitWillRevealRight, webKitWillRevealTop, Window, castToWindow,
+        gTypeWindow)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"openDatabase\"]($2, $3, $4,\n$5, $6)" js_openDatabase ::
+        Window ->
+          JSString ->
+            JSString ->
+              JSString ->
+                Word -> Nullable 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
+            (maybeToNullable creationCallback)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"open\"]($2, $3, $4)" js_open
+        ::
+        Window -> JSString -> JSString -> 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 name, ToJSString options) =>
+       Window -> url -> name -> options -> m (Maybe Window)
+open self url name options
+  = liftIO
+      (nullableToMaybe <$>
+         (js_open (self) (toJSString url) (toJSString name)
+            (toJSString options)))
+ 
+foreign import javascript unsafe
+        "$1[\"showModalDialog\"]($2, $3,\n$4)" js_showModalDialog ::
+        Window -> JSString -> JSVal -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
+showModalDialog ::
+                (MonadIO m, ToJSString url, ToJSString featureArgs) =>
+                  Window -> url -> JSVal -> featureArgs -> m JSVal
+showModalDialog self url dialogArgs featureArgs
+  = liftIO
+      (js_showModalDialog (self) (toJSString url) dialogArgs
+         (toJSString featureArgs))
+ 
+foreign import javascript unsafe "$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[\"confirm\"]($2) ? 1 : 0)"
+        js_confirm :: Window -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.confirm Mozilla Window.confirm documentation> 
+confirm ::
+        (MonadIO m, ToJSString message) => Window -> message -> m Bool
+confirm self message
+  = liftIO (js_confirm (self) (toJSString message))
+ 
+foreign import javascript unsafe "$1[\"prompt\"]($2, $3)" js_prompt
+        ::
+        Window -> JSString -> Nullable 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 -> message -> Maybe defaultValue -> m (Maybe result)
+prompt self message defaultValue
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_prompt (self) (toJSString message)
+            (toMaybeJSString defaultValue)))
+ 
+foreign import javascript unsafe
+        "($1[\"find\"]($2, $3, $4, $5, $6,\n$7, $8) ? 1 : 0)" js_find ::
+        Window ->
+          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 ->
+         string -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> m Bool
+find self string caseSensitive backwards wrap wholeWord
+  searchInFrames showDialog
+  = liftIO
+      (js_find (self) (toJSString string) caseSensitive backwards wrap
+         wholeWord
+         searchInFrames
+         showDialog)
+ 
+foreign import javascript unsafe "$1[\"scrollBy\"]($2, $3)"
+        js_scrollBy :: Window -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollBy Mozilla Window.scrollBy documentation> 
+scrollBy :: (MonadIO m) => Window -> Int -> Int -> m ()
+scrollBy self x y = liftIO (js_scrollBy (self) x y)
+ 
+foreign import javascript unsafe "$1[\"scrollTo\"]($2, $3)"
+        js_scrollTo :: Window -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollTo Mozilla Window.scrollTo documentation> 
+scrollTo :: (MonadIO m) => Window -> Int -> Int -> m ()
+scrollTo self x y = liftIO (js_scrollTo (self) x y)
+ 
+foreign import javascript unsafe "$1[\"scroll\"]($2, $3)" js_scroll
+        :: Window -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scroll Mozilla Window.scroll documentation> 
+scroll :: (MonadIO m) => Window -> Int -> Int -> m ()
+scroll self x y = liftIO (js_scroll (self) x y)
+ 
+foreign import javascript unsafe "$1[\"moveBy\"]($2, $3)" js_moveBy
+        :: Window -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveBy Mozilla Window.moveBy documentation> 
+moveBy :: (MonadIO m) => Window -> Float -> Float -> m ()
+moveBy self x y = liftIO (js_moveBy (self) x y)
+ 
+foreign import javascript unsafe "$1[\"moveTo\"]($2, $3)" js_moveTo
+        :: Window -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveTo Mozilla Window.moveTo documentation> 
+moveTo :: (MonadIO m) => Window -> Float -> Float -> m ()
+moveTo self x y = liftIO (js_moveTo (self) x y)
+ 
+foreign import javascript unsafe "$1[\"resizeBy\"]($2, $3)"
+        js_resizeBy :: Window -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeBy Mozilla Window.resizeBy documentation> 
+resizeBy :: (MonadIO m) => Window -> Float -> Float -> m ()
+resizeBy self x y = liftIO (js_resizeBy (self) x y)
+ 
+foreign import javascript unsafe "$1[\"resizeTo\"]($2, $3)"
+        js_resizeTo :: Window -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeTo Mozilla Window.resizeTo documentation> 
+resizeTo :: (MonadIO m) => Window -> Float -> Float -> m ()
+resizeTo self width height
+  = liftIO (js_resizeTo (self) width height)
+ 
+foreign import javascript unsafe "$1[\"matchMedia\"]($2)"
+        js_matchMedia :: Window -> JSString -> IO (Nullable MediaQueryList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
+matchMedia ::
+           (MonadIO m, ToJSString query) =>
+             Window -> query -> m (Maybe MediaQueryList)
+matchMedia self query
+  = liftIO
+      (nullableToMaybe <$> (js_matchMedia (self) (toJSString query)))
+ 
+foreign import javascript unsafe "$1[\"getComputedStyle\"]($2, $3)"
+        js_getComputedStyle ::
+        Window ->
+          Nullable Element ->
+            Nullable JSString -> IO (Nullable CSSStyleDeclaration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
+getComputedStyle ::
+                 (MonadIO m, IsElement element, ToJSString pseudoElement) =>
+                   Window ->
+                     Maybe element ->
+                       Maybe pseudoElement -> m (Maybe CSSStyleDeclaration)
+getComputedStyle self element pseudoElement
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getComputedStyle (self)
+            (maybeToNullable (fmap toElement element))
+            (toMaybeJSString pseudoElement)))
+ 
+foreign import javascript unsafe
+        "$1[\"getMatchedCSSRules\"]($2, $3)" js_getMatchedCSSRules ::
+        Window ->
+          Nullable Element -> Nullable JSString -> IO (Nullable 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 (Maybe CSSRuleList)
+getMatchedCSSRules self element pseudoElement
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getMatchedCSSRules (self)
+            (maybeToNullable (fmap toElement element))
+            (toMaybeJSString pseudoElement)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitConvertPointFromPageToNode\"]($2,\n$3)"
+        js_webkitConvertPointFromPageToNode ::
+        Window ->
+          Nullable Node -> Nullable WebKitPoint -> IO (Nullable 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 (Maybe WebKitPoint)
+webkitConvertPointFromPageToNode self node p
+  = liftIO
+      (nullableToMaybe <$>
+         (js_webkitConvertPointFromPageToNode (self)
+            (maybeToNullable (fmap toNode node))
+            (maybeToNullable p)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitConvertPointFromNodeToPage\"]($2,\n$3)"
+        js_webkitConvertPointFromNodeToPage ::
+        Window ->
+          Nullable Node -> Nullable WebKitPoint -> IO (Nullable 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 (Maybe WebKitPoint)
+webkitConvertPointFromNodeToPage self node p
+  = liftIO
+      (nullableToMaybe <$>
+         (js_webkitConvertPointFromNodeToPage (self)
+            (maybeToNullable (fmap toNode node))
+            (maybeToNullable p)))
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2, $3, $4)"
+        js_postMessage ::
+        Window ->
+          Nullable SerializedScriptValue ->
+            JSString -> Nullable Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage Mozilla Window.postMessage documentation> 
+postMessage ::
+            (MonadIO m, IsSerializedScriptValue message,
+             ToJSString targetOrigin, IsArray messagePorts) =>
+              Window ->
+                Maybe message -> targetOrigin -> Maybe messagePorts -> m ()
+postMessage self message targetOrigin messagePorts
+  = liftIO
+      (js_postMessage (self)
+         (maybeToNullable (fmap toSerializedScriptValue message))
+         (toJSString targetOrigin)
+         (maybeToNullable (fmap toArray messagePorts)))
+ 
+foreign import javascript unsafe
+        "$1[\"requestAnimationFrame\"]($2)" js_requestAnimationFrame ::
+        Window -> Nullable RequestAnimationFrameCallback -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.requestAnimationFrame Mozilla Window.requestAnimationFrame documentation> 
+requestAnimationFrame ::
+                      (MonadIO m) =>
+                        Window -> Maybe RequestAnimationFrameCallback -> m Int
+requestAnimationFrame self callback
+  = liftIO
+      (js_requestAnimationFrame (self) (maybeToNullable callback))
+ 
+foreign import javascript unsafe "$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 id
+  = liftIO (js_cancelAnimationFrame (self) id)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitRequestAnimationFrame\"]($2)"
+        js_webkitRequestAnimationFrame ::
+        Window -> Nullable RequestAnimationFrameCallback -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitRequestAnimationFrame Mozilla Window.webkitRequestAnimationFrame documentation> 
+webkitRequestAnimationFrame ::
+                            (MonadIO m) =>
+                              Window -> Maybe RequestAnimationFrameCallback -> m Int
+webkitRequestAnimationFrame self callback
+  = liftIO
+      (js_webkitRequestAnimationFrame (self) (maybeToNullable callback))
+ 
+foreign import javascript unsafe
+        "$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[\"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[\"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[\"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[\"webkitIndexedDB\"]"
+        js_getWebkitIndexedDB :: Window -> IO (Nullable IDBFactory)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitIndexedDB Mozilla Window.webkitIndexedDB documentation> 
+getWebkitIndexedDB :: (MonadIO m) => Window -> m (Maybe IDBFactory)
+getWebkitIndexedDB self
+  = liftIO (nullableToMaybe <$> (js_getWebkitIndexedDB (self)))
+ 
+foreign import javascript unsafe "$1[\"indexedDB\"]"
+        js_getIndexedDB :: Window -> IO (Nullable IDBFactory)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.indexedDB Mozilla Window.indexedDB documentation> 
+getIndexedDB :: (MonadIO m) => Window -> m (Maybe IDBFactory)
+getIndexedDB self
+  = liftIO (nullableToMaybe <$> (js_getIndexedDB (self)))
+ 
+foreign import javascript unsafe "$1[\"webkitStorageInfo\"]"
+        js_getWebkitStorageInfo :: Window -> IO (Nullable StorageInfo)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitStorageInfo Mozilla Window.webkitStorageInfo documentation> 
+getWebkitStorageInfo ::
+                     (MonadIO m) => Window -> m (Maybe StorageInfo)
+getWebkitStorageInfo self
+  = liftIO (nullableToMaybe <$> (js_getWebkitStorageInfo (self)))
+ 
+foreign import javascript unsafe "$1[\"speechSynthesis\"]"
+        js_getSpeechSynthesis :: Window -> IO (Nullable SpeechSynthesis)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.speechSynthesis Mozilla Window.speechSynthesis documentation> 
+getSpeechSynthesis ::
+                   (MonadIO m) => Window -> m (Maybe SpeechSynthesis)
+getSpeechSynthesis self
+  = liftIO (nullableToMaybe <$> (js_getSpeechSynthesis (self)))
+ 
+foreign import javascript unsafe "$1[\"screen\"]" js_getScreen ::
+        Window -> IO (Nullable Screen)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screen Mozilla Window.screen documentation> 
+getScreen :: (MonadIO m) => Window -> m (Maybe Screen)
+getScreen self = liftIO (nullableToMaybe <$> (js_getScreen (self)))
+ 
+foreign import javascript unsafe "$1[\"history\"]" js_getHistory ::
+        Window -> IO (Nullable History)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.history Mozilla Window.history documentation> 
+getHistory :: (MonadIO m) => Window -> m (Maybe History)
+getHistory self
+  = liftIO (nullableToMaybe <$> (js_getHistory (self)))
+ 
+foreign import javascript unsafe "$1[\"locationbar\"]"
+        js_getLocationbar :: Window -> IO (Nullable BarProp)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.locationbar Mozilla Window.locationbar documentation> 
+getLocationbar :: (MonadIO m) => Window -> m (Maybe BarProp)
+getLocationbar self
+  = liftIO (nullableToMaybe <$> (js_getLocationbar (self)))
+ 
+foreign import javascript unsafe "$1[\"menubar\"]" js_getMenubar ::
+        Window -> IO (Nullable BarProp)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.menubar Mozilla Window.menubar documentation> 
+getMenubar :: (MonadIO m) => Window -> m (Maybe BarProp)
+getMenubar self
+  = liftIO (nullableToMaybe <$> (js_getMenubar (self)))
+ 
+foreign import javascript unsafe "$1[\"personalbar\"]"
+        js_getPersonalbar :: Window -> IO (Nullable BarProp)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.personalbar Mozilla Window.personalbar documentation> 
+getPersonalbar :: (MonadIO m) => Window -> m (Maybe BarProp)
+getPersonalbar self
+  = liftIO (nullableToMaybe <$> (js_getPersonalbar (self)))
+ 
+foreign import javascript unsafe "$1[\"scrollbars\"]"
+        js_getScrollbars :: Window -> IO (Nullable BarProp)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollbars Mozilla Window.scrollbars documentation> 
+getScrollbars :: (MonadIO m) => Window -> m (Maybe BarProp)
+getScrollbars self
+  = liftIO (nullableToMaybe <$> (js_getScrollbars (self)))
+ 
+foreign import javascript unsafe "$1[\"statusbar\"]"
+        js_getStatusbar :: Window -> IO (Nullable BarProp)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.statusbar Mozilla Window.statusbar documentation> 
+getStatusbar :: (MonadIO m) => Window -> m (Maybe BarProp)
+getStatusbar self
+  = liftIO (nullableToMaybe <$> (js_getStatusbar (self)))
+ 
+foreign import javascript unsafe "$1[\"toolbar\"]" js_getToolbar ::
+        Window -> IO (Nullable BarProp)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.toolbar Mozilla Window.toolbar documentation> 
+getToolbar :: (MonadIO m) => Window -> m (Maybe BarProp)
+getToolbar self
+  = liftIO (nullableToMaybe <$> (js_getToolbar (self)))
+ 
+foreign import javascript unsafe "$1[\"navigator\"]"
+        js_getNavigator :: Window -> IO (Nullable Navigator)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator Mozilla Window.navigator documentation> 
+getNavigator :: (MonadIO m) => Window -> m (Maybe Navigator)
+getNavigator self
+  = liftIO (nullableToMaybe <$> (js_getNavigator (self)))
+ 
+foreign import javascript unsafe "$1[\"clientInformation\"]"
+        js_getClientInformation :: Window -> IO (Nullable Navigator)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.clientInformation Mozilla Window.clientInformation documentation> 
+getClientInformation ::
+                     (MonadIO m) => Window -> m (Maybe Navigator)
+getClientInformation self
+  = liftIO (nullableToMaybe <$> (js_getClientInformation (self)))
+ 
+foreign import javascript unsafe "$1[\"crypto\"]" js_getCrypto ::
+        Window -> IO (Nullable Crypto)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.crypto Mozilla Window.crypto documentation> 
+getCrypto :: (MonadIO m) => Window -> m (Maybe Crypto)
+getCrypto self = liftIO (nullableToMaybe <$> (js_getCrypto (self)))
+ 
+foreign import javascript unsafe "$1[\"location\"] = $2;"
+        js_setLocation :: Window -> Nullable Location -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
+setLocation :: (MonadIO m) => Window -> Maybe Location -> m ()
+setLocation self val
+  = liftIO (js_setLocation (self) (maybeToNullable val))
+ 
+foreign import javascript unsafe "$1[\"location\"]" js_getLocation
+        :: Window -> IO (Nullable Location)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
+getLocation :: (MonadIO m) => Window -> m (Maybe Location)
+getLocation self
+  = liftIO (nullableToMaybe <$> (js_getLocation (self)))
+ 
+foreign import javascript unsafe "$1[\"event\"]" js_getEvent ::
+        Window -> IO (Nullable Event)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.event Mozilla Window.event documentation> 
+getEvent :: (MonadIO m) => Window -> m (Maybe Event)
+getEvent self = liftIO (nullableToMaybe <$> (js_getEvent (self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe
+        "($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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"scrollX\"]" js_getScrollX ::
+        Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollX Mozilla Window.scrollX documentation> 
+getScrollX :: (MonadIO m) => Window -> m Int
+getScrollX self = liftIO (js_getScrollX (self))
+ 
+foreign import javascript unsafe "$1[\"scrollY\"]" js_getScrollY ::
+        Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY Mozilla Window.scrollY documentation> 
+getScrollY :: (MonadIO m) => Window -> m Int
+getScrollY self = liftIO (js_getScrollY (self))
+ 
+foreign import javascript unsafe "$1[\"pageXOffset\"]"
+        js_getPageXOffset :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageXOffset Mozilla Window.pageXOffset documentation> 
+getPageXOffset :: (MonadIO m) => Window -> m Int
+getPageXOffset self = liftIO (js_getPageXOffset (self))
+ 
+foreign import javascript unsafe "$1[\"pageYOffset\"]"
+        js_getPageYOffset :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageYOffset Mozilla Window.pageYOffset documentation> 
+getPageYOffset :: (MonadIO m) => Window -> m Int
+getPageYOffset self = liftIO (js_getPageYOffset (self))
+ 
+foreign import javascript unsafe "($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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"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[\"self\"]" js_getSelf ::
+        Window -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.self Mozilla Window.self documentation> 
+getSelf :: (MonadIO m) => Window -> m (Maybe Window)
+getSelf self = liftIO (nullableToMaybe <$> (js_getSelf (self)))
+ 
+foreign import javascript unsafe "$1[\"window\"]" js_getWindow ::
+        Window -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.window Mozilla Window.window documentation> 
+getWindow :: (MonadIO m) => Window -> m (Maybe Window)
+getWindow self = liftIO (nullableToMaybe <$> (js_getWindow (self)))
+ 
+foreign import javascript unsafe "$1[\"frames\"]" js_getFrames ::
+        Window -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frames Mozilla Window.frames documentation> 
+getFrames :: (MonadIO m) => Window -> m (Maybe Window)
+getFrames self = liftIO (nullableToMaybe <$> (js_getFrames (self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$1[\"document\"]" js_getDocument
+        :: Window -> IO (Nullable Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.document Mozilla Window.document documentation> 
+getDocument :: (MonadIO m) => Window -> m (Maybe Document)
+getDocument self
+  = liftIO (nullableToMaybe <$> (js_getDocument (self)))
+ 
+foreign import javascript unsafe "$1[\"styleMedia\"]"
+        js_getStyleMedia :: Window -> IO (Nullable StyleMedia)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.styleMedia Mozilla Window.styleMedia documentation> 
+getStyleMedia :: (MonadIO m) => Window -> m (Maybe StyleMedia)
+getStyleMedia self
+  = liftIO (nullableToMaybe <$> (js_getStyleMedia (self)))
+ 
+foreign import javascript unsafe "$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[\"applicationCache\"]"
+        js_getApplicationCache :: Window -> IO (Nullable ApplicationCache)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.applicationCache Mozilla Window.applicationCache documentation> 
+getApplicationCache ::
+                    (MonadIO m) => Window -> m (Maybe ApplicationCache)
+getApplicationCache self
+  = liftIO (nullableToMaybe <$> (js_getApplicationCache (self)))
+ 
+foreign import javascript unsafe "$1[\"sessionStorage\"]"
+        js_getSessionStorage :: Window -> IO (Nullable Storage)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.sessionStorage Mozilla Window.sessionStorage documentation> 
+getSessionStorage :: (MonadIO m) => Window -> m (Maybe Storage)
+getSessionStorage self
+  = liftIO (nullableToMaybe <$> (js_getSessionStorage (self)))
+ 
+foreign import javascript unsafe "$1[\"localStorage\"]"
+        js_getLocalStorage :: Window -> IO (Nullable Storage)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage Mozilla Window.localStorage documentation> 
+getLocalStorage :: (MonadIO m) => Window -> m (Maybe Storage)
+getLocalStorage self
+  = liftIO (nullableToMaybe <$> (js_getLocalStorage (self)))
+ 
+foreign import javascript unsafe "$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[\"performance\"]"
+        js_getPerformance :: Window -> IO (Nullable Performance)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.performance Mozilla Window.performance documentation> 
+getPerformance :: (MonadIO m) => Window -> m (Maybe Performance)
+getPerformance self
+  = liftIO (nullableToMaybe <$> (js_getPerformance (self)))
+ 
+foreign import javascript unsafe "$1[\"CSS\"]" js_getCSS ::
+        Window -> IO (Nullable CSS)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.CSS Mozilla Window.CSS documentation> 
+getCSS :: (MonadIO m) => Window -> m (Maybe CSS)
+getCSS self = liftIO (nullableToMaybe <$> (js_getCSS (self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onabort Mozilla Window.onabort documentation> 
+abort :: EventName Window UIEvent
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onbeforeunload Mozilla Window.onbeforeunload documentation> 
+beforeUnload :: EventName Window BeforeUnloadEvent
+beforeUnload = unsafeEventName (toJSString "beforeunload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onblur Mozilla Window.onblur documentation> 
+blurEvent :: EventName Window FocusEvent
+blurEvent = unsafeEventName (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oncanplay Mozilla Window.oncanplay documentation> 
+canPlay :: EventName Window Event
+canPlay = unsafeEventName (toJSString "canplay")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oncanplaythrough Mozilla Window.oncanplaythrough documentation> 
+canPlayThrough :: EventName Window Event
+canPlayThrough = unsafeEventName (toJSString "canplaythrough")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onchange Mozilla Window.onchange documentation> 
+change :: EventName Window Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onclick Mozilla Window.onclick documentation> 
+click :: EventName Window MouseEvent
+click = unsafeEventName (toJSString "click")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oncontextmenu Mozilla Window.oncontextmenu documentation> 
+contextMenu :: EventName Window MouseEvent
+contextMenu = unsafeEventName (toJSString "contextmenu")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondblclick Mozilla Window.ondblclick documentation> 
+dblClick :: EventName Window MouseEvent
+dblClick = unsafeEventName (toJSString "dblclick")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondrag Mozilla Window.ondrag documentation> 
+drag :: EventName Window MouseEvent
+drag = unsafeEventName (toJSString "drag")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragend Mozilla Window.ondragend documentation> 
+dragEnd :: EventName Window MouseEvent
+dragEnd = unsafeEventName (toJSString "dragend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragenter Mozilla Window.ondragenter documentation> 
+dragEnter :: EventName Window MouseEvent
+dragEnter = unsafeEventName (toJSString "dragenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragleave Mozilla Window.ondragleave documentation> 
+dragLeave :: EventName Window MouseEvent
+dragLeave = unsafeEventName (toJSString "dragleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragover Mozilla Window.ondragover documentation> 
+dragOver :: EventName Window MouseEvent
+dragOver = unsafeEventName (toJSString "dragover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondragstart Mozilla Window.ondragstart documentation> 
+dragStart :: EventName Window MouseEvent
+dragStart = unsafeEventName (toJSString "dragstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondrop Mozilla Window.ondrop documentation> 
+drop :: EventName Window MouseEvent
+drop = unsafeEventName (toJSString "drop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondurationchange Mozilla Window.ondurationchange documentation> 
+durationChange :: EventName Window Event
+durationChange = unsafeEventName (toJSString "durationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onemptied Mozilla Window.onemptied documentation> 
+emptied :: EventName Window Event
+emptied = unsafeEventName (toJSString "emptied")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onended Mozilla Window.onended documentation> 
+ended :: EventName Window Event
+ended = unsafeEventName (toJSString "ended")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onerror Mozilla Window.onerror documentation> 
+error :: EventName Window UIEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onfocus Mozilla Window.onfocus documentation> 
+focusEvent :: EventName Window FocusEvent
+focusEvent = unsafeEventName (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onhashchange Mozilla Window.onhashchange documentation> 
+hashChange :: EventName Window HashChangeEvent
+hashChange = unsafeEventName (toJSString "hashchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oninput Mozilla Window.oninput documentation> 
+input :: EventName Window Event
+input = unsafeEventName (toJSString "input")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.oninvalid Mozilla Window.oninvalid documentation> 
+invalid :: EventName Window Event
+invalid = unsafeEventName (toJSString "invalid")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onkeydown Mozilla Window.onkeydown documentation> 
+keyDown :: EventName Window KeyboardEvent
+keyDown = unsafeEventName (toJSString "keydown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onkeypress Mozilla Window.onkeypress documentation> 
+keyPress :: EventName Window KeyboardEvent
+keyPress = unsafeEventName (toJSString "keypress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onkeyup Mozilla Window.onkeyup documentation> 
+keyUp :: EventName Window KeyboardEvent
+keyUp = unsafeEventName (toJSString "keyup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onload Mozilla Window.onload documentation> 
+load :: EventName Window UIEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onloadeddata Mozilla Window.onloadeddata documentation> 
+loadedData :: EventName Window Event
+loadedData = unsafeEventName (toJSString "loadeddata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onloadedmetadata Mozilla Window.onloadedmetadata documentation> 
+loadedMetadata :: EventName Window Event
+loadedMetadata = unsafeEventName (toJSString "loadedmetadata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onloadstart Mozilla Window.onloadstart documentation> 
+loadStart :: EventName Window ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmessage Mozilla Window.onmessage documentation> 
+message :: EventName Window MessageEvent
+message = unsafeEventName (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmousedown Mozilla Window.onmousedown documentation> 
+mouseDown :: EventName Window MouseEvent
+mouseDown = unsafeEventName (toJSString "mousedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseenter Mozilla Window.onmouseenter documentation> 
+mouseEnter :: EventName Window MouseEvent
+mouseEnter = unsafeEventName (toJSString "mouseenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseleave Mozilla Window.onmouseleave documentation> 
+mouseLeave :: EventName Window MouseEvent
+mouseLeave = unsafeEventName (toJSString "mouseleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmousemove Mozilla Window.onmousemove documentation> 
+mouseMove :: EventName Window MouseEvent
+mouseMove = unsafeEventName (toJSString "mousemove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseout Mozilla Window.onmouseout documentation> 
+mouseOut :: EventName Window MouseEvent
+mouseOut = unsafeEventName (toJSString "mouseout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseover Mozilla Window.onmouseover documentation> 
+mouseOver :: EventName Window MouseEvent
+mouseOver = unsafeEventName (toJSString "mouseover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmouseup Mozilla Window.onmouseup documentation> 
+mouseUp :: EventName Window MouseEvent
+mouseUp = unsafeEventName (toJSString "mouseup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onmousewheel Mozilla Window.onmousewheel documentation> 
+mouseWheel :: EventName Window MouseEvent
+mouseWheel = unsafeEventName (toJSString "mousewheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onoffline Mozilla Window.onoffline documentation> 
+offline :: EventName Window Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ononline Mozilla Window.ononline documentation> 
+online :: EventName Window Event
+online = unsafeEventName (toJSString "online")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onpagehide Mozilla Window.onpagehide documentation> 
+pageHide :: EventName Window PageTransitionEvent
+pageHide = unsafeEventName (toJSString "pagehide")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onpageshow Mozilla Window.onpageshow documentation> 
+pageShow :: EventName Window PageTransitionEvent
+pageShow = unsafeEventName (toJSString "pageshow")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onpause Mozilla Window.onpause documentation> 
+pause :: EventName Window Event
+pause = unsafeEventName (toJSString "pause")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onplay Mozilla Window.onplay documentation> 
+play :: EventName Window Event
+play = unsafeEventName (toJSString "play")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onplaying Mozilla Window.onplaying documentation> 
+playing :: EventName Window Event
+playing = unsafeEventName (toJSString "playing")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onpopstate Mozilla Window.onpopstate documentation> 
+popState :: EventName Window PopStateEvent
+popState = unsafeEventName (toJSString "popstate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onprogress Mozilla Window.onprogress documentation> 
+progress :: EventName Window ProgressEvent
+progress = unsafeEventName (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onratechange Mozilla Window.onratechange documentation> 
+rateChange :: EventName Window Event
+rateChange = unsafeEventName (toJSString "ratechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onresize Mozilla Window.onresize documentation> 
+resize :: EventName Window UIEvent
+resize = unsafeEventName (toJSString "resize")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onscroll Mozilla Window.onscroll documentation> 
+scrollEvent :: EventName Window UIEvent
+scrollEvent = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onseeked Mozilla Window.onseeked documentation> 
+seeked :: EventName Window Event
+seeked = unsafeEventName (toJSString "seeked")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onseeking Mozilla Window.onseeking documentation> 
+seeking :: EventName Window Event
+seeking = unsafeEventName (toJSString "seeking")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onselect Mozilla Window.onselect documentation> 
+select :: EventName Window UIEvent
+select = unsafeEventName (toJSString "select")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onstalled Mozilla Window.onstalled documentation> 
+stalled :: EventName Window Event
+stalled = unsafeEventName (toJSString "stalled")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onstorage Mozilla Window.onstorage documentation> 
+storage :: EventName Window StorageEvent
+storage = unsafeEventName (toJSString "storage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onsubmit Mozilla Window.onsubmit documentation> 
+submit :: EventName Window Event
+submit = unsafeEventName (toJSString "submit")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onsuspend Mozilla Window.onsuspend documentation> 
+suspend :: EventName Window Event
+suspend = unsafeEventName (toJSString "suspend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontimeupdate Mozilla Window.ontimeupdate documentation> 
+timeUpdate :: EventName Window Event
+timeUpdate = unsafeEventName (toJSString "timeupdate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onunload Mozilla Window.onunload documentation> 
+unload :: EventName Window UIEvent
+unload = unsafeEventName (toJSString "unload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onvolumechange Mozilla Window.onvolumechange documentation> 
+volumeChange :: EventName Window Event
+volumeChange = unsafeEventName (toJSString "volumechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwaiting Mozilla Window.onwaiting documentation> 
+waiting :: EventName Window Event
+waiting = unsafeEventName (toJSString "waiting")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwheel Mozilla Window.onwheel documentation> 
+wheel :: EventName Window WheelEvent
+wheel = unsafeEventName (toJSString "wheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onreset Mozilla Window.onreset documentation> 
+reset :: EventName Window Event
+reset = unsafeEventName (toJSString "reset")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onsearch Mozilla Window.onsearch documentation> 
+search :: EventName Window Event
+search = unsafeEventName (toJSString "search")
+
+-- | <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.onanimationend Mozilla Window.onanimationend documentation> 
+animationEnd :: EventName Window AnimationEvent
+animationEnd = unsafeEventName (toJSString "animationend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onanimationiteration Mozilla Window.onanimationiteration documentation> 
+animationIteration :: EventName Window AnimationEvent
+animationIteration
+  = unsafeEventName (toJSString "animationiteration")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onanimationstart Mozilla Window.onanimationstart documentation> 
+animationStart :: EventName Window AnimationEvent
+animationStart = unsafeEventName (toJSString "animationstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkittransitionend Mozilla Window.onwebkittransitionend documentation> 
+webKitTransitionEnd :: EventName Window TransitionEvent
+webKitTransitionEnd
+  = unsafeEventName (toJSString "webkittransitionend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontransitionend Mozilla Window.ontransitionend documentation> 
+transitionEnd :: EventName Window TransitionEvent
+transitionEnd = unsafeEventName (toJSString "transitionend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onorientationchange Mozilla Window.onorientationchange documentation> 
+orientationChange :: EventName Window Event
+orientationChange
+  = unsafeEventName (toJSString "orientationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontouchstart Mozilla Window.ontouchstart documentation> 
+touchStart :: EventName Window TouchEvent
+touchStart = unsafeEventName (toJSString "touchstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontouchmove Mozilla Window.ontouchmove documentation> 
+touchMove :: EventName Window TouchEvent
+touchMove = unsafeEventName (toJSString "touchmove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontouchend Mozilla Window.ontouchend documentation> 
+touchEnd :: EventName Window TouchEvent
+touchEnd = unsafeEventName (toJSString "touchend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ontouchcancel Mozilla Window.ontouchcancel documentation> 
+touchCancel :: EventName Window TouchEvent
+touchCancel = unsafeEventName (toJSString "touchcancel")
+
+-- | <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.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.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.onwebkitwillrevealbottom Mozilla Window.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom :: EventName Window Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitwillrevealleft Mozilla Window.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft :: EventName Window Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitwillrevealright Mozilla Window.onwebkitwillrevealright documentation> 
+webKitWillRevealRight :: EventName Window Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitwillrevealtop Mozilla Window.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop :: EventName Window Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowBase64.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowBase64.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowBase64.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WindowBase64
+       (js_atob, atob, js_btoa, btoa, WindowBase64, castToWindowBase64,
+        gTypeWindowBase64)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"atob\"]($2)" js_atob ::
+        WindowBase64 -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64.atob Mozilla WindowBase64.atob documentation> 
+atob ::
+     (MonadIO m, ToJSString string, FromJSString result) =>
+       WindowBase64 -> string -> m result
+atob self string
+  = liftIO (fromJSString <$> (js_atob (self) (toJSString string)))
+ 
+foreign import javascript unsafe "$1[\"btoa\"]($2)" js_btoa ::
+        WindowBase64 -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64.btoa Mozilla WindowBase64.btoa documentation> 
+btoa ::
+     (MonadIO m, ToJSString string, FromJSString result) =>
+       WindowBase64 -> string -> m result
+btoa self string
+  = liftIO (fromJSString <$> (js_btoa (self) (toJSString string)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowTimers.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowTimers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowTimers.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WindowTimers
+       (js_setTimeout, setTimeout, js_clearTimeout, clearTimeout,
+        js_setInterval, setInterval, js_clearInterval, clearInterval,
+        WindowTimers, castToWindowTimers, gTypeWindowTimers)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"setTimeout\"]($2, $3)"
+        js_setTimeout :: WindowTimers -> JSVal -> Int -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout Mozilla WindowTimers.setTimeout documentation> 
+setTimeout :: (MonadIO m) => WindowTimers -> JSVal -> Int -> m Int
+setTimeout self handler timeout
+  = liftIO (js_setTimeout (self) handler timeout)
+ 
+foreign import javascript unsafe "$1[\"clearTimeout\"]($2)"
+        js_clearTimeout :: WindowTimers -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.clearTimeout Mozilla WindowTimers.clearTimeout documentation> 
+clearTimeout :: (MonadIO m) => WindowTimers -> Int -> m ()
+clearTimeout self handle = liftIO (js_clearTimeout (self) handle)
+ 
+foreign import javascript unsafe "$1[\"setInterval\"]($2, $3)"
+        js_setInterval :: WindowTimers -> JSVal -> Int -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setInterval Mozilla WindowTimers.setInterval documentation> 
+setInterval :: (MonadIO m) => WindowTimers -> JSVal -> Int -> m Int
+setInterval self handler timeout
+  = liftIO (js_setInterval (self) handler timeout)
+ 
+foreign import javascript unsafe "$1[\"clearInterval\"]($2)"
+        js_clearInterval :: WindowTimers -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.clearInterval Mozilla WindowTimers.clearInterval documentation> 
+clearInterval :: (MonadIO m) => WindowTimers -> Int -> m ()
+clearInterval self handle = liftIO (js_clearInterval (self) handle)
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,54 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Worker
+       (js_newWorker, newWorker, js_postMessage, postMessage,
+        js_terminate, terminate, message, Worker, castToWorker,
+        gTypeWorker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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[\"postMessage\"]($2, $3)"
+        js_postMessage ::
+        Worker -> Nullable SerializedScriptValue -> Nullable Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.postMessage Mozilla Worker.postMessage documentation> 
+postMessage ::
+            (MonadIO m, IsSerializedScriptValue message,
+             IsArray messagePorts) =>
+              Worker -> Maybe message -> Maybe messagePorts -> m ()
+postMessage self message messagePorts
+  = liftIO
+      (js_postMessage (self)
+         (maybeToNullable (fmap toSerializedScriptValue message))
+         (maybeToNullable (fmap toArray messagePorts)))
+ 
+foreign import javascript unsafe "$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))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.onmessage Mozilla Worker.onmessage documentation> 
+message :: EventName Worker MessageEvent
+message = unsafeEventName (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,90 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
+       (js_close, close, js_importScripts, importScripts, js_getSelf,
+        getSelf, js_getLocation, getLocation, error, offline, online,
+        js_getNavigator, getNavigator, WorkerGlobalScope,
+        castToWorkerGlobalScope, gTypeWorkerGlobalScope,
+        IsWorkerGlobalScope, toWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"importScripts\"]()"
+        js_importScripts :: WorkerGlobalScope -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.importScripts Mozilla WorkerGlobalScope.importScripts documentation> 
+importScripts ::
+              (MonadIO m, IsWorkerGlobalScope self) => self -> m ()
+importScripts self
+  = liftIO (js_importScripts (toWorkerGlobalScope self))
+ 
+foreign import javascript unsafe "$1[\"self\"]" js_getSelf ::
+        WorkerGlobalScope -> IO (Nullable WorkerGlobalScope)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.self Mozilla WorkerGlobalScope.self documentation> 
+getSelf ::
+        (MonadIO m, IsWorkerGlobalScope self) =>
+          self -> m (Maybe WorkerGlobalScope)
+getSelf self
+  = liftIO
+      (nullableToMaybe <$> (js_getSelf (toWorkerGlobalScope self)))
+ 
+foreign import javascript unsafe "$1[\"location\"]" js_getLocation
+        :: WorkerGlobalScope -> IO (Nullable WorkerLocation)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.location Mozilla WorkerGlobalScope.location documentation> 
+getLocation ::
+            (MonadIO m, IsWorkerGlobalScope self) =>
+              self -> m (Maybe WorkerLocation)
+getLocation self
+  = liftIO
+      (nullableToMaybe <$> (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 = unsafeEventName (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[\"navigator\"]"
+        js_getNavigator ::
+        WorkerGlobalScope -> IO (Nullable WorkerNavigator)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.navigator Mozilla WorkerGlobalScope.navigator documentation> 
+getNavigator ::
+             (MonadIO m, IsWorkerGlobalScope self) =>
+               self -> m (Maybe WorkerNavigator)
+getNavigator self
+  = liftIO
+      (nullableToMaybe <$> (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,97 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WorkerLocation
+       (js_toString, toString, js_getHref, getHref, js_getProtocol,
+        getProtocol, js_getHost, getHost, js_getHostname, getHostname,
+        js_getPort, getPort, js_getPathname, getPathname, js_getSearch,
+        getSearch, js_getHash, getHash, WorkerLocation,
+        castToWorkerLocation, gTypeWorkerLocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.toString Mozilla WorkerLocation.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => WorkerLocation -> m result
+toString self = liftIO (fromJSString <$> (js_toString (self)))
+ 
+foreign import javascript unsafe "$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[\"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[\"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[\"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[\"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[\"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[\"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[\"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)))
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,87 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.WorkerNavigator
+       (js_getWebkitTemporaryStorage, getWebkitTemporaryStorage,
+        js_getWebkitPersistentStorage, getWebkitPersistentStorage,
+        js_getAppName, getAppName, js_getAppVersion, getAppVersion,
+        js_getPlatform, getPlatform, js_getUserAgent, getUserAgent,
+        js_getOnLine, getOnLine, WorkerNavigator, castToWorkerNavigator,
+        gTypeWorkerNavigator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"webkitTemporaryStorage\"]"
+        js_getWebkitTemporaryStorage ::
+        WorkerNavigator -> IO (Nullable StorageQuota)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
+getWebkitTemporaryStorage ::
+                          (MonadIO m) => WorkerNavigator -> m (Maybe StorageQuota)
+getWebkitTemporaryStorage self
+  = liftIO
+      (nullableToMaybe <$> (js_getWebkitTemporaryStorage (self)))
+ 
+foreign import javascript unsafe "$1[\"webkitPersistentStorage\"]"
+        js_getWebkitPersistentStorage ::
+        WorkerNavigator -> IO (Nullable StorageQuota)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitPersistentStorage Mozilla WorkerNavigator.webkitPersistentStorage documentation> 
+getWebkitPersistentStorage ::
+                           (MonadIO m) => WorkerNavigator -> m (Maybe StorageQuota)
+getWebkitPersistentStorage self
+  = liftIO
+      (nullableToMaybe <$> (js_getWebkitPersistentStorage (self)))
+ 
+foreign import javascript unsafe "$1[\"appName\"]" js_getAppName ::
+        WorkerNavigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.appName Mozilla WorkerNavigator.appName documentation> 
+getAppName ::
+           (MonadIO m, FromJSString result) => WorkerNavigator -> m result
+getAppName self = liftIO (fromJSString <$> (js_getAppName (self)))
+ 
+foreign import javascript unsafe "$1[\"appVersion\"]"
+        js_getAppVersion :: WorkerNavigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.appVersion Mozilla WorkerNavigator.appVersion documentation> 
+getAppVersion ::
+              (MonadIO m, FromJSString result) => WorkerNavigator -> m result
+getAppVersion self
+  = liftIO (fromJSString <$> (js_getAppVersion (self)))
+ 
+foreign import javascript unsafe "$1[\"platform\"]" js_getPlatform
+        :: WorkerNavigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.platform Mozilla WorkerNavigator.platform documentation> 
+getPlatform ::
+            (MonadIO m, FromJSString result) => WorkerNavigator -> m result
+getPlatform self
+  = liftIO (fromJSString <$> (js_getPlatform (self)))
+ 
+foreign import javascript unsafe "$1[\"userAgent\"]"
+        js_getUserAgent :: WorkerNavigator -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.userAgent Mozilla WorkerNavigator.userAgent documentation> 
+getUserAgent ::
+             (MonadIO m, FromJSString result) => WorkerNavigator -> m result
+getUserAgent self
+  = liftIO (fromJSString <$> (js_getUserAgent (self)))
+ 
+foreign import javascript unsafe "($1[\"onLine\"] ? 1 : 0)"
+        js_getOnLine :: WorkerNavigator -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.onLine Mozilla WorkerNavigator.onLine documentation> 
+getOnLine :: (MonadIO m) => WorkerNavigator -> m Bool
+getOnLine self = liftIO (js_getOnLine (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,268 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XMLHttpRequest
+       (js_newXMLHttpRequest, newXMLHttpRequest, js_open, open,
+        js_setRequestHeader, setRequestHeader, js_send, send, js_abort,
+        abort, js_getAllResponseHeaders, getAllResponseHeaders,
+        js_getResponseHeader, getResponseHeader, js_overrideMimeType,
+        overrideMimeType, pattern UNSENT, pattern OPENED,
+        pattern HEADERS_RECEIVED, pattern LOADING, pattern DONE,
+        abortEvent, error, load, loadEnd, loadStart, progress, timeout,
+        readyStateChange, js_setTimeout, setTimeout, js_getTimeout,
+        getTimeout, js_getReadyState, getReadyState, js_setWithCredentials,
+        setWithCredentials, js_getWithCredentials, getWithCredentials,
+        js_getUpload, getUpload, js_getResponseText, getResponseText,
+        js_getResponseXML, getResponseXML, js_setResponseType,
+        setResponseType, js_getResponseType, getResponseType,
+        js_getResponse, getResponse, js_getStatus, getStatus,
+        js_getStatusText, getStatusText, js_getResponseURL, getResponseURL,
+        XMLHttpRequest, castToXMLHttpRequest, gTypeXMLHttpRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "$1[\"open\"]($2, $3, $4, $5, $6)"
+        js_open ::
+        XMLHttpRequest ->
+          JSString -> JSString -> Bool -> JSString -> 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 -> user -> password -> m ()
+open self method url async user password
+  = liftIO
+      (js_open (self) (toJSString method) (toJSString url) async
+         (toJSString user)
+         (toJSString password))
+ 
+foreign import javascript unsafe "$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 unsafe "$1[\"send\"]()" js_send ::
+        XMLHttpRequest -> IO ()
+
+-- | <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))
+ 
+foreign import javascript unsafe "$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[\"getAllResponseHeaders\"]()"
+        js_getAllResponseHeaders ::
+        XMLHttpRequest -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
+getAllResponseHeaders ::
+                      (MonadIO m, FromJSString result) =>
+                        XMLHttpRequest -> m (Maybe result)
+getAllResponseHeaders self
+  = liftIO (fromMaybeJSString <$> (js_getAllResponseHeaders (self)))
+ 
+foreign import javascript unsafe "$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 header, FromJSString result) =>
+                    XMLHttpRequest -> header -> m (Maybe result)
+getResponseHeader self header
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getResponseHeader (self) (toJSString header)))
+ 
+foreign import javascript unsafe "$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 override) =>
+                   XMLHttpRequest -> override -> m ()
+overrideMimeType self override
+  = liftIO (js_overrideMimeType (self) (toJSString override))
+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.onabort Mozilla XMLHttpRequest.onabort documentation> 
+abortEvent :: EventName XMLHttpRequest XMLHttpRequestProgressEvent
+abortEvent = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onerror Mozilla XMLHttpRequest.onerror documentation> 
+error :: EventName XMLHttpRequest XMLHttpRequestProgressEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onload Mozilla XMLHttpRequest.onload documentation> 
+load :: EventName XMLHttpRequest XMLHttpRequestProgressEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onloadend Mozilla XMLHttpRequest.onloadend documentation> 
+loadEnd :: EventName XMLHttpRequest ProgressEvent
+loadEnd = unsafeEventName (toJSString "loadend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onloadstart Mozilla XMLHttpRequest.onloadstart documentation> 
+loadStart :: EventName XMLHttpRequest ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onprogress Mozilla XMLHttpRequest.onprogress documentation> 
+progress :: EventName XMLHttpRequest XMLHttpRequestProgressEvent
+progress = unsafeEventName (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.ontimeout Mozilla XMLHttpRequest.ontimeout documentation> 
+timeout :: EventName XMLHttpRequest ProgressEvent
+timeout = unsafeEventName (toJSString "timeout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onreadystatechange Mozilla XMLHttpRequest.onreadystatechange documentation> 
+readyStateChange :: EventName XMLHttpRequest Event
+readyStateChange = unsafeEventName (toJSString "readystatechange")
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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 unsafe "$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[\"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[\"upload\"]" js_getUpload ::
+        XMLHttpRequest -> IO (Nullable XMLHttpRequestUpload)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.upload Mozilla XMLHttpRequest.upload documentation> 
+getUpload ::
+          (MonadIO m) => XMLHttpRequest -> m (Maybe XMLHttpRequestUpload)
+getUpload self = liftIO (nullableToMaybe <$> (js_getUpload (self)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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)))
+ 
+foreign import javascript unsafe "$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[\"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[\"response\"]" js_getResponse
+        :: XMLHttpRequest -> IO (Nullable GObject)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.response Mozilla XMLHttpRequest.response documentation> 
+getResponse :: (MonadIO m) => XMLHttpRequest -> m (Maybe GObject)
+getResponse self
+  = liftIO (nullableToMaybe <$> (js_getResponse (self)))
+ 
+foreign import javascript unsafe "$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[\"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 unsafe "$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)))
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,36 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent
+       (js_getPosition, getPosition, js_getTotalSize, getTotalSize,
+        XMLHttpRequestProgressEvent, castToXMLHttpRequestProgressEvent,
+        gTypeXMLHttpRequestProgressEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$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[\"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/XMLHttpRequestUpload.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestUpload.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestUpload.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestUpload
+       (abort, error, load, loadEnd, loadStart, progress,
+        XMLHttpRequestUpload, castToXMLHttpRequestUpload,
+        gTypeXMLHttpRequestUpload)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onabort Mozilla XMLHttpRequestUpload.onabort documentation> 
+abort :: EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onerror Mozilla XMLHttpRequestUpload.onerror documentation> 
+error :: EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onload Mozilla XMLHttpRequestUpload.onload documentation> 
+load :: EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
+load = unsafeEventName (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onloadend Mozilla XMLHttpRequestUpload.onloadend documentation> 
+loadEnd :: EventName XMLHttpRequestUpload ProgressEvent
+loadEnd = unsafeEventName (toJSString "loadend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onloadstart Mozilla XMLHttpRequestUpload.onloadstart documentation> 
+loadStart :: EventName XMLHttpRequestUpload ProgressEvent
+loadStart = unsafeEventName (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onprogress Mozilla XMLHttpRequestUpload.onprogress documentation> 
+progress ::
+           EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
+progress = unsafeEventName (toJSString "progress")
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,40 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XMLSerializer
+       (js_newXMLSerializer, newXMLSerializer, js_serializeToString,
+        serializeToString, XMLSerializer, castToXMLSerializer,
+        gTypeXMLSerializer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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[\"serializeToString\"]($2)"
+        js_serializeToString ::
+        XMLSerializer -> Nullable 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 -> Maybe node -> m result
+serializeToString self node
+  = liftIO
+      (fromJSString <$>
+         (js_serializeToString (self) (maybeToNullable (fmap 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,84 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XPathEvaluator
+       (js_newXPathEvaluator, newXPathEvaluator, js_createExpression,
+        createExpression, js_createNSResolver, createNSResolver,
+        js_evaluate, evaluate, XPathEvaluator, castToXPathEvaluator,
+        gTypeXPathEvaluator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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 unsafe "$1[\"createExpression\"]($2, $3)"
+        js_createExpression ::
+        XPathEvaluator ->
+          JSString ->
+            Nullable XPathNSResolver -> IO (Nullable XPathExpression)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
+createExpression ::
+                 (MonadIO m, ToJSString expression) =>
+                   XPathEvaluator ->
+                     expression -> Maybe XPathNSResolver -> m (Maybe XPathExpression)
+createExpression self expression resolver
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createExpression (self) (toJSString expression)
+            (maybeToNullable resolver)))
+ 
+foreign import javascript unsafe "$1[\"createNSResolver\"]($2)"
+        js_createNSResolver ::
+        XPathEvaluator -> Nullable Node -> IO (Nullable 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 (Maybe XPathNSResolver)
+createNSResolver self nodeResolver
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createNSResolver (self)
+            (maybeToNullable (fmap toNode nodeResolver))))
+ 
+foreign import javascript unsafe
+        "$1[\"evaluate\"]($2, $3, $4, $5,\n$6)" js_evaluate ::
+        XPathEvaluator ->
+          JSString ->
+            Nullable Node ->
+              Nullable XPathNSResolver ->
+                Word -> Nullable XPathResult -> IO (Nullable XPathResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
+evaluate ::
+         (MonadIO m, ToJSString expression, IsNode contextNode) =>
+           XPathEvaluator ->
+             expression ->
+               Maybe contextNode ->
+                 Maybe XPathNSResolver ->
+                   Word -> Maybe XPathResult -> m (Maybe XPathResult)
+evaluate self expression contextNode resolver type' inResult
+  = liftIO
+      (nullableToMaybe <$>
+         (js_evaluate (self) (toJSString expression)
+            (maybeToNullable (fmap toNode contextNode))
+            (maybeToNullable resolver)
+            type'
+            (maybeToNullable inResult)))
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,38 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XPathExpression
+       (js_evaluate, evaluate, XPathExpression, castToXPathExpression,
+        gTypeXPathExpression)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"evaluate\"]($2, $3, $4)"
+        js_evaluate ::
+        XPathExpression ->
+          Nullable Node ->
+            Word -> Nullable XPathResult -> IO (Nullable XPathResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
+evaluate ::
+         (MonadIO m, IsNode contextNode) =>
+           XPathExpression ->
+             Maybe contextNode ->
+               Word -> Maybe XPathResult -> m (Maybe XPathResult)
+evaluate self contextNode type' inResult
+  = liftIO
+      (nullableToMaybe <$>
+         (js_evaluate (self) (maybeToNullable (fmap toNode contextNode))
+            type'
+            (maybeToNullable 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,32 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XPathNSResolver
+       (js_lookupNamespaceURI, lookupNamespaceURI, XPathNSResolver,
+        castToXPathNSResolver, gTypeXPathNSResolver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"lookupNamespaceURI\"]($2)"
+        js_lookupNamespaceURI ::
+        XPathNSResolver -> 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 -> prefix -> m (Maybe result)
+lookupNamespaceURI self prefix
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_lookupNamespaceURI (self) (toJSString 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,111 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XPathResult
+       (js_iterateNext, iterateNext, js_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,
+        castToXPathResult, gTypeXPathResult)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "$1[\"iterateNext\"]()"
+        js_iterateNext :: XPathResult -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
+iterateNext :: (MonadIO m) => XPathResult -> m (Maybe Node)
+iterateNext self
+  = liftIO (nullableToMaybe <$> (js_iterateNext (self)))
+ 
+foreign import javascript unsafe "$1[\"snapshotItem\"]($2)"
+        js_snapshotItem :: XPathResult -> Word -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
+snapshotItem ::
+             (MonadIO m) => XPathResult -> Word -> m (Maybe Node)
+snapshotItem self index
+  = liftIO (nullableToMaybe <$> (js_snapshotItem (self) 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[\"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 unsafe "$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 unsafe "$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 unsafe "($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 unsafe "$1[\"singleNodeValue\"]"
+        js_getSingleNodeValue :: XPathResult -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.singleNodeValue Mozilla XPathResult.singleNodeValue documentation> 
+getSingleNodeValue :: (MonadIO m) => XPathResult -> m (Maybe Node)
+getSingleNodeValue self
+  = liftIO (nullableToMaybe <$> (js_getSingleNodeValue (self)))
+ 
+foreign import javascript unsafe
+        "($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 unsafe "$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,131 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.XSLTProcessor
+       (js_newXSLTProcessor, newXSLTProcessor, js_importStylesheet,
+        importStylesheet, js_transformToFragment, transformToFragment,
+        js_transformToDocument, transformToDocument, js_setParameter,
+        setParameter, js_getParameter, getParameter, js_removeParameter,
+        removeParameter, js_clearParameters, clearParameters, js_reset,
+        reset, XSLTProcessor, castToXSLTProcessor, gTypeXSLTProcessor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+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[\"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[\"importStylesheet\"]($2)"
+        js_importStylesheet :: XSLTProcessor -> Nullable 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)
+         (maybeToNullable (fmap toNode stylesheet)))
+ 
+foreign import javascript unsafe
+        "$1[\"transformToFragment\"]($2,\n$3)" js_transformToFragment ::
+        XSLTProcessor ->
+          Nullable Node ->
+            Nullable Document -> IO (Nullable 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 (Maybe DocumentFragment)
+transformToFragment self source docVal
+  = liftIO
+      (nullableToMaybe <$>
+         (js_transformToFragment (self)
+            (maybeToNullable (fmap toNode source))
+            (maybeToNullable (fmap toDocument docVal))))
+ 
+foreign import javascript unsafe "$1[\"transformToDocument\"]($2)"
+        js_transformToDocument ::
+        XSLTProcessor -> Nullable Node -> IO (Nullable 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 (Maybe Document)
+transformToDocument self source
+  = liftIO
+      (nullableToMaybe <$>
+         (js_transformToDocument (self)
+            (maybeToNullable (fmap toNode source))))
+ 
+foreign import javascript unsafe "$1[\"setParameter\"]($2, $3, $4)"
+        js_setParameter ::
+        XSLTProcessor -> JSString -> JSString -> 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 -> namespaceURI -> localName -> value -> m ()
+setParameter self namespaceURI localName value
+  = liftIO
+      (js_setParameter (self) (toJSString namespaceURI)
+         (toJSString localName)
+         (toJSString value))
+ 
+foreign import javascript unsafe "$1[\"getParameter\"]($2, $3)"
+        js_getParameter ::
+        XSLTProcessor -> JSString -> 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 -> namespaceURI -> localName -> m (Maybe result)
+getParameter self namespaceURI localName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getParameter (self) (toJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe "$1[\"removeParameter\"]($2, $3)"
+        js_removeParameter ::
+        XSLTProcessor -> JSString -> 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 -> namespaceURI -> localName -> m ()
+removeParameter self namespaceURI localName
+  = liftIO
+      (js_removeParameter (self) (toJSString namespaceURI)
+         (toJSString localName))
+ 
+foreign import javascript unsafe "$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[\"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,34 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase #-}
+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(..))
+
+import GHCJS.Prim (JSVal(..))
+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/MediaStreamTrack.hs b/src/GHCJS/DOM/JSFFI/MediaStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/MediaStreamTrack.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.MediaStreamTrack (
+    module Generated
+  , js_getSources
+  , getSources
+) where
+
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.Types (JSVal)
+import GHCJS.Marshal (fromJSValUnchecked)
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.Generated.MediaStreamTrack as Generated hiding (js_getSources, getSources)
+
+foreign import javascript interruptible "$1[\"getSources\"]($c);"
+        js_getSources :: MediaStreamTrack -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSources Mozilla MediaStreamTrack.getSources documentation>
+getSources :: (MonadIO m, IsMediaStreamTrack self) => self -> m [Maybe SourceInfo]
+getSources self = liftIO $
+      js_getSources (toMediaStreamTrack self) >>= fromJSValUnchecked
+
+
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,32 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase #-}
+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(..))
+
+import GHCJS.Prim (JSVal(..))
+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/RTCPeerConnection.hs b/src/GHCJS/DOM/JSFFI/RTCPeerConnection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/RTCPeerConnection.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase #-}
+module GHCJS.DOM.JSFFI.RTCPeerConnection (
+    module Generated
+  , js_createOffer
+  , createOffer'
+  , createOffer
+  , js_createAnswer
+  , createAnswer'
+  , createAnswer
+  , js_setLocalDescription
+  , setLocalDescription'
+  , setLocalDescription
+  , js_setRemoteDescription
+  , setRemoteDescription'
+  , setRemoteDescription
+) where
+
+import GHC.Base (IO(..))
+import GHC.Prim (RealWorld, State#, ByteArray#)
+
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.Prim (JSVal(..))
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.DOMError (throwDOMErrorException)
+import GHCJS.DOM.JSFFI.Generated.Geolocation as Generated hiding (js_getCurrentPosition, getCurrentPosition)
+
+foreign import javascript interruptible
+    "$1[\"createOffer\"](function(d) { $c(true, d); }, function(e) { $c(false, e); }, $2);" js_createOffer ::
+    RTCPeerConnection -> Nullable Dictionary -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#createOffer Mozilla webkitRTCPeerConnection.createOffer documentation>
+createOffer' :: MonadIO m => RTCPeerConnection -> Maybe Dictionary -> m (Either DOMError RTCSessionDescription)
+createOffer' self offerOptions = liftIO . IO $ \s# ->
+    case js_createOffer self (maybeToNullable offerOptions) s# of
+        (# s2#, False, error #) -> (# s2#, Left  (DOMError              (JSVal error)) #)
+        (# s2#, True,  d     #) -> (# s2#, Right (RTCSessionDescription (JSVal d    )) #)
+
+createOffer :: MonadIO m => RTCPeerConnection -> Maybe Dictionary -> m RTCSessionDescription
+createOffer self offerOptions = createOffer' self offerOptions >>= either throwDOMErrorException return
+
+foreign import javascript interruptible
+    "$1[\"createAnswer\"](function(d) { $c(true, d); }, function(e) { $c(false, e); }, $2);" js_createAnswer ::
+    RTCPeerConnection -> Dictionary -> Dictionary -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation>
+createAnswer' :: MonadIO m => RTCPeerConnection -> Maybe Dictionary -> m (Either DOMError RTCSessionDescription)
+createAnswer' self answerOptions = liftIO . IO $ \s# ->
+    case js_createOffer self (maybeToNullable answerOptions) s# of
+        (# s2#, False, error #) -> (# s2#, Left  (DOMError              (JSVal error)) #)
+        (# s2#, True,  d     #) -> (# s2#, Right (RTCSessionDescription (JSVal d    )) #)
+
+createAnswer :: MonadIO m => RTCPeerConnection -> Maybe Dictionary -> m RTCSessionDescription
+createAnswer self answerOptions = createAnswer' self answerOptions >>= either throwDOMErrorException return
+
+foreign import javascript interruptible
+    "$1[\"setLocalDescription\"]($2, function() { $c(null); }, function(e) { $c(e); });" js_setLocalDescription ::
+    RTCPeerConnection -> RTCSessionDescription -> IO (Nullable DOMError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#setLocalDescription Mozilla webkitRTCPeerConnection.setLocalDescription documentation>
+setLocalDescription' :: MonadIO m => RTCPeerConnection -> RTCSessionDescription -> m (Maybe DOMError)
+setLocalDescription' self description = liftIO $ nullableToMaybe <$>
+    js_setLocalDescription self description
+
+setLocalDescription :: MonadIO m => RTCPeerConnection -> RTCSessionDescription -> m ()
+setLocalDescription self description = setLocalDescription' self description >>= maybe (return ()) throwDOMErrorException
+
+foreign import javascript interruptible
+    "$1[\"setRemoteDescription\"]($2, function() { $c(null); }, function(e) { $c(e); });" js_setRemoteDescription ::
+    RTCPeerConnection -> RTCSessionDescription -> IO (Nullable DOMError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#setRemoteDescription Mozilla webkitRTCPeerConnection.setRemoteDescription documentation>
+setRemoteDescription' :: MonadIO m => RTCPeerConnection -> RTCSessionDescription -> m (Maybe DOMError)
+setRemoteDescription' self description = liftIO $ nullableToMaybe <$>
+    js_setRemoteDescription self description
+
+setRemoteDescription :: MonadIO m => RTCPeerConnection -> RTCSessionDescription -> m ()
+setRemoteDescription self description = setRemoteDescription' self description >>= maybe (return ())throwDOMErrorException
+
+foreign import javascript interruptible
+    "$1[\"addIceCandidate\"]($2, function() { $c(null); }, function(e) { $c(e); });" js_addIceCandidate ::
+    RTCPeerConnection -> RTCIceCandidate -> IO (Nullable DOMError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#addIceCandidate Mozilla webkitRTCPeerConnection.addIceCandidate documentation>
+addIceCandidate' :: MonadIO m => RTCPeerConnection -> RTCIceCandidate -> m (Maybe DOMError)
+addIceCandidate' self candidate = liftIO $ nullableToMaybe <$>
+    js_addIceCandidate self candidate
+
+addIceCandidate :: MonadIO m => RTCPeerConnection -> RTCIceCandidate -> m ()
+addIceCandidate self candidate = addIceCandidate' self candidate >>= maybe (return ()) throwDOMErrorException
+
+foreign import javascript interruptible
+    "$1[\"getStats\"]($2, function(s) { $c(true, s); }, function(e) { $c(false, e); });" js_getStats ::
+    RTCPeerConnection -> Nullable MediaStreamTrack -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection#getStats Mozilla webkitRTCPeerConnection.getStats documentation>
+getStats' :: (MonadIO m, IsMediaStreamTrack selector) => RTCPeerConnection -> Maybe selector -> m (Either DOMError RTCStatsResponse)
+getStats' self selector = liftIO . IO $ \s# ->
+    case js_getStats self (maybeToNullable $ fmap toMediaStreamTrack selector) s# of
+        (# s2#, False, error #) -> (# s2#, Left  (DOMError         (JSVal error)) #)
+        (# s2#, True,  stats #) -> (# s2#, Right (RTCStatsResponse (JSVal stats)) #)
+
+getStats :: (MonadIO m, IsMediaStreamTrack selector) => RTCPeerConnection -> Maybe selector -> m RTCStatsResponse
+getStats self selector = getStats' self selector >>= either throwDOMErrorException return
+
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,41 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase #-}
+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(..))
+
+import GHCJS.Prim (JSVal(..))
+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/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,58 @@
+{-# 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)
+
+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)
+
+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
+
+-- | <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
+
+-- | <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
+
+-- | <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
+
+-- | <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
+
+-- | <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
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,24143 @@
+{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface, ConstraintKinds, FlexibleInstances #-}
+module GHCJS.DOM.Types (
+  -- * Monad
+    DOM, DOMContext, MonadDOM, liftDOM, askDOM, runDOM
+
+  -- * Object
+  , maybeJSNullOrUndefined, Nullable(..), nullableToMaybe, maybeToNullable, propagateGError, GType(..)
+  , GObject(..), IsGObject, toGObject, castToGObject, gTypeGObject, unsafeCastGObject, isA, objectToString
+  , js_eq
+
+  -- * DOMString
+  , DOMString(..), ToDOMString(..), FromDOMString(..), IsDOMString, ToJSString(..), FromJSString(..)
+  , toJSString, fromJSString, toMaybeJSString, fromMaybeJSString
+
+  -- * Callbacks
+  , AudioBufferCallback(..)
+  , DatabaseCallback(..)
+  , MediaQueryListListener(..)
+  , MediaStreamTrackSourcesCallback(..)
+  , NavigatorUserMediaErrorCallback(..)
+  , NavigatorUserMediaSuccessCallback(..)
+  , NotificationPermissionCallback(..)
+  , PositionCallback(..)
+  , PositionErrorCallback(..)
+  , RequestAnimationFrameCallback(..)
+  , RTCPeerConnectionErrorCallback(..)
+  , RTCSessionDescriptionCallback(..)
+  , RTCStatsCallback(..)
+  , SQLStatementCallback(..)
+  , SQLStatementErrorCallback(..)
+  , SQLTransactionCallback(..)
+  , SQLTransactionErrorCallback(..)
+  , StorageErrorCallback(..)
+  , StorageQuotaCallback(..)
+  , StorageUsageCallback(..)
+  , StringCallback(..)
+  , VoidCallback(..)
+
+  -- * Dictionaries
+  , Dictionary(Dictionary), unDictionary, IsDictionary, toDictionary
+  , BlobPropertyBag(BlobPropertyBag), unBlobPropertyBag, IsBlobPropertyBag, toBlobPropertyBag
+
+  -- * Mutation Callback
+  , MutationCallback(MutationCallback), unMutationCallback, IsMutationCallback, toMutationCallback
+
+  -- * Promise
+  , Promise(Promise), unPromise, IsPromise, toPromise, castToPromise, gTypePromise
+
+  -- * Date
+  , Date(Date), unDate, IsDate, toDate, castToDate, gTypeDate
+
+  -- * Arrays
+  , Array(Array), unArray, IsArray, toArray, castToArray, gTypeArray
+  , ObjectArray(ObjectArray), unObjectArray, IsObjectArray, toObjectArray
+  , ArrayBuffer(ArrayBuffer), unArrayBuffer, IsArrayBuffer, toArrayBuffer, castToArrayBuffer, gTypeArrayBuffer
+  , ArrayBufferView(ArrayBufferView), unArrayBufferView, IsArrayBufferView, toArrayBufferView
+  , Float32Array(Float32Array), unFloat32Array, IsFloat32Array, toFloat32Array, castToFloat32Array, gTypeFloat32Array
+  , Float64Array(Float64Array), unFloat64Array, IsFloat64Array, toFloat64Array, castToFloat64Array, gTypeFloat64Array
+  , Uint8Array(Uint8Array), unUint8Array, IsUint8Array, toUint8Array, castToUint8Array, gTypeUint8Array
+  , Uint8ClampedArray(Uint8ClampedArray), unUint8ClampedArray, IsUint8ClampedArray, toUint8ClampedArray, castToUint8ClampedArray, gTypeUint8ClampedArray
+  , Uint16Array(Uint16Array), unUint16Array, IsUint16Array, toUint16Array, castToUint16Array, gTypeUint16Array
+  , Uint32Array(Uint32Array), unUint32Array, IsUint32Array, toUint32Array, castToUint32Array, gTypeUint32Array
+  , Int8Array(Int8Array), unInt8Array, IsInt8Array, toInt8Array, castToInt8Array, gTypeInt8Array
+  , Int16Array(Int16Array), unInt16Array, IsInt16Array, toInt16Array, castToInt16Array, gTypeInt16Array
+  , Int32Array(Int32Array), unInt32Array, IsInt32Array, toInt32Array, castToInt32Array, gTypeInt32Array
+
+  -- * Geolocation
+  , SerializedScriptValue(SerializedScriptValue), unSerializedScriptValue, IsSerializedScriptValue, toSerializedScriptValue
+  , PositionOptions(PositionOptions), unPositionOptions, IsPositionOptions, toPositionOptions
+  , Acceleration(Acceleration), unAcceleration, IsAcceleration, toAcceleration
+  , RotationRate(RotationRate), unRotationRate, IsRotationRate, toRotationRate
+
+  -- * Crypto
+  , Algorithm(Algorithm), unAlgorithm, IsAlgorithm, toAlgorithm
+  , CryptoOperationData(CryptoOperationData), unCryptoOperationData, IsCryptoOperationData, toCryptoOperationData
+
+  -- * CanvasStyle (fill & stroke style)
+  , CanvasStyle(CanvasStyle), unCanvasStyle, IsCanvasStyle, toCanvasStyle
+
+  , DOMException(DOMException), unDOMException, IsDOMException, toDOMException
+
+  -- * WebGL typedefs
+  , GLenum(..), GLboolean(..), GLbitfield(..), GLbyte(..), GLshort(..), GLint(..), GLsizei(..)
+  , GLintptr(..), GLsizeiptr(..), GLubyte(..), GLushort(..), GLuint(..), GLfloat(..), GLclampf(..)
+  , GLint64, GLuint64
+
+  -- * Interface types from IDL files
+
+-- AUTO GENERATION STARTS HERE
+  , ANGLEInstancedArrays(ANGLEInstancedArrays), unANGLEInstancedArrays, castToANGLEInstancedArrays, gTypeANGLEInstancedArrays
+  , AbstractView(AbstractView), unAbstractView, castToAbstractView, gTypeAbstractView
+  , AbstractWorker(AbstractWorker), unAbstractWorker, castToAbstractWorker, gTypeAbstractWorker
+  , AllAudioCapabilities(AllAudioCapabilities), unAllAudioCapabilities, castToAllAudioCapabilities, gTypeAllAudioCapabilities
+  , AllVideoCapabilities(AllVideoCapabilities), unAllVideoCapabilities, castToAllVideoCapabilities, gTypeAllVideoCapabilities
+  , AnalyserNode(AnalyserNode), unAnalyserNode, castToAnalyserNode, gTypeAnalyserNode
+  , AnimationEvent(AnimationEvent), unAnimationEvent, castToAnimationEvent, gTypeAnimationEvent
+  , ApplicationCache(ApplicationCache), unApplicationCache, castToApplicationCache, gTypeApplicationCache
+  , Attr(Attr), unAttr, castToAttr, gTypeAttr
+  , AudioBuffer(AudioBuffer), unAudioBuffer, castToAudioBuffer, gTypeAudioBuffer
+  , AudioBufferSourceNode(AudioBufferSourceNode), unAudioBufferSourceNode, castToAudioBufferSourceNode, gTypeAudioBufferSourceNode
+  , AudioContext(AudioContext), unAudioContext, IsAudioContext, toAudioContext, castToAudioContext, gTypeAudioContext
+  , AudioDestinationNode(AudioDestinationNode), unAudioDestinationNode, castToAudioDestinationNode, gTypeAudioDestinationNode
+  , AudioListener(AudioListener), unAudioListener, castToAudioListener, gTypeAudioListener
+  , AudioNode(AudioNode), unAudioNode, IsAudioNode, toAudioNode, castToAudioNode, gTypeAudioNode
+  , AudioParam(AudioParam), unAudioParam, castToAudioParam, gTypeAudioParam
+  , AudioProcessingEvent(AudioProcessingEvent), unAudioProcessingEvent, castToAudioProcessingEvent, gTypeAudioProcessingEvent
+  , AudioStreamTrack(AudioStreamTrack), unAudioStreamTrack, castToAudioStreamTrack, gTypeAudioStreamTrack
+  , AudioTrack(AudioTrack), unAudioTrack, castToAudioTrack, gTypeAudioTrack
+  , AudioTrackList(AudioTrackList), unAudioTrackList, castToAudioTrackList, gTypeAudioTrackList
+  , AutocompleteErrorEvent(AutocompleteErrorEvent), unAutocompleteErrorEvent, castToAutocompleteErrorEvent, gTypeAutocompleteErrorEvent
+  , BarProp(BarProp), unBarProp, castToBarProp, gTypeBarProp
+  , BatteryManager(BatteryManager), unBatteryManager, castToBatteryManager, gTypeBatteryManager
+  , BeforeLoadEvent(BeforeLoadEvent), unBeforeLoadEvent, castToBeforeLoadEvent, gTypeBeforeLoadEvent
+  , BeforeUnloadEvent(BeforeUnloadEvent), unBeforeUnloadEvent, castToBeforeUnloadEvent, gTypeBeforeUnloadEvent
+  , BiquadFilterNode(BiquadFilterNode), unBiquadFilterNode, castToBiquadFilterNode, gTypeBiquadFilterNode
+  , Blob(Blob), unBlob, IsBlob, toBlob, castToBlob, gTypeBlob
+  , CDATASection(CDATASection), unCDATASection, castToCDATASection, gTypeCDATASection
+  , CSS(CSS), unCSS, castToCSS, gTypeCSS
+  , CSSCharsetRule(CSSCharsetRule), unCSSCharsetRule, castToCSSCharsetRule, gTypeCSSCharsetRule
+  , CSSFontFaceLoadEvent(CSSFontFaceLoadEvent), unCSSFontFaceLoadEvent, castToCSSFontFaceLoadEvent, gTypeCSSFontFaceLoadEvent
+  , CSSFontFaceRule(CSSFontFaceRule), unCSSFontFaceRule, castToCSSFontFaceRule, gTypeCSSFontFaceRule
+  , CSSImportRule(CSSImportRule), unCSSImportRule, castToCSSImportRule, gTypeCSSImportRule
+  , CSSKeyframeRule(CSSKeyframeRule), unCSSKeyframeRule, castToCSSKeyframeRule, gTypeCSSKeyframeRule
+  , CSSKeyframesRule(CSSKeyframesRule), unCSSKeyframesRule, castToCSSKeyframesRule, gTypeCSSKeyframesRule
+  , CSSMediaRule(CSSMediaRule), unCSSMediaRule, castToCSSMediaRule, gTypeCSSMediaRule
+  , CSSPageRule(CSSPageRule), unCSSPageRule, castToCSSPageRule, gTypeCSSPageRule
+  , CSSPrimitiveValue(CSSPrimitiveValue), unCSSPrimitiveValue, castToCSSPrimitiveValue, gTypeCSSPrimitiveValue
+  , CSSRule(CSSRule), unCSSRule, IsCSSRule, toCSSRule, castToCSSRule, gTypeCSSRule
+  , CSSRuleList(CSSRuleList), unCSSRuleList, castToCSSRuleList, gTypeCSSRuleList
+  , CSSStyleDeclaration(CSSStyleDeclaration), unCSSStyleDeclaration, castToCSSStyleDeclaration, gTypeCSSStyleDeclaration
+  , CSSStyleRule(CSSStyleRule), unCSSStyleRule, castToCSSStyleRule, gTypeCSSStyleRule
+  , CSSStyleSheet(CSSStyleSheet), unCSSStyleSheet, castToCSSStyleSheet, gTypeCSSStyleSheet
+  , CSSSupportsRule(CSSSupportsRule), unCSSSupportsRule, castToCSSSupportsRule, gTypeCSSSupportsRule
+  , CSSUnknownRule(CSSUnknownRule), unCSSUnknownRule, castToCSSUnknownRule, gTypeCSSUnknownRule
+  , CSSValue(CSSValue), unCSSValue, IsCSSValue, toCSSValue, castToCSSValue, gTypeCSSValue
+  , CSSValueList(CSSValueList), unCSSValueList, IsCSSValueList, toCSSValueList, castToCSSValueList, gTypeCSSValueList
+  , CanvasGradient(CanvasGradient), unCanvasGradient, castToCanvasGradient, gTypeCanvasGradient
+  , CanvasPattern(CanvasPattern), unCanvasPattern, castToCanvasPattern, gTypeCanvasPattern
+  , CanvasProxy(CanvasProxy), unCanvasProxy, castToCanvasProxy, gTypeCanvasProxy
+  , CanvasRenderingContext(CanvasRenderingContext), unCanvasRenderingContext, IsCanvasRenderingContext, toCanvasRenderingContext, castToCanvasRenderingContext, gTypeCanvasRenderingContext
+  , CanvasRenderingContext2D(CanvasRenderingContext2D), unCanvasRenderingContext2D, castToCanvasRenderingContext2D, gTypeCanvasRenderingContext2D
+  , CapabilityRange(CapabilityRange), unCapabilityRange, castToCapabilityRange, gTypeCapabilityRange
+  , ChannelMergerNode(ChannelMergerNode), unChannelMergerNode, castToChannelMergerNode, gTypeChannelMergerNode
+  , ChannelSplitterNode(ChannelSplitterNode), unChannelSplitterNode, castToChannelSplitterNode, gTypeChannelSplitterNode
+  , CharacterData(CharacterData), unCharacterData, IsCharacterData, toCharacterData, castToCharacterData, gTypeCharacterData
+  , ChildNode(ChildNode), unChildNode, castToChildNode, gTypeChildNode
+  , ClientRect(ClientRect), unClientRect, castToClientRect, gTypeClientRect
+  , ClientRectList(ClientRectList), unClientRectList, castToClientRectList, gTypeClientRectList
+  , CloseEvent(CloseEvent), unCloseEvent, castToCloseEvent, gTypeCloseEvent
+  , CommandLineAPIHost(CommandLineAPIHost), unCommandLineAPIHost, castToCommandLineAPIHost, gTypeCommandLineAPIHost
+  , Comment(Comment), unComment, castToComment, gTypeComment
+  , CompositionEvent(CompositionEvent), unCompositionEvent, castToCompositionEvent, gTypeCompositionEvent
+  , ConvolverNode(ConvolverNode), unConvolverNode, castToConvolverNode, gTypeConvolverNode
+  , Coordinates(Coordinates), unCoordinates, castToCoordinates, gTypeCoordinates
+  , Counter(Counter), unCounter, castToCounter, gTypeCounter
+  , Crypto(Crypto), unCrypto, castToCrypto, gTypeCrypto
+  , CryptoKey(CryptoKey), unCryptoKey, castToCryptoKey, gTypeCryptoKey
+  , CryptoKeyPair(CryptoKeyPair), unCryptoKeyPair, castToCryptoKeyPair, gTypeCryptoKeyPair
+  , CustomEvent(CustomEvent), unCustomEvent, castToCustomEvent, gTypeCustomEvent
+  , DOMError(DOMError), unDOMError, IsDOMError, toDOMError, castToDOMError, gTypeDOMError
+  , DOMImplementation(DOMImplementation), unDOMImplementation, castToDOMImplementation, gTypeDOMImplementation
+  , DOMNamedFlowCollection(DOMNamedFlowCollection), unDOMNamedFlowCollection, castToDOMNamedFlowCollection, gTypeDOMNamedFlowCollection
+  , DOMParser(DOMParser), unDOMParser, castToDOMParser, gTypeDOMParser
+  , DOMSettableTokenList(DOMSettableTokenList), unDOMSettableTokenList, castToDOMSettableTokenList, gTypeDOMSettableTokenList
+  , DOMStringList(DOMStringList), unDOMStringList, castToDOMStringList, gTypeDOMStringList
+  , DOMStringMap(DOMStringMap), unDOMStringMap, castToDOMStringMap, gTypeDOMStringMap
+  , DOMTokenList(DOMTokenList), unDOMTokenList, IsDOMTokenList, toDOMTokenList, castToDOMTokenList, gTypeDOMTokenList
+  , DataCue(DataCue), unDataCue, castToDataCue, gTypeDataCue
+  , DataTransfer(DataTransfer), unDataTransfer, castToDataTransfer, gTypeDataTransfer
+  , DataTransferItem(DataTransferItem), unDataTransferItem, castToDataTransferItem, gTypeDataTransferItem
+  , DataTransferItemList(DataTransferItemList), unDataTransferItemList, castToDataTransferItemList, gTypeDataTransferItemList
+  , Database(Database), unDatabase, castToDatabase, gTypeDatabase
+  , DedicatedWorkerGlobalScope(DedicatedWorkerGlobalScope), unDedicatedWorkerGlobalScope, castToDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope
+  , DelayNode(DelayNode), unDelayNode, castToDelayNode, gTypeDelayNode
+  , DeviceMotionEvent(DeviceMotionEvent), unDeviceMotionEvent, castToDeviceMotionEvent, gTypeDeviceMotionEvent
+  , DeviceOrientationEvent(DeviceOrientationEvent), unDeviceOrientationEvent, castToDeviceOrientationEvent, gTypeDeviceOrientationEvent
+  , DeviceProximityEvent(DeviceProximityEvent), unDeviceProximityEvent, castToDeviceProximityEvent, gTypeDeviceProximityEvent
+  , Document(Document), unDocument, IsDocument, toDocument, castToDocument, gTypeDocument
+  , DocumentFragment(DocumentFragment), unDocumentFragment, castToDocumentFragment, gTypeDocumentFragment
+  , DocumentType(DocumentType), unDocumentType, castToDocumentType, gTypeDocumentType
+  , DynamicsCompressorNode(DynamicsCompressorNode), unDynamicsCompressorNode, castToDynamicsCompressorNode, gTypeDynamicsCompressorNode
+  , EXTBlendMinMax(EXTBlendMinMax), unEXTBlendMinMax, castToEXTBlendMinMax, gTypeEXTBlendMinMax
+  , EXTFragDepth(EXTFragDepth), unEXTFragDepth, castToEXTFragDepth, gTypeEXTFragDepth
+  , EXTShaderTextureLOD(EXTShaderTextureLOD), unEXTShaderTextureLOD, castToEXTShaderTextureLOD, gTypeEXTShaderTextureLOD
+  , EXTTextureFilterAnisotropic(EXTTextureFilterAnisotropic), unEXTTextureFilterAnisotropic, castToEXTTextureFilterAnisotropic, gTypeEXTTextureFilterAnisotropic
+  , EXTsRGB(EXTsRGB), unEXTsRGB, castToEXTsRGB, gTypeEXTsRGB
+  , Element(Element), unElement, IsElement, toElement, castToElement, gTypeElement
+  , Entity(Entity), unEntity, castToEntity, gTypeEntity
+  , EntityReference(EntityReference), unEntityReference, castToEntityReference, gTypeEntityReference
+  , ErrorEvent(ErrorEvent), unErrorEvent, castToErrorEvent, gTypeErrorEvent
+  , Event(Event), unEvent, IsEvent, toEvent, castToEvent, gTypeEvent
+  , EventListener(EventListener), unEventListener, castToEventListener, gTypeEventListener
+  , EventSource(EventSource), unEventSource, castToEventSource, gTypeEventSource
+  , EventTarget(EventTarget), unEventTarget, IsEventTarget, toEventTarget, castToEventTarget, gTypeEventTarget
+  , File(File), unFile, castToFile, gTypeFile
+  , FileError(FileError), unFileError, castToFileError, gTypeFileError
+  , FileList(FileList), unFileList, castToFileList, gTypeFileList
+  , FileReader(FileReader), unFileReader, castToFileReader, gTypeFileReader
+  , FileReaderSync(FileReaderSync), unFileReaderSync, castToFileReaderSync, gTypeFileReaderSync
+  , FocusEvent(FocusEvent), unFocusEvent, castToFocusEvent, gTypeFocusEvent
+  , FontLoader(FontLoader), unFontLoader, castToFontLoader, gTypeFontLoader
+  , FormData(FormData), unFormData, castToFormData, gTypeFormData
+  , GainNode(GainNode), unGainNode, castToGainNode, gTypeGainNode
+  , Gamepad(Gamepad), unGamepad, castToGamepad, gTypeGamepad
+  , GamepadButton(GamepadButton), unGamepadButton, castToGamepadButton, gTypeGamepadButton
+  , GamepadEvent(GamepadEvent), unGamepadEvent, castToGamepadEvent, gTypeGamepadEvent
+  , Geolocation(Geolocation), unGeolocation, castToGeolocation, gTypeGeolocation
+  , Geoposition(Geoposition), unGeoposition, castToGeoposition, gTypeGeoposition
+  , HTMLAllCollection(HTMLAllCollection), unHTMLAllCollection, castToHTMLAllCollection, gTypeHTMLAllCollection
+  , HTMLAnchorElement(HTMLAnchorElement), unHTMLAnchorElement, castToHTMLAnchorElement, gTypeHTMLAnchorElement
+  , HTMLAppletElement(HTMLAppletElement), unHTMLAppletElement, castToHTMLAppletElement, gTypeHTMLAppletElement
+  , HTMLAreaElement(HTMLAreaElement), unHTMLAreaElement, castToHTMLAreaElement, gTypeHTMLAreaElement
+  , HTMLAudioElement(HTMLAudioElement), unHTMLAudioElement, castToHTMLAudioElement, gTypeHTMLAudioElement
+  , HTMLBRElement(HTMLBRElement), unHTMLBRElement, castToHTMLBRElement, gTypeHTMLBRElement
+  , HTMLBaseElement(HTMLBaseElement), unHTMLBaseElement, castToHTMLBaseElement, gTypeHTMLBaseElement
+  , HTMLBaseFontElement(HTMLBaseFontElement), unHTMLBaseFontElement, castToHTMLBaseFontElement, gTypeHTMLBaseFontElement
+  , HTMLBodyElement(HTMLBodyElement), unHTMLBodyElement, castToHTMLBodyElement, gTypeHTMLBodyElement
+  , HTMLButtonElement(HTMLButtonElement), unHTMLButtonElement, castToHTMLButtonElement, gTypeHTMLButtonElement
+  , HTMLCanvasElement(HTMLCanvasElement), unHTMLCanvasElement, castToHTMLCanvasElement, gTypeHTMLCanvasElement
+  , HTMLCollection(HTMLCollection), unHTMLCollection, IsHTMLCollection, toHTMLCollection, castToHTMLCollection, gTypeHTMLCollection
+  , HTMLDListElement(HTMLDListElement), unHTMLDListElement, castToHTMLDListElement, gTypeHTMLDListElement
+  , HTMLDataListElement(HTMLDataListElement), unHTMLDataListElement, castToHTMLDataListElement, gTypeHTMLDataListElement
+  , HTMLDetailsElement(HTMLDetailsElement), unHTMLDetailsElement, castToHTMLDetailsElement, gTypeHTMLDetailsElement
+  , HTMLDirectoryElement(HTMLDirectoryElement), unHTMLDirectoryElement, castToHTMLDirectoryElement, gTypeHTMLDirectoryElement
+  , HTMLDivElement(HTMLDivElement), unHTMLDivElement, castToHTMLDivElement, gTypeHTMLDivElement
+  , HTMLDocument(HTMLDocument), unHTMLDocument, castToHTMLDocument, gTypeHTMLDocument
+  , HTMLElement(HTMLElement), unHTMLElement, IsHTMLElement, toHTMLElement, castToHTMLElement, gTypeHTMLElement
+  , HTMLEmbedElement(HTMLEmbedElement), unHTMLEmbedElement, castToHTMLEmbedElement, gTypeHTMLEmbedElement
+  , HTMLFieldSetElement(HTMLFieldSetElement), unHTMLFieldSetElement, castToHTMLFieldSetElement, gTypeHTMLFieldSetElement
+  , HTMLFontElement(HTMLFontElement), unHTMLFontElement, castToHTMLFontElement, gTypeHTMLFontElement
+  , HTMLFormControlsCollection(HTMLFormControlsCollection), unHTMLFormControlsCollection, castToHTMLFormControlsCollection, gTypeHTMLFormControlsCollection
+  , HTMLFormElement(HTMLFormElement), unHTMLFormElement, castToHTMLFormElement, gTypeHTMLFormElement
+  , HTMLFrameElement(HTMLFrameElement), unHTMLFrameElement, castToHTMLFrameElement, gTypeHTMLFrameElement
+  , HTMLFrameSetElement(HTMLFrameSetElement), unHTMLFrameSetElement, castToHTMLFrameSetElement, gTypeHTMLFrameSetElement
+  , HTMLHRElement(HTMLHRElement), unHTMLHRElement, castToHTMLHRElement, gTypeHTMLHRElement
+  , HTMLHeadElement(HTMLHeadElement), unHTMLHeadElement, castToHTMLHeadElement, gTypeHTMLHeadElement
+  , HTMLHeadingElement(HTMLHeadingElement), unHTMLHeadingElement, castToHTMLHeadingElement, gTypeHTMLHeadingElement
+  , HTMLHtmlElement(HTMLHtmlElement), unHTMLHtmlElement, castToHTMLHtmlElement, gTypeHTMLHtmlElement
+  , HTMLIFrameElement(HTMLIFrameElement), unHTMLIFrameElement, castToHTMLIFrameElement, gTypeHTMLIFrameElement
+  , HTMLImageElement(HTMLImageElement), unHTMLImageElement, castToHTMLImageElement, gTypeHTMLImageElement
+  , HTMLInputElement(HTMLInputElement), unHTMLInputElement, castToHTMLInputElement, gTypeHTMLInputElement
+  , HTMLKeygenElement(HTMLKeygenElement), unHTMLKeygenElement, castToHTMLKeygenElement, gTypeHTMLKeygenElement
+  , HTMLLIElement(HTMLLIElement), unHTMLLIElement, castToHTMLLIElement, gTypeHTMLLIElement
+  , HTMLLabelElement(HTMLLabelElement), unHTMLLabelElement, castToHTMLLabelElement, gTypeHTMLLabelElement
+  , HTMLLegendElement(HTMLLegendElement), unHTMLLegendElement, castToHTMLLegendElement, gTypeHTMLLegendElement
+  , HTMLLinkElement(HTMLLinkElement), unHTMLLinkElement, castToHTMLLinkElement, gTypeHTMLLinkElement
+  , HTMLMapElement(HTMLMapElement), unHTMLMapElement, castToHTMLMapElement, gTypeHTMLMapElement
+  , HTMLMarqueeElement(HTMLMarqueeElement), unHTMLMarqueeElement, castToHTMLMarqueeElement, gTypeHTMLMarqueeElement
+  , HTMLMediaElement(HTMLMediaElement), unHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement, castToHTMLMediaElement, gTypeHTMLMediaElement
+  , HTMLMenuElement(HTMLMenuElement), unHTMLMenuElement, castToHTMLMenuElement, gTypeHTMLMenuElement
+  , HTMLMetaElement(HTMLMetaElement), unHTMLMetaElement, castToHTMLMetaElement, gTypeHTMLMetaElement
+  , HTMLMeterElement(HTMLMeterElement), unHTMLMeterElement, castToHTMLMeterElement, gTypeHTMLMeterElement
+  , HTMLModElement(HTMLModElement), unHTMLModElement, castToHTMLModElement, gTypeHTMLModElement
+  , HTMLOListElement(HTMLOListElement), unHTMLOListElement, castToHTMLOListElement, gTypeHTMLOListElement
+  , HTMLObjectElement(HTMLObjectElement), unHTMLObjectElement, castToHTMLObjectElement, gTypeHTMLObjectElement
+  , HTMLOptGroupElement(HTMLOptGroupElement), unHTMLOptGroupElement, castToHTMLOptGroupElement, gTypeHTMLOptGroupElement
+  , HTMLOptionElement(HTMLOptionElement), unHTMLOptionElement, castToHTMLOptionElement, gTypeHTMLOptionElement
+  , HTMLOptionsCollection(HTMLOptionsCollection), unHTMLOptionsCollection, castToHTMLOptionsCollection, gTypeHTMLOptionsCollection
+  , HTMLOutputElement(HTMLOutputElement), unHTMLOutputElement, castToHTMLOutputElement, gTypeHTMLOutputElement
+  , HTMLParagraphElement(HTMLParagraphElement), unHTMLParagraphElement, castToHTMLParagraphElement, gTypeHTMLParagraphElement
+  , HTMLParamElement(HTMLParamElement), unHTMLParamElement, castToHTMLParamElement, gTypeHTMLParamElement
+  , HTMLPreElement(HTMLPreElement), unHTMLPreElement, castToHTMLPreElement, gTypeHTMLPreElement
+  , HTMLProgressElement(HTMLProgressElement), unHTMLProgressElement, castToHTMLProgressElement, gTypeHTMLProgressElement
+  , HTMLQuoteElement(HTMLQuoteElement), unHTMLQuoteElement, castToHTMLQuoteElement, gTypeHTMLQuoteElement
+  , HTMLScriptElement(HTMLScriptElement), unHTMLScriptElement, castToHTMLScriptElement, gTypeHTMLScriptElement
+  , HTMLSelectElement(HTMLSelectElement), unHTMLSelectElement, castToHTMLSelectElement, gTypeHTMLSelectElement
+  , HTMLSourceElement(HTMLSourceElement), unHTMLSourceElement, castToHTMLSourceElement, gTypeHTMLSourceElement
+  , HTMLSpanElement(HTMLSpanElement), unHTMLSpanElement, castToHTMLSpanElement, gTypeHTMLSpanElement
+  , HTMLStyleElement(HTMLStyleElement), unHTMLStyleElement, castToHTMLStyleElement, gTypeHTMLStyleElement
+  , HTMLTableCaptionElement(HTMLTableCaptionElement), unHTMLTableCaptionElement, castToHTMLTableCaptionElement, gTypeHTMLTableCaptionElement
+  , HTMLTableCellElement(HTMLTableCellElement), unHTMLTableCellElement, castToHTMLTableCellElement, gTypeHTMLTableCellElement
+  , HTMLTableColElement(HTMLTableColElement), unHTMLTableColElement, castToHTMLTableColElement, gTypeHTMLTableColElement
+  , HTMLTableElement(HTMLTableElement), unHTMLTableElement, castToHTMLTableElement, gTypeHTMLTableElement
+  , HTMLTableRowElement(HTMLTableRowElement), unHTMLTableRowElement, castToHTMLTableRowElement, gTypeHTMLTableRowElement
+  , HTMLTableSectionElement(HTMLTableSectionElement), unHTMLTableSectionElement, castToHTMLTableSectionElement, gTypeHTMLTableSectionElement
+  , HTMLTemplateElement(HTMLTemplateElement), unHTMLTemplateElement, castToHTMLTemplateElement, gTypeHTMLTemplateElement
+  , HTMLTextAreaElement(HTMLTextAreaElement), unHTMLTextAreaElement, castToHTMLTextAreaElement, gTypeHTMLTextAreaElement
+  , HTMLTitleElement(HTMLTitleElement), unHTMLTitleElement, castToHTMLTitleElement, gTypeHTMLTitleElement
+  , HTMLTrackElement(HTMLTrackElement), unHTMLTrackElement, castToHTMLTrackElement, gTypeHTMLTrackElement
+  , HTMLUListElement(HTMLUListElement), unHTMLUListElement, castToHTMLUListElement, gTypeHTMLUListElement
+  , HTMLUnknownElement(HTMLUnknownElement), unHTMLUnknownElement, castToHTMLUnknownElement, gTypeHTMLUnknownElement
+  , HTMLVideoElement(HTMLVideoElement), unHTMLVideoElement, castToHTMLVideoElement, gTypeHTMLVideoElement
+  , HashChangeEvent(HashChangeEvent), unHashChangeEvent, castToHashChangeEvent, gTypeHashChangeEvent
+  , History(History), unHistory, castToHistory, gTypeHistory
+  , IDBAny(IDBAny), unIDBAny, castToIDBAny, gTypeIDBAny
+  , IDBCursor(IDBCursor), unIDBCursor, IsIDBCursor, toIDBCursor, castToIDBCursor, gTypeIDBCursor
+  , IDBCursorWithValue(IDBCursorWithValue), unIDBCursorWithValue, castToIDBCursorWithValue, gTypeIDBCursorWithValue
+  , IDBDatabase(IDBDatabase), unIDBDatabase, castToIDBDatabase, gTypeIDBDatabase
+  , IDBFactory(IDBFactory), unIDBFactory, castToIDBFactory, gTypeIDBFactory
+  , IDBIndex(IDBIndex), unIDBIndex, castToIDBIndex, gTypeIDBIndex
+  , IDBKeyRange(IDBKeyRange), unIDBKeyRange, castToIDBKeyRange, gTypeIDBKeyRange
+  , IDBObjectStore(IDBObjectStore), unIDBObjectStore, castToIDBObjectStore, gTypeIDBObjectStore
+  , IDBOpenDBRequest(IDBOpenDBRequest), unIDBOpenDBRequest, castToIDBOpenDBRequest, gTypeIDBOpenDBRequest
+  , IDBRequest(IDBRequest), unIDBRequest, IsIDBRequest, toIDBRequest, castToIDBRequest, gTypeIDBRequest
+  , IDBTransaction(IDBTransaction), unIDBTransaction, castToIDBTransaction, gTypeIDBTransaction
+  , IDBVersionChangeEvent(IDBVersionChangeEvent), unIDBVersionChangeEvent, castToIDBVersionChangeEvent, gTypeIDBVersionChangeEvent
+  , ImageData(ImageData), unImageData, castToImageData, gTypeImageData
+  , InspectorFrontendHost(InspectorFrontendHost), unInspectorFrontendHost, castToInspectorFrontendHost, gTypeInspectorFrontendHost
+  , InternalSettings(InternalSettings), unInternalSettings, castToInternalSettings, gTypeInternalSettings
+  , Internals(Internals), unInternals, castToInternals, gTypeInternals
+  , KeyboardEvent(KeyboardEvent), unKeyboardEvent, castToKeyboardEvent, gTypeKeyboardEvent
+  , Location(Location), unLocation, castToLocation, gTypeLocation
+  , MallocStatistics(MallocStatistics), unMallocStatistics, castToMallocStatistics, gTypeMallocStatistics
+  , MediaController(MediaController), unMediaController, castToMediaController, gTypeMediaController
+  , MediaControlsHost(MediaControlsHost), unMediaControlsHost, castToMediaControlsHost, gTypeMediaControlsHost
+  , MediaElementAudioSourceNode(MediaElementAudioSourceNode), unMediaElementAudioSourceNode, castToMediaElementAudioSourceNode, gTypeMediaElementAudioSourceNode
+  , MediaError(MediaError), unMediaError, castToMediaError, gTypeMediaError
+  , MediaKeyError(MediaKeyError), unMediaKeyError, castToMediaKeyError, gTypeMediaKeyError
+  , MediaKeyEvent(MediaKeyEvent), unMediaKeyEvent, castToMediaKeyEvent, gTypeMediaKeyEvent
+  , MediaKeyMessageEvent(MediaKeyMessageEvent), unMediaKeyMessageEvent, castToMediaKeyMessageEvent, gTypeMediaKeyMessageEvent
+  , MediaKeyNeededEvent(MediaKeyNeededEvent), unMediaKeyNeededEvent, castToMediaKeyNeededEvent, gTypeMediaKeyNeededEvent
+  , MediaKeySession(MediaKeySession), unMediaKeySession, castToMediaKeySession, gTypeMediaKeySession
+  , MediaKeys(MediaKeys), unMediaKeys, castToMediaKeys, gTypeMediaKeys
+  , MediaList(MediaList), unMediaList, castToMediaList, gTypeMediaList
+  , MediaQueryList(MediaQueryList), unMediaQueryList, castToMediaQueryList, gTypeMediaQueryList
+  , MediaSource(MediaSource), unMediaSource, castToMediaSource, gTypeMediaSource
+  , MediaSourceStates(MediaSourceStates), unMediaSourceStates, castToMediaSourceStates, gTypeMediaSourceStates
+  , MediaStream(MediaStream), unMediaStream, castToMediaStream, gTypeMediaStream
+  , MediaStreamAudioDestinationNode(MediaStreamAudioDestinationNode), unMediaStreamAudioDestinationNode, castToMediaStreamAudioDestinationNode, gTypeMediaStreamAudioDestinationNode
+  , MediaStreamAudioSourceNode(MediaStreamAudioSourceNode), unMediaStreamAudioSourceNode, castToMediaStreamAudioSourceNode, gTypeMediaStreamAudioSourceNode
+  , MediaStreamCapabilities(MediaStreamCapabilities), unMediaStreamCapabilities, IsMediaStreamCapabilities, toMediaStreamCapabilities, castToMediaStreamCapabilities, gTypeMediaStreamCapabilities
+  , MediaStreamEvent(MediaStreamEvent), unMediaStreamEvent, castToMediaStreamEvent, gTypeMediaStreamEvent
+  , MediaStreamTrack(MediaStreamTrack), unMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack, castToMediaStreamTrack, gTypeMediaStreamTrack
+  , MediaStreamTrackEvent(MediaStreamTrackEvent), unMediaStreamTrackEvent, castToMediaStreamTrackEvent, gTypeMediaStreamTrackEvent
+  , MediaTrackConstraint(MediaTrackConstraint), unMediaTrackConstraint, castToMediaTrackConstraint, gTypeMediaTrackConstraint
+  , MediaTrackConstraintSet(MediaTrackConstraintSet), unMediaTrackConstraintSet, castToMediaTrackConstraintSet, gTypeMediaTrackConstraintSet
+  , MediaTrackConstraints(MediaTrackConstraints), unMediaTrackConstraints, castToMediaTrackConstraints, gTypeMediaTrackConstraints
+  , MemoryInfo(MemoryInfo), unMemoryInfo, castToMemoryInfo, gTypeMemoryInfo
+  , MessageChannel(MessageChannel), unMessageChannel, castToMessageChannel, gTypeMessageChannel
+  , MessageEvent(MessageEvent), unMessageEvent, castToMessageEvent, gTypeMessageEvent
+  , MessagePort(MessagePort), unMessagePort, castToMessagePort, gTypeMessagePort
+  , MimeType(MimeType), unMimeType, castToMimeType, gTypeMimeType
+  , MimeTypeArray(MimeTypeArray), unMimeTypeArray, castToMimeTypeArray, gTypeMimeTypeArray
+  , MouseEvent(MouseEvent), unMouseEvent, IsMouseEvent, toMouseEvent, castToMouseEvent, gTypeMouseEvent
+  , MutationEvent(MutationEvent), unMutationEvent, castToMutationEvent, gTypeMutationEvent
+  , MutationObserver(MutationObserver), unMutationObserver, castToMutationObserver, gTypeMutationObserver
+  , MutationRecord(MutationRecord), unMutationRecord, castToMutationRecord, gTypeMutationRecord
+  , NamedNodeMap(NamedNodeMap), unNamedNodeMap, castToNamedNodeMap, gTypeNamedNodeMap
+  , Navigator(Navigator), unNavigator, castToNavigator, gTypeNavigator
+  , NavigatorUserMediaError(NavigatorUserMediaError), unNavigatorUserMediaError, castToNavigatorUserMediaError, gTypeNavigatorUserMediaError
+  , Node(Node), unNode, IsNode, toNode, castToNode, gTypeNode
+  , NodeFilter(NodeFilter), unNodeFilter, castToNodeFilter, gTypeNodeFilter
+  , NodeIterator(NodeIterator), unNodeIterator, castToNodeIterator, gTypeNodeIterator
+  , NodeList(NodeList), unNodeList, IsNodeList, toNodeList, castToNodeList, gTypeNodeList
+  , Notification(Notification), unNotification, castToNotification, gTypeNotification
+  , NotificationCenter(NotificationCenter), unNotificationCenter, castToNotificationCenter, gTypeNotificationCenter
+  , OESElementIndexUint(OESElementIndexUint), unOESElementIndexUint, castToOESElementIndexUint, gTypeOESElementIndexUint
+  , OESStandardDerivatives(OESStandardDerivatives), unOESStandardDerivatives, castToOESStandardDerivatives, gTypeOESStandardDerivatives
+  , OESTextureFloat(OESTextureFloat), unOESTextureFloat, castToOESTextureFloat, gTypeOESTextureFloat
+  , OESTextureFloatLinear(OESTextureFloatLinear), unOESTextureFloatLinear, castToOESTextureFloatLinear, gTypeOESTextureFloatLinear
+  , OESTextureHalfFloat(OESTextureHalfFloat), unOESTextureHalfFloat, castToOESTextureHalfFloat, gTypeOESTextureHalfFloat
+  , OESTextureHalfFloatLinear(OESTextureHalfFloatLinear), unOESTextureHalfFloatLinear, castToOESTextureHalfFloatLinear, gTypeOESTextureHalfFloatLinear
+  , OESVertexArrayObject(OESVertexArrayObject), unOESVertexArrayObject, castToOESVertexArrayObject, gTypeOESVertexArrayObject
+  , OfflineAudioCompletionEvent(OfflineAudioCompletionEvent), unOfflineAudioCompletionEvent, castToOfflineAudioCompletionEvent, gTypeOfflineAudioCompletionEvent
+  , OfflineAudioContext(OfflineAudioContext), unOfflineAudioContext, castToOfflineAudioContext, gTypeOfflineAudioContext
+  , OscillatorNode(OscillatorNode), unOscillatorNode, castToOscillatorNode, gTypeOscillatorNode
+  , OverflowEvent(OverflowEvent), unOverflowEvent, castToOverflowEvent, gTypeOverflowEvent
+  , PageTransitionEvent(PageTransitionEvent), unPageTransitionEvent, castToPageTransitionEvent, gTypePageTransitionEvent
+  , PannerNode(PannerNode), unPannerNode, castToPannerNode, gTypePannerNode
+  , Path2D(Path2D), unPath2D, castToPath2D, gTypePath2D
+  , Performance(Performance), unPerformance, castToPerformance, gTypePerformance
+  , PerformanceEntry(PerformanceEntry), unPerformanceEntry, IsPerformanceEntry, toPerformanceEntry, castToPerformanceEntry, gTypePerformanceEntry
+  , PerformanceEntryList(PerformanceEntryList), unPerformanceEntryList, castToPerformanceEntryList, gTypePerformanceEntryList
+  , PerformanceMark(PerformanceMark), unPerformanceMark, castToPerformanceMark, gTypePerformanceMark
+  , PerformanceMeasure(PerformanceMeasure), unPerformanceMeasure, castToPerformanceMeasure, gTypePerformanceMeasure
+  , PerformanceNavigation(PerformanceNavigation), unPerformanceNavigation, castToPerformanceNavigation, gTypePerformanceNavigation
+  , PerformanceResourceTiming(PerformanceResourceTiming), unPerformanceResourceTiming, castToPerformanceResourceTiming, gTypePerformanceResourceTiming
+  , PerformanceTiming(PerformanceTiming), unPerformanceTiming, castToPerformanceTiming, gTypePerformanceTiming
+  , PeriodicWave(PeriodicWave), unPeriodicWave, castToPeriodicWave, gTypePeriodicWave
+  , Plugin(Plugin), unPlugin, castToPlugin, gTypePlugin
+  , PluginArray(PluginArray), unPluginArray, castToPluginArray, gTypePluginArray
+  , PopStateEvent(PopStateEvent), unPopStateEvent, castToPopStateEvent, gTypePopStateEvent
+  , PositionError(PositionError), unPositionError, castToPositionError, gTypePositionError
+  , ProcessingInstruction(ProcessingInstruction), unProcessingInstruction, castToProcessingInstruction, gTypeProcessingInstruction
+  , ProgressEvent(ProgressEvent), unProgressEvent, IsProgressEvent, toProgressEvent, castToProgressEvent, gTypeProgressEvent
+  , QuickTimePluginReplacement(QuickTimePluginReplacement), unQuickTimePluginReplacement, castToQuickTimePluginReplacement, gTypeQuickTimePluginReplacement
+  , RGBColor(RGBColor), unRGBColor, castToRGBColor, gTypeRGBColor
+  , RTCConfiguration(RTCConfiguration), unRTCConfiguration, castToRTCConfiguration, gTypeRTCConfiguration
+  , RTCDTMFSender(RTCDTMFSender), unRTCDTMFSender, castToRTCDTMFSender, gTypeRTCDTMFSender
+  , RTCDTMFToneChangeEvent(RTCDTMFToneChangeEvent), unRTCDTMFToneChangeEvent, castToRTCDTMFToneChangeEvent, gTypeRTCDTMFToneChangeEvent
+  , RTCDataChannel(RTCDataChannel), unRTCDataChannel, castToRTCDataChannel, gTypeRTCDataChannel
+  , RTCDataChannelEvent(RTCDataChannelEvent), unRTCDataChannelEvent, castToRTCDataChannelEvent, gTypeRTCDataChannelEvent
+  , RTCIceCandidate(RTCIceCandidate), unRTCIceCandidate, castToRTCIceCandidate, gTypeRTCIceCandidate
+  , RTCIceCandidateEvent(RTCIceCandidateEvent), unRTCIceCandidateEvent, castToRTCIceCandidateEvent, gTypeRTCIceCandidateEvent
+  , RTCIceServer(RTCIceServer), unRTCIceServer, castToRTCIceServer, gTypeRTCIceServer
+  , RTCPeerConnection(RTCPeerConnection), unRTCPeerConnection, castToRTCPeerConnection, gTypeRTCPeerConnection
+  , RTCSessionDescription(RTCSessionDescription), unRTCSessionDescription, castToRTCSessionDescription, gTypeRTCSessionDescription
+  , RTCStatsReport(RTCStatsReport), unRTCStatsReport, castToRTCStatsReport, gTypeRTCStatsReport
+  , RTCStatsResponse(RTCStatsResponse), unRTCStatsResponse, castToRTCStatsResponse, gTypeRTCStatsResponse
+  , RadioNodeList(RadioNodeList), unRadioNodeList, castToRadioNodeList, gTypeRadioNodeList
+  , Range(Range), unRange, castToRange, gTypeRange
+  , ReadableStream(ReadableStream), unReadableStream, castToReadableStream, gTypeReadableStream
+  , Rect(Rect), unRect, castToRect, gTypeRect
+  , SQLError(SQLError), unSQLError, castToSQLError, gTypeSQLError
+  , SQLResultSet(SQLResultSet), unSQLResultSet, castToSQLResultSet, gTypeSQLResultSet
+  , SQLResultSetRowList(SQLResultSetRowList), unSQLResultSetRowList, castToSQLResultSetRowList, gTypeSQLResultSetRowList
+  , SQLTransaction(SQLTransaction), unSQLTransaction, castToSQLTransaction, gTypeSQLTransaction
+  , SVGAElement(SVGAElement), unSVGAElement, castToSVGAElement, gTypeSVGAElement
+  , SVGAltGlyphDefElement(SVGAltGlyphDefElement), unSVGAltGlyphDefElement, castToSVGAltGlyphDefElement, gTypeSVGAltGlyphDefElement
+  , SVGAltGlyphElement(SVGAltGlyphElement), unSVGAltGlyphElement, castToSVGAltGlyphElement, gTypeSVGAltGlyphElement
+  , SVGAltGlyphItemElement(SVGAltGlyphItemElement), unSVGAltGlyphItemElement, castToSVGAltGlyphItemElement, gTypeSVGAltGlyphItemElement
+  , SVGAngle(SVGAngle), unSVGAngle, castToSVGAngle, gTypeSVGAngle
+  , SVGAnimateColorElement(SVGAnimateColorElement), unSVGAnimateColorElement, castToSVGAnimateColorElement, gTypeSVGAnimateColorElement
+  , SVGAnimateElement(SVGAnimateElement), unSVGAnimateElement, castToSVGAnimateElement, gTypeSVGAnimateElement
+  , SVGAnimateMotionElement(SVGAnimateMotionElement), unSVGAnimateMotionElement, castToSVGAnimateMotionElement, gTypeSVGAnimateMotionElement
+  , SVGAnimateTransformElement(SVGAnimateTransformElement), unSVGAnimateTransformElement, castToSVGAnimateTransformElement, gTypeSVGAnimateTransformElement
+  , SVGAnimatedAngle(SVGAnimatedAngle), unSVGAnimatedAngle, castToSVGAnimatedAngle, gTypeSVGAnimatedAngle
+  , SVGAnimatedBoolean(SVGAnimatedBoolean), unSVGAnimatedBoolean, castToSVGAnimatedBoolean, gTypeSVGAnimatedBoolean
+  , SVGAnimatedEnumeration(SVGAnimatedEnumeration), unSVGAnimatedEnumeration, castToSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration
+  , SVGAnimatedInteger(SVGAnimatedInteger), unSVGAnimatedInteger, castToSVGAnimatedInteger, gTypeSVGAnimatedInteger
+  , SVGAnimatedLength(SVGAnimatedLength), unSVGAnimatedLength, castToSVGAnimatedLength, gTypeSVGAnimatedLength
+  , SVGAnimatedLengthList(SVGAnimatedLengthList), unSVGAnimatedLengthList, castToSVGAnimatedLengthList, gTypeSVGAnimatedLengthList
+  , SVGAnimatedNumber(SVGAnimatedNumber), unSVGAnimatedNumber, castToSVGAnimatedNumber, gTypeSVGAnimatedNumber
+  , SVGAnimatedNumberList(SVGAnimatedNumberList), unSVGAnimatedNumberList, castToSVGAnimatedNumberList, gTypeSVGAnimatedNumberList
+  , SVGAnimatedPreserveAspectRatio(SVGAnimatedPreserveAspectRatio), unSVGAnimatedPreserveAspectRatio, castToSVGAnimatedPreserveAspectRatio, gTypeSVGAnimatedPreserveAspectRatio
+  , SVGAnimatedRect(SVGAnimatedRect), unSVGAnimatedRect, castToSVGAnimatedRect, gTypeSVGAnimatedRect
+  , SVGAnimatedString(SVGAnimatedString), unSVGAnimatedString, castToSVGAnimatedString, gTypeSVGAnimatedString
+  , SVGAnimatedTransformList(SVGAnimatedTransformList), unSVGAnimatedTransformList, castToSVGAnimatedTransformList, gTypeSVGAnimatedTransformList
+  , SVGAnimationElement(SVGAnimationElement), unSVGAnimationElement, IsSVGAnimationElement, toSVGAnimationElement, castToSVGAnimationElement, gTypeSVGAnimationElement
+  , SVGCircleElement(SVGCircleElement), unSVGCircleElement, castToSVGCircleElement, gTypeSVGCircleElement
+  , SVGClipPathElement(SVGClipPathElement), unSVGClipPathElement, castToSVGClipPathElement, gTypeSVGClipPathElement
+  , SVGColor(SVGColor), unSVGColor, IsSVGColor, toSVGColor, castToSVGColor, gTypeSVGColor
+  , SVGComponentTransferFunctionElement(SVGComponentTransferFunctionElement), unSVGComponentTransferFunctionElement, IsSVGComponentTransferFunctionElement, toSVGComponentTransferFunctionElement, castToSVGComponentTransferFunctionElement, gTypeSVGComponentTransferFunctionElement
+  , SVGCursorElement(SVGCursorElement), unSVGCursorElement, castToSVGCursorElement, gTypeSVGCursorElement
+  , SVGDefsElement(SVGDefsElement), unSVGDefsElement, castToSVGDefsElement, gTypeSVGDefsElement
+  , SVGDescElement(SVGDescElement), unSVGDescElement, castToSVGDescElement, gTypeSVGDescElement
+  , SVGDocument(SVGDocument), unSVGDocument, castToSVGDocument, gTypeSVGDocument
+  , SVGElement(SVGElement), unSVGElement, IsSVGElement, toSVGElement, castToSVGElement, gTypeSVGElement
+  , SVGEllipseElement(SVGEllipseElement), unSVGEllipseElement, castToSVGEllipseElement, gTypeSVGEllipseElement
+  , SVGExternalResourcesRequired(SVGExternalResourcesRequired), unSVGExternalResourcesRequired, castToSVGExternalResourcesRequired, gTypeSVGExternalResourcesRequired
+  , SVGFEBlendElement(SVGFEBlendElement), unSVGFEBlendElement, castToSVGFEBlendElement, gTypeSVGFEBlendElement
+  , SVGFEColorMatrixElement(SVGFEColorMatrixElement), unSVGFEColorMatrixElement, castToSVGFEColorMatrixElement, gTypeSVGFEColorMatrixElement
+  , SVGFEComponentTransferElement(SVGFEComponentTransferElement), unSVGFEComponentTransferElement, castToSVGFEComponentTransferElement, gTypeSVGFEComponentTransferElement
+  , SVGFECompositeElement(SVGFECompositeElement), unSVGFECompositeElement, castToSVGFECompositeElement, gTypeSVGFECompositeElement
+  , SVGFEConvolveMatrixElement(SVGFEConvolveMatrixElement), unSVGFEConvolveMatrixElement, castToSVGFEConvolveMatrixElement, gTypeSVGFEConvolveMatrixElement
+  , SVGFEDiffuseLightingElement(SVGFEDiffuseLightingElement), unSVGFEDiffuseLightingElement, castToSVGFEDiffuseLightingElement, gTypeSVGFEDiffuseLightingElement
+  , SVGFEDisplacementMapElement(SVGFEDisplacementMapElement), unSVGFEDisplacementMapElement, castToSVGFEDisplacementMapElement, gTypeSVGFEDisplacementMapElement
+  , SVGFEDistantLightElement(SVGFEDistantLightElement), unSVGFEDistantLightElement, castToSVGFEDistantLightElement, gTypeSVGFEDistantLightElement
+  , SVGFEDropShadowElement(SVGFEDropShadowElement), unSVGFEDropShadowElement, castToSVGFEDropShadowElement, gTypeSVGFEDropShadowElement
+  , SVGFEFloodElement(SVGFEFloodElement), unSVGFEFloodElement, castToSVGFEFloodElement, gTypeSVGFEFloodElement
+  , SVGFEFuncAElement(SVGFEFuncAElement), unSVGFEFuncAElement, castToSVGFEFuncAElement, gTypeSVGFEFuncAElement
+  , SVGFEFuncBElement(SVGFEFuncBElement), unSVGFEFuncBElement, castToSVGFEFuncBElement, gTypeSVGFEFuncBElement
+  , SVGFEFuncGElement(SVGFEFuncGElement), unSVGFEFuncGElement, castToSVGFEFuncGElement, gTypeSVGFEFuncGElement
+  , SVGFEFuncRElement(SVGFEFuncRElement), unSVGFEFuncRElement, castToSVGFEFuncRElement, gTypeSVGFEFuncRElement
+  , SVGFEGaussianBlurElement(SVGFEGaussianBlurElement), unSVGFEGaussianBlurElement, castToSVGFEGaussianBlurElement, gTypeSVGFEGaussianBlurElement
+  , SVGFEImageElement(SVGFEImageElement), unSVGFEImageElement, castToSVGFEImageElement, gTypeSVGFEImageElement
+  , SVGFEMergeElement(SVGFEMergeElement), unSVGFEMergeElement, castToSVGFEMergeElement, gTypeSVGFEMergeElement
+  , SVGFEMergeNodeElement(SVGFEMergeNodeElement), unSVGFEMergeNodeElement, castToSVGFEMergeNodeElement, gTypeSVGFEMergeNodeElement
+  , SVGFEMorphologyElement(SVGFEMorphologyElement), unSVGFEMorphologyElement, castToSVGFEMorphologyElement, gTypeSVGFEMorphologyElement
+  , SVGFEOffsetElement(SVGFEOffsetElement), unSVGFEOffsetElement, castToSVGFEOffsetElement, gTypeSVGFEOffsetElement
+  , SVGFEPointLightElement(SVGFEPointLightElement), unSVGFEPointLightElement, castToSVGFEPointLightElement, gTypeSVGFEPointLightElement
+  , SVGFESpecularLightingElement(SVGFESpecularLightingElement), unSVGFESpecularLightingElement, castToSVGFESpecularLightingElement, gTypeSVGFESpecularLightingElement
+  , SVGFESpotLightElement(SVGFESpotLightElement), unSVGFESpotLightElement, castToSVGFESpotLightElement, gTypeSVGFESpotLightElement
+  , SVGFETileElement(SVGFETileElement), unSVGFETileElement, castToSVGFETileElement, gTypeSVGFETileElement
+  , SVGFETurbulenceElement(SVGFETurbulenceElement), unSVGFETurbulenceElement, castToSVGFETurbulenceElement, gTypeSVGFETurbulenceElement
+  , SVGFilterElement(SVGFilterElement), unSVGFilterElement, castToSVGFilterElement, gTypeSVGFilterElement
+  , SVGFilterPrimitiveStandardAttributes(SVGFilterPrimitiveStandardAttributes), unSVGFilterPrimitiveStandardAttributes, castToSVGFilterPrimitiveStandardAttributes, gTypeSVGFilterPrimitiveStandardAttributes
+  , SVGFitToViewBox(SVGFitToViewBox), unSVGFitToViewBox, castToSVGFitToViewBox, gTypeSVGFitToViewBox
+  , SVGFontElement(SVGFontElement), unSVGFontElement, castToSVGFontElement, gTypeSVGFontElement
+  , SVGFontFaceElement(SVGFontFaceElement), unSVGFontFaceElement, castToSVGFontFaceElement, gTypeSVGFontFaceElement
+  , SVGFontFaceFormatElement(SVGFontFaceFormatElement), unSVGFontFaceFormatElement, castToSVGFontFaceFormatElement, gTypeSVGFontFaceFormatElement
+  , SVGFontFaceNameElement(SVGFontFaceNameElement), unSVGFontFaceNameElement, castToSVGFontFaceNameElement, gTypeSVGFontFaceNameElement
+  , SVGFontFaceSrcElement(SVGFontFaceSrcElement), unSVGFontFaceSrcElement, castToSVGFontFaceSrcElement, gTypeSVGFontFaceSrcElement
+  , SVGFontFaceUriElement(SVGFontFaceUriElement), unSVGFontFaceUriElement, castToSVGFontFaceUriElement, gTypeSVGFontFaceUriElement
+  , SVGForeignObjectElement(SVGForeignObjectElement), unSVGForeignObjectElement, castToSVGForeignObjectElement, gTypeSVGForeignObjectElement
+  , SVGGElement(SVGGElement), unSVGGElement, castToSVGGElement, gTypeSVGGElement
+  , SVGGlyphElement(SVGGlyphElement), unSVGGlyphElement, castToSVGGlyphElement, gTypeSVGGlyphElement
+  , SVGGlyphRefElement(SVGGlyphRefElement), unSVGGlyphRefElement, castToSVGGlyphRefElement, gTypeSVGGlyphRefElement
+  , SVGGradientElement(SVGGradientElement), unSVGGradientElement, IsSVGGradientElement, toSVGGradientElement, castToSVGGradientElement, gTypeSVGGradientElement
+  , SVGGraphicsElement(SVGGraphicsElement), unSVGGraphicsElement, IsSVGGraphicsElement, toSVGGraphicsElement, castToSVGGraphicsElement, gTypeSVGGraphicsElement
+  , SVGHKernElement(SVGHKernElement), unSVGHKernElement, castToSVGHKernElement, gTypeSVGHKernElement
+  , SVGImageElement(SVGImageElement), unSVGImageElement, castToSVGImageElement, gTypeSVGImageElement
+  , SVGLength(SVGLength), unSVGLength, castToSVGLength, gTypeSVGLength
+  , SVGLengthList(SVGLengthList), unSVGLengthList, castToSVGLengthList, gTypeSVGLengthList
+  , SVGLineElement(SVGLineElement), unSVGLineElement, castToSVGLineElement, gTypeSVGLineElement
+  , SVGLinearGradientElement(SVGLinearGradientElement), unSVGLinearGradientElement, castToSVGLinearGradientElement, gTypeSVGLinearGradientElement
+  , SVGMPathElement(SVGMPathElement), unSVGMPathElement, castToSVGMPathElement, gTypeSVGMPathElement
+  , SVGMarkerElement(SVGMarkerElement), unSVGMarkerElement, castToSVGMarkerElement, gTypeSVGMarkerElement
+  , SVGMaskElement(SVGMaskElement), unSVGMaskElement, castToSVGMaskElement, gTypeSVGMaskElement
+  , SVGMatrix(SVGMatrix), unSVGMatrix, castToSVGMatrix, gTypeSVGMatrix
+  , SVGMetadataElement(SVGMetadataElement), unSVGMetadataElement, castToSVGMetadataElement, gTypeSVGMetadataElement
+  , SVGMissingGlyphElement(SVGMissingGlyphElement), unSVGMissingGlyphElement, castToSVGMissingGlyphElement, gTypeSVGMissingGlyphElement
+  , SVGNumber(SVGNumber), unSVGNumber, castToSVGNumber, gTypeSVGNumber
+  , SVGNumberList(SVGNumberList), unSVGNumberList, castToSVGNumberList, gTypeSVGNumberList
+  , SVGPaint(SVGPaint), unSVGPaint, castToSVGPaint, gTypeSVGPaint
+  , SVGPathElement(SVGPathElement), unSVGPathElement, castToSVGPathElement, gTypeSVGPathElement
+  , SVGPathSeg(SVGPathSeg), unSVGPathSeg, IsSVGPathSeg, toSVGPathSeg, castToSVGPathSeg, gTypeSVGPathSeg
+  , SVGPathSegArcAbs(SVGPathSegArcAbs), unSVGPathSegArcAbs, castToSVGPathSegArcAbs, gTypeSVGPathSegArcAbs
+  , SVGPathSegArcRel(SVGPathSegArcRel), unSVGPathSegArcRel, castToSVGPathSegArcRel, gTypeSVGPathSegArcRel
+  , SVGPathSegClosePath(SVGPathSegClosePath), unSVGPathSegClosePath, castToSVGPathSegClosePath, gTypeSVGPathSegClosePath
+  , SVGPathSegCurvetoCubicAbs(SVGPathSegCurvetoCubicAbs), unSVGPathSegCurvetoCubicAbs, castToSVGPathSegCurvetoCubicAbs, gTypeSVGPathSegCurvetoCubicAbs
+  , SVGPathSegCurvetoCubicRel(SVGPathSegCurvetoCubicRel), unSVGPathSegCurvetoCubicRel, castToSVGPathSegCurvetoCubicRel, gTypeSVGPathSegCurvetoCubicRel
+  , SVGPathSegCurvetoCubicSmoothAbs(SVGPathSegCurvetoCubicSmoothAbs), unSVGPathSegCurvetoCubicSmoothAbs, castToSVGPathSegCurvetoCubicSmoothAbs, gTypeSVGPathSegCurvetoCubicSmoothAbs
+  , SVGPathSegCurvetoCubicSmoothRel(SVGPathSegCurvetoCubicSmoothRel), unSVGPathSegCurvetoCubicSmoothRel, castToSVGPathSegCurvetoCubicSmoothRel, gTypeSVGPathSegCurvetoCubicSmoothRel
+  , SVGPathSegCurvetoQuadraticAbs(SVGPathSegCurvetoQuadraticAbs), unSVGPathSegCurvetoQuadraticAbs, castToSVGPathSegCurvetoQuadraticAbs, gTypeSVGPathSegCurvetoQuadraticAbs
+  , SVGPathSegCurvetoQuadraticRel(SVGPathSegCurvetoQuadraticRel), unSVGPathSegCurvetoQuadraticRel, castToSVGPathSegCurvetoQuadraticRel, gTypeSVGPathSegCurvetoQuadraticRel
+  , SVGPathSegCurvetoQuadraticSmoothAbs(SVGPathSegCurvetoQuadraticSmoothAbs), unSVGPathSegCurvetoQuadraticSmoothAbs, castToSVGPathSegCurvetoQuadraticSmoothAbs, gTypeSVGPathSegCurvetoQuadraticSmoothAbs
+  , SVGPathSegCurvetoQuadraticSmoothRel(SVGPathSegCurvetoQuadraticSmoothRel), unSVGPathSegCurvetoQuadraticSmoothRel, castToSVGPathSegCurvetoQuadraticSmoothRel, gTypeSVGPathSegCurvetoQuadraticSmoothRel
+  , SVGPathSegLinetoAbs(SVGPathSegLinetoAbs), unSVGPathSegLinetoAbs, castToSVGPathSegLinetoAbs, gTypeSVGPathSegLinetoAbs
+  , SVGPathSegLinetoHorizontalAbs(SVGPathSegLinetoHorizontalAbs), unSVGPathSegLinetoHorizontalAbs, castToSVGPathSegLinetoHorizontalAbs, gTypeSVGPathSegLinetoHorizontalAbs
+  , SVGPathSegLinetoHorizontalRel(SVGPathSegLinetoHorizontalRel), unSVGPathSegLinetoHorizontalRel, castToSVGPathSegLinetoHorizontalRel, gTypeSVGPathSegLinetoHorizontalRel
+  , SVGPathSegLinetoRel(SVGPathSegLinetoRel), unSVGPathSegLinetoRel, castToSVGPathSegLinetoRel, gTypeSVGPathSegLinetoRel
+  , SVGPathSegLinetoVerticalAbs(SVGPathSegLinetoVerticalAbs), unSVGPathSegLinetoVerticalAbs, castToSVGPathSegLinetoVerticalAbs, gTypeSVGPathSegLinetoVerticalAbs
+  , SVGPathSegLinetoVerticalRel(SVGPathSegLinetoVerticalRel), unSVGPathSegLinetoVerticalRel, castToSVGPathSegLinetoVerticalRel, gTypeSVGPathSegLinetoVerticalRel
+  , SVGPathSegList(SVGPathSegList), unSVGPathSegList, castToSVGPathSegList, gTypeSVGPathSegList
+  , SVGPathSegMovetoAbs(SVGPathSegMovetoAbs), unSVGPathSegMovetoAbs, castToSVGPathSegMovetoAbs, gTypeSVGPathSegMovetoAbs
+  , SVGPathSegMovetoRel(SVGPathSegMovetoRel), unSVGPathSegMovetoRel, castToSVGPathSegMovetoRel, gTypeSVGPathSegMovetoRel
+  , SVGPatternElement(SVGPatternElement), unSVGPatternElement, castToSVGPatternElement, gTypeSVGPatternElement
+  , SVGPoint(SVGPoint), unSVGPoint, castToSVGPoint, gTypeSVGPoint
+  , SVGPointList(SVGPointList), unSVGPointList, castToSVGPointList, gTypeSVGPointList
+  , SVGPolygonElement(SVGPolygonElement), unSVGPolygonElement, castToSVGPolygonElement, gTypeSVGPolygonElement
+  , SVGPolylineElement(SVGPolylineElement), unSVGPolylineElement, castToSVGPolylineElement, gTypeSVGPolylineElement
+  , SVGPreserveAspectRatio(SVGPreserveAspectRatio), unSVGPreserveAspectRatio, castToSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio
+  , SVGRadialGradientElement(SVGRadialGradientElement), unSVGRadialGradientElement, castToSVGRadialGradientElement, gTypeSVGRadialGradientElement
+  , SVGRect(SVGRect), unSVGRect, castToSVGRect, gTypeSVGRect
+  , SVGRectElement(SVGRectElement), unSVGRectElement, castToSVGRectElement, gTypeSVGRectElement
+  , SVGRenderingIntent(SVGRenderingIntent), unSVGRenderingIntent, castToSVGRenderingIntent, gTypeSVGRenderingIntent
+  , SVGSVGElement(SVGSVGElement), unSVGSVGElement, castToSVGSVGElement, gTypeSVGSVGElement
+  , SVGScriptElement(SVGScriptElement), unSVGScriptElement, castToSVGScriptElement, gTypeSVGScriptElement
+  , SVGSetElement(SVGSetElement), unSVGSetElement, castToSVGSetElement, gTypeSVGSetElement
+  , SVGStopElement(SVGStopElement), unSVGStopElement, castToSVGStopElement, gTypeSVGStopElement
+  , SVGStringList(SVGStringList), unSVGStringList, castToSVGStringList, gTypeSVGStringList
+  , SVGStyleElement(SVGStyleElement), unSVGStyleElement, castToSVGStyleElement, gTypeSVGStyleElement
+  , SVGSwitchElement(SVGSwitchElement), unSVGSwitchElement, castToSVGSwitchElement, gTypeSVGSwitchElement
+  , SVGSymbolElement(SVGSymbolElement), unSVGSymbolElement, castToSVGSymbolElement, gTypeSVGSymbolElement
+  , SVGTRefElement(SVGTRefElement), unSVGTRefElement, castToSVGTRefElement, gTypeSVGTRefElement
+  , SVGTSpanElement(SVGTSpanElement), unSVGTSpanElement, castToSVGTSpanElement, gTypeSVGTSpanElement
+  , SVGTests(SVGTests), unSVGTests, castToSVGTests, gTypeSVGTests
+  , SVGTextContentElement(SVGTextContentElement), unSVGTextContentElement, IsSVGTextContentElement, toSVGTextContentElement, castToSVGTextContentElement, gTypeSVGTextContentElement
+  , SVGTextElement(SVGTextElement), unSVGTextElement, castToSVGTextElement, gTypeSVGTextElement
+  , SVGTextPathElement(SVGTextPathElement), unSVGTextPathElement, castToSVGTextPathElement, gTypeSVGTextPathElement
+  , SVGTextPositioningElement(SVGTextPositioningElement), unSVGTextPositioningElement, IsSVGTextPositioningElement, toSVGTextPositioningElement, castToSVGTextPositioningElement, gTypeSVGTextPositioningElement
+  , SVGTitleElement(SVGTitleElement), unSVGTitleElement, castToSVGTitleElement, gTypeSVGTitleElement
+  , SVGTransform(SVGTransform), unSVGTransform, castToSVGTransform, gTypeSVGTransform
+  , SVGTransformList(SVGTransformList), unSVGTransformList, castToSVGTransformList, gTypeSVGTransformList
+  , SVGURIReference(SVGURIReference), unSVGURIReference, castToSVGURIReference, gTypeSVGURIReference
+  , SVGUnitTypes(SVGUnitTypes), unSVGUnitTypes, castToSVGUnitTypes, gTypeSVGUnitTypes
+  , SVGUseElement(SVGUseElement), unSVGUseElement, castToSVGUseElement, gTypeSVGUseElement
+  , SVGVKernElement(SVGVKernElement), unSVGVKernElement, castToSVGVKernElement, gTypeSVGVKernElement
+  , SVGViewElement(SVGViewElement), unSVGViewElement, castToSVGViewElement, gTypeSVGViewElement
+  , SVGViewSpec(SVGViewSpec), unSVGViewSpec, castToSVGViewSpec, gTypeSVGViewSpec
+  , SVGZoomAndPan(SVGZoomAndPan), unSVGZoomAndPan, castToSVGZoomAndPan, gTypeSVGZoomAndPan
+  , SVGZoomEvent(SVGZoomEvent), unSVGZoomEvent, castToSVGZoomEvent, gTypeSVGZoomEvent
+  , Screen(Screen), unScreen, castToScreen, gTypeScreen
+  , ScriptProcessorNode(ScriptProcessorNode), unScriptProcessorNode, castToScriptProcessorNode, gTypeScriptProcessorNode
+  , ScriptProfile(ScriptProfile), unScriptProfile, castToScriptProfile, gTypeScriptProfile
+  , ScriptProfileNode(ScriptProfileNode), unScriptProfileNode, castToScriptProfileNode, gTypeScriptProfileNode
+  , SecurityPolicy(SecurityPolicy), unSecurityPolicy, castToSecurityPolicy, gTypeSecurityPolicy
+  , SecurityPolicyViolationEvent(SecurityPolicyViolationEvent), unSecurityPolicyViolationEvent, castToSecurityPolicyViolationEvent, gTypeSecurityPolicyViolationEvent
+  , Selection(Selection), unSelection, castToSelection, gTypeSelection
+  , SourceBuffer(SourceBuffer), unSourceBuffer, castToSourceBuffer, gTypeSourceBuffer
+  , SourceBufferList(SourceBufferList), unSourceBufferList, castToSourceBufferList, gTypeSourceBufferList
+  , SourceInfo(SourceInfo), unSourceInfo, castToSourceInfo, gTypeSourceInfo
+  , SpeechSynthesis(SpeechSynthesis), unSpeechSynthesis, castToSpeechSynthesis, gTypeSpeechSynthesis
+  , SpeechSynthesisEvent(SpeechSynthesisEvent), unSpeechSynthesisEvent, castToSpeechSynthesisEvent, gTypeSpeechSynthesisEvent
+  , SpeechSynthesisUtterance(SpeechSynthesisUtterance), unSpeechSynthesisUtterance, castToSpeechSynthesisUtterance, gTypeSpeechSynthesisUtterance
+  , SpeechSynthesisVoice(SpeechSynthesisVoice), unSpeechSynthesisVoice, castToSpeechSynthesisVoice, gTypeSpeechSynthesisVoice
+  , Storage(Storage), unStorage, castToStorage, gTypeStorage
+  , StorageEvent(StorageEvent), unStorageEvent, castToStorageEvent, gTypeStorageEvent
+  , StorageInfo(StorageInfo), unStorageInfo, castToStorageInfo, gTypeStorageInfo
+  , StorageQuota(StorageQuota), unStorageQuota, castToStorageQuota, gTypeStorageQuota
+  , StyleMedia(StyleMedia), unStyleMedia, castToStyleMedia, gTypeStyleMedia
+  , StyleSheet(StyleSheet), unStyleSheet, IsStyleSheet, toStyleSheet, castToStyleSheet, gTypeStyleSheet
+  , StyleSheetList(StyleSheetList), unStyleSheetList, castToStyleSheetList, gTypeStyleSheetList
+  , SubtleCrypto(SubtleCrypto), unSubtleCrypto, castToSubtleCrypto, gTypeSubtleCrypto
+  , Text(Text), unText, IsText, toText, castToText, gTypeText
+  , TextEvent(TextEvent), unTextEvent, castToTextEvent, gTypeTextEvent
+  , TextMetrics(TextMetrics), unTextMetrics, castToTextMetrics, gTypeTextMetrics
+  , TextTrack(TextTrack), unTextTrack, castToTextTrack, gTypeTextTrack
+  , TextTrackCue(TextTrackCue), unTextTrackCue, IsTextTrackCue, toTextTrackCue, castToTextTrackCue, gTypeTextTrackCue
+  , TextTrackCueList(TextTrackCueList), unTextTrackCueList, castToTextTrackCueList, gTypeTextTrackCueList
+  , TextTrackList(TextTrackList), unTextTrackList, castToTextTrackList, gTypeTextTrackList
+  , TimeRanges(TimeRanges), unTimeRanges, castToTimeRanges, gTypeTimeRanges
+  , Touch(Touch), unTouch, castToTouch, gTypeTouch
+  , TouchEvent(TouchEvent), unTouchEvent, castToTouchEvent, gTypeTouchEvent
+  , TouchList(TouchList), unTouchList, castToTouchList, gTypeTouchList
+  , TrackEvent(TrackEvent), unTrackEvent, castToTrackEvent, gTypeTrackEvent
+  , TransitionEvent(TransitionEvent), unTransitionEvent, castToTransitionEvent, gTypeTransitionEvent
+  , TreeWalker(TreeWalker), unTreeWalker, castToTreeWalker, gTypeTreeWalker
+  , TypeConversions(TypeConversions), unTypeConversions, castToTypeConversions, gTypeTypeConversions
+  , UIEvent(UIEvent), unUIEvent, IsUIEvent, toUIEvent, castToUIEvent, gTypeUIEvent
+  , UIRequestEvent(UIRequestEvent), unUIRequestEvent, castToUIRequestEvent, gTypeUIRequestEvent
+  , URL(URL), unURL, castToURL, gTypeURL
+  , URLUtils(URLUtils), unURLUtils, castToURLUtils, gTypeURLUtils
+  , UserMessageHandler(UserMessageHandler), unUserMessageHandler, castToUserMessageHandler, gTypeUserMessageHandler
+  , UserMessageHandlersNamespace(UserMessageHandlersNamespace), unUserMessageHandlersNamespace, castToUserMessageHandlersNamespace, gTypeUserMessageHandlersNamespace
+  , VTTCue(VTTCue), unVTTCue, castToVTTCue, gTypeVTTCue
+  , VTTRegion(VTTRegion), unVTTRegion, castToVTTRegion, gTypeVTTRegion
+  , VTTRegionList(VTTRegionList), unVTTRegionList, castToVTTRegionList, gTypeVTTRegionList
+  , ValidityState(ValidityState), unValidityState, castToValidityState, gTypeValidityState
+  , VideoPlaybackQuality(VideoPlaybackQuality), unVideoPlaybackQuality, castToVideoPlaybackQuality, gTypeVideoPlaybackQuality
+  , VideoStreamTrack(VideoStreamTrack), unVideoStreamTrack, castToVideoStreamTrack, gTypeVideoStreamTrack
+  , VideoTrack(VideoTrack), unVideoTrack, castToVideoTrack, gTypeVideoTrack
+  , VideoTrackList(VideoTrackList), unVideoTrackList, castToVideoTrackList, gTypeVideoTrackList
+  , WaveShaperNode(WaveShaperNode), unWaveShaperNode, castToWaveShaperNode, gTypeWaveShaperNode
+  , WebGL2RenderingContext(WebGL2RenderingContext), unWebGL2RenderingContext, castToWebGL2RenderingContext, gTypeWebGL2RenderingContext
+  , WebGLActiveInfo(WebGLActiveInfo), unWebGLActiveInfo, castToWebGLActiveInfo, gTypeWebGLActiveInfo
+  , WebGLBuffer(WebGLBuffer), unWebGLBuffer, castToWebGLBuffer, gTypeWebGLBuffer
+  , WebGLCompressedTextureATC(WebGLCompressedTextureATC), unWebGLCompressedTextureATC, castToWebGLCompressedTextureATC, gTypeWebGLCompressedTextureATC
+  , WebGLCompressedTexturePVRTC(WebGLCompressedTexturePVRTC), unWebGLCompressedTexturePVRTC, castToWebGLCompressedTexturePVRTC, gTypeWebGLCompressedTexturePVRTC
+  , WebGLCompressedTextureS3TC(WebGLCompressedTextureS3TC), unWebGLCompressedTextureS3TC, castToWebGLCompressedTextureS3TC, gTypeWebGLCompressedTextureS3TC
+  , WebGLContextAttributes(WebGLContextAttributes), unWebGLContextAttributes, castToWebGLContextAttributes, gTypeWebGLContextAttributes
+  , WebGLContextEvent(WebGLContextEvent), unWebGLContextEvent, castToWebGLContextEvent, gTypeWebGLContextEvent
+  , WebGLDebugRendererInfo(WebGLDebugRendererInfo), unWebGLDebugRendererInfo, castToWebGLDebugRendererInfo, gTypeWebGLDebugRendererInfo
+  , WebGLDebugShaders(WebGLDebugShaders), unWebGLDebugShaders, castToWebGLDebugShaders, gTypeWebGLDebugShaders
+  , WebGLDepthTexture(WebGLDepthTexture), unWebGLDepthTexture, castToWebGLDepthTexture, gTypeWebGLDepthTexture
+  , WebGLDrawBuffers(WebGLDrawBuffers), unWebGLDrawBuffers, castToWebGLDrawBuffers, gTypeWebGLDrawBuffers
+  , WebGLFramebuffer(WebGLFramebuffer), unWebGLFramebuffer, castToWebGLFramebuffer, gTypeWebGLFramebuffer
+  , WebGLLoseContext(WebGLLoseContext), unWebGLLoseContext, castToWebGLLoseContext, gTypeWebGLLoseContext
+  , WebGLProgram(WebGLProgram), unWebGLProgram, castToWebGLProgram, gTypeWebGLProgram
+  , WebGLQuery(WebGLQuery), unWebGLQuery, castToWebGLQuery, gTypeWebGLQuery
+  , WebGLRenderbuffer(WebGLRenderbuffer), unWebGLRenderbuffer, castToWebGLRenderbuffer, gTypeWebGLRenderbuffer
+  , WebGLRenderingContext(WebGLRenderingContext), unWebGLRenderingContext, castToWebGLRenderingContext, gTypeWebGLRenderingContext
+  , WebGLRenderingContextBase(WebGLRenderingContextBase), unWebGLRenderingContextBase, IsWebGLRenderingContextBase, toWebGLRenderingContextBase, castToWebGLRenderingContextBase, gTypeWebGLRenderingContextBase
+  , WebGLSampler(WebGLSampler), unWebGLSampler, castToWebGLSampler, gTypeWebGLSampler
+  , WebGLShader(WebGLShader), unWebGLShader, castToWebGLShader, gTypeWebGLShader
+  , WebGLShaderPrecisionFormat(WebGLShaderPrecisionFormat), unWebGLShaderPrecisionFormat, castToWebGLShaderPrecisionFormat, gTypeWebGLShaderPrecisionFormat
+  , WebGLSync(WebGLSync), unWebGLSync, castToWebGLSync, gTypeWebGLSync
+  , WebGLTexture(WebGLTexture), unWebGLTexture, castToWebGLTexture, gTypeWebGLTexture
+  , WebGLTransformFeedback(WebGLTransformFeedback), unWebGLTransformFeedback, castToWebGLTransformFeedback, gTypeWebGLTransformFeedback
+  , WebGLUniformLocation(WebGLUniformLocation), unWebGLUniformLocation, castToWebGLUniformLocation, gTypeWebGLUniformLocation
+  , WebGLVertexArrayObject(WebGLVertexArrayObject), unWebGLVertexArrayObject, castToWebGLVertexArrayObject, gTypeWebGLVertexArrayObject
+  , WebGLVertexArrayObjectOES(WebGLVertexArrayObjectOES), unWebGLVertexArrayObjectOES, castToWebGLVertexArrayObjectOES, gTypeWebGLVertexArrayObjectOES
+  , WebKitAnimationEvent(WebKitAnimationEvent), unWebKitAnimationEvent, castToWebKitAnimationEvent, gTypeWebKitAnimationEvent
+  , WebKitCSSFilterValue(WebKitCSSFilterValue), unWebKitCSSFilterValue, castToWebKitCSSFilterValue, gTypeWebKitCSSFilterValue
+  , WebKitCSSMatrix(WebKitCSSMatrix), unWebKitCSSMatrix, castToWebKitCSSMatrix, gTypeWebKitCSSMatrix
+  , WebKitCSSRegionRule(WebKitCSSRegionRule), unWebKitCSSRegionRule, castToWebKitCSSRegionRule, gTypeWebKitCSSRegionRule
+  , WebKitCSSTransformValue(WebKitCSSTransformValue), unWebKitCSSTransformValue, castToWebKitCSSTransformValue, gTypeWebKitCSSTransformValue
+  , WebKitCSSViewportRule(WebKitCSSViewportRule), unWebKitCSSViewportRule, castToWebKitCSSViewportRule, gTypeWebKitCSSViewportRule
+  , WebKitNamedFlow(WebKitNamedFlow), unWebKitNamedFlow, castToWebKitNamedFlow, gTypeWebKitNamedFlow
+  , WebKitNamespace(WebKitNamespace), unWebKitNamespace, castToWebKitNamespace, gTypeWebKitNamespace
+  , WebKitPlaybackTargetAvailabilityEvent(WebKitPlaybackTargetAvailabilityEvent), unWebKitPlaybackTargetAvailabilityEvent, castToWebKitPlaybackTargetAvailabilityEvent, gTypeWebKitPlaybackTargetAvailabilityEvent
+  , WebKitPoint(WebKitPoint), unWebKitPoint, castToWebKitPoint, gTypeWebKitPoint
+  , WebKitTransitionEvent(WebKitTransitionEvent), unWebKitTransitionEvent, castToWebKitTransitionEvent, gTypeWebKitTransitionEvent
+  , WebSocket(WebSocket), unWebSocket, castToWebSocket, gTypeWebSocket
+  , WheelEvent(WheelEvent), unWheelEvent, castToWheelEvent, gTypeWheelEvent
+  , Window(Window), unWindow, castToWindow, gTypeWindow
+  , WindowBase64(WindowBase64), unWindowBase64, castToWindowBase64, gTypeWindowBase64
+  , WindowTimers(WindowTimers), unWindowTimers, castToWindowTimers, gTypeWindowTimers
+  , Worker(Worker), unWorker, castToWorker, gTypeWorker
+  , WorkerGlobalScope(WorkerGlobalScope), unWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope, castToWorkerGlobalScope, gTypeWorkerGlobalScope
+  , WorkerLocation(WorkerLocation), unWorkerLocation, castToWorkerLocation, gTypeWorkerLocation
+  , WorkerNavigator(WorkerNavigator), unWorkerNavigator, castToWorkerNavigator, gTypeWorkerNavigator
+  , XMLHttpRequest(XMLHttpRequest), unXMLHttpRequest, castToXMLHttpRequest, gTypeXMLHttpRequest
+  , XMLHttpRequestProgressEvent(XMLHttpRequestProgressEvent), unXMLHttpRequestProgressEvent, castToXMLHttpRequestProgressEvent, gTypeXMLHttpRequestProgressEvent
+  , XMLHttpRequestUpload(XMLHttpRequestUpload), unXMLHttpRequestUpload, castToXMLHttpRequestUpload, gTypeXMLHttpRequestUpload
+  , XMLSerializer(XMLSerializer), unXMLSerializer, castToXMLSerializer, gTypeXMLSerializer
+  , XPathEvaluator(XPathEvaluator), unXPathEvaluator, castToXPathEvaluator, gTypeXPathEvaluator
+  , XPathExpression(XPathExpression), unXPathExpression, castToXPathExpression, gTypeXPathExpression
+  , XPathNSResolver(XPathNSResolver), unXPathNSResolver, castToXPathNSResolver, gTypeXPathNSResolver
+  , XPathResult(XPathResult), unXPathResult, castToXPathResult, gTypeXPathResult
+  , XSLTProcessor(XSLTProcessor), unXSLTProcessor, castToXSLTProcessor, gTypeXSLTProcessor
+-- AUTO GENERATION ENDS HERE
+  ) where
+
+import Control.Applicative ((<$>))
+import qualified Data.Text as T (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(..), nullRef, isNull, isUndefined, JSString(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import GHCJS.Nullable (Nullable(..), nullableToMaybe, maybeToNullable)
+import GHCJS.Foreign.Callback.Internal (Callback(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int8, Int16, Int32, Int64)
+import Data.Word (Word8, Word16, Word32, Word64)
+
+type DOM = IO
+type DOMContext = ()
+
+askDOM :: MonadDOM m => m DOMContext
+askDOM = return ()
+
+runDOM :: DOM a -> DOMContext -> IO a
+runDOM = const
+
+type MonadDOM = MonadIO
+
+liftDOM :: DOM a -> DOM a
+liftDOM = liftIO
+
+maybeJSNullOrUndefined :: JSVal -> Maybe JSVal
+maybeJSNullOrUndefined r | isNull r || isUndefined r = Nothing
+maybeJSNullOrUndefined r = Just r
+
+propagateGError = id
+
+newtype GType = GType JSVal
+
+foreign import javascript unsafe
+  "$1===$2" js_eq :: JSVal -> JSVal -> Bool
+
+foreign import javascript unsafe "h$isInstanceOf $1 $2"
+    typeInstanceIsA' :: JSVal -> JSVal -> Bool
+
+typeInstanceIsA o (GType t) = typeInstanceIsA' o t
+
+-- The usage of foreignPtrToPtr should be safe as the evaluation will only be
+-- forced if the object is used afterwards
+--
+castTo :: (IsGObject obj, IsGObject obj') => GType -> String
+                                                -> obj -> IO obj'
+castTo gtype objTypeName obj =
+  case toGObject obj of
+    gobj@(GObject objRef)
+      | typeInstanceIsA objRef gtype
+                  -> return $ unsafeCastGObject gobj
+      | otherwise -> error $ "Cannot cast object to " ++ objTypeName
+
+-- | 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 }
+
+class (ToJSVal o, FromJSVal o) => IsGObject o where
+  -- | Safe upcast.
+  toGObject         :: o -> GObject
+  -- | Unchecked downcast.
+  unsafeCastGObject :: GObject -> o
+
+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
+  toGObject = id
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = id
+  {-# INLINE unsafeCastGObject #-}
+
+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
+
+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 #-}
+
+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
+
+type ToDOMString s = ToJSString s
+type FromDOMString s = FromJSString s
+
+type IsDOMString s = (ToDOMString s, FromDOMString s)
+
+-- Callbacks
+newtype AudioBufferCallback = AudioBufferCallback (Callback (JSVal -> IO ()))
+instance PToJSVal AudioBufferCallback where pToJSVal (AudioBufferCallback (Callback r)) = r
+newtype DatabaseCallback = DatabaseCallback (Callback (JSVal -> IO ()))
+instance PToJSVal DatabaseCallback where pToJSVal (DatabaseCallback (Callback r)) = r
+newtype MediaQueryListListener = MediaQueryListListener (Callback (JSVal -> IO ()))
+instance PToJSVal MediaQueryListListener where pToJSVal (MediaQueryListListener (Callback r)) = r
+newtype MediaStreamTrackSourcesCallback = MediaStreamTrackSourcesCallback (Callback (JSVal -> IO ()))
+instance PToJSVal MediaStreamTrackSourcesCallback where pToJSVal (MediaStreamTrackSourcesCallback (Callback r)) = r
+newtype NavigatorUserMediaErrorCallback = NavigatorUserMediaErrorCallback (Callback (JSVal -> IO ()))
+instance PToJSVal NavigatorUserMediaErrorCallback where pToJSVal (NavigatorUserMediaErrorCallback (Callback r)) = r
+newtype NavigatorUserMediaSuccessCallback = NavigatorUserMediaSuccessCallback (Callback (JSVal -> IO ()))
+instance PToJSVal NavigatorUserMediaSuccessCallback where pToJSVal (NavigatorUserMediaSuccessCallback (Callback r)) = r
+newtype NotificationPermissionCallback permissions = NotificationPermissionCallback (Callback (JSVal -> IO ()))
+instance PToJSVal (NotificationPermissionCallback permissions) where pToJSVal (NotificationPermissionCallback (Callback r)) = r
+newtype PositionCallback = PositionCallback (Callback (JSVal -> IO ()))
+instance PToJSVal PositionCallback where pToJSVal (PositionCallback (Callback r)) = r
+newtype PositionErrorCallback = PositionErrorCallback (Callback (JSVal -> IO ()))
+instance PToJSVal PositionErrorCallback where pToJSVal (PositionErrorCallback (Callback r)) = r
+newtype RequestAnimationFrameCallback = RequestAnimationFrameCallback (Callback (JSVal -> IO ()))
+instance PToJSVal RequestAnimationFrameCallback where pToJSVal (RequestAnimationFrameCallback (Callback r)) = r
+newtype RTCPeerConnectionErrorCallback = RTCPeerConnectionErrorCallback (Callback (JSVal -> IO ()))
+instance PToJSVal RTCPeerConnectionErrorCallback where pToJSVal (RTCPeerConnectionErrorCallback (Callback r)) = r
+newtype RTCSessionDescriptionCallback = RTCSessionDescriptionCallback (Callback (JSVal -> IO ()))
+instance PToJSVal RTCSessionDescriptionCallback where pToJSVal (RTCSessionDescriptionCallback (Callback r)) = r
+newtype RTCStatsCallback = RTCStatsCallback (Callback (JSVal -> IO ()))
+instance PToJSVal RTCStatsCallback where pToJSVal (RTCStatsCallback (Callback r)) = r
+newtype SQLStatementCallback = SQLStatementCallback (Callback (JSVal -> JSVal -> IO ()))
+instance PToJSVal SQLStatementCallback where pToJSVal (SQLStatementCallback (Callback r)) = r
+newtype SQLStatementErrorCallback = SQLStatementErrorCallback (Callback (JSVal -> JSVal -> IO ()))
+instance PToJSVal SQLStatementErrorCallback where pToJSVal (SQLStatementErrorCallback (Callback r)) = r
+newtype SQLTransactionCallback = SQLTransactionCallback (Callback (JSVal -> IO ()))
+instance PToJSVal SQLTransactionCallback where pToJSVal (SQLTransactionCallback (Callback r)) = r
+newtype SQLTransactionErrorCallback = SQLTransactionErrorCallback (Callback (JSVal -> IO ()))
+instance PToJSVal SQLTransactionErrorCallback where pToJSVal (SQLTransactionErrorCallback (Callback r)) = r
+newtype StorageErrorCallback = StorageErrorCallback (Callback (JSVal -> IO ()))
+instance PToJSVal StorageErrorCallback where pToJSVal (StorageErrorCallback (Callback r)) = r
+newtype StorageQuotaCallback = StorageQuotaCallback (Callback (JSVal -> IO ()))
+instance PToJSVal StorageQuotaCallback where pToJSVal (StorageQuotaCallback (Callback r)) = r
+newtype StorageUsageCallback = StorageUsageCallback (Callback (JSVal -> JSVal -> IO ()))
+instance PToJSVal StorageUsageCallback where pToJSVal (StorageUsageCallback (Callback r)) = r
+newtype StringCallback s = StringCallback (Callback (JSVal -> IO ()))
+instance PToJSVal (StringCallback s) where pToJSVal (StringCallback (Callback r)) = r
+newtype VoidCallback = VoidCallback (Callback (IO ()))
+instance PToJSVal VoidCallback where pToJSVal (VoidCallback (Callback r)) = r
+
+-- Custom types
+newtype SerializedScriptValue = SerializedScriptValue { unSerializedScriptValue :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsSerializedScriptValue SerializedScriptValue
+instance IsGObject SerializedScriptValue where
+  toGObject = GObject . unSerializedScriptValue
+  unsafeCastGObject = SerializedScriptValue . unGObject
+-- TODO add more IsSerializedScriptValue instances
+
+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 #-}
+
+class IsGObject o => IsPositionOptions o
+toPositionOptions :: IsPositionOptions o => o -> PositionOptions
+toPositionOptions = unsafeCastGObject . toGObject
+
+instance IsPositionOptions PositionOptions
+instance IsGObject PositionOptions where
+  toGObject = GObject . unPositionOptions
+  unsafeCastGObject = PositionOptions . unGObject
+-- TODO add more IsPositionOptions instances
+
+newtype Dictionary = Dictionary { unDictionary :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsDictionary Dictionary
+instance IsGObject Dictionary where
+  toGObject = GObject . unDictionary
+  unsafeCastGObject = Dictionary . unGObject
+-- TODO add more IsDictionary instances
+
+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 = unsafeCastGObject . toGObject
+
+instance IsBlobPropertyBag BlobPropertyBag
+instance IsGObject BlobPropertyBag where
+  toGObject = GObject . unBlobPropertyBag
+  unsafeCastGObject = BlobPropertyBag . unGObject
+-- TODO add more IsBlobPropertyBag instances
+
+newtype MutationCallback = MutationCallback { unMutationCallback :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsMutationCallback MutationCallback
+instance IsGObject MutationCallback where
+  toGObject = GObject . unMutationCallback
+  unsafeCastGObject = MutationCallback . unGObject
+-- TODO add more IsMutationCallback instances
+
+newtype Promise = Promise { unPromise :: JSVal }
+
+instance Eq Promise where
+  (Promise a) == (Promise b) = js_eq a b
+
+instance PToJSVal Promise where
+  pToJSVal = unPromise
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Promise where
+  pFromJSVal = Promise
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Promise where
+  toJSVal = return . unPromise
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Promise where
+  fromJSVal = return . fmap Promise . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsPromise o
+toPromise :: IsPromise o => o -> Promise
+toPromise = unsafeCastGObject . toGObject
+
+instance IsPromise Promise
+instance IsGObject Promise where
+  toGObject = GObject . unPromise
+  unsafeCastGObject = Promise . unGObject
+-- TODO add more IsPromise instances
+
+castToPromise :: IsGObject obj => obj -> IO Promise
+castToPromise = castTo gTypePromise "Promise"
+
+foreign import javascript unsafe "window[\"Promise\"]" gTypePromise :: GType
+
+newtype ArrayBuffer = ArrayBuffer { unArrayBuffer :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsArrayBuffer ArrayBuffer
+instance IsGObject ArrayBuffer where
+  toGObject = GObject . unArrayBuffer
+  unsafeCastGObject = ArrayBuffer . unGObject
+
+castToArrayBuffer :: IsGObject obj => obj -> IO ArrayBuffer
+castToArrayBuffer = castTo gTypeArrayBuffer "ArrayBuffer"
+
+foreign import javascript unsafe "window[\"ArrayBuffer\"]" gTypeArrayBuffer :: GType
+
+newtype Float32Array = Float32Array { unFloat32Array :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsFloat32Array Float32Array
+instance IsGObject Float32Array where
+  toGObject = GObject . unFloat32Array
+  unsafeCastGObject = Float32Array . unGObject
+-- TODO add more IsFloat32Array instances
+
+castToFloat32Array :: IsGObject obj => obj -> IO Float32Array
+castToFloat32Array = castTo gTypeFloat32Array "Float32Array"
+
+foreign import javascript unsafe "window[\"Float32Array\"]" gTypeFloat32Array :: GType
+
+newtype Float64Array = Float64Array { unFloat64Array :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsFloat64Array Float64Array
+instance IsGObject Float64Array where
+  toGObject = GObject . unFloat64Array
+  unsafeCastGObject = Float64Array . unGObject
+-- TODO add more IsFloat64Array instances
+
+castToFloat64Array :: IsGObject obj => obj -> IO Float64Array
+castToFloat64Array = castTo gTypeFloat64Array "Float64Array"
+
+foreign import javascript unsafe "window[\"Float64Array\"]" gTypeFloat64Array :: GType
+
+newtype Uint8Array = Uint8Array { unUint8Array :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsUint8Array Uint8Array
+instance IsGObject Uint8Array where
+  toGObject = GObject . unUint8Array
+  unsafeCastGObject = Uint8Array . unGObject
+-- TODO add more IsUint8Array instances
+
+castToUint8Array :: IsGObject obj => obj -> IO Uint8Array
+castToUint8Array = castTo gTypeUint8Array "Uint8Array"
+
+foreign import javascript unsafe "window[\"Uint8Array\"]" gTypeUint8Array :: GType
+
+newtype Uint8ClampedArray = Uint8ClampedArray { unUint8ClampedArray :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsUint8ClampedArray Uint8ClampedArray
+instance IsGObject Uint8ClampedArray where
+  toGObject = GObject . unUint8ClampedArray
+  unsafeCastGObject = Uint8ClampedArray . unGObject
+-- TODO add more IsUint8ClampedArray instances
+
+castToUint8ClampedArray :: IsGObject obj => obj -> IO Uint8ClampedArray
+castToUint8ClampedArray = castTo gTypeUint8ClampedArray "Uint8ClampedArray"
+
+foreign import javascript unsafe "window[\"Uint8ClampedArray\"]" gTypeUint8ClampedArray :: GType
+
+newtype Uint16Array = Uint16Array { unUint16Array :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsUint16Array Uint16Array
+instance IsGObject Uint16Array where
+  toGObject = GObject . unUint16Array
+  unsafeCastGObject = Uint16Array . unGObject
+-- TODO add more IsUint16Array instances
+
+castToUint16Array :: IsGObject obj => obj -> IO Uint16Array
+castToUint16Array = castTo gTypeUint16Array "Uint16Array"
+
+foreign import javascript unsafe "window[\"Uint16Array\"]" gTypeUint16Array :: GType
+
+newtype Uint32Array = Uint32Array { unUint32Array :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsUint32Array Uint32Array
+instance IsGObject Uint32Array where
+  toGObject = GObject . unUint32Array
+  unsafeCastGObject = Uint32Array . unGObject
+-- TODO add more IsUint32Array instances
+
+castToUint32Array :: IsGObject obj => obj -> IO Uint32Array
+castToUint32Array = castTo gTypeUint32Array "Uint32Array"
+
+foreign import javascript unsafe "window[\"Uint32Array\"]" gTypeUint32Array :: GType
+
+newtype Int8Array = Int8Array { unInt8Array :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsInt8Array Int8Array
+instance IsGObject Int8Array where
+  toGObject = GObject . unInt8Array
+  unsafeCastGObject = Int8Array . unGObject
+-- TODO add more IsInt8Array instances
+
+castToInt8Array :: IsGObject obj => obj -> IO Int8Array
+castToInt8Array = castTo gTypeInt8Array "Int8Array"
+
+foreign import javascript unsafe "window[\"Int8Array\"]" gTypeInt8Array :: GType
+
+newtype Int16Array = Int16Array { unInt16Array :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsInt16Array Int16Array
+instance IsGObject Int16Array where
+  toGObject = GObject . unInt16Array
+  unsafeCastGObject = Int16Array . unGObject
+-- TODO add more IsInt16Array instances
+
+castToInt16Array :: IsGObject obj => obj -> IO Int16Array
+castToInt16Array = castTo gTypeInt16Array "Int16Array"
+
+foreign import javascript unsafe "window[\"Int16Array\"]" gTypeInt16Array :: GType
+
+newtype Int32Array = Int32Array { unInt32Array :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsInt32Array Int32Array
+instance IsGObject Int32Array where
+  toGObject = GObject . unInt32Array
+  unsafeCastGObject = Int32Array . unGObject
+-- TODO add more IsInt32Array instances
+
+castToInt32Array :: IsGObject obj => obj -> IO Int32Array
+castToInt32Array = castTo gTypeInt32Array "Int32Array"
+
+foreign import javascript unsafe "window[\"Int32Array\"]" gTypeInt32Array :: GType
+
+newtype ObjectArray = ObjectArray { unObjectArray :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsObjectArray ObjectArray
+instance IsGObject ObjectArray where
+  toGObject = GObject . unObjectArray
+  unsafeCastGObject = ObjectArray . unGObject
+-- TODO add more IsObjectArray instances
+
+newtype ArrayBufferView = ArrayBufferView { unArrayBufferView :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsArrayBufferView ArrayBufferView
+instance IsGObject ArrayBufferView where
+  toGObject = GObject . unArrayBufferView
+  unsafeCastGObject = ArrayBufferView . unGObject
+-- TODO add more IsArrayBufferView instances
+
+newtype Array = Array { unArray :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsArray Array
+instance IsGObject Array where
+  toGObject = GObject . unArray
+  unsafeCastGObject = Array . unGObject
+-- TODO add more IsArray instances
+
+castToArray :: IsGObject obj => obj -> IO Array
+castToArray = castTo gTypeArray "Array"
+
+foreign import javascript unsafe "window[\"Array\"]" gTypeArray :: GType
+
+newtype Date = Date { unDate :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsDate Date
+instance IsGObject Date where
+  toGObject = GObject . unDate
+  unsafeCastGObject = Date . unGObject
+-- TODO add more IsDate instances
+
+castToDate :: IsGObject obj => obj -> IO Date
+castToDate = castTo gTypeDate "Date"
+
+foreign import javascript unsafe "window[\"Date\"]" gTypeDate :: GType
+
+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 #-}
+
+class IsGObject o => IsAcceleration o
+toAcceleration :: IsAcceleration o => o -> Acceleration
+toAcceleration = unsafeCastGObject . toGObject
+
+instance IsAcceleration Acceleration
+instance IsGObject Acceleration where
+  toGObject = GObject . unAcceleration
+  unsafeCastGObject = Acceleration . unGObject
+-- TODO add more IsAcceleration instances
+
+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 #-}
+
+class IsGObject o => IsRotationRate o
+toRotationRate :: IsRotationRate o => o -> RotationRate
+toRotationRate = unsafeCastGObject . toGObject
+
+instance IsRotationRate RotationRate
+instance IsGObject RotationRate where
+  toGObject = GObject . unRotationRate
+  unsafeCastGObject = RotationRate . unGObject
+-- TODO add more IsRotationRate instances
+
+newtype Algorithm = Algorithm { unAlgorithm :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsAlgorithm Algorithm
+instance IsGObject Algorithm where
+  toGObject = GObject . unAlgorithm
+  unsafeCastGObject = Algorithm . unGObject
+-- TODO add more IsAlgorithm instances
+
+newtype CryptoOperationData = CryptoOperationData { unCryptoOperationData :: JSVal }
+
+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 = unsafeCastGObject . toGObject
+
+instance IsCryptoOperationData CryptoOperationData
+instance IsGObject CryptoOperationData where
+  toGObject = GObject . unCryptoOperationData
+  unsafeCastGObject = CryptoOperationData . unGObject
+instance IsCryptoOperationData ArrayBuffer
+instance IsCryptoOperationData ArrayBufferView
+
+newtype CanvasStyle = CanvasStyle { unCanvasStyle :: JSVal }
+
+instance Eq CanvasStyle where
+  (CanvasStyle a) == (CanvasStyle b) = js_eq a b
+
+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 IsGObject o => IsCanvasStyle o
+toCanvasStyle :: IsCanvasStyle o => o -> CanvasStyle
+toCanvasStyle = unsafeCastGObject . toGObject
+
+instance IsCanvasStyle CanvasStyle
+instance IsGObject CanvasStyle where
+  toGObject = GObject . unCanvasStyle
+  unsafeCastGObject = CanvasStyle . unGObject
+instance IsCanvasStyle CanvasGradient
+instance IsCanvasStyle CanvasPattern
+
+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 #-}
+
+class IsGObject o => IsDOMException o
+toDOMException :: IsDOMException o => o -> DOMException
+toDOMException = unsafeCastGObject . toGObject
+
+instance IsDOMException DOMException
+instance IsGObject DOMException where
+  toGObject = GObject . unDOMException
+  unsafeCastGObject = DOMException . unGObject
+
+type GLenum = Word32
+type GLboolean = Bool
+type GLbitfield = Word32
+type GLbyte = Int8
+type GLshort = Int16
+type GLint = Int32
+type GLint64 = Int64
+type GLsizei = Int32
+type GLintptr = Int64
+type GLsizeiptr = Int64
+type GLubyte = Word8
+type GLushort = Word16
+type GLuint = Word32
+type GLuint64 = Word64
+type GLfloat = Double
+type GLclampf = Double
+
+-- AUTO GENERATION STARTS HERE
+-- The remainder of this file is generated from IDL files using domconv-webkit-jsffi
+-- | 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
+  toGObject = GObject . unANGLEInstancedArrays
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ANGLEInstancedArrays . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToANGLEInstancedArrays :: IsGObject obj => obj -> IO ANGLEInstancedArrays
+castToANGLEInstancedArrays = castTo gTypeANGLEInstancedArrays "ANGLEInstancedArrays"
+
+foreign import javascript unsafe "window[\"ANGLEInstancedArrays\"]" gTypeANGLEInstancedArrays :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AbstractView".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView Mozilla AbstractView documentation>
+newtype AbstractView = AbstractView { unAbstractView :: JSVal }
+
+instance Eq (AbstractView) where
+  (AbstractView a) == (AbstractView b) = js_eq a b
+
+instance PToJSVal AbstractView where
+  pToJSVal = unAbstractView
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AbstractView where
+  pFromJSVal = AbstractView
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AbstractView where
+  toJSVal = return . unAbstractView
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AbstractView where
+  fromJSVal = return . fmap AbstractView . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject AbstractView where
+  toGObject = GObject . unAbstractView
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AbstractView . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAbstractView :: IsGObject obj => obj -> IO AbstractView
+castToAbstractView = castTo gTypeAbstractView "AbstractView"
+
+foreign import javascript unsafe "window[\"AbstractView\"]" gTypeAbstractView :: 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 #-}
+
+instance IsGObject AbstractWorker where
+  toGObject = GObject . unAbstractWorker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AbstractWorker . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAbstractWorker :: IsGObject obj => obj -> IO AbstractWorker
+castToAbstractWorker = castTo gTypeAbstractWorker "AbstractWorker"
+
+foreign import javascript unsafe "window[\"AbstractWorker\"]" gTypeAbstractWorker :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AllAudioCapabilities".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.MediaStreamCapabilities"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities Mozilla AllAudioCapabilities documentation>
+newtype AllAudioCapabilities = AllAudioCapabilities { unAllAudioCapabilities :: JSVal }
+
+instance Eq (AllAudioCapabilities) where
+  (AllAudioCapabilities a) == (AllAudioCapabilities b) = js_eq a b
+
+instance PToJSVal AllAudioCapabilities where
+  pToJSVal = unAllAudioCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AllAudioCapabilities where
+  pFromJSVal = AllAudioCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AllAudioCapabilities where
+  toJSVal = return . unAllAudioCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AllAudioCapabilities where
+  fromJSVal = return . fmap AllAudioCapabilities . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsMediaStreamCapabilities AllAudioCapabilities
+instance IsGObject AllAudioCapabilities where
+  toGObject = GObject . unAllAudioCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AllAudioCapabilities . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAllAudioCapabilities :: IsGObject obj => obj -> IO AllAudioCapabilities
+castToAllAudioCapabilities = castTo gTypeAllAudioCapabilities "AllAudioCapabilities"
+
+foreign import javascript unsafe "window[\"AllAudioCapabilities\"]" gTypeAllAudioCapabilities :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AllVideoCapabilities".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.MediaStreamCapabilities"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities Mozilla AllVideoCapabilities documentation>
+newtype AllVideoCapabilities = AllVideoCapabilities { unAllVideoCapabilities :: JSVal }
+
+instance Eq (AllVideoCapabilities) where
+  (AllVideoCapabilities a) == (AllVideoCapabilities b) = js_eq a b
+
+instance PToJSVal AllVideoCapabilities where
+  pToJSVal = unAllVideoCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AllVideoCapabilities where
+  pFromJSVal = AllVideoCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AllVideoCapabilities where
+  toJSVal = return . unAllVideoCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AllVideoCapabilities where
+  fromJSVal = return . fmap AllVideoCapabilities . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsMediaStreamCapabilities AllVideoCapabilities
+instance IsGObject AllVideoCapabilities where
+  toGObject = GObject . unAllVideoCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AllVideoCapabilities . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAllVideoCapabilities :: IsGObject obj => obj -> IO AllVideoCapabilities
+castToAllVideoCapabilities = castTo gTypeAllVideoCapabilities "AllVideoCapabilities"
+
+foreign import javascript unsafe "window[\"AllVideoCapabilities\"]" gTypeAllVideoCapabilities :: 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
+  toGObject = GObject . unAnalyserNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AnalyserNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAnalyserNode :: IsGObject obj => obj -> IO AnalyserNode
+castToAnalyserNode = castTo gTypeAnalyserNode "AnalyserNode"
+
+foreign import javascript unsafe "window[\"AnalyserNode\"]" gTypeAnalyserNode :: 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
+  toGObject = GObject . unAnimationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AnimationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAnimationEvent :: IsGObject obj => obj -> IO AnimationEvent
+castToAnimationEvent = castTo gTypeAnimationEvent "AnimationEvent"
+
+foreign import javascript unsafe "window[\"AnimationEvent\"]" gTypeAnimationEvent :: 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
+  toGObject = GObject . unApplicationCache
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ApplicationCache . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToApplicationCache :: IsGObject obj => obj -> IO ApplicationCache
+castToApplicationCache = castTo gTypeApplicationCache "ApplicationCache"
+
+foreign import javascript unsafe "window[\"ApplicationCache\"]" gTypeApplicationCache :: 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
+  toGObject = GObject . unAttr
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Attr . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAttr :: IsGObject obj => obj -> IO Attr
+castToAttr = castTo gTypeAttr "Attr"
+
+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
+  toGObject = GObject . unAudioBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioBuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioBuffer :: IsGObject obj => obj -> IO AudioBuffer
+castToAudioBuffer = castTo gTypeAudioBuffer "AudioBuffer"
+
+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
+  toGObject = GObject . unAudioBufferSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioBufferSourceNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioBufferSourceNode :: IsGObject obj => obj -> IO AudioBufferSourceNode
+castToAudioBufferSourceNode = castTo gTypeAudioBufferSourceNode "AudioBufferSourceNode"
+
+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 => IsAudioContext o
+toAudioContext :: IsAudioContext o => o -> AudioContext
+toAudioContext = unsafeCastGObject . toGObject
+
+instance IsAudioContext AudioContext
+instance IsEventTarget AudioContext
+instance IsGObject AudioContext where
+  toGObject = GObject . unAudioContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioContext :: IsGObject obj => obj -> IO AudioContext
+castToAudioContext = castTo gTypeAudioContext "AudioContext"
+
+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
+  toGObject = GObject . unAudioDestinationNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioDestinationNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioDestinationNode :: IsGObject obj => obj -> IO AudioDestinationNode
+castToAudioDestinationNode = castTo gTypeAudioDestinationNode "AudioDestinationNode"
+
+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
+  toGObject = GObject . unAudioListener
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioListener . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioListener :: IsGObject obj => obj -> IO AudioListener
+castToAudioListener = castTo gTypeAudioListener "AudioListener"
+
+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 => IsAudioNode o
+toAudioNode :: IsAudioNode o => o -> AudioNode
+toAudioNode = unsafeCastGObject . toGObject
+
+instance IsAudioNode AudioNode
+instance IsEventTarget AudioNode
+instance IsGObject AudioNode where
+  toGObject = GObject . unAudioNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioNode :: IsGObject obj => obj -> IO AudioNode
+castToAudioNode = castTo gTypeAudioNode "AudioNode"
+
+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
+  toGObject = GObject . unAudioParam
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioParam . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioParam :: IsGObject obj => obj -> IO AudioParam
+castToAudioParam = castTo gTypeAudioParam "AudioParam"
+
+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
+  toGObject = GObject . unAudioProcessingEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioProcessingEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioProcessingEvent :: IsGObject obj => obj -> IO AudioProcessingEvent
+castToAudioProcessingEvent = castTo gTypeAudioProcessingEvent "AudioProcessingEvent"
+
+foreign import javascript unsafe "window[\"AudioProcessingEvent\"]" gTypeAudioProcessingEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioStreamTrack".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.MediaStreamTrack"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioStreamTrack Mozilla AudioStreamTrack documentation>
+newtype AudioStreamTrack = AudioStreamTrack { unAudioStreamTrack :: JSVal }
+
+instance Eq (AudioStreamTrack) where
+  (AudioStreamTrack a) == (AudioStreamTrack b) = js_eq a b
+
+instance PToJSVal AudioStreamTrack where
+  pToJSVal = unAudioStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioStreamTrack where
+  pFromJSVal = AudioStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioStreamTrack where
+  toJSVal = return . unAudioStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioStreamTrack where
+  fromJSVal = return . fmap AudioStreamTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsMediaStreamTrack AudioStreamTrack
+instance IsEventTarget AudioStreamTrack
+instance IsGObject AudioStreamTrack where
+  toGObject = GObject . unAudioStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioStreamTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioStreamTrack :: IsGObject obj => obj -> IO AudioStreamTrack
+castToAudioStreamTrack = castTo gTypeAudioStreamTrack "AudioStreamTrack"
+
+foreign import javascript unsafe "window[\"AudioStreamTrack\"]" gTypeAudioStreamTrack :: 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
+  toGObject = GObject . unAudioTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioTrack :: IsGObject obj => obj -> IO AudioTrack
+castToAudioTrack = castTo gTypeAudioTrack "AudioTrack"
+
+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
+  toGObject = GObject . unAudioTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioTrackList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioTrackList :: IsGObject obj => obj -> IO AudioTrackList
+castToAudioTrackList = castTo gTypeAudioTrackList "AudioTrackList"
+
+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
+  toGObject = GObject . unAutocompleteErrorEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AutocompleteErrorEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAutocompleteErrorEvent :: IsGObject obj => obj -> IO AutocompleteErrorEvent
+castToAutocompleteErrorEvent = castTo gTypeAutocompleteErrorEvent "AutocompleteErrorEvent"
+
+foreign import javascript unsafe "window[\"AutocompleteErrorEvent\"]" gTypeAutocompleteErrorEvent :: 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
+  toGObject = GObject . unBarProp
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BarProp . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBarProp :: IsGObject obj => obj -> IO BarProp
+castToBarProp = castTo gTypeBarProp "BarProp"
+
+foreign import javascript unsafe "window[\"BarProp\"]" gTypeBarProp :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.BatteryManager".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager Mozilla BatteryManager documentation>
+newtype BatteryManager = BatteryManager { unBatteryManager :: JSVal }
+
+instance Eq (BatteryManager) where
+  (BatteryManager a) == (BatteryManager b) = js_eq a b
+
+instance PToJSVal BatteryManager where
+  pToJSVal = unBatteryManager
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BatteryManager where
+  pFromJSVal = BatteryManager
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BatteryManager where
+  toJSVal = return . unBatteryManager
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BatteryManager where
+  fromJSVal = return . fmap BatteryManager . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget BatteryManager
+instance IsGObject BatteryManager where
+  toGObject = GObject . unBatteryManager
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BatteryManager . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBatteryManager :: IsGObject obj => obj -> IO BatteryManager
+castToBatteryManager = castTo gTypeBatteryManager "BatteryManager"
+
+foreign import javascript unsafe "window[\"BatteryManager\"]" gTypeBatteryManager :: 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
+  toGObject = GObject . unBeforeLoadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BeforeLoadEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBeforeLoadEvent :: IsGObject obj => obj -> IO BeforeLoadEvent
+castToBeforeLoadEvent = castTo gTypeBeforeLoadEvent "BeforeLoadEvent"
+
+foreign import javascript unsafe "window[\"BeforeLoadEvent\"]" gTypeBeforeLoadEvent :: 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
+  toGObject = GObject . unBeforeUnloadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BeforeUnloadEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBeforeUnloadEvent :: IsGObject obj => obj -> IO BeforeUnloadEvent
+castToBeforeUnloadEvent = castTo gTypeBeforeUnloadEvent "BeforeUnloadEvent"
+
+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
+  toGObject = GObject . unBiquadFilterNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BiquadFilterNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBiquadFilterNode :: IsGObject obj => obj -> IO BiquadFilterNode
+castToBiquadFilterNode = castTo gTypeBiquadFilterNode "BiquadFilterNode"
+
+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 = unsafeCastGObject . toGObject
+
+instance IsBlob Blob
+instance IsGObject Blob where
+  toGObject = GObject . unBlob
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Blob . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBlob :: IsGObject obj => obj -> IO Blob
+castToBlob = castTo gTypeBlob "Blob"
+
+foreign import javascript unsafe "window[\"Blob\"]" gTypeBlob :: 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"
+--
+-- <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 IsGObject CDATASection where
+  toGObject = GObject . unCDATASection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CDATASection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCDATASection :: IsGObject obj => obj -> IO CDATASection
+castToCDATASection = castTo gTypeCDATASection "CDATASection"
+
+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
+  toGObject = GObject . unCSS
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSS . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSS :: IsGObject obj => obj -> IO CSS
+castToCSS = castTo gTypeCSS "CSS"
+
+foreign import javascript unsafe "window[\"CSS\"]" gTypeCSS :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSCharsetRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule Mozilla CSSCharsetRule documentation>
+newtype CSSCharsetRule = CSSCharsetRule { unCSSCharsetRule :: JSVal }
+
+instance Eq (CSSCharsetRule) where
+  (CSSCharsetRule a) == (CSSCharsetRule b) = js_eq a b
+
+instance PToJSVal CSSCharsetRule where
+  pToJSVal = unCSSCharsetRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSCharsetRule where
+  pFromJSVal = CSSCharsetRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSCharsetRule where
+  toJSVal = return . unCSSCharsetRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSCharsetRule where
+  fromJSVal = return . fmap CSSCharsetRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSCharsetRule
+instance IsGObject CSSCharsetRule where
+  toGObject = GObject . unCSSCharsetRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSCharsetRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSCharsetRule :: IsGObject obj => obj -> IO CSSCharsetRule
+castToCSSCharsetRule = castTo gTypeCSSCharsetRule "CSSCharsetRule"
+
+foreign import javascript unsafe "window[\"CSSCharsetRule\"]" gTypeCSSCharsetRule :: 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
+  toGObject = GObject . unCSSFontFaceLoadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSFontFaceLoadEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSFontFaceLoadEvent :: IsGObject obj => obj -> IO CSSFontFaceLoadEvent
+castToCSSFontFaceLoadEvent = castTo gTypeCSSFontFaceLoadEvent "CSSFontFaceLoadEvent"
+
+foreign import javascript unsafe "window[\"CSSFontFaceLoadEvent\"]" gTypeCSSFontFaceLoadEvent :: 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
+  toGObject = GObject . unCSSFontFaceRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSFontFaceRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSFontFaceRule :: IsGObject obj => obj -> IO CSSFontFaceRule
+castToCSSFontFaceRule = castTo gTypeCSSFontFaceRule "CSSFontFaceRule"
+
+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
+  toGObject = GObject . unCSSImportRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSImportRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSImportRule :: IsGObject obj => obj -> IO CSSImportRule
+castToCSSImportRule = castTo gTypeCSSImportRule "CSSImportRule"
+
+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
+  toGObject = GObject . unCSSKeyframeRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSKeyframeRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSKeyframeRule :: IsGObject obj => obj -> IO CSSKeyframeRule
+castToCSSKeyframeRule = castTo gTypeCSSKeyframeRule "CSSKeyframeRule"
+
+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
+  toGObject = GObject . unCSSKeyframesRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSKeyframesRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSKeyframesRule :: IsGObject obj => obj -> IO CSSKeyframesRule
+castToCSSKeyframesRule = castTo gTypeCSSKeyframesRule "CSSKeyframesRule"
+
+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
+  toGObject = GObject . unCSSMediaRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSMediaRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSMediaRule :: IsGObject obj => obj -> IO CSSMediaRule
+castToCSSMediaRule = castTo gTypeCSSMediaRule "CSSMediaRule"
+
+foreign import javascript unsafe "window[\"CSSMediaRule\"]" gTypeCSSMediaRule :: 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
+  toGObject = GObject . unCSSPageRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSPageRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSPageRule :: IsGObject obj => obj -> IO CSSPageRule
+castToCSSPageRule = castTo gTypeCSSPageRule "CSSPageRule"
+
+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
+  toGObject = GObject . unCSSPrimitiveValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSPrimitiveValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSPrimitiveValue :: IsGObject obj => obj -> IO CSSPrimitiveValue
+castToCSSPrimitiveValue = castTo gTypeCSSPrimitiveValue "CSSPrimitiveValue"
+
+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 = unsafeCastGObject . toGObject
+
+instance IsCSSRule CSSRule
+instance IsGObject CSSRule where
+  toGObject = GObject . unCSSRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSRule :: IsGObject obj => obj -> IO CSSRule
+castToCSSRule = castTo gTypeCSSRule "CSSRule"
+
+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
+  toGObject = GObject . unCSSRuleList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSRuleList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSRuleList :: IsGObject obj => obj -> IO CSSRuleList
+castToCSSRuleList = castTo gTypeCSSRuleList "CSSRuleList"
+
+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
+  toGObject = GObject . unCSSStyleDeclaration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleDeclaration . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleDeclaration :: IsGObject obj => obj -> IO CSSStyleDeclaration
+castToCSSStyleDeclaration = castTo gTypeCSSStyleDeclaration "CSSStyleDeclaration"
+
+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
+  toGObject = GObject . unCSSStyleRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleRule :: IsGObject obj => obj -> IO CSSStyleRule
+castToCSSStyleRule = castTo gTypeCSSStyleRule "CSSStyleRule"
+
+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
+  toGObject = GObject . unCSSStyleSheet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleSheet . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleSheet :: IsGObject obj => obj -> IO CSSStyleSheet
+castToCSSStyleSheet = castTo gTypeCSSStyleSheet "CSSStyleSheet"
+
+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
+  toGObject = GObject . unCSSSupportsRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSSupportsRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSSupportsRule :: IsGObject obj => obj -> IO CSSSupportsRule
+castToCSSSupportsRule = castTo gTypeCSSSupportsRule "CSSSupportsRule"
+
+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
+  toGObject = GObject . unCSSUnknownRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSUnknownRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSUnknownRule :: IsGObject obj => obj -> IO CSSUnknownRule
+castToCSSUnknownRule = castTo gTypeCSSUnknownRule "CSSUnknownRule"
+
+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 = unsafeCastGObject . toGObject
+
+instance IsCSSValue CSSValue
+instance IsGObject CSSValue where
+  toGObject = GObject . unCSSValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSValue :: IsGObject obj => obj -> IO CSSValue
+castToCSSValue = castTo gTypeCSSValue "CSSValue"
+
+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 #-}
+
+class IsCSSValue o => IsCSSValueList o
+toCSSValueList :: IsCSSValueList o => o -> CSSValueList
+toCSSValueList = unsafeCastGObject . toGObject
+
+instance IsCSSValueList CSSValueList
+instance IsCSSValue CSSValueList
+instance IsGObject CSSValueList where
+  toGObject = GObject . unCSSValueList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSValueList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSValueList :: IsGObject obj => obj -> IO CSSValueList
+castToCSSValueList = castTo gTypeCSSValueList "CSSValueList"
+
+foreign import javascript unsafe "window[\"CSSValueList\"]" gTypeCSSValueList :: 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
+  toGObject = GObject . unCanvasGradient
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasGradient . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasGradient :: IsGObject obj => obj -> IO CanvasGradient
+castToCanvasGradient = castTo gTypeCanvasGradient "CanvasGradient"
+
+foreign import javascript unsafe "window[\"CanvasGradient\"]" gTypeCanvasGradient :: 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
+  toGObject = GObject . unCanvasPattern
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasPattern . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasPattern :: IsGObject obj => obj -> IO CanvasPattern
+castToCanvasPattern = castTo gTypeCanvasPattern "CanvasPattern"
+
+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
+  toGObject = GObject . unCanvasProxy
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasProxy . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasProxy :: IsGObject obj => obj -> IO CanvasProxy
+castToCanvasProxy = castTo gTypeCanvasProxy "CanvasProxy"
+
+foreign import javascript unsafe "window[\"CanvasProxy\"]" gTypeCanvasProxy :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CanvasRenderingContext".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext Mozilla CanvasRenderingContext documentation>
+newtype CanvasRenderingContext = CanvasRenderingContext { unCanvasRenderingContext :: JSVal }
+
+instance Eq (CanvasRenderingContext) where
+  (CanvasRenderingContext a) == (CanvasRenderingContext b) = js_eq a b
+
+instance PToJSVal CanvasRenderingContext where
+  pToJSVal = unCanvasRenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasRenderingContext where
+  pFromJSVal = CanvasRenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasRenderingContext where
+  toJSVal = return . unCanvasRenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasRenderingContext where
+  fromJSVal = return . fmap CanvasRenderingContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsCanvasRenderingContext o
+toCanvasRenderingContext :: IsCanvasRenderingContext o => o -> CanvasRenderingContext
+toCanvasRenderingContext = unsafeCastGObject . toGObject
+
+instance IsCanvasRenderingContext CanvasRenderingContext
+instance IsGObject CanvasRenderingContext where
+  toGObject = GObject . unCanvasRenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasRenderingContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasRenderingContext :: IsGObject obj => obj -> IO CanvasRenderingContext
+castToCanvasRenderingContext = castTo gTypeCanvasRenderingContext "CanvasRenderingContext"
+
+foreign import javascript unsafe "window[\"CanvasRenderingContext\"]" gTypeCanvasRenderingContext :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CanvasRenderingContext2D".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CanvasRenderingContext"
+--
+-- <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 IsCanvasRenderingContext CanvasRenderingContext2D
+instance IsGObject CanvasRenderingContext2D where
+  toGObject = GObject . unCanvasRenderingContext2D
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasRenderingContext2D . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasRenderingContext2D :: IsGObject obj => obj -> IO CanvasRenderingContext2D
+castToCanvasRenderingContext2D = castTo gTypeCanvasRenderingContext2D "CanvasRenderingContext2D"
+
+foreign import javascript unsafe "window[\"CanvasRenderingContext2D\"]" gTypeCanvasRenderingContext2D :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CapabilityRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange Mozilla CapabilityRange documentation>
+newtype CapabilityRange = CapabilityRange { unCapabilityRange :: JSVal }
+
+instance Eq (CapabilityRange) where
+  (CapabilityRange a) == (CapabilityRange b) = js_eq a b
+
+instance PToJSVal CapabilityRange where
+  pToJSVal = unCapabilityRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CapabilityRange where
+  pFromJSVal = CapabilityRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CapabilityRange where
+  toJSVal = return . unCapabilityRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CapabilityRange where
+  fromJSVal = return . fmap CapabilityRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CapabilityRange where
+  toGObject = GObject . unCapabilityRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CapabilityRange . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCapabilityRange :: IsGObject obj => obj -> IO CapabilityRange
+castToCapabilityRange = castTo gTypeCapabilityRange "CapabilityRange"
+
+foreign import javascript unsafe "window[\"CapabilityRange\"]" gTypeCapabilityRange :: 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
+  toGObject = GObject . unChannelMergerNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChannelMergerNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChannelMergerNode :: IsGObject obj => obj -> IO ChannelMergerNode
+castToChannelMergerNode = castTo gTypeChannelMergerNode "ChannelMergerNode"
+
+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
+  toGObject = GObject . unChannelSplitterNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChannelSplitterNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChannelSplitterNode :: IsGObject obj => obj -> IO ChannelSplitterNode
+castToChannelSplitterNode = castTo gTypeChannelSplitterNode "ChannelSplitterNode"
+
+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"
+--
+-- <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 => IsCharacterData o
+toCharacterData :: IsCharacterData o => o -> CharacterData
+toCharacterData = unsafeCastGObject . toGObject
+
+instance IsCharacterData CharacterData
+instance IsNode CharacterData
+instance IsEventTarget CharacterData
+instance IsGObject CharacterData where
+  toGObject = GObject . unCharacterData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CharacterData . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCharacterData :: IsGObject obj => obj -> IO CharacterData
+castToCharacterData = castTo gTypeCharacterData "CharacterData"
+
+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 #-}
+
+instance IsGObject ChildNode where
+  toGObject = GObject . unChildNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChildNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChildNode :: IsGObject obj => obj -> IO ChildNode
+castToChildNode = castTo gTypeChildNode "ChildNode"
+
+foreign import javascript unsafe "window[\"ChildNode\"]" gTypeChildNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ClientRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect Mozilla ClientRect documentation>
+newtype ClientRect = ClientRect { unClientRect :: JSVal }
+
+instance Eq (ClientRect) where
+  (ClientRect a) == (ClientRect b) = js_eq a b
+
+instance PToJSVal ClientRect where
+  pToJSVal = unClientRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ClientRect where
+  pFromJSVal = ClientRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ClientRect where
+  toJSVal = return . unClientRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ClientRect where
+  fromJSVal = return . fmap ClientRect . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ClientRect where
+  toGObject = GObject . unClientRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ClientRect . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToClientRect :: IsGObject obj => obj -> IO ClientRect
+castToClientRect = castTo gTypeClientRect "ClientRect"
+
+foreign import javascript unsafe "window[\"ClientRect\"]" gTypeClientRect :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ClientRectList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList Mozilla ClientRectList documentation>
+newtype ClientRectList = ClientRectList { unClientRectList :: JSVal }
+
+instance Eq (ClientRectList) where
+  (ClientRectList a) == (ClientRectList b) = js_eq a b
+
+instance PToJSVal ClientRectList where
+  pToJSVal = unClientRectList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ClientRectList where
+  pFromJSVal = ClientRectList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ClientRectList where
+  toJSVal = return . unClientRectList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ClientRectList where
+  fromJSVal = return . fmap ClientRectList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ClientRectList where
+  toGObject = GObject . unClientRectList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ClientRectList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToClientRectList :: IsGObject obj => obj -> IO ClientRectList
+castToClientRectList = castTo gTypeClientRectList "ClientRectList"
+
+foreign import javascript unsafe "window[\"ClientRectList\"]" gTypeClientRectList :: 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
+  toGObject = GObject . unCloseEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CloseEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCloseEvent :: IsGObject obj => obj -> IO CloseEvent
+castToCloseEvent = castTo gTypeCloseEvent "CloseEvent"
+
+foreign import javascript unsafe "window[\"CloseEvent\"]" gTypeCloseEvent :: 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
+  toGObject = GObject . unCommandLineAPIHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CommandLineAPIHost . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCommandLineAPIHost :: IsGObject obj => obj -> IO CommandLineAPIHost
+castToCommandLineAPIHost = castTo gTypeCommandLineAPIHost "CommandLineAPIHost"
+
+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"
+--
+-- <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 IsGObject Comment where
+  toGObject = GObject . unComment
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Comment . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToComment :: IsGObject obj => obj -> IO Comment
+castToComment = castTo gTypeComment "Comment"
+
+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
+  toGObject = GObject . unCompositionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CompositionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCompositionEvent :: IsGObject obj => obj -> IO CompositionEvent
+castToCompositionEvent = castTo gTypeCompositionEvent "CompositionEvent"
+
+foreign import javascript unsafe "window[\"CompositionEvent\"]" gTypeCompositionEvent :: 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
+  toGObject = GObject . unConvolverNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ConvolverNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToConvolverNode :: IsGObject obj => obj -> IO ConvolverNode
+castToConvolverNode = castTo gTypeConvolverNode "ConvolverNode"
+
+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
+  toGObject = GObject . unCoordinates
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Coordinates . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCoordinates :: IsGObject obj => obj -> IO Coordinates
+castToCoordinates = castTo gTypeCoordinates "Coordinates"
+
+foreign import javascript unsafe "window[\"Coordinates\"]" gTypeCoordinates :: 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
+  toGObject = GObject . unCounter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Counter . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCounter :: IsGObject obj => obj -> IO Counter
+castToCounter = castTo gTypeCounter "Counter"
+
+foreign import javascript unsafe "window[\"Counter\"]" gTypeCounter :: 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
+  toGObject = GObject . unCrypto
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Crypto . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCrypto :: IsGObject obj => obj -> IO Crypto
+castToCrypto = castTo gTypeCrypto "Crypto"
+
+foreign import javascript unsafe "window[\"Crypto\"]" gTypeCrypto :: 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
+  toGObject = GObject . unCryptoKey
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CryptoKey . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCryptoKey :: IsGObject obj => obj -> IO CryptoKey
+castToCryptoKey = castTo gTypeCryptoKey "CryptoKey"
+
+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
+  toGObject = GObject . unCryptoKeyPair
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CryptoKeyPair . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCryptoKeyPair :: IsGObject obj => obj -> IO CryptoKeyPair
+castToCryptoKeyPair = castTo gTypeCryptoKeyPair "CryptoKeyPair"
+
+foreign import javascript unsafe "window[\"CryptoKeyPair\"]" gTypeCryptoKeyPair :: 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
+  toGObject = GObject . unCustomEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CustomEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCustomEvent :: IsGObject obj => obj -> IO CustomEvent
+castToCustomEvent = castTo gTypeCustomEvent "CustomEvent"
+
+foreign import javascript unsafe "window[\"CustomEvent\"]" gTypeCustomEvent :: 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 = unsafeCastGObject . toGObject
+
+instance IsDOMError DOMError
+instance IsGObject DOMError where
+  toGObject = GObject . unDOMError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMError :: IsGObject obj => obj -> IO DOMError
+castToDOMError = castTo gTypeDOMError "DOMError"
+
+foreign import javascript unsafe "window[\"DOMError\"]" gTypeDOMError :: 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
+  toGObject = GObject . unDOMImplementation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMImplementation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMImplementation :: IsGObject obj => obj -> IO DOMImplementation
+castToDOMImplementation = castTo gTypeDOMImplementation "DOMImplementation"
+
+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
+  toGObject = GObject . unDOMNamedFlowCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMNamedFlowCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMNamedFlowCollection :: IsGObject obj => obj -> IO DOMNamedFlowCollection
+castToDOMNamedFlowCollection = castTo gTypeDOMNamedFlowCollection "DOMNamedFlowCollection"
+
+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
+  toGObject = GObject . unDOMParser
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMParser . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMParser :: IsGObject obj => obj -> IO DOMParser
+castToDOMParser = castTo gTypeDOMParser "DOMParser"
+
+foreign import javascript unsafe "window[\"DOMParser\"]" gTypeDOMParser :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMSettableTokenList".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.DOMTokenList"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList Mozilla DOMSettableTokenList documentation>
+newtype DOMSettableTokenList = DOMSettableTokenList { unDOMSettableTokenList :: JSVal }
+
+instance Eq (DOMSettableTokenList) where
+  (DOMSettableTokenList a) == (DOMSettableTokenList b) = js_eq a b
+
+instance PToJSVal DOMSettableTokenList where
+  pToJSVal = unDOMSettableTokenList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMSettableTokenList where
+  pFromJSVal = DOMSettableTokenList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMSettableTokenList where
+  toJSVal = return . unDOMSettableTokenList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMSettableTokenList where
+  fromJSVal = return . fmap DOMSettableTokenList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDOMTokenList DOMSettableTokenList
+instance IsGObject DOMSettableTokenList where
+  toGObject = GObject . unDOMSettableTokenList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMSettableTokenList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMSettableTokenList :: IsGObject obj => obj -> IO DOMSettableTokenList
+castToDOMSettableTokenList = castTo gTypeDOMSettableTokenList "DOMSettableTokenList"
+
+foreign import javascript unsafe "window[\"DOMSettableTokenList\"]" gTypeDOMSettableTokenList :: 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
+  toGObject = GObject . unDOMStringList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMStringList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMStringList :: IsGObject obj => obj -> IO DOMStringList
+castToDOMStringList = castTo gTypeDOMStringList "DOMStringList"
+
+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
+  toGObject = GObject . unDOMStringMap
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMStringMap . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMStringMap :: IsGObject obj => obj -> IO DOMStringMap
+castToDOMStringMap = castTo gTypeDOMStringMap "DOMStringMap"
+
+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 #-}
+
+class IsGObject o => IsDOMTokenList o
+toDOMTokenList :: IsDOMTokenList o => o -> DOMTokenList
+toDOMTokenList = unsafeCastGObject . toGObject
+
+instance IsDOMTokenList DOMTokenList
+instance IsGObject DOMTokenList where
+  toGObject = GObject . unDOMTokenList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMTokenList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMTokenList :: IsGObject obj => obj -> IO DOMTokenList
+castToDOMTokenList = castTo gTypeDOMTokenList "DOMTokenList"
+
+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
+  toGObject = GObject . unDataCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataCue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataCue :: IsGObject obj => obj -> IO DataCue
+castToDataCue = castTo gTypeDataCue "DataCue"
+
+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
+  toGObject = GObject . unDataTransfer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransfer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransfer :: IsGObject obj => obj -> IO DataTransfer
+castToDataTransfer = castTo gTypeDataTransfer "DataTransfer"
+
+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
+  toGObject = GObject . unDataTransferItem
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransferItem . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransferItem :: IsGObject obj => obj -> IO DataTransferItem
+castToDataTransferItem = castTo gTypeDataTransferItem "DataTransferItem"
+
+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
+  toGObject = GObject . unDataTransferItemList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransferItemList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransferItemList :: IsGObject obj => obj -> IO DataTransferItemList
+castToDataTransferItemList = castTo gTypeDataTransferItemList "DataTransferItemList"
+
+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
+  toGObject = GObject . unDatabase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Database . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDatabase :: IsGObject obj => obj -> IO Database
+castToDatabase = castTo gTypeDatabase "Database"
+
+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"
+--
+-- <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 IsGObject DedicatedWorkerGlobalScope where
+  toGObject = GObject . unDedicatedWorkerGlobalScope
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DedicatedWorkerGlobalScope . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDedicatedWorkerGlobalScope :: IsGObject obj => obj -> IO DedicatedWorkerGlobalScope
+castToDedicatedWorkerGlobalScope = castTo gTypeDedicatedWorkerGlobalScope "DedicatedWorkerGlobalScope"
+
+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
+  toGObject = GObject . unDelayNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DelayNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDelayNode :: IsGObject obj => obj -> IO DelayNode
+castToDelayNode = castTo gTypeDelayNode "DelayNode"
+
+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
+  toGObject = GObject . unDeviceMotionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceMotionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceMotionEvent :: IsGObject obj => obj -> IO DeviceMotionEvent
+castToDeviceMotionEvent = castTo gTypeDeviceMotionEvent "DeviceMotionEvent"
+
+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
+  toGObject = GObject . unDeviceOrientationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceOrientationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceOrientationEvent :: IsGObject obj => obj -> IO DeviceOrientationEvent
+castToDeviceOrientationEvent = castTo gTypeDeviceOrientationEvent "DeviceOrientationEvent"
+
+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
+  toGObject = GObject . unDeviceProximityEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceProximityEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceProximityEvent :: IsGObject obj => obj -> IO DeviceProximityEvent
+castToDeviceProximityEvent = castTo gTypeDeviceProximityEvent "DeviceProximityEvent"
+
+foreign import javascript unsafe "window[\"DeviceProximityEvent\"]" gTypeDeviceProximityEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Document".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <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 => IsDocument o
+toDocument :: IsDocument o => o -> Document
+toDocument = unsafeCastGObject . toGObject
+
+instance IsDocument Document
+instance IsNode Document
+instance IsEventTarget Document
+instance IsGObject Document where
+  toGObject = GObject . unDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Document . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocument :: IsGObject obj => obj -> IO Document
+castToDocument = castTo gTypeDocument "Document"
+
+foreign import javascript unsafe "window[\"Document\"]" gTypeDocument :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DocumentFragment".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <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 #-}
+
+instance IsNode DocumentFragment
+instance IsEventTarget DocumentFragment
+instance IsGObject DocumentFragment where
+  toGObject = GObject . unDocumentFragment
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DocumentFragment . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocumentFragment :: IsGObject obj => obj -> IO DocumentFragment
+castToDocumentFragment = castTo gTypeDocumentFragment "DocumentFragment"
+
+foreign import javascript unsafe "window[\"DocumentFragment\"]" gTypeDocumentFragment :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DocumentType".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <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 IsGObject DocumentType where
+  toGObject = GObject . unDocumentType
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DocumentType . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocumentType :: IsGObject obj => obj -> IO DocumentType
+castToDocumentType = castTo gTypeDocumentType "DocumentType"
+
+foreign import javascript unsafe "window[\"DocumentType\"]" gTypeDocumentType :: 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
+  toGObject = GObject . unDynamicsCompressorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DynamicsCompressorNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDynamicsCompressorNode :: IsGObject obj => obj -> IO DynamicsCompressorNode
+castToDynamicsCompressorNode = castTo gTypeDynamicsCompressorNode "DynamicsCompressorNode"
+
+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
+  toGObject = GObject . unEXTBlendMinMax
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTBlendMinMax . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTBlendMinMax :: IsGObject obj => obj -> IO EXTBlendMinMax
+castToEXTBlendMinMax = castTo gTypeEXTBlendMinMax "EXTBlendMinMax"
+
+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
+  toGObject = GObject . unEXTFragDepth
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTFragDepth . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTFragDepth :: IsGObject obj => obj -> IO EXTFragDepth
+castToEXTFragDepth = castTo gTypeEXTFragDepth "EXTFragDepth"
+
+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
+  toGObject = GObject . unEXTShaderTextureLOD
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTShaderTextureLOD . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTShaderTextureLOD :: IsGObject obj => obj -> IO EXTShaderTextureLOD
+castToEXTShaderTextureLOD = castTo gTypeEXTShaderTextureLOD "EXTShaderTextureLOD"
+
+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
+  toGObject = GObject . unEXTTextureFilterAnisotropic
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTTextureFilterAnisotropic . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTTextureFilterAnisotropic :: IsGObject obj => obj -> IO EXTTextureFilterAnisotropic
+castToEXTTextureFilterAnisotropic = castTo gTypeEXTTextureFilterAnisotropic "EXTTextureFilterAnisotropic"
+
+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
+  toGObject = GObject . unEXTsRGB
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTsRGB . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTsRGB :: IsGObject obj => obj -> IO EXTsRGB
+castToEXTsRGB = castTo gTypeEXTsRGB "EXTsRGB"
+
+foreign import javascript unsafe "window[\"EXTsRGB\"]" gTypeEXTsRGB :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Element".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <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 => IsElement o
+toElement :: IsElement o => o -> Element
+toElement = unsafeCastGObject . toGObject
+
+instance IsElement Element
+instance IsNode Element
+instance IsEventTarget Element
+instance IsGObject Element where
+  toGObject = GObject . unElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Element . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToElement :: IsGObject obj => obj -> IO Element
+castToElement = castTo gTypeElement "Element"
+
+foreign import javascript unsafe "window[\"Element\"]" gTypeElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Entity".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Entity Mozilla Entity documentation>
+newtype Entity = Entity { unEntity :: JSVal }
+
+instance Eq (Entity) where
+  (Entity a) == (Entity b) = js_eq a b
+
+instance PToJSVal Entity where
+  pToJSVal = unEntity
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Entity where
+  pFromJSVal = Entity
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Entity where
+  toJSVal = return . unEntity
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Entity where
+  fromJSVal = return . fmap Entity . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsNode Entity
+instance IsEventTarget Entity
+instance IsGObject Entity where
+  toGObject = GObject . unEntity
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Entity . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEntity :: IsGObject obj => obj -> IO Entity
+castToEntity = castTo gTypeEntity "Entity"
+
+foreign import javascript unsafe "window[\"Entity\"]" gTypeEntity :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EntityReference".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EntityReference Mozilla EntityReference documentation>
+newtype EntityReference = EntityReference { unEntityReference :: JSVal }
+
+instance Eq (EntityReference) where
+  (EntityReference a) == (EntityReference b) = js_eq a b
+
+instance PToJSVal EntityReference where
+  pToJSVal = unEntityReference
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EntityReference where
+  pFromJSVal = EntityReference
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EntityReference where
+  toJSVal = return . unEntityReference
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EntityReference where
+  fromJSVal = return . fmap EntityReference . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsNode EntityReference
+instance IsEventTarget EntityReference
+instance IsGObject EntityReference where
+  toGObject = GObject . unEntityReference
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EntityReference . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEntityReference :: IsGObject obj => obj -> IO EntityReference
+castToEntityReference = castTo gTypeEntityReference "EntityReference"
+
+foreign import javascript unsafe "window[\"EntityReference\"]" gTypeEntityReference :: 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
+  toGObject = GObject . unErrorEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ErrorEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToErrorEvent :: IsGObject obj => obj -> IO ErrorEvent
+castToErrorEvent = castTo gTypeErrorEvent "ErrorEvent"
+
+foreign import javascript unsafe "window[\"ErrorEvent\"]" gTypeErrorEvent :: 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 = unsafeCastGObject . toGObject
+
+instance IsEvent Event
+instance IsGObject Event where
+  toGObject = GObject . unEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Event . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEvent :: IsGObject obj => obj -> IO Event
+castToEvent = castTo gTypeEvent "Event"
+
+foreign import javascript unsafe "window[\"Event\"]" gTypeEvent :: 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
+  toGObject = GObject . unEventListener
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventListener . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventListener :: IsGObject obj => obj -> IO EventListener
+castToEventListener = castTo gTypeEventListener "EventListener"
+
+foreign import javascript unsafe "window[\"EventListener\"]" gTypeEventListener :: 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
+  toGObject = GObject . unEventSource
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventSource . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventSource :: IsGObject obj => obj -> IO EventSource
+castToEventSource = castTo gTypeEventSource "EventSource"
+
+foreign import javascript unsafe "window[\"EventSource\"]" gTypeEventSource :: 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 = unsafeCastGObject . toGObject
+
+instance IsEventTarget EventTarget
+instance IsGObject EventTarget where
+  toGObject = GObject . unEventTarget
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventTarget . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventTarget :: IsGObject obj => obj -> IO EventTarget
+castToEventTarget = castTo gTypeEventTarget "EventTarget"
+
+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
+  toGObject = GObject . unFile
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = File . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFile :: IsGObject obj => obj -> IO File
+castToFile = castTo gTypeFile "File"
+
+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
+  toGObject = GObject . unFileError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileError :: IsGObject obj => obj -> IO FileError
+castToFileError = castTo gTypeFileError "FileError"
+
+foreign import javascript unsafe "window[\"FileError\"]" gTypeFileError :: 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
+  toGObject = GObject . unFileList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileList :: IsGObject obj => obj -> IO FileList
+castToFileList = castTo gTypeFileList "FileList"
+
+foreign import javascript unsafe "window[\"FileList\"]" gTypeFileList :: 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
+  toGObject = GObject . unFileReader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileReader . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileReader :: IsGObject obj => obj -> IO FileReader
+castToFileReader = castTo gTypeFileReader "FileReader"
+
+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
+  toGObject = GObject . unFileReaderSync
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileReaderSync . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileReaderSync :: IsGObject obj => obj -> IO FileReaderSync
+castToFileReaderSync = castTo gTypeFileReaderSync "FileReaderSync"
+
+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
+  toGObject = GObject . unFocusEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FocusEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFocusEvent :: IsGObject obj => obj -> IO FocusEvent
+castToFocusEvent = castTo gTypeFocusEvent "FocusEvent"
+
+foreign import javascript unsafe "window[\"FocusEvent\"]" gTypeFocusEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FontLoader".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader Mozilla FontLoader documentation>
+newtype FontLoader = FontLoader { unFontLoader :: JSVal }
+
+instance Eq (FontLoader) where
+  (FontLoader a) == (FontLoader b) = js_eq a b
+
+instance PToJSVal FontLoader where
+  pToJSVal = unFontLoader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FontLoader where
+  pFromJSVal = FontLoader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FontLoader where
+  toJSVal = return . unFontLoader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FontLoader where
+  fromJSVal = return . fmap FontLoader . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget FontLoader
+instance IsGObject FontLoader where
+  toGObject = GObject . unFontLoader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FontLoader . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFontLoader :: IsGObject obj => obj -> IO FontLoader
+castToFontLoader = castTo gTypeFontLoader "FontLoader"
+
+foreign import javascript unsafe "window[\"FontLoader\"]" gTypeFontLoader :: 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
+  toGObject = GObject . unFormData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FormData . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFormData :: IsGObject obj => obj -> IO FormData
+castToFormData = castTo gTypeFormData "FormData"
+
+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
+  toGObject = GObject . unGainNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GainNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGainNode :: IsGObject obj => obj -> IO GainNode
+castToGainNode = castTo gTypeGainNode "GainNode"
+
+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
+  toGObject = GObject . unGamepad
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Gamepad . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepad :: IsGObject obj => obj -> IO Gamepad
+castToGamepad = castTo gTypeGamepad "Gamepad"
+
+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
+  toGObject = GObject . unGamepadButton
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GamepadButton . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepadButton :: IsGObject obj => obj -> IO GamepadButton
+castToGamepadButton = castTo gTypeGamepadButton "GamepadButton"
+
+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
+  toGObject = GObject . unGamepadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GamepadEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepadEvent :: IsGObject obj => obj -> IO GamepadEvent
+castToGamepadEvent = castTo gTypeGamepadEvent "GamepadEvent"
+
+foreign import javascript unsafe "window[\"GamepadEvent\"]" gTypeGamepadEvent :: 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
+  toGObject = GObject . unGeolocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Geolocation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGeolocation :: IsGObject obj => obj -> IO Geolocation
+castToGeolocation = castTo gTypeGeolocation "Geolocation"
+
+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
+  toGObject = GObject . unGeoposition
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Geoposition . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGeoposition :: IsGObject obj => obj -> IO Geoposition
+castToGeoposition = castTo gTypeGeoposition "Geoposition"
+
+foreign import javascript unsafe "window[\"Geoposition\"]" gTypeGeoposition :: 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
+  toGObject = GObject . unHTMLAllCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAllCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAllCollection :: IsGObject obj => obj -> IO HTMLAllCollection
+castToHTMLAllCollection = castTo gTypeHTMLAllCollection "HTMLAllCollection"
+
+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"
+--
+-- <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 IsGObject HTMLAnchorElement where
+  toGObject = GObject . unHTMLAnchorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAnchorElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAnchorElement :: IsGObject obj => obj -> IO HTMLAnchorElement
+castToHTMLAnchorElement = castTo gTypeHTMLAnchorElement "HTMLAnchorElement"
+
+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"
+--
+-- <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 IsGObject HTMLAppletElement where
+  toGObject = GObject . unHTMLAppletElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAppletElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAppletElement :: IsGObject obj => obj -> IO HTMLAppletElement
+castToHTMLAppletElement = castTo gTypeHTMLAppletElement "HTMLAppletElement"
+
+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"
+--
+-- <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 IsGObject HTMLAreaElement where
+  toGObject = GObject . unHTMLAreaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAreaElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAreaElement :: IsGObject obj => obj -> IO HTMLAreaElement
+castToHTMLAreaElement = castTo gTypeHTMLAreaElement "HTMLAreaElement"
+
+foreign import javascript unsafe "window[\"HTMLAreaElement\"]" gTypeHTMLAreaElement :: 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"
+--
+-- <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 IsGObject HTMLAudioElement where
+  toGObject = GObject . unHTMLAudioElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAudioElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAudioElement :: IsGObject obj => obj -> IO HTMLAudioElement
+castToHTMLAudioElement = castTo gTypeHTMLAudioElement "HTMLAudioElement"
+
+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"
+--
+-- <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 IsGObject HTMLBRElement where
+  toGObject = GObject . unHTMLBRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBRElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBRElement :: IsGObject obj => obj -> IO HTMLBRElement
+castToHTMLBRElement = castTo gTypeHTMLBRElement "HTMLBRElement"
+
+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"
+--
+-- <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 IsGObject HTMLBaseElement where
+  toGObject = GObject . unHTMLBaseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBaseElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBaseElement :: IsGObject obj => obj -> IO HTMLBaseElement
+castToHTMLBaseElement = castTo gTypeHTMLBaseElement "HTMLBaseElement"
+
+foreign import javascript unsafe "window[\"HTMLBaseElement\"]" gTypeHTMLBaseElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLBaseFontElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement Mozilla HTMLBaseFontElement documentation>
+newtype HTMLBaseFontElement = HTMLBaseFontElement { unHTMLBaseFontElement :: JSVal }
+
+instance Eq (HTMLBaseFontElement) where
+  (HTMLBaseFontElement a) == (HTMLBaseFontElement b) = js_eq a b
+
+instance PToJSVal HTMLBaseFontElement where
+  pToJSVal = unHTMLBaseFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBaseFontElement where
+  pFromJSVal = HTMLBaseFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBaseFontElement where
+  toJSVal = return . unHTMLBaseFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBaseFontElement where
+  fromJSVal = return . fmap HTMLBaseFontElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLBaseFontElement
+instance IsElement HTMLBaseFontElement
+instance IsNode HTMLBaseFontElement
+instance IsEventTarget HTMLBaseFontElement
+instance IsGObject HTMLBaseFontElement where
+  toGObject = GObject . unHTMLBaseFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBaseFontElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBaseFontElement :: IsGObject obj => obj -> IO HTMLBaseFontElement
+castToHTMLBaseFontElement = castTo gTypeHTMLBaseFontElement "HTMLBaseFontElement"
+
+foreign import javascript unsafe "window[\"HTMLBaseFontElement\"]" gTypeHTMLBaseFontElement :: 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"
+--
+-- <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 IsGObject HTMLBodyElement where
+  toGObject = GObject . unHTMLBodyElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBodyElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBodyElement :: IsGObject obj => obj -> IO HTMLBodyElement
+castToHTMLBodyElement = castTo gTypeHTMLBodyElement "HTMLBodyElement"
+
+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"
+--
+-- <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 IsGObject HTMLButtonElement where
+  toGObject = GObject . unHTMLButtonElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLButtonElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLButtonElement :: IsGObject obj => obj -> IO HTMLButtonElement
+castToHTMLButtonElement = castTo gTypeHTMLButtonElement "HTMLButtonElement"
+
+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"
+--
+-- <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 IsGObject HTMLCanvasElement where
+  toGObject = GObject . unHTMLCanvasElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLCanvasElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLCanvasElement :: IsGObject obj => obj -> IO HTMLCanvasElement
+castToHTMLCanvasElement = castTo gTypeHTMLCanvasElement "HTMLCanvasElement"
+
+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 = unsafeCastGObject . toGObject
+
+instance IsHTMLCollection HTMLCollection
+instance IsGObject HTMLCollection where
+  toGObject = GObject . unHTMLCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLCollection :: IsGObject obj => obj -> IO HTMLCollection
+castToHTMLCollection = castTo gTypeHTMLCollection "HTMLCollection"
+
+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"
+--
+-- <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 IsGObject HTMLDListElement where
+  toGObject = GObject . unHTMLDListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDListElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDListElement :: IsGObject obj => obj -> IO HTMLDListElement
+castToHTMLDListElement = castTo gTypeHTMLDListElement "HTMLDListElement"
+
+foreign import javascript unsafe "window[\"HTMLDListElement\"]" gTypeHTMLDListElement :: 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"
+--
+-- <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 IsGObject HTMLDataListElement where
+  toGObject = GObject . unHTMLDataListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDataListElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDataListElement :: IsGObject obj => obj -> IO HTMLDataListElement
+castToHTMLDataListElement = castTo gTypeHTMLDataListElement "HTMLDataListElement"
+
+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"
+--
+-- <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 IsGObject HTMLDetailsElement where
+  toGObject = GObject . unHTMLDetailsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDetailsElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDetailsElement :: IsGObject obj => obj -> IO HTMLDetailsElement
+castToHTMLDetailsElement = castTo gTypeHTMLDetailsElement "HTMLDetailsElement"
+
+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"
+--
+-- <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 IsGObject HTMLDirectoryElement where
+  toGObject = GObject . unHTMLDirectoryElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDirectoryElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDirectoryElement :: IsGObject obj => obj -> IO HTMLDirectoryElement
+castToHTMLDirectoryElement = castTo gTypeHTMLDirectoryElement "HTMLDirectoryElement"
+
+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"
+--
+-- <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 IsGObject HTMLDivElement where
+  toGObject = GObject . unHTMLDivElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDivElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDivElement :: IsGObject obj => obj -> IO HTMLDivElement
+castToHTMLDivElement = castTo gTypeHTMLDivElement "HTMLDivElement"
+
+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"
+--
+-- <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 IsGObject HTMLDocument where
+  toGObject = GObject . unHTMLDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDocument . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDocument :: IsGObject obj => obj -> IO HTMLDocument
+castToHTMLDocument = castTo gTypeHTMLDocument "HTMLDocument"
+
+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"
+--
+-- <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 => IsHTMLElement o
+toHTMLElement :: IsHTMLElement o => o -> HTMLElement
+toHTMLElement = unsafeCastGObject . toGObject
+
+instance IsHTMLElement HTMLElement
+instance IsElement HTMLElement
+instance IsNode HTMLElement
+instance IsEventTarget HTMLElement
+instance IsGObject HTMLElement where
+  toGObject = GObject . unHTMLElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLElement :: IsGObject obj => obj -> IO HTMLElement
+castToHTMLElement = castTo gTypeHTMLElement "HTMLElement"
+
+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"
+--
+-- <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 IsGObject HTMLEmbedElement where
+  toGObject = GObject . unHTMLEmbedElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLEmbedElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLEmbedElement :: IsGObject obj => obj -> IO HTMLEmbedElement
+castToHTMLEmbedElement = castTo gTypeHTMLEmbedElement "HTMLEmbedElement"
+
+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"
+--
+-- <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 IsGObject HTMLFieldSetElement where
+  toGObject = GObject . unHTMLFieldSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFieldSetElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFieldSetElement :: IsGObject obj => obj -> IO HTMLFieldSetElement
+castToHTMLFieldSetElement = castTo gTypeHTMLFieldSetElement "HTMLFieldSetElement"
+
+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"
+--
+-- <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 IsGObject HTMLFontElement where
+  toGObject = GObject . unHTMLFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFontElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFontElement :: IsGObject obj => obj -> IO HTMLFontElement
+castToHTMLFontElement = castTo gTypeHTMLFontElement "HTMLFontElement"
+
+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
+  toGObject = GObject . unHTMLFormControlsCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFormControlsCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFormControlsCollection :: IsGObject obj => obj -> IO HTMLFormControlsCollection
+castToHTMLFormControlsCollection = castTo gTypeHTMLFormControlsCollection "HTMLFormControlsCollection"
+
+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"
+--
+-- <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 IsGObject HTMLFormElement where
+  toGObject = GObject . unHTMLFormElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFormElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFormElement :: IsGObject obj => obj -> IO HTMLFormElement
+castToHTMLFormElement = castTo gTypeHTMLFormElement "HTMLFormElement"
+
+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"
+--
+-- <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 IsGObject HTMLFrameElement where
+  toGObject = GObject . unHTMLFrameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFrameElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFrameElement :: IsGObject obj => obj -> IO HTMLFrameElement
+castToHTMLFrameElement = castTo gTypeHTMLFrameElement "HTMLFrameElement"
+
+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"
+--
+-- <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 IsGObject HTMLFrameSetElement where
+  toGObject = GObject . unHTMLFrameSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFrameSetElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFrameSetElement :: IsGObject obj => obj -> IO HTMLFrameSetElement
+castToHTMLFrameSetElement = castTo gTypeHTMLFrameSetElement "HTMLFrameSetElement"
+
+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"
+--
+-- <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 IsGObject HTMLHRElement where
+  toGObject = GObject . unHTMLHRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHRElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHRElement :: IsGObject obj => obj -> IO HTMLHRElement
+castToHTMLHRElement = castTo gTypeHTMLHRElement "HTMLHRElement"
+
+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"
+--
+-- <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 IsGObject HTMLHeadElement where
+  toGObject = GObject . unHTMLHeadElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHeadElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHeadElement :: IsGObject obj => obj -> IO HTMLHeadElement
+castToHTMLHeadElement = castTo gTypeHTMLHeadElement "HTMLHeadElement"
+
+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"
+--
+-- <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 IsGObject HTMLHeadingElement where
+  toGObject = GObject . unHTMLHeadingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHeadingElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHeadingElement :: IsGObject obj => obj -> IO HTMLHeadingElement
+castToHTMLHeadingElement = castTo gTypeHTMLHeadingElement "HTMLHeadingElement"
+
+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"
+--
+-- <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 IsGObject HTMLHtmlElement where
+  toGObject = GObject . unHTMLHtmlElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHtmlElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHtmlElement :: IsGObject obj => obj -> IO HTMLHtmlElement
+castToHTMLHtmlElement = castTo gTypeHTMLHtmlElement "HTMLHtmlElement"
+
+foreign import javascript unsafe "window[\"HTMLHtmlElement\"]" gTypeHTMLHtmlElement :: 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"
+--
+-- <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 IsGObject HTMLIFrameElement where
+  toGObject = GObject . unHTMLIFrameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLIFrameElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLIFrameElement :: IsGObject obj => obj -> IO HTMLIFrameElement
+castToHTMLIFrameElement = castTo gTypeHTMLIFrameElement "HTMLIFrameElement"
+
+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"
+--
+-- <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 IsGObject HTMLImageElement where
+  toGObject = GObject . unHTMLImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLImageElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLImageElement :: IsGObject obj => obj -> IO HTMLImageElement
+castToHTMLImageElement = castTo gTypeHTMLImageElement "HTMLImageElement"
+
+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"
+--
+-- <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 IsGObject HTMLInputElement where
+  toGObject = GObject . unHTMLInputElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLInputElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLInputElement :: IsGObject obj => obj -> IO HTMLInputElement
+castToHTMLInputElement = castTo gTypeHTMLInputElement "HTMLInputElement"
+
+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"
+--
+-- <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 IsGObject HTMLKeygenElement where
+  toGObject = GObject . unHTMLKeygenElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLKeygenElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLKeygenElement :: IsGObject obj => obj -> IO HTMLKeygenElement
+castToHTMLKeygenElement = castTo gTypeHTMLKeygenElement "HTMLKeygenElement"
+
+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"
+--
+-- <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 IsGObject HTMLLIElement where
+  toGObject = GObject . unHTMLLIElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLIElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLIElement :: IsGObject obj => obj -> IO HTMLLIElement
+castToHTMLLIElement = castTo gTypeHTMLLIElement "HTMLLIElement"
+
+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"
+--
+-- <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 IsGObject HTMLLabelElement where
+  toGObject = GObject . unHTMLLabelElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLabelElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLabelElement :: IsGObject obj => obj -> IO HTMLLabelElement
+castToHTMLLabelElement = castTo gTypeHTMLLabelElement "HTMLLabelElement"
+
+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"
+--
+-- <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 IsGObject HTMLLegendElement where
+  toGObject = GObject . unHTMLLegendElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLegendElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLegendElement :: IsGObject obj => obj -> IO HTMLLegendElement
+castToHTMLLegendElement = castTo gTypeHTMLLegendElement "HTMLLegendElement"
+
+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"
+--
+-- <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 IsGObject HTMLLinkElement where
+  toGObject = GObject . unHTMLLinkElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLinkElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLinkElement :: IsGObject obj => obj -> IO HTMLLinkElement
+castToHTMLLinkElement = castTo gTypeHTMLLinkElement "HTMLLinkElement"
+
+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"
+--
+-- <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 IsGObject HTMLMapElement where
+  toGObject = GObject . unHTMLMapElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMapElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMapElement :: IsGObject obj => obj -> IO HTMLMapElement
+castToHTMLMapElement = castTo gTypeHTMLMapElement "HTMLMapElement"
+
+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"
+--
+-- <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 IsGObject HTMLMarqueeElement where
+  toGObject = GObject . unHTMLMarqueeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMarqueeElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMarqueeElement :: IsGObject obj => obj -> IO HTMLMarqueeElement
+castToHTMLMarqueeElement = castTo gTypeHTMLMarqueeElement "HTMLMarqueeElement"
+
+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"
+--
+-- <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 => IsHTMLMediaElement o
+toHTMLMediaElement :: IsHTMLMediaElement o => o -> HTMLMediaElement
+toHTMLMediaElement = unsafeCastGObject . toGObject
+
+instance IsHTMLMediaElement HTMLMediaElement
+instance IsHTMLElement HTMLMediaElement
+instance IsElement HTMLMediaElement
+instance IsNode HTMLMediaElement
+instance IsEventTarget HTMLMediaElement
+instance IsGObject HTMLMediaElement where
+  toGObject = GObject . unHTMLMediaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMediaElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMediaElement :: IsGObject obj => obj -> IO HTMLMediaElement
+castToHTMLMediaElement = castTo gTypeHTMLMediaElement "HTMLMediaElement"
+
+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"
+--
+-- <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 IsGObject HTMLMenuElement where
+  toGObject = GObject . unHTMLMenuElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMenuElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMenuElement :: IsGObject obj => obj -> IO HTMLMenuElement
+castToHTMLMenuElement = castTo gTypeHTMLMenuElement "HTMLMenuElement"
+
+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"
+--
+-- <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 IsGObject HTMLMetaElement where
+  toGObject = GObject . unHTMLMetaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMetaElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMetaElement :: IsGObject obj => obj -> IO HTMLMetaElement
+castToHTMLMetaElement = castTo gTypeHTMLMetaElement "HTMLMetaElement"
+
+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"
+--
+-- <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 IsGObject HTMLMeterElement where
+  toGObject = GObject . unHTMLMeterElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMeterElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMeterElement :: IsGObject obj => obj -> IO HTMLMeterElement
+castToHTMLMeterElement = castTo gTypeHTMLMeterElement "HTMLMeterElement"
+
+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"
+--
+-- <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 IsGObject HTMLModElement where
+  toGObject = GObject . unHTMLModElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLModElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLModElement :: IsGObject obj => obj -> IO HTMLModElement
+castToHTMLModElement = castTo gTypeHTMLModElement "HTMLModElement"
+
+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"
+--
+-- <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 IsGObject HTMLOListElement where
+  toGObject = GObject . unHTMLOListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOListElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOListElement :: IsGObject obj => obj -> IO HTMLOListElement
+castToHTMLOListElement = castTo gTypeHTMLOListElement "HTMLOListElement"
+
+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"
+--
+-- <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 IsGObject HTMLObjectElement where
+  toGObject = GObject . unHTMLObjectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLObjectElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLObjectElement :: IsGObject obj => obj -> IO HTMLObjectElement
+castToHTMLObjectElement = castTo gTypeHTMLObjectElement "HTMLObjectElement"
+
+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"
+--
+-- <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 IsGObject HTMLOptGroupElement where
+  toGObject = GObject . unHTMLOptGroupElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptGroupElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptGroupElement :: IsGObject obj => obj -> IO HTMLOptGroupElement
+castToHTMLOptGroupElement = castTo gTypeHTMLOptGroupElement "HTMLOptGroupElement"
+
+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"
+--
+-- <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 IsGObject HTMLOptionElement where
+  toGObject = GObject . unHTMLOptionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptionElement :: IsGObject obj => obj -> IO HTMLOptionElement
+castToHTMLOptionElement = castTo gTypeHTMLOptionElement "HTMLOptionElement"
+
+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
+  toGObject = GObject . unHTMLOptionsCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptionsCollection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptionsCollection :: IsGObject obj => obj -> IO HTMLOptionsCollection
+castToHTMLOptionsCollection = castTo gTypeHTMLOptionsCollection "HTMLOptionsCollection"
+
+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"
+--
+-- <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 IsGObject HTMLOutputElement where
+  toGObject = GObject . unHTMLOutputElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOutputElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOutputElement :: IsGObject obj => obj -> IO HTMLOutputElement
+castToHTMLOutputElement = castTo gTypeHTMLOutputElement "HTMLOutputElement"
+
+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"
+--
+-- <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 IsGObject HTMLParagraphElement where
+  toGObject = GObject . unHTMLParagraphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLParagraphElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLParagraphElement :: IsGObject obj => obj -> IO HTMLParagraphElement
+castToHTMLParagraphElement = castTo gTypeHTMLParagraphElement "HTMLParagraphElement"
+
+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"
+--
+-- <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 IsGObject HTMLParamElement where
+  toGObject = GObject . unHTMLParamElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLParamElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLParamElement :: IsGObject obj => obj -> IO HTMLParamElement
+castToHTMLParamElement = castTo gTypeHTMLParamElement "HTMLParamElement"
+
+foreign import javascript unsafe "window[\"HTMLParamElement\"]" gTypeHTMLParamElement :: 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"
+--
+-- <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 IsGObject HTMLPreElement where
+  toGObject = GObject . unHTMLPreElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLPreElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLPreElement :: IsGObject obj => obj -> IO HTMLPreElement
+castToHTMLPreElement = castTo gTypeHTMLPreElement "HTMLPreElement"
+
+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"
+--
+-- <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 IsGObject HTMLProgressElement where
+  toGObject = GObject . unHTMLProgressElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLProgressElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLProgressElement :: IsGObject obj => obj -> IO HTMLProgressElement
+castToHTMLProgressElement = castTo gTypeHTMLProgressElement "HTMLProgressElement"
+
+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"
+--
+-- <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 IsGObject HTMLQuoteElement where
+  toGObject = GObject . unHTMLQuoteElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLQuoteElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLQuoteElement :: IsGObject obj => obj -> IO HTMLQuoteElement
+castToHTMLQuoteElement = castTo gTypeHTMLQuoteElement "HTMLQuoteElement"
+
+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"
+--
+-- <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 IsGObject HTMLScriptElement where
+  toGObject = GObject . unHTMLScriptElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLScriptElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLScriptElement :: IsGObject obj => obj -> IO HTMLScriptElement
+castToHTMLScriptElement = castTo gTypeHTMLScriptElement "HTMLScriptElement"
+
+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"
+--
+-- <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 IsGObject HTMLSelectElement where
+  toGObject = GObject . unHTMLSelectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSelectElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSelectElement :: IsGObject obj => obj -> IO HTMLSelectElement
+castToHTMLSelectElement = castTo gTypeHTMLSelectElement "HTMLSelectElement"
+
+foreign import javascript unsafe "window[\"HTMLSelectElement\"]" gTypeHTMLSelectElement :: 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"
+--
+-- <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 IsGObject HTMLSourceElement where
+  toGObject = GObject . unHTMLSourceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSourceElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSourceElement :: IsGObject obj => obj -> IO HTMLSourceElement
+castToHTMLSourceElement = castTo gTypeHTMLSourceElement "HTMLSourceElement"
+
+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"
+--
+-- <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 IsGObject HTMLSpanElement where
+  toGObject = GObject . unHTMLSpanElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSpanElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSpanElement :: IsGObject obj => obj -> IO HTMLSpanElement
+castToHTMLSpanElement = castTo gTypeHTMLSpanElement "HTMLSpanElement"
+
+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"
+--
+-- <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 IsGObject HTMLStyleElement where
+  toGObject = GObject . unHTMLStyleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLStyleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLStyleElement :: IsGObject obj => obj -> IO HTMLStyleElement
+castToHTMLStyleElement = castTo gTypeHTMLStyleElement "HTMLStyleElement"
+
+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"
+--
+-- <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 IsGObject HTMLTableCaptionElement where
+  toGObject = GObject . unHTMLTableCaptionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableCaptionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableCaptionElement :: IsGObject obj => obj -> IO HTMLTableCaptionElement
+castToHTMLTableCaptionElement = castTo gTypeHTMLTableCaptionElement "HTMLTableCaptionElement"
+
+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"
+--
+-- <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 IsGObject HTMLTableCellElement where
+  toGObject = GObject . unHTMLTableCellElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableCellElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableCellElement :: IsGObject obj => obj -> IO HTMLTableCellElement
+castToHTMLTableCellElement = castTo gTypeHTMLTableCellElement "HTMLTableCellElement"
+
+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"
+--
+-- <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 IsGObject HTMLTableColElement where
+  toGObject = GObject . unHTMLTableColElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableColElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableColElement :: IsGObject obj => obj -> IO HTMLTableColElement
+castToHTMLTableColElement = castTo gTypeHTMLTableColElement "HTMLTableColElement"
+
+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"
+--
+-- <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 IsGObject HTMLTableElement where
+  toGObject = GObject . unHTMLTableElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableElement :: IsGObject obj => obj -> IO HTMLTableElement
+castToHTMLTableElement = castTo gTypeHTMLTableElement "HTMLTableElement"
+
+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"
+--
+-- <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 IsGObject HTMLTableRowElement where
+  toGObject = GObject . unHTMLTableRowElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableRowElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableRowElement :: IsGObject obj => obj -> IO HTMLTableRowElement
+castToHTMLTableRowElement = castTo gTypeHTMLTableRowElement "HTMLTableRowElement"
+
+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"
+--
+-- <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 IsGObject HTMLTableSectionElement where
+  toGObject = GObject . unHTMLTableSectionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableSectionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableSectionElement :: IsGObject obj => obj -> IO HTMLTableSectionElement
+castToHTMLTableSectionElement = castTo gTypeHTMLTableSectionElement "HTMLTableSectionElement"
+
+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"
+--
+-- <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 IsGObject HTMLTemplateElement where
+  toGObject = GObject . unHTMLTemplateElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTemplateElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTemplateElement :: IsGObject obj => obj -> IO HTMLTemplateElement
+castToHTMLTemplateElement = castTo gTypeHTMLTemplateElement "HTMLTemplateElement"
+
+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"
+--
+-- <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 IsGObject HTMLTextAreaElement where
+  toGObject = GObject . unHTMLTextAreaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTextAreaElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTextAreaElement :: IsGObject obj => obj -> IO HTMLTextAreaElement
+castToHTMLTextAreaElement = castTo gTypeHTMLTextAreaElement "HTMLTextAreaElement"
+
+foreign import javascript unsafe "window[\"HTMLTextAreaElement\"]" gTypeHTMLTextAreaElement :: 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"
+--
+-- <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 IsGObject HTMLTitleElement where
+  toGObject = GObject . unHTMLTitleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTitleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTitleElement :: IsGObject obj => obj -> IO HTMLTitleElement
+castToHTMLTitleElement = castTo gTypeHTMLTitleElement "HTMLTitleElement"
+
+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"
+--
+-- <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 IsGObject HTMLTrackElement where
+  toGObject = GObject . unHTMLTrackElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTrackElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTrackElement :: IsGObject obj => obj -> IO HTMLTrackElement
+castToHTMLTrackElement = castTo gTypeHTMLTrackElement "HTMLTrackElement"
+
+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"
+--
+-- <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 IsGObject HTMLUListElement where
+  toGObject = GObject . unHTMLUListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLUListElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLUListElement :: IsGObject obj => obj -> IO HTMLUListElement
+castToHTMLUListElement = castTo gTypeHTMLUListElement "HTMLUListElement"
+
+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"
+--
+-- <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 IsGObject HTMLUnknownElement where
+  toGObject = GObject . unHTMLUnknownElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLUnknownElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLUnknownElement :: IsGObject obj => obj -> IO HTMLUnknownElement
+castToHTMLUnknownElement = castTo gTypeHTMLUnknownElement "HTMLUnknownElement"
+
+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"
+--
+-- <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 IsGObject HTMLVideoElement where
+  toGObject = GObject . unHTMLVideoElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLVideoElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLVideoElement :: IsGObject obj => obj -> IO HTMLVideoElement
+castToHTMLVideoElement = castTo gTypeHTMLVideoElement "HTMLVideoElement"
+
+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
+  toGObject = GObject . unHashChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HashChangeEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHashChangeEvent :: IsGObject obj => obj -> IO HashChangeEvent
+castToHashChangeEvent = castTo gTypeHashChangeEvent "HashChangeEvent"
+
+foreign import javascript unsafe "window[\"HashChangeEvent\"]" gTypeHashChangeEvent :: 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
+  toGObject = GObject . unHistory
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = History . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHistory :: IsGObject obj => obj -> IO History
+castToHistory = castTo gTypeHistory "History"
+
+foreign import javascript unsafe "window[\"History\"]" gTypeHistory :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBAny".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBAny Mozilla IDBAny documentation>
+newtype IDBAny = IDBAny { unIDBAny :: JSVal }
+
+instance Eq (IDBAny) where
+  (IDBAny a) == (IDBAny b) = js_eq a b
+
+instance PToJSVal IDBAny where
+  pToJSVal = unIDBAny
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBAny where
+  pFromJSVal = IDBAny
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBAny where
+  toJSVal = return . unIDBAny
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBAny where
+  fromJSVal = return . fmap IDBAny . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IDBAny where
+  toGObject = GObject . unIDBAny
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBAny . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBAny :: IsGObject obj => obj -> IO IDBAny
+castToIDBAny = castTo gTypeIDBAny "IDBAny"
+
+foreign import javascript unsafe "window[\"IDBAny\"]" gTypeIDBAny :: 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 = unsafeCastGObject . toGObject
+
+instance IsIDBCursor IDBCursor
+instance IsGObject IDBCursor where
+  toGObject = GObject . unIDBCursor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBCursor . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBCursor :: IsGObject obj => obj -> IO IDBCursor
+castToIDBCursor = castTo gTypeIDBCursor "IDBCursor"
+
+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
+  toGObject = GObject . unIDBCursorWithValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBCursorWithValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBCursorWithValue :: IsGObject obj => obj -> IO IDBCursorWithValue
+castToIDBCursorWithValue = castTo gTypeIDBCursorWithValue "IDBCursorWithValue"
+
+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
+  toGObject = GObject . unIDBDatabase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBDatabase . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBDatabase :: IsGObject obj => obj -> IO IDBDatabase
+castToIDBDatabase = castTo gTypeIDBDatabase "IDBDatabase"
+
+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
+  toGObject = GObject . unIDBFactory
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBFactory . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBFactory :: IsGObject obj => obj -> IO IDBFactory
+castToIDBFactory = castTo gTypeIDBFactory "IDBFactory"
+
+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
+  toGObject = GObject . unIDBIndex
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBIndex . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBIndex :: IsGObject obj => obj -> IO IDBIndex
+castToIDBIndex = castTo gTypeIDBIndex "IDBIndex"
+
+foreign import javascript unsafe "window[\"IDBIndex\"]" gTypeIDBIndex :: 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
+  toGObject = GObject . unIDBKeyRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBKeyRange . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBKeyRange :: IsGObject obj => obj -> IO IDBKeyRange
+castToIDBKeyRange = castTo gTypeIDBKeyRange "IDBKeyRange"
+
+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
+  toGObject = GObject . unIDBObjectStore
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBObjectStore . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBObjectStore :: IsGObject obj => obj -> IO IDBObjectStore
+castToIDBObjectStore = castTo gTypeIDBObjectStore "IDBObjectStore"
+
+foreign import javascript unsafe "window[\"IDBObjectStore\"]" gTypeIDBObjectStore :: 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
+  toGObject = GObject . unIDBOpenDBRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBOpenDBRequest . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBOpenDBRequest :: IsGObject obj => obj -> IO IDBOpenDBRequest
+castToIDBOpenDBRequest = castTo gTypeIDBOpenDBRequest "IDBOpenDBRequest"
+
+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 => IsIDBRequest o
+toIDBRequest :: IsIDBRequest o => o -> IDBRequest
+toIDBRequest = unsafeCastGObject . toGObject
+
+instance IsIDBRequest IDBRequest
+instance IsEventTarget IDBRequest
+instance IsGObject IDBRequest where
+  toGObject = GObject . unIDBRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBRequest . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBRequest :: IsGObject obj => obj -> IO IDBRequest
+castToIDBRequest = castTo gTypeIDBRequest "IDBRequest"
+
+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
+  toGObject = GObject . unIDBTransaction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBTransaction . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBTransaction :: IsGObject obj => obj -> IO IDBTransaction
+castToIDBTransaction = castTo gTypeIDBTransaction "IDBTransaction"
+
+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
+  toGObject = GObject . unIDBVersionChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBVersionChangeEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBVersionChangeEvent :: IsGObject obj => obj -> IO IDBVersionChangeEvent
+castToIDBVersionChangeEvent = castTo gTypeIDBVersionChangeEvent "IDBVersionChangeEvent"
+
+foreign import javascript unsafe "window[\"IDBVersionChangeEvent\"]" gTypeIDBVersionChangeEvent :: 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
+  toGObject = GObject . unImageData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ImageData . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToImageData :: IsGObject obj => obj -> IO ImageData
+castToImageData = castTo gTypeImageData "ImageData"
+
+foreign import javascript unsafe "window[\"ImageData\"]" gTypeImageData :: 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
+  toGObject = GObject . unInspectorFrontendHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = InspectorFrontendHost . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInspectorFrontendHost :: IsGObject obj => obj -> IO InspectorFrontendHost
+castToInspectorFrontendHost = castTo gTypeInspectorFrontendHost "InspectorFrontendHost"
+
+foreign import javascript unsafe "window[\"InspectorFrontendHost\"]" gTypeInspectorFrontendHost :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.InternalSettings".
+-- Base interface functions are in:
+--
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings Mozilla InternalSettings documentation>
+newtype InternalSettings = InternalSettings { unInternalSettings :: JSVal }
+
+instance Eq (InternalSettings) where
+  (InternalSettings a) == (InternalSettings b) = js_eq a b
+
+instance PToJSVal InternalSettings where
+  pToJSVal = unInternalSettings
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal InternalSettings where
+  pFromJSVal = InternalSettings
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal InternalSettings where
+  toJSVal = return . unInternalSettings
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal InternalSettings where
+  fromJSVal = return . fmap InternalSettings . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject InternalSettings where
+  toGObject = GObject . unInternalSettings
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = InternalSettings . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInternalSettings :: IsGObject obj => obj -> IO InternalSettings
+castToInternalSettings = castTo gTypeInternalSettings "InternalSettings"
+
+foreign import javascript unsafe "window[\"InternalSettings\"]" gTypeInternalSettings :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Internals".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Internals Mozilla Internals documentation>
+newtype Internals = Internals { unInternals :: JSVal }
+
+instance Eq (Internals) where
+  (Internals a) == (Internals b) = js_eq a b
+
+instance PToJSVal Internals where
+  pToJSVal = unInternals
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Internals where
+  pFromJSVal = Internals
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Internals where
+  toJSVal = return . unInternals
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Internals where
+  fromJSVal = return . fmap Internals . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Internals where
+  toGObject = GObject . unInternals
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Internals . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInternals :: IsGObject obj => obj -> IO Internals
+castToInternals = castTo gTypeInternals "Internals"
+
+foreign import javascript unsafe "window[\"Internals\"]" gTypeInternals :: 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
+  toGObject = GObject . unKeyboardEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = KeyboardEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToKeyboardEvent :: IsGObject obj => obj -> IO KeyboardEvent
+castToKeyboardEvent = castTo gTypeKeyboardEvent "KeyboardEvent"
+
+foreign import javascript unsafe "window[\"KeyboardEvent\"]" gTypeKeyboardEvent :: 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
+  toGObject = GObject . unLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Location . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToLocation :: IsGObject obj => obj -> IO Location
+castToLocation = castTo gTypeLocation "Location"
+
+foreign import javascript unsafe "window[\"Location\"]" gTypeLocation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MallocStatistics".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics Mozilla MallocStatistics documentation>
+newtype MallocStatistics = MallocStatistics { unMallocStatistics :: JSVal }
+
+instance Eq (MallocStatistics) where
+  (MallocStatistics a) == (MallocStatistics b) = js_eq a b
+
+instance PToJSVal MallocStatistics where
+  pToJSVal = unMallocStatistics
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MallocStatistics where
+  pFromJSVal = MallocStatistics
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MallocStatistics where
+  toJSVal = return . unMallocStatistics
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MallocStatistics where
+  fromJSVal = return . fmap MallocStatistics . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MallocStatistics where
+  toGObject = GObject . unMallocStatistics
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MallocStatistics . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMallocStatistics :: IsGObject obj => obj -> IO MallocStatistics
+castToMallocStatistics = castTo gTypeMallocStatistics "MallocStatistics"
+
+foreign import javascript unsafe "window[\"MallocStatistics\"]" gTypeMallocStatistics :: 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
+  toGObject = GObject . unMediaController
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaController . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaController :: IsGObject obj => obj -> IO MediaController
+castToMediaController = castTo gTypeMediaController "MediaController"
+
+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
+  toGObject = GObject . unMediaControlsHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaControlsHost . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaControlsHost :: IsGObject obj => obj -> IO MediaControlsHost
+castToMediaControlsHost = castTo gTypeMediaControlsHost "MediaControlsHost"
+
+foreign import javascript unsafe "window[\"MediaControlsHost\"]" gTypeMediaControlsHost :: 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
+  toGObject = GObject . unMediaElementAudioSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaElementAudioSourceNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaElementAudioSourceNode :: IsGObject obj => obj -> IO MediaElementAudioSourceNode
+castToMediaElementAudioSourceNode = castTo gTypeMediaElementAudioSourceNode "MediaElementAudioSourceNode"
+
+foreign import javascript unsafe "window[\"MediaElementAudioSourceNode\"]" gTypeMediaElementAudioSourceNode :: 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
+  toGObject = GObject . unMediaError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaError :: IsGObject obj => obj -> IO MediaError
+castToMediaError = castTo gTypeMediaError "MediaError"
+
+foreign import javascript unsafe "window[\"MediaError\"]" gTypeMediaError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeyError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError Mozilla WebKitMediaKeyError documentation>
+newtype MediaKeyError = MediaKeyError { unMediaKeyError :: JSVal }
+
+instance Eq (MediaKeyError) where
+  (MediaKeyError a) == (MediaKeyError b) = js_eq a b
+
+instance PToJSVal MediaKeyError where
+  pToJSVal = unMediaKeyError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyError where
+  pFromJSVal = MediaKeyError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyError where
+  toJSVal = return . unMediaKeyError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyError where
+  fromJSVal = return . fmap MediaKeyError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaKeyError where
+  toGObject = GObject . unMediaKeyError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyError :: IsGObject obj => obj -> IO MediaKeyError
+castToMediaKeyError = castTo gTypeMediaKeyError "MediaKeyError"
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyError\"]" gTypeMediaKeyError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeyEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent Mozilla MediaKeyEvent documentation>
+newtype MediaKeyEvent = MediaKeyEvent { unMediaKeyEvent :: JSVal }
+
+instance Eq (MediaKeyEvent) where
+  (MediaKeyEvent a) == (MediaKeyEvent b) = js_eq a b
+
+instance PToJSVal MediaKeyEvent where
+  pToJSVal = unMediaKeyEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyEvent where
+  pFromJSVal = MediaKeyEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyEvent where
+  toJSVal = return . unMediaKeyEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyEvent where
+  fromJSVal = return . fmap MediaKeyEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent MediaKeyEvent
+instance IsGObject MediaKeyEvent where
+  toGObject = GObject . unMediaKeyEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyEvent :: IsGObject obj => obj -> IO MediaKeyEvent
+castToMediaKeyEvent = castTo gTypeMediaKeyEvent "MediaKeyEvent"
+
+foreign import javascript unsafe "window[\"MediaKeyEvent\"]" gTypeMediaKeyEvent :: 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
+  toGObject = GObject . unMediaKeyMessageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyMessageEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyMessageEvent :: IsGObject obj => obj -> IO MediaKeyMessageEvent
+castToMediaKeyMessageEvent = castTo gTypeMediaKeyMessageEvent "MediaKeyMessageEvent"
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyMessageEvent\"]" gTypeMediaKeyMessageEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeyNeededEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent Mozilla MediaKeyNeededEvent documentation>
+newtype MediaKeyNeededEvent = MediaKeyNeededEvent { unMediaKeyNeededEvent :: JSVal }
+
+instance Eq (MediaKeyNeededEvent) where
+  (MediaKeyNeededEvent a) == (MediaKeyNeededEvent b) = js_eq a b
+
+instance PToJSVal MediaKeyNeededEvent where
+  pToJSVal = unMediaKeyNeededEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyNeededEvent where
+  pFromJSVal = MediaKeyNeededEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyNeededEvent where
+  toJSVal = return . unMediaKeyNeededEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyNeededEvent where
+  fromJSVal = return . fmap MediaKeyNeededEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent MediaKeyNeededEvent
+instance IsGObject MediaKeyNeededEvent where
+  toGObject = GObject . unMediaKeyNeededEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyNeededEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyNeededEvent :: IsGObject obj => obj -> IO MediaKeyNeededEvent
+castToMediaKeyNeededEvent = castTo gTypeMediaKeyNeededEvent "MediaKeyNeededEvent"
+
+foreign import javascript unsafe "window[\"MediaKeyNeededEvent\"]" gTypeMediaKeyNeededEvent :: 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
+  toGObject = GObject . unMediaKeySession
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeySession . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeySession :: IsGObject obj => obj -> IO MediaKeySession
+castToMediaKeySession = castTo gTypeMediaKeySession "MediaKeySession"
+
+foreign import javascript unsafe "window[\"WebKitMediaKeySession\"]" gTypeMediaKeySession :: 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
+  toGObject = GObject . unMediaKeys
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeys . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeys :: IsGObject obj => obj -> IO MediaKeys
+castToMediaKeys = castTo gTypeMediaKeys "MediaKeys"
+
+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
+  toGObject = GObject . unMediaList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaList :: IsGObject obj => obj -> IO MediaList
+castToMediaList = castTo gTypeMediaList "MediaList"
+
+foreign import javascript unsafe "window[\"MediaList\"]" gTypeMediaList :: 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
+  toGObject = GObject . unMediaQueryList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaQueryList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaQueryList :: IsGObject obj => obj -> IO MediaQueryList
+castToMediaQueryList = castTo gTypeMediaQueryList "MediaQueryList"
+
+foreign import javascript unsafe "window[\"MediaQueryList\"]" gTypeMediaQueryList :: 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
+  toGObject = GObject . unMediaSource
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaSource . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaSource :: IsGObject obj => obj -> IO MediaSource
+castToMediaSource = castTo gTypeMediaSource "MediaSource"
+
+foreign import javascript unsafe "window[\"MediaSource\"]" gTypeMediaSource :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaSourceStates".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates Mozilla MediaSourceStates documentation>
+newtype MediaSourceStates = MediaSourceStates { unMediaSourceStates :: JSVal }
+
+instance Eq (MediaSourceStates) where
+  (MediaSourceStates a) == (MediaSourceStates b) = js_eq a b
+
+instance PToJSVal MediaSourceStates where
+  pToJSVal = unMediaSourceStates
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaSourceStates where
+  pFromJSVal = MediaSourceStates
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaSourceStates where
+  toJSVal = return . unMediaSourceStates
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaSourceStates where
+  fromJSVal = return . fmap MediaSourceStates . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaSourceStates where
+  toGObject = GObject . unMediaSourceStates
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaSourceStates . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaSourceStates :: IsGObject obj => obj -> IO MediaSourceStates
+castToMediaSourceStates = castTo gTypeMediaSourceStates "MediaSourceStates"
+
+foreign import javascript unsafe "window[\"MediaSourceStates\"]" gTypeMediaSourceStates :: 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
+  toGObject = GObject . unMediaStream
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStream . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStream :: IsGObject obj => obj -> IO MediaStream
+castToMediaStream = castTo gTypeMediaStream "MediaStream"
+
+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
+  toGObject = GObject . unMediaStreamAudioDestinationNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamAudioDestinationNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamAudioDestinationNode :: IsGObject obj => obj -> IO MediaStreamAudioDestinationNode
+castToMediaStreamAudioDestinationNode = castTo gTypeMediaStreamAudioDestinationNode "MediaStreamAudioDestinationNode"
+
+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
+  toGObject = GObject . unMediaStreamAudioSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamAudioSourceNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamAudioSourceNode :: IsGObject obj => obj -> IO MediaStreamAudioSourceNode
+castToMediaStreamAudioSourceNode = castTo gTypeMediaStreamAudioSourceNode "MediaStreamAudioSourceNode"
+
+foreign import javascript unsafe "window[\"MediaStreamAudioSourceNode\"]" gTypeMediaStreamAudioSourceNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamCapabilities".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamCapabilities Mozilla MediaStreamCapabilities documentation>
+newtype MediaStreamCapabilities = MediaStreamCapabilities { unMediaStreamCapabilities :: JSVal }
+
+instance Eq (MediaStreamCapabilities) where
+  (MediaStreamCapabilities a) == (MediaStreamCapabilities b) = js_eq a b
+
+instance PToJSVal MediaStreamCapabilities where
+  pToJSVal = unMediaStreamCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamCapabilities where
+  pFromJSVal = MediaStreamCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamCapabilities where
+  toJSVal = return . unMediaStreamCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamCapabilities where
+  fromJSVal = return . fmap MediaStreamCapabilities . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsMediaStreamCapabilities o
+toMediaStreamCapabilities :: IsMediaStreamCapabilities o => o -> MediaStreamCapabilities
+toMediaStreamCapabilities = unsafeCastGObject . toGObject
+
+instance IsMediaStreamCapabilities MediaStreamCapabilities
+instance IsGObject MediaStreamCapabilities where
+  toGObject = GObject . unMediaStreamCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamCapabilities . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamCapabilities :: IsGObject obj => obj -> IO MediaStreamCapabilities
+castToMediaStreamCapabilities = castTo gTypeMediaStreamCapabilities "MediaStreamCapabilities"
+
+foreign import javascript unsafe "window[\"MediaStreamCapabilities\"]" gTypeMediaStreamCapabilities :: 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
+  toGObject = GObject . unMediaStreamEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamEvent :: IsGObject obj => obj -> IO MediaStreamEvent
+castToMediaStreamEvent = castTo gTypeMediaStreamEvent "MediaStreamEvent"
+
+foreign import javascript unsafe "window[\"MediaStreamEvent\"]" gTypeMediaStreamEvent :: 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 => IsMediaStreamTrack o
+toMediaStreamTrack :: IsMediaStreamTrack o => o -> MediaStreamTrack
+toMediaStreamTrack = unsafeCastGObject . toGObject
+
+instance IsMediaStreamTrack MediaStreamTrack
+instance IsEventTarget MediaStreamTrack
+instance IsGObject MediaStreamTrack where
+  toGObject = GObject . unMediaStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamTrack :: IsGObject obj => obj -> IO MediaStreamTrack
+castToMediaStreamTrack = castTo gTypeMediaStreamTrack "MediaStreamTrack"
+
+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
+  toGObject = GObject . unMediaStreamTrackEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamTrackEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamTrackEvent :: IsGObject obj => obj -> IO MediaStreamTrackEvent
+castToMediaStreamTrackEvent = castTo gTypeMediaStreamTrackEvent "MediaStreamTrackEvent"
+
+foreign import javascript unsafe "window[\"MediaStreamTrackEvent\"]" gTypeMediaStreamTrackEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaTrackConstraint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraint Mozilla MediaTrackConstraint documentation>
+newtype MediaTrackConstraint = MediaTrackConstraint { unMediaTrackConstraint :: JSVal }
+
+instance Eq (MediaTrackConstraint) where
+  (MediaTrackConstraint a) == (MediaTrackConstraint b) = js_eq a b
+
+instance PToJSVal MediaTrackConstraint where
+  pToJSVal = unMediaTrackConstraint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraint where
+  pFromJSVal = MediaTrackConstraint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraint where
+  toJSVal = return . unMediaTrackConstraint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraint where
+  fromJSVal = return . fmap MediaTrackConstraint . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaTrackConstraint where
+  toGObject = GObject . unMediaTrackConstraint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraint :: IsGObject obj => obj -> IO MediaTrackConstraint
+castToMediaTrackConstraint = castTo gTypeMediaTrackConstraint "MediaTrackConstraint"
+
+foreign import javascript unsafe "window[\"MediaTrackConstraint\"]" gTypeMediaTrackConstraint :: 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 #-}
+
+instance IsGObject MediaTrackConstraintSet where
+  toGObject = GObject . unMediaTrackConstraintSet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraintSet . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraintSet :: IsGObject obj => obj -> IO MediaTrackConstraintSet
+castToMediaTrackConstraintSet = castTo gTypeMediaTrackConstraintSet "MediaTrackConstraintSet"
+
+foreign import javascript unsafe "window[\"MediaTrackConstraintSet\"]" gTypeMediaTrackConstraintSet :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaTrackConstraints".
+--
+-- <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 IsGObject MediaTrackConstraints where
+  toGObject = GObject . unMediaTrackConstraints
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraints . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraints :: IsGObject obj => obj -> IO MediaTrackConstraints
+castToMediaTrackConstraints = castTo gTypeMediaTrackConstraints "MediaTrackConstraints"
+
+foreign import javascript unsafe "window[\"MediaTrackConstraints\"]" gTypeMediaTrackConstraints :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MemoryInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo Mozilla MemoryInfo documentation>
+newtype MemoryInfo = MemoryInfo { unMemoryInfo :: JSVal }
+
+instance Eq (MemoryInfo) where
+  (MemoryInfo a) == (MemoryInfo b) = js_eq a b
+
+instance PToJSVal MemoryInfo where
+  pToJSVal = unMemoryInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MemoryInfo where
+  pFromJSVal = MemoryInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MemoryInfo where
+  toJSVal = return . unMemoryInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MemoryInfo where
+  fromJSVal = return . fmap MemoryInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MemoryInfo where
+  toGObject = GObject . unMemoryInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MemoryInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMemoryInfo :: IsGObject obj => obj -> IO MemoryInfo
+castToMemoryInfo = castTo gTypeMemoryInfo "MemoryInfo"
+
+foreign import javascript unsafe "window[\"MemoryInfo\"]" gTypeMemoryInfo :: 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
+  toGObject = GObject . unMessageChannel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessageChannel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessageChannel :: IsGObject obj => obj -> IO MessageChannel
+castToMessageChannel = castTo gTypeMessageChannel "MessageChannel"
+
+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
+  toGObject = GObject . unMessageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessageEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessageEvent :: IsGObject obj => obj -> IO MessageEvent
+castToMessageEvent = castTo gTypeMessageEvent "MessageEvent"
+
+foreign import javascript unsafe "window[\"MessageEvent\"]" gTypeMessageEvent :: 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
+  toGObject = GObject . unMessagePort
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessagePort . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessagePort :: IsGObject obj => obj -> IO MessagePort
+castToMessagePort = castTo gTypeMessagePort "MessagePort"
+
+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
+  toGObject = GObject . unMimeType
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MimeType . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMimeType :: IsGObject obj => obj -> IO MimeType
+castToMimeType = castTo gTypeMimeType "MimeType"
+
+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
+  toGObject = GObject . unMimeTypeArray
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MimeTypeArray . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMimeTypeArray :: IsGObject obj => obj -> IO MimeTypeArray
+castToMimeTypeArray = castTo gTypeMimeTypeArray "MimeTypeArray"
+
+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 => IsMouseEvent o
+toMouseEvent :: IsMouseEvent o => o -> MouseEvent
+toMouseEvent = unsafeCastGObject . toGObject
+
+instance IsMouseEvent MouseEvent
+instance IsUIEvent MouseEvent
+instance IsEvent MouseEvent
+instance IsGObject MouseEvent where
+  toGObject = GObject . unMouseEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MouseEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMouseEvent :: IsGObject obj => obj -> IO MouseEvent
+castToMouseEvent = castTo gTypeMouseEvent "MouseEvent"
+
+foreign import javascript unsafe "window[\"MouseEvent\"]" gTypeMouseEvent :: 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
+  toGObject = GObject . unMutationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationEvent :: IsGObject obj => obj -> IO MutationEvent
+castToMutationEvent = castTo gTypeMutationEvent "MutationEvent"
+
+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
+  toGObject = GObject . unMutationObserver
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationObserver . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationObserver :: IsGObject obj => obj -> IO MutationObserver
+castToMutationObserver = castTo gTypeMutationObserver "MutationObserver"
+
+foreign import javascript unsafe "window[\"MutationObserver\"]" gTypeMutationObserver :: 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
+  toGObject = GObject . unMutationRecord
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationRecord . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationRecord :: IsGObject obj => obj -> IO MutationRecord
+castToMutationRecord = castTo gTypeMutationRecord "MutationRecord"
+
+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
+  toGObject = GObject . unNamedNodeMap
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NamedNodeMap . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNamedNodeMap :: IsGObject obj => obj -> IO NamedNodeMap
+castToNamedNodeMap = castTo gTypeNamedNodeMap "NamedNodeMap"
+
+foreign import javascript unsafe "window[\"NamedNodeMap\"]" gTypeNamedNodeMap :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Navigator".
+--
+-- <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 IsGObject Navigator where
+  toGObject = GObject . unNavigator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Navigator . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNavigator :: IsGObject obj => obj -> IO Navigator
+castToNavigator = castTo gTypeNavigator "Navigator"
+
+foreign import javascript unsafe "window[\"Navigator\"]" gTypeNavigator :: 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
+  toGObject = GObject . unNavigatorUserMediaError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NavigatorUserMediaError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNavigatorUserMediaError :: IsGObject obj => obj -> IO NavigatorUserMediaError
+castToNavigatorUserMediaError = castTo gTypeNavigatorUserMediaError "NavigatorUserMediaError"
+
+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 => IsNode o
+toNode :: IsNode o => o -> Node
+toNode = unsafeCastGObject . toGObject
+
+instance IsNode Node
+instance IsEventTarget Node
+instance IsGObject Node where
+  toGObject = GObject . unNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Node . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNode :: IsGObject obj => obj -> IO Node
+castToNode = castTo gTypeNode "Node"
+
+foreign import javascript unsafe "window[\"Node\"]" gTypeNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NodeFilter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation>
+newtype NodeFilter = NodeFilter { unNodeFilter :: JSVal }
+
+instance Eq (NodeFilter) where
+  (NodeFilter a) == (NodeFilter b) = js_eq a b
+
+instance PToJSVal NodeFilter where
+  pToJSVal = unNodeFilter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeFilter where
+  pFromJSVal = NodeFilter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeFilter where
+  toJSVal = return . unNodeFilter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeFilter where
+  fromJSVal = return . fmap NodeFilter . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject NodeFilter where
+  toGObject = GObject . unNodeFilter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeFilter . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeFilter :: IsGObject obj => obj -> IO NodeFilter
+castToNodeFilter = castTo gTypeNodeFilter "NodeFilter"
+
+foreign import javascript unsafe "window[\"NodeFilter\"]" gTypeNodeFilter :: 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
+  toGObject = GObject . unNodeIterator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeIterator . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeIterator :: IsGObject obj => obj -> IO NodeIterator
+castToNodeIterator = castTo gTypeNodeIterator "NodeIterator"
+
+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 = unsafeCastGObject . toGObject
+
+instance IsNodeList NodeList
+instance IsGObject NodeList where
+  toGObject = GObject . unNodeList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeList :: IsGObject obj => obj -> IO NodeList
+castToNodeList = castTo gTypeNodeList "NodeList"
+
+foreign import javascript unsafe "window[\"NodeList\"]" gTypeNodeList :: 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
+  toGObject = GObject . unNotification
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Notification . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNotification :: IsGObject obj => obj -> IO Notification
+castToNotification = castTo gTypeNotification "Notification"
+
+foreign import javascript unsafe "window[\"Notification\"]" gTypeNotification :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NotificationCenter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter Mozilla NotificationCenter documentation>
+newtype NotificationCenter = NotificationCenter { unNotificationCenter :: JSVal }
+
+instance Eq (NotificationCenter) where
+  (NotificationCenter a) == (NotificationCenter b) = js_eq a b
+
+instance PToJSVal NotificationCenter where
+  pToJSVal = unNotificationCenter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NotificationCenter where
+  pFromJSVal = NotificationCenter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NotificationCenter where
+  toJSVal = return . unNotificationCenter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NotificationCenter where
+  fromJSVal = return . fmap NotificationCenter . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject NotificationCenter where
+  toGObject = GObject . unNotificationCenter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NotificationCenter . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNotificationCenter :: IsGObject obj => obj -> IO NotificationCenter
+castToNotificationCenter = castTo gTypeNotificationCenter "NotificationCenter"
+
+foreign import javascript unsafe "window[\"NotificationCenter\"]" gTypeNotificationCenter :: 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
+  toGObject = GObject . unOESElementIndexUint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESElementIndexUint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESElementIndexUint :: IsGObject obj => obj -> IO OESElementIndexUint
+castToOESElementIndexUint = castTo gTypeOESElementIndexUint "OESElementIndexUint"
+
+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
+  toGObject = GObject . unOESStandardDerivatives
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESStandardDerivatives . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESStandardDerivatives :: IsGObject obj => obj -> IO OESStandardDerivatives
+castToOESStandardDerivatives = castTo gTypeOESStandardDerivatives "OESStandardDerivatives"
+
+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
+  toGObject = GObject . unOESTextureFloat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureFloat . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureFloat :: IsGObject obj => obj -> IO OESTextureFloat
+castToOESTextureFloat = castTo gTypeOESTextureFloat "OESTextureFloat"
+
+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
+  toGObject = GObject . unOESTextureFloatLinear
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureFloatLinear . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureFloatLinear :: IsGObject obj => obj -> IO OESTextureFloatLinear
+castToOESTextureFloatLinear = castTo gTypeOESTextureFloatLinear "OESTextureFloatLinear"
+
+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
+  toGObject = GObject . unOESTextureHalfFloat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureHalfFloat . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureHalfFloat :: IsGObject obj => obj -> IO OESTextureHalfFloat
+castToOESTextureHalfFloat = castTo gTypeOESTextureHalfFloat "OESTextureHalfFloat"
+
+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
+  toGObject = GObject . unOESTextureHalfFloatLinear
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureHalfFloatLinear . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureHalfFloatLinear :: IsGObject obj => obj -> IO OESTextureHalfFloatLinear
+castToOESTextureHalfFloatLinear = castTo gTypeOESTextureHalfFloatLinear "OESTextureHalfFloatLinear"
+
+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
+  toGObject = GObject . unOESVertexArrayObject
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESVertexArrayObject . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESVertexArrayObject :: IsGObject obj => obj -> IO OESVertexArrayObject
+castToOESVertexArrayObject = castTo gTypeOESVertexArrayObject "OESVertexArrayObject"
+
+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
+  toGObject = GObject . unOfflineAudioCompletionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OfflineAudioCompletionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOfflineAudioCompletionEvent :: IsGObject obj => obj -> IO OfflineAudioCompletionEvent
+castToOfflineAudioCompletionEvent = castTo gTypeOfflineAudioCompletionEvent "OfflineAudioCompletionEvent"
+
+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
+  toGObject = GObject . unOfflineAudioContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OfflineAudioContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOfflineAudioContext :: IsGObject obj => obj -> IO OfflineAudioContext
+castToOfflineAudioContext = castTo gTypeOfflineAudioContext "OfflineAudioContext"
+
+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
+  toGObject = GObject . unOscillatorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OscillatorNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOscillatorNode :: IsGObject obj => obj -> IO OscillatorNode
+castToOscillatorNode = castTo gTypeOscillatorNode "OscillatorNode"
+
+foreign import javascript unsafe "window[\"OscillatorNode\"]" gTypeOscillatorNode :: 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
+  toGObject = GObject . unOverflowEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OverflowEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOverflowEvent :: IsGObject obj => obj -> IO OverflowEvent
+castToOverflowEvent = castTo gTypeOverflowEvent "OverflowEvent"
+
+foreign import javascript unsafe "window[\"OverflowEvent\"]" gTypeOverflowEvent :: 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
+  toGObject = GObject . unPageTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PageTransitionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPageTransitionEvent :: IsGObject obj => obj -> IO PageTransitionEvent
+castToPageTransitionEvent = castTo gTypePageTransitionEvent "PageTransitionEvent"
+
+foreign import javascript unsafe "window[\"PageTransitionEvent\"]" gTypePageTransitionEvent :: 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
+  toGObject = GObject . unPannerNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PannerNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPannerNode :: IsGObject obj => obj -> IO PannerNode
+castToPannerNode = castTo gTypePannerNode "PannerNode"
+
+foreign import javascript unsafe "window[\"webkitAudioPannerNode\"]" gTypePannerNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Path2D".
+--
+-- <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 IsGObject Path2D where
+  toGObject = GObject . unPath2D
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Path2D . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPath2D :: IsGObject obj => obj -> IO Path2D
+castToPath2D = castTo gTypePath2D "Path2D"
+
+foreign import javascript unsafe "window[\"Path2D\"]" gTypePath2D :: 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
+  toGObject = GObject . unPerformance
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Performance . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformance :: IsGObject obj => obj -> IO Performance
+castToPerformance = castTo gTypePerformance "Performance"
+
+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 = unsafeCastGObject . toGObject
+
+instance IsPerformanceEntry PerformanceEntry
+instance IsGObject PerformanceEntry where
+  toGObject = GObject . unPerformanceEntry
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceEntry . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceEntry :: IsGObject obj => obj -> IO PerformanceEntry
+castToPerformanceEntry = castTo gTypePerformanceEntry "PerformanceEntry"
+
+foreign import javascript unsafe "window[\"PerformanceEntry\"]" gTypePerformanceEntry :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceEntryList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList Mozilla PerformanceEntryList documentation>
+newtype PerformanceEntryList = PerformanceEntryList { unPerformanceEntryList :: JSVal }
+
+instance Eq (PerformanceEntryList) where
+  (PerformanceEntryList a) == (PerformanceEntryList b) = js_eq a b
+
+instance PToJSVal PerformanceEntryList where
+  pToJSVal = unPerformanceEntryList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceEntryList where
+  pFromJSVal = PerformanceEntryList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceEntryList where
+  toJSVal = return . unPerformanceEntryList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceEntryList where
+  fromJSVal = return . fmap PerformanceEntryList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PerformanceEntryList where
+  toGObject = GObject . unPerformanceEntryList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceEntryList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceEntryList :: IsGObject obj => obj -> IO PerformanceEntryList
+castToPerformanceEntryList = castTo gTypePerformanceEntryList "PerformanceEntryList"
+
+foreign import javascript unsafe "window[\"PerformanceEntryList\"]" gTypePerformanceEntryList :: 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
+  toGObject = GObject . unPerformanceMark
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceMark . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceMark :: IsGObject obj => obj -> IO PerformanceMark
+castToPerformanceMark = castTo gTypePerformanceMark "PerformanceMark"
+
+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
+  toGObject = GObject . unPerformanceMeasure
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceMeasure . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceMeasure :: IsGObject obj => obj -> IO PerformanceMeasure
+castToPerformanceMeasure = castTo gTypePerformanceMeasure "PerformanceMeasure"
+
+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
+  toGObject = GObject . unPerformanceNavigation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceNavigation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceNavigation :: IsGObject obj => obj -> IO PerformanceNavigation
+castToPerformanceNavigation = castTo gTypePerformanceNavigation "PerformanceNavigation"
+
+foreign import javascript unsafe "window[\"PerformanceNavigation\"]" gTypePerformanceNavigation :: 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
+  toGObject = GObject . unPerformanceResourceTiming
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceResourceTiming . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceResourceTiming :: IsGObject obj => obj -> IO PerformanceResourceTiming
+castToPerformanceResourceTiming = castTo gTypePerformanceResourceTiming "PerformanceResourceTiming"
+
+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
+  toGObject = GObject . unPerformanceTiming
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceTiming . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceTiming :: IsGObject obj => obj -> IO PerformanceTiming
+castToPerformanceTiming = castTo gTypePerformanceTiming "PerformanceTiming"
+
+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
+  toGObject = GObject . unPeriodicWave
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PeriodicWave . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPeriodicWave :: IsGObject obj => obj -> IO PeriodicWave
+castToPeriodicWave = castTo gTypePeriodicWave "PeriodicWave"
+
+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
+  toGObject = GObject . unPlugin
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Plugin . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPlugin :: IsGObject obj => obj -> IO Plugin
+castToPlugin = castTo gTypePlugin "Plugin"
+
+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
+  toGObject = GObject . unPluginArray
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PluginArray . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPluginArray :: IsGObject obj => obj -> IO PluginArray
+castToPluginArray = castTo gTypePluginArray "PluginArray"
+
+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
+  toGObject = GObject . unPopStateEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PopStateEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPopStateEvent :: IsGObject obj => obj -> IO PopStateEvent
+castToPopStateEvent = castTo gTypePopStateEvent "PopStateEvent"
+
+foreign import javascript unsafe "window[\"PopStateEvent\"]" gTypePopStateEvent :: 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
+  toGObject = GObject . unPositionError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PositionError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPositionError :: IsGObject obj => obj -> IO PositionError
+castToPositionError = castTo gTypePositionError "PositionError"
+
+foreign import javascript unsafe "window[\"PositionError\"]" gTypePositionError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ProcessingInstruction".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CharacterData"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <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 IsGObject ProcessingInstruction where
+  toGObject = GObject . unProcessingInstruction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ProcessingInstruction . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToProcessingInstruction :: IsGObject obj => obj -> IO ProcessingInstruction
+castToProcessingInstruction = castTo gTypeProcessingInstruction "ProcessingInstruction"
+
+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 => IsProgressEvent o
+toProgressEvent :: IsProgressEvent o => o -> ProgressEvent
+toProgressEvent = unsafeCastGObject . toGObject
+
+instance IsProgressEvent ProgressEvent
+instance IsEvent ProgressEvent
+instance IsGObject ProgressEvent where
+  toGObject = GObject . unProgressEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ProgressEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToProgressEvent :: IsGObject obj => obj -> IO ProgressEvent
+castToProgressEvent = castTo gTypeProgressEvent "ProgressEvent"
+
+foreign import javascript unsafe "window[\"ProgressEvent\"]" gTypeProgressEvent :: 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
+  toGObject = GObject . unQuickTimePluginReplacement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = QuickTimePluginReplacement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToQuickTimePluginReplacement :: IsGObject obj => obj -> IO QuickTimePluginReplacement
+castToQuickTimePluginReplacement = castTo gTypeQuickTimePluginReplacement "QuickTimePluginReplacement"
+
+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
+  toGObject = GObject . unRGBColor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RGBColor . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRGBColor :: IsGObject obj => obj -> IO RGBColor
+castToRGBColor = castTo gTypeRGBColor "RGBColor"
+
+foreign import javascript unsafe "window[\"RGBColor\"]" gTypeRGBColor :: 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
+  toGObject = GObject . unRTCConfiguration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCConfiguration . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCConfiguration :: IsGObject obj => obj -> IO RTCConfiguration
+castToRTCConfiguration = castTo gTypeRTCConfiguration "RTCConfiguration"
+
+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
+  toGObject = GObject . unRTCDTMFSender
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDTMFSender . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDTMFSender :: IsGObject obj => obj -> IO RTCDTMFSender
+castToRTCDTMFSender = castTo gTypeRTCDTMFSender "RTCDTMFSender"
+
+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
+  toGObject = GObject . unRTCDTMFToneChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDTMFToneChangeEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDTMFToneChangeEvent :: IsGObject obj => obj -> IO RTCDTMFToneChangeEvent
+castToRTCDTMFToneChangeEvent = castTo gTypeRTCDTMFToneChangeEvent "RTCDTMFToneChangeEvent"
+
+foreign import javascript unsafe "window[\"RTCDTMFToneChangeEvent\"]" gTypeRTCDTMFToneChangeEvent :: 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
+  toGObject = GObject . unRTCDataChannel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDataChannel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDataChannel :: IsGObject obj => obj -> IO RTCDataChannel
+castToRTCDataChannel = castTo gTypeRTCDataChannel "RTCDataChannel"
+
+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
+  toGObject = GObject . unRTCDataChannelEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDataChannelEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDataChannelEvent :: IsGObject obj => obj -> IO RTCDataChannelEvent
+castToRTCDataChannelEvent = castTo gTypeRTCDataChannelEvent "RTCDataChannelEvent"
+
+foreign import javascript unsafe "window[\"RTCDataChannelEvent\"]" gTypeRTCDataChannelEvent :: 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
+  toGObject = GObject . unRTCIceCandidate
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceCandidate . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceCandidate :: IsGObject obj => obj -> IO RTCIceCandidate
+castToRTCIceCandidate = castTo gTypeRTCIceCandidate "RTCIceCandidate"
+
+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
+  toGObject = GObject . unRTCIceCandidateEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceCandidateEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceCandidateEvent :: IsGObject obj => obj -> IO RTCIceCandidateEvent
+castToRTCIceCandidateEvent = castTo gTypeRTCIceCandidateEvent "RTCIceCandidateEvent"
+
+foreign import javascript unsafe "window[\"RTCIceCandidateEvent\"]" gTypeRTCIceCandidateEvent :: 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
+  toGObject = GObject . unRTCIceServer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceServer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceServer :: IsGObject obj => obj -> IO RTCIceServer
+castToRTCIceServer = castTo gTypeRTCIceServer "RTCIceServer"
+
+foreign import javascript unsafe "window[\"RTCIceServer\"]" gTypeRTCIceServer :: 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
+  toGObject = GObject . unRTCPeerConnection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCPeerConnection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCPeerConnection :: IsGObject obj => obj -> IO RTCPeerConnection
+castToRTCPeerConnection = castTo gTypeRTCPeerConnection "RTCPeerConnection"
+
+foreign import javascript unsafe "window[\"webkitRTCPeerConnection\"]" gTypeRTCPeerConnection :: 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
+  toGObject = GObject . unRTCSessionDescription
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCSessionDescription . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCSessionDescription :: IsGObject obj => obj -> IO RTCSessionDescription
+castToRTCSessionDescription = castTo gTypeRTCSessionDescription "RTCSessionDescription"
+
+foreign import javascript unsafe "window[\"RTCSessionDescription\"]" gTypeRTCSessionDescription :: 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
+  toGObject = GObject . unRTCStatsReport
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCStatsReport . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCStatsReport :: IsGObject obj => obj -> IO RTCStatsReport
+castToRTCStatsReport = castTo gTypeRTCStatsReport "RTCStatsReport"
+
+foreign import javascript unsafe "window[\"RTCStatsReport\"]" gTypeRTCStatsReport :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCStatsResponse".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse Mozilla RTCStatsResponse documentation>
+newtype RTCStatsResponse = RTCStatsResponse { unRTCStatsResponse :: JSVal }
+
+instance Eq (RTCStatsResponse) where
+  (RTCStatsResponse a) == (RTCStatsResponse b) = js_eq a b
+
+instance PToJSVal RTCStatsResponse where
+  pToJSVal = unRTCStatsResponse
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCStatsResponse where
+  pFromJSVal = RTCStatsResponse
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCStatsResponse where
+  toJSVal = return . unRTCStatsResponse
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCStatsResponse where
+  fromJSVal = return . fmap RTCStatsResponse . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCStatsResponse where
+  toGObject = GObject . unRTCStatsResponse
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCStatsResponse . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCStatsResponse :: IsGObject obj => obj -> IO RTCStatsResponse
+castToRTCStatsResponse = castTo gTypeRTCStatsResponse "RTCStatsResponse"
+
+foreign import javascript unsafe "window[\"RTCStatsResponse\"]" gTypeRTCStatsResponse :: 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
+  toGObject = GObject . unRadioNodeList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RadioNodeList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRadioNodeList :: IsGObject obj => obj -> IO RadioNodeList
+castToRadioNodeList = castTo gTypeRadioNodeList "RadioNodeList"
+
+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
+  toGObject = GObject . unRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Range . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRange :: IsGObject obj => obj -> IO Range
+castToRange = castTo gTypeRange "Range"
+
+foreign import javascript unsafe "window[\"Range\"]" gTypeRange :: 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
+  toGObject = GObject . unReadableStream
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ReadableStream . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToReadableStream :: IsGObject obj => obj -> IO ReadableStream
+castToReadableStream = castTo gTypeReadableStream "ReadableStream"
+
+foreign import javascript unsafe "window[\"ReadableStream\"]" gTypeReadableStream :: 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
+  toGObject = GObject . unRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Rect . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRect :: IsGObject obj => obj -> IO Rect
+castToRect = castTo gTypeRect "Rect"
+
+foreign import javascript unsafe "window[\"Rect\"]" gTypeRect :: 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
+  toGObject = GObject . unSQLError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLError . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLError :: IsGObject obj => obj -> IO SQLError
+castToSQLError = castTo gTypeSQLError "SQLError"
+
+foreign import javascript unsafe "window[\"SQLError\"]" gTypeSQLError :: 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
+  toGObject = GObject . unSQLResultSet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLResultSet . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLResultSet :: IsGObject obj => obj -> IO SQLResultSet
+castToSQLResultSet = castTo gTypeSQLResultSet "SQLResultSet"
+
+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
+  toGObject = GObject . unSQLResultSetRowList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLResultSetRowList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLResultSetRowList :: IsGObject obj => obj -> IO SQLResultSetRowList
+castToSQLResultSetRowList = castTo gTypeSQLResultSetRowList "SQLResultSetRowList"
+
+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
+  toGObject = GObject . unSQLTransaction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLTransaction . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLTransaction :: IsGObject obj => obj -> IO SQLTransaction
+castToSQLTransaction = castTo gTypeSQLTransaction "SQLTransaction"
+
+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"
+--
+-- <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 IsGObject SVGAElement where
+  toGObject = GObject . unSVGAElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAElement :: IsGObject obj => obj -> IO SVGAElement
+castToSVGAElement = castTo gTypeSVGAElement "SVGAElement"
+
+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"
+--
+-- <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 IsGObject SVGAltGlyphDefElement where
+  toGObject = GObject . unSVGAltGlyphDefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphDefElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphDefElement :: IsGObject obj => obj -> IO SVGAltGlyphDefElement
+castToSVGAltGlyphDefElement = castTo gTypeSVGAltGlyphDefElement "SVGAltGlyphDefElement"
+
+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"
+--
+-- <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 IsGObject SVGAltGlyphElement where
+  toGObject = GObject . unSVGAltGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphElement :: IsGObject obj => obj -> IO SVGAltGlyphElement
+castToSVGAltGlyphElement = castTo gTypeSVGAltGlyphElement "SVGAltGlyphElement"
+
+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"
+--
+-- <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 IsGObject SVGAltGlyphItemElement where
+  toGObject = GObject . unSVGAltGlyphItemElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphItemElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphItemElement :: IsGObject obj => obj -> IO SVGAltGlyphItemElement
+castToSVGAltGlyphItemElement = castTo gTypeSVGAltGlyphItemElement "SVGAltGlyphItemElement"
+
+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
+  toGObject = GObject . unSVGAngle
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAngle . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAngle :: IsGObject obj => obj -> IO SVGAngle
+castToSVGAngle = castTo gTypeSVGAngle "SVGAngle"
+
+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"
+--
+-- <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 IsGObject SVGAnimateColorElement where
+  toGObject = GObject . unSVGAnimateColorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateColorElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateColorElement :: IsGObject obj => obj -> IO SVGAnimateColorElement
+castToSVGAnimateColorElement = castTo gTypeSVGAnimateColorElement "SVGAnimateColorElement"
+
+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"
+--
+-- <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 IsGObject SVGAnimateElement where
+  toGObject = GObject . unSVGAnimateElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateElement :: IsGObject obj => obj -> IO SVGAnimateElement
+castToSVGAnimateElement = castTo gTypeSVGAnimateElement "SVGAnimateElement"
+
+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"
+--
+-- <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 IsGObject SVGAnimateMotionElement where
+  toGObject = GObject . unSVGAnimateMotionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateMotionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateMotionElement :: IsGObject obj => obj -> IO SVGAnimateMotionElement
+castToSVGAnimateMotionElement = castTo gTypeSVGAnimateMotionElement "SVGAnimateMotionElement"
+
+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"
+--
+-- <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 IsGObject SVGAnimateTransformElement where
+  toGObject = GObject . unSVGAnimateTransformElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateTransformElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateTransformElement :: IsGObject obj => obj -> IO SVGAnimateTransformElement
+castToSVGAnimateTransformElement = castTo gTypeSVGAnimateTransformElement "SVGAnimateTransformElement"
+
+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
+  toGObject = GObject . unSVGAnimatedAngle
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedAngle . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedAngle :: IsGObject obj => obj -> IO SVGAnimatedAngle
+castToSVGAnimatedAngle = castTo gTypeSVGAnimatedAngle "SVGAnimatedAngle"
+
+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
+  toGObject = GObject . unSVGAnimatedBoolean
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedBoolean . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedBoolean :: IsGObject obj => obj -> IO SVGAnimatedBoolean
+castToSVGAnimatedBoolean = castTo gTypeSVGAnimatedBoolean "SVGAnimatedBoolean"
+
+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
+  toGObject = GObject . unSVGAnimatedEnumeration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedEnumeration . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedEnumeration :: IsGObject obj => obj -> IO SVGAnimatedEnumeration
+castToSVGAnimatedEnumeration = castTo gTypeSVGAnimatedEnumeration "SVGAnimatedEnumeration"
+
+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
+  toGObject = GObject . unSVGAnimatedInteger
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedInteger . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedInteger :: IsGObject obj => obj -> IO SVGAnimatedInteger
+castToSVGAnimatedInteger = castTo gTypeSVGAnimatedInteger "SVGAnimatedInteger"
+
+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
+  toGObject = GObject . unSVGAnimatedLength
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedLength . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedLength :: IsGObject obj => obj -> IO SVGAnimatedLength
+castToSVGAnimatedLength = castTo gTypeSVGAnimatedLength "SVGAnimatedLength"
+
+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
+  toGObject = GObject . unSVGAnimatedLengthList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedLengthList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedLengthList :: IsGObject obj => obj -> IO SVGAnimatedLengthList
+castToSVGAnimatedLengthList = castTo gTypeSVGAnimatedLengthList "SVGAnimatedLengthList"
+
+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
+  toGObject = GObject . unSVGAnimatedNumber
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedNumber . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedNumber :: IsGObject obj => obj -> IO SVGAnimatedNumber
+castToSVGAnimatedNumber = castTo gTypeSVGAnimatedNumber "SVGAnimatedNumber"
+
+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
+  toGObject = GObject . unSVGAnimatedNumberList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedNumberList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedNumberList :: IsGObject obj => obj -> IO SVGAnimatedNumberList
+castToSVGAnimatedNumberList = castTo gTypeSVGAnimatedNumberList "SVGAnimatedNumberList"
+
+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
+  toGObject = GObject . unSVGAnimatedPreserveAspectRatio
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedPreserveAspectRatio . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedPreserveAspectRatio :: IsGObject obj => obj -> IO SVGAnimatedPreserveAspectRatio
+castToSVGAnimatedPreserveAspectRatio = castTo gTypeSVGAnimatedPreserveAspectRatio "SVGAnimatedPreserveAspectRatio"
+
+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
+  toGObject = GObject . unSVGAnimatedRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedRect . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedRect :: IsGObject obj => obj -> IO SVGAnimatedRect
+castToSVGAnimatedRect = castTo gTypeSVGAnimatedRect "SVGAnimatedRect"
+
+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
+  toGObject = GObject . unSVGAnimatedString
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedString . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedString :: IsGObject obj => obj -> IO SVGAnimatedString
+castToSVGAnimatedString = castTo gTypeSVGAnimatedString "SVGAnimatedString"
+
+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
+  toGObject = GObject . unSVGAnimatedTransformList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedTransformList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedTransformList :: IsGObject obj => obj -> IO SVGAnimatedTransformList
+castToSVGAnimatedTransformList = castTo gTypeSVGAnimatedTransformList "SVGAnimatedTransformList"
+
+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"
+--
+-- <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 => IsSVGAnimationElement o
+toSVGAnimationElement :: IsSVGAnimationElement o => o -> SVGAnimationElement
+toSVGAnimationElement = unsafeCastGObject . toGObject
+
+instance IsSVGAnimationElement SVGAnimationElement
+instance IsSVGElement SVGAnimationElement
+instance IsElement SVGAnimationElement
+instance IsNode SVGAnimationElement
+instance IsEventTarget SVGAnimationElement
+instance IsGObject SVGAnimationElement where
+  toGObject = GObject . unSVGAnimationElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimationElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimationElement :: IsGObject obj => obj -> IO SVGAnimationElement
+castToSVGAnimationElement = castTo gTypeSVGAnimationElement "SVGAnimationElement"
+
+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"
+--
+-- <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 IsGObject SVGCircleElement where
+  toGObject = GObject . unSVGCircleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGCircleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGCircleElement :: IsGObject obj => obj -> IO SVGCircleElement
+castToSVGCircleElement = castTo gTypeSVGCircleElement "SVGCircleElement"
+
+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"
+--
+-- <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 IsGObject SVGClipPathElement where
+  toGObject = GObject . unSVGClipPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGClipPathElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGClipPathElement :: IsGObject obj => obj -> IO SVGClipPathElement
+castToSVGClipPathElement = castTo gTypeSVGClipPathElement "SVGClipPathElement"
+
+foreign import javascript unsafe "window[\"SVGClipPathElement\"]" gTypeSVGClipPathElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGColor".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor Mozilla SVGColor documentation>
+newtype SVGColor = SVGColor { unSVGColor :: JSVal }
+
+instance Eq (SVGColor) where
+  (SVGColor a) == (SVGColor b) = js_eq a b
+
+instance PToJSVal SVGColor where
+  pToJSVal = unSVGColor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGColor where
+  pFromJSVal = SVGColor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGColor where
+  toJSVal = return . unSVGColor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGColor where
+  fromJSVal = return . fmap SVGColor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsCSSValue o => IsSVGColor o
+toSVGColor :: IsSVGColor o => o -> SVGColor
+toSVGColor = unsafeCastGObject . toGObject
+
+instance IsSVGColor SVGColor
+instance IsCSSValue SVGColor
+instance IsGObject SVGColor where
+  toGObject = GObject . unSVGColor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGColor . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGColor :: IsGObject obj => obj -> IO SVGColor
+castToSVGColor = castTo gTypeSVGColor "SVGColor"
+
+foreign import javascript unsafe "window[\"SVGColor\"]" gTypeSVGColor :: 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"
+--
+-- <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 => IsSVGComponentTransferFunctionElement o
+toSVGComponentTransferFunctionElement :: IsSVGComponentTransferFunctionElement o => o -> SVGComponentTransferFunctionElement
+toSVGComponentTransferFunctionElement = unsafeCastGObject . toGObject
+
+instance IsSVGComponentTransferFunctionElement SVGComponentTransferFunctionElement
+instance IsSVGElement SVGComponentTransferFunctionElement
+instance IsElement SVGComponentTransferFunctionElement
+instance IsNode SVGComponentTransferFunctionElement
+instance IsEventTarget SVGComponentTransferFunctionElement
+instance IsGObject SVGComponentTransferFunctionElement where
+  toGObject = GObject . unSVGComponentTransferFunctionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGComponentTransferFunctionElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGComponentTransferFunctionElement :: IsGObject obj => obj -> IO SVGComponentTransferFunctionElement
+castToSVGComponentTransferFunctionElement = castTo gTypeSVGComponentTransferFunctionElement "SVGComponentTransferFunctionElement"
+
+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"
+--
+-- <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 IsGObject SVGCursorElement where
+  toGObject = GObject . unSVGCursorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGCursorElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGCursorElement :: IsGObject obj => obj -> IO SVGCursorElement
+castToSVGCursorElement = castTo gTypeSVGCursorElement "SVGCursorElement"
+
+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"
+--
+-- <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 IsGObject SVGDefsElement where
+  toGObject = GObject . unSVGDefsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDefsElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDefsElement :: IsGObject obj => obj -> IO SVGDefsElement
+castToSVGDefsElement = castTo gTypeSVGDefsElement "SVGDefsElement"
+
+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"
+--
+-- <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 IsGObject SVGDescElement where
+  toGObject = GObject . unSVGDescElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDescElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDescElement :: IsGObject obj => obj -> IO SVGDescElement
+castToSVGDescElement = castTo gTypeSVGDescElement "SVGDescElement"
+
+foreign import javascript unsafe "window[\"SVGDescElement\"]" gTypeSVGDescElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGDocument".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Document"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument Mozilla SVGDocument documentation>
+newtype SVGDocument = SVGDocument { unSVGDocument :: JSVal }
+
+instance Eq (SVGDocument) where
+  (SVGDocument a) == (SVGDocument b) = js_eq a b
+
+instance PToJSVal SVGDocument where
+  pToJSVal = unSVGDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDocument where
+  pFromJSVal = SVGDocument
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDocument where
+  toJSVal = return . unSVGDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDocument where
+  fromJSVal = return . fmap SVGDocument . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDocument SVGDocument
+instance IsNode SVGDocument
+instance IsEventTarget SVGDocument
+instance IsGObject SVGDocument where
+  toGObject = GObject . unSVGDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDocument . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDocument :: IsGObject obj => obj -> IO SVGDocument
+castToSVGDocument = castTo gTypeSVGDocument "SVGDocument"
+
+foreign import javascript unsafe "window[\"SVGDocument\"]" gTypeSVGDocument :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <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 => IsSVGElement o
+toSVGElement :: IsSVGElement o => o -> SVGElement
+toSVGElement = unsafeCastGObject . toGObject
+
+instance IsSVGElement SVGElement
+instance IsElement SVGElement
+instance IsNode SVGElement
+instance IsEventTarget SVGElement
+instance IsGObject SVGElement where
+  toGObject = GObject . unSVGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGElement :: IsGObject obj => obj -> IO SVGElement
+castToSVGElement = castTo gTypeSVGElement "SVGElement"
+
+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"
+--
+-- <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 IsGObject SVGEllipseElement where
+  toGObject = GObject . unSVGEllipseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGEllipseElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGEllipseElement :: IsGObject obj => obj -> IO SVGEllipseElement
+castToSVGEllipseElement = castTo gTypeSVGEllipseElement "SVGEllipseElement"
+
+foreign import javascript unsafe "window[\"SVGEllipseElement\"]" gTypeSVGEllipseElement :: 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 #-}
+
+instance IsGObject SVGExternalResourcesRequired where
+  toGObject = GObject . unSVGExternalResourcesRequired
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGExternalResourcesRequired . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGExternalResourcesRequired :: IsGObject obj => obj -> IO SVGExternalResourcesRequired
+castToSVGExternalResourcesRequired = castTo gTypeSVGExternalResourcesRequired "SVGExternalResourcesRequired"
+
+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"
+--
+-- <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 IsGObject SVGFEBlendElement where
+  toGObject = GObject . unSVGFEBlendElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEBlendElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEBlendElement :: IsGObject obj => obj -> IO SVGFEBlendElement
+castToSVGFEBlendElement = castTo gTypeSVGFEBlendElement "SVGFEBlendElement"
+
+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"
+--
+-- <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 IsGObject SVGFEColorMatrixElement where
+  toGObject = GObject . unSVGFEColorMatrixElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEColorMatrixElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEColorMatrixElement :: IsGObject obj => obj -> IO SVGFEColorMatrixElement
+castToSVGFEColorMatrixElement = castTo gTypeSVGFEColorMatrixElement "SVGFEColorMatrixElement"
+
+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"
+--
+-- <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 IsGObject SVGFEComponentTransferElement where
+  toGObject = GObject . unSVGFEComponentTransferElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEComponentTransferElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEComponentTransferElement :: IsGObject obj => obj -> IO SVGFEComponentTransferElement
+castToSVGFEComponentTransferElement = castTo gTypeSVGFEComponentTransferElement "SVGFEComponentTransferElement"
+
+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"
+--
+-- <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 IsGObject SVGFECompositeElement where
+  toGObject = GObject . unSVGFECompositeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFECompositeElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFECompositeElement :: IsGObject obj => obj -> IO SVGFECompositeElement
+castToSVGFECompositeElement = castTo gTypeSVGFECompositeElement "SVGFECompositeElement"
+
+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"
+--
+-- <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 IsGObject SVGFEConvolveMatrixElement where
+  toGObject = GObject . unSVGFEConvolveMatrixElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEConvolveMatrixElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEConvolveMatrixElement :: IsGObject obj => obj -> IO SVGFEConvolveMatrixElement
+castToSVGFEConvolveMatrixElement = castTo gTypeSVGFEConvolveMatrixElement "SVGFEConvolveMatrixElement"
+
+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"
+--
+-- <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 IsGObject SVGFEDiffuseLightingElement where
+  toGObject = GObject . unSVGFEDiffuseLightingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDiffuseLightingElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDiffuseLightingElement :: IsGObject obj => obj -> IO SVGFEDiffuseLightingElement
+castToSVGFEDiffuseLightingElement = castTo gTypeSVGFEDiffuseLightingElement "SVGFEDiffuseLightingElement"
+
+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"
+--
+-- <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 IsGObject SVGFEDisplacementMapElement where
+  toGObject = GObject . unSVGFEDisplacementMapElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDisplacementMapElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDisplacementMapElement :: IsGObject obj => obj -> IO SVGFEDisplacementMapElement
+castToSVGFEDisplacementMapElement = castTo gTypeSVGFEDisplacementMapElement "SVGFEDisplacementMapElement"
+
+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"
+--
+-- <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 IsGObject SVGFEDistantLightElement where
+  toGObject = GObject . unSVGFEDistantLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDistantLightElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDistantLightElement :: IsGObject obj => obj -> IO SVGFEDistantLightElement
+castToSVGFEDistantLightElement = castTo gTypeSVGFEDistantLightElement "SVGFEDistantLightElement"
+
+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"
+--
+-- <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 IsGObject SVGFEDropShadowElement where
+  toGObject = GObject . unSVGFEDropShadowElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDropShadowElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDropShadowElement :: IsGObject obj => obj -> IO SVGFEDropShadowElement
+castToSVGFEDropShadowElement = castTo gTypeSVGFEDropShadowElement "SVGFEDropShadowElement"
+
+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"
+--
+-- <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 IsGObject SVGFEFloodElement where
+  toGObject = GObject . unSVGFEFloodElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFloodElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFloodElement :: IsGObject obj => obj -> IO SVGFEFloodElement
+castToSVGFEFloodElement = castTo gTypeSVGFEFloodElement "SVGFEFloodElement"
+
+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"
+--
+-- <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 IsGObject SVGFEFuncAElement where
+  toGObject = GObject . unSVGFEFuncAElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncAElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncAElement :: IsGObject obj => obj -> IO SVGFEFuncAElement
+castToSVGFEFuncAElement = castTo gTypeSVGFEFuncAElement "SVGFEFuncAElement"
+
+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"
+--
+-- <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 IsGObject SVGFEFuncBElement where
+  toGObject = GObject . unSVGFEFuncBElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncBElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncBElement :: IsGObject obj => obj -> IO SVGFEFuncBElement
+castToSVGFEFuncBElement = castTo gTypeSVGFEFuncBElement "SVGFEFuncBElement"
+
+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"
+--
+-- <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 IsGObject SVGFEFuncGElement where
+  toGObject = GObject . unSVGFEFuncGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncGElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncGElement :: IsGObject obj => obj -> IO SVGFEFuncGElement
+castToSVGFEFuncGElement = castTo gTypeSVGFEFuncGElement "SVGFEFuncGElement"
+
+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"
+--
+-- <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 IsGObject SVGFEFuncRElement where
+  toGObject = GObject . unSVGFEFuncRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncRElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncRElement :: IsGObject obj => obj -> IO SVGFEFuncRElement
+castToSVGFEFuncRElement = castTo gTypeSVGFEFuncRElement "SVGFEFuncRElement"
+
+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"
+--
+-- <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 IsGObject SVGFEGaussianBlurElement where
+  toGObject = GObject . unSVGFEGaussianBlurElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEGaussianBlurElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEGaussianBlurElement :: IsGObject obj => obj -> IO SVGFEGaussianBlurElement
+castToSVGFEGaussianBlurElement = castTo gTypeSVGFEGaussianBlurElement "SVGFEGaussianBlurElement"
+
+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"
+--
+-- <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 IsGObject SVGFEImageElement where
+  toGObject = GObject . unSVGFEImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEImageElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEImageElement :: IsGObject obj => obj -> IO SVGFEImageElement
+castToSVGFEImageElement = castTo gTypeSVGFEImageElement "SVGFEImageElement"
+
+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"
+--
+-- <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 IsGObject SVGFEMergeElement where
+  toGObject = GObject . unSVGFEMergeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMergeElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMergeElement :: IsGObject obj => obj -> IO SVGFEMergeElement
+castToSVGFEMergeElement = castTo gTypeSVGFEMergeElement "SVGFEMergeElement"
+
+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"
+--
+-- <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 IsGObject SVGFEMergeNodeElement where
+  toGObject = GObject . unSVGFEMergeNodeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMergeNodeElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMergeNodeElement :: IsGObject obj => obj -> IO SVGFEMergeNodeElement
+castToSVGFEMergeNodeElement = castTo gTypeSVGFEMergeNodeElement "SVGFEMergeNodeElement"
+
+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"
+--
+-- <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 IsGObject SVGFEMorphologyElement where
+  toGObject = GObject . unSVGFEMorphologyElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMorphologyElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMorphologyElement :: IsGObject obj => obj -> IO SVGFEMorphologyElement
+castToSVGFEMorphologyElement = castTo gTypeSVGFEMorphologyElement "SVGFEMorphologyElement"
+
+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"
+--
+-- <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 IsGObject SVGFEOffsetElement where
+  toGObject = GObject . unSVGFEOffsetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEOffsetElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEOffsetElement :: IsGObject obj => obj -> IO SVGFEOffsetElement
+castToSVGFEOffsetElement = castTo gTypeSVGFEOffsetElement "SVGFEOffsetElement"
+
+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"
+--
+-- <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 IsGObject SVGFEPointLightElement where
+  toGObject = GObject . unSVGFEPointLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEPointLightElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEPointLightElement :: IsGObject obj => obj -> IO SVGFEPointLightElement
+castToSVGFEPointLightElement = castTo gTypeSVGFEPointLightElement "SVGFEPointLightElement"
+
+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"
+--
+-- <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 IsGObject SVGFESpecularLightingElement where
+  toGObject = GObject . unSVGFESpecularLightingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFESpecularLightingElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFESpecularLightingElement :: IsGObject obj => obj -> IO SVGFESpecularLightingElement
+castToSVGFESpecularLightingElement = castTo gTypeSVGFESpecularLightingElement "SVGFESpecularLightingElement"
+
+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"
+--
+-- <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 IsGObject SVGFESpotLightElement where
+  toGObject = GObject . unSVGFESpotLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFESpotLightElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFESpotLightElement :: IsGObject obj => obj -> IO SVGFESpotLightElement
+castToSVGFESpotLightElement = castTo gTypeSVGFESpotLightElement "SVGFESpotLightElement"
+
+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"
+--
+-- <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 IsGObject SVGFETileElement where
+  toGObject = GObject . unSVGFETileElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFETileElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFETileElement :: IsGObject obj => obj -> IO SVGFETileElement
+castToSVGFETileElement = castTo gTypeSVGFETileElement "SVGFETileElement"
+
+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"
+--
+-- <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 IsGObject SVGFETurbulenceElement where
+  toGObject = GObject . unSVGFETurbulenceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFETurbulenceElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFETurbulenceElement :: IsGObject obj => obj -> IO SVGFETurbulenceElement
+castToSVGFETurbulenceElement = castTo gTypeSVGFETurbulenceElement "SVGFETurbulenceElement"
+
+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"
+--
+-- <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 IsGObject SVGFilterElement where
+  toGObject = GObject . unSVGFilterElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFilterElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFilterElement :: IsGObject obj => obj -> IO SVGFilterElement
+castToSVGFilterElement = castTo gTypeSVGFilterElement "SVGFilterElement"
+
+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 #-}
+
+instance IsGObject SVGFilterPrimitiveStandardAttributes where
+  toGObject = GObject . unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFilterPrimitiveStandardAttributes . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFilterPrimitiveStandardAttributes :: IsGObject obj => obj -> IO SVGFilterPrimitiveStandardAttributes
+castToSVGFilterPrimitiveStandardAttributes = castTo gTypeSVGFilterPrimitiveStandardAttributes "SVGFilterPrimitiveStandardAttributes"
+
+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 #-}
+
+instance IsGObject SVGFitToViewBox where
+  toGObject = GObject . unSVGFitToViewBox
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFitToViewBox . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFitToViewBox :: IsGObject obj => obj -> IO SVGFitToViewBox
+castToSVGFitToViewBox = castTo gTypeSVGFitToViewBox "SVGFitToViewBox"
+
+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"
+--
+-- <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 IsGObject SVGFontElement where
+  toGObject = GObject . unSVGFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontElement :: IsGObject obj => obj -> IO SVGFontElement
+castToSVGFontElement = castTo gTypeSVGFontElement "SVGFontElement"
+
+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"
+--
+-- <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 IsGObject SVGFontFaceElement where
+  toGObject = GObject . unSVGFontFaceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceElement :: IsGObject obj => obj -> IO SVGFontFaceElement
+castToSVGFontFaceElement = castTo gTypeSVGFontFaceElement "SVGFontFaceElement"
+
+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"
+--
+-- <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 IsGObject SVGFontFaceFormatElement where
+  toGObject = GObject . unSVGFontFaceFormatElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceFormatElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceFormatElement :: IsGObject obj => obj -> IO SVGFontFaceFormatElement
+castToSVGFontFaceFormatElement = castTo gTypeSVGFontFaceFormatElement "SVGFontFaceFormatElement"
+
+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"
+--
+-- <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 IsGObject SVGFontFaceNameElement where
+  toGObject = GObject . unSVGFontFaceNameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceNameElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceNameElement :: IsGObject obj => obj -> IO SVGFontFaceNameElement
+castToSVGFontFaceNameElement = castTo gTypeSVGFontFaceNameElement "SVGFontFaceNameElement"
+
+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"
+--
+-- <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 IsGObject SVGFontFaceSrcElement where
+  toGObject = GObject . unSVGFontFaceSrcElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceSrcElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceSrcElement :: IsGObject obj => obj -> IO SVGFontFaceSrcElement
+castToSVGFontFaceSrcElement = castTo gTypeSVGFontFaceSrcElement "SVGFontFaceSrcElement"
+
+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"
+--
+-- <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 IsGObject SVGFontFaceUriElement where
+  toGObject = GObject . unSVGFontFaceUriElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceUriElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceUriElement :: IsGObject obj => obj -> IO SVGFontFaceUriElement
+castToSVGFontFaceUriElement = castTo gTypeSVGFontFaceUriElement "SVGFontFaceUriElement"
+
+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"
+--
+-- <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 IsGObject SVGForeignObjectElement where
+  toGObject = GObject . unSVGForeignObjectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGForeignObjectElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGForeignObjectElement :: IsGObject obj => obj -> IO SVGForeignObjectElement
+castToSVGForeignObjectElement = castTo gTypeSVGForeignObjectElement "SVGForeignObjectElement"
+
+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"
+--
+-- <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 IsGObject SVGGElement where
+  toGObject = GObject . unSVGGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGElement :: IsGObject obj => obj -> IO SVGGElement
+castToSVGGElement = castTo gTypeSVGGElement "SVGGElement"
+
+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"
+--
+-- <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 IsGObject SVGGlyphElement where
+  toGObject = GObject . unSVGGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGlyphElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGlyphElement :: IsGObject obj => obj -> IO SVGGlyphElement
+castToSVGGlyphElement = castTo gTypeSVGGlyphElement "SVGGlyphElement"
+
+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"
+--
+-- <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 IsGObject SVGGlyphRefElement where
+  toGObject = GObject . unSVGGlyphRefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGlyphRefElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGlyphRefElement :: IsGObject obj => obj -> IO SVGGlyphRefElement
+castToSVGGlyphRefElement = castTo gTypeSVGGlyphRefElement "SVGGlyphRefElement"
+
+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"
+--
+-- <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 => IsSVGGradientElement o
+toSVGGradientElement :: IsSVGGradientElement o => o -> SVGGradientElement
+toSVGGradientElement = unsafeCastGObject . toGObject
+
+instance IsSVGGradientElement SVGGradientElement
+instance IsSVGElement SVGGradientElement
+instance IsElement SVGGradientElement
+instance IsNode SVGGradientElement
+instance IsEventTarget SVGGradientElement
+instance IsGObject SVGGradientElement where
+  toGObject = GObject . unSVGGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGradientElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGradientElement :: IsGObject obj => obj -> IO SVGGradientElement
+castToSVGGradientElement = castTo gTypeSVGGradientElement "SVGGradientElement"
+
+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"
+--
+-- <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 => IsSVGGraphicsElement o
+toSVGGraphicsElement :: IsSVGGraphicsElement o => o -> SVGGraphicsElement
+toSVGGraphicsElement = unsafeCastGObject . toGObject
+
+instance IsSVGGraphicsElement SVGGraphicsElement
+instance IsSVGElement SVGGraphicsElement
+instance IsElement SVGGraphicsElement
+instance IsNode SVGGraphicsElement
+instance IsEventTarget SVGGraphicsElement
+instance IsGObject SVGGraphicsElement where
+  toGObject = GObject . unSVGGraphicsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGraphicsElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGraphicsElement :: IsGObject obj => obj -> IO SVGGraphicsElement
+castToSVGGraphicsElement = castTo gTypeSVGGraphicsElement "SVGGraphicsElement"
+
+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"
+--
+-- <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 IsGObject SVGHKernElement where
+  toGObject = GObject . unSVGHKernElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGHKernElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGHKernElement :: IsGObject obj => obj -> IO SVGHKernElement
+castToSVGHKernElement = castTo gTypeSVGHKernElement "SVGHKernElement"
+
+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"
+--
+-- <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 IsGObject SVGImageElement where
+  toGObject = GObject . unSVGImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGImageElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGImageElement :: IsGObject obj => obj -> IO SVGImageElement
+castToSVGImageElement = castTo gTypeSVGImageElement "SVGImageElement"
+
+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
+  toGObject = GObject . unSVGLength
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLength . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLength :: IsGObject obj => obj -> IO SVGLength
+castToSVGLength = castTo gTypeSVGLength "SVGLength"
+
+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
+  toGObject = GObject . unSVGLengthList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLengthList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLengthList :: IsGObject obj => obj -> IO SVGLengthList
+castToSVGLengthList = castTo gTypeSVGLengthList "SVGLengthList"
+
+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"
+--
+-- <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 IsGObject SVGLineElement where
+  toGObject = GObject . unSVGLineElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLineElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLineElement :: IsGObject obj => obj -> IO SVGLineElement
+castToSVGLineElement = castTo gTypeSVGLineElement "SVGLineElement"
+
+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"
+--
+-- <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 IsGObject SVGLinearGradientElement where
+  toGObject = GObject . unSVGLinearGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLinearGradientElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLinearGradientElement :: IsGObject obj => obj -> IO SVGLinearGradientElement
+castToSVGLinearGradientElement = castTo gTypeSVGLinearGradientElement "SVGLinearGradientElement"
+
+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"
+--
+-- <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 IsGObject SVGMPathElement where
+  toGObject = GObject . unSVGMPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMPathElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMPathElement :: IsGObject obj => obj -> IO SVGMPathElement
+castToSVGMPathElement = castTo gTypeSVGMPathElement "SVGMPathElement"
+
+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"
+--
+-- <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 IsGObject SVGMarkerElement where
+  toGObject = GObject . unSVGMarkerElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMarkerElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMarkerElement :: IsGObject obj => obj -> IO SVGMarkerElement
+castToSVGMarkerElement = castTo gTypeSVGMarkerElement "SVGMarkerElement"
+
+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"
+--
+-- <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 IsGObject SVGMaskElement where
+  toGObject = GObject . unSVGMaskElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMaskElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMaskElement :: IsGObject obj => obj -> IO SVGMaskElement
+castToSVGMaskElement = castTo gTypeSVGMaskElement "SVGMaskElement"
+
+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
+  toGObject = GObject . unSVGMatrix
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMatrix . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMatrix :: IsGObject obj => obj -> IO SVGMatrix
+castToSVGMatrix = castTo gTypeSVGMatrix "SVGMatrix"
+
+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"
+--
+-- <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 IsGObject SVGMetadataElement where
+  toGObject = GObject . unSVGMetadataElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMetadataElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMetadataElement :: IsGObject obj => obj -> IO SVGMetadataElement
+castToSVGMetadataElement = castTo gTypeSVGMetadataElement "SVGMetadataElement"
+
+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"
+--
+-- <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 IsGObject SVGMissingGlyphElement where
+  toGObject = GObject . unSVGMissingGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMissingGlyphElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMissingGlyphElement :: IsGObject obj => obj -> IO SVGMissingGlyphElement
+castToSVGMissingGlyphElement = castTo gTypeSVGMissingGlyphElement "SVGMissingGlyphElement"
+
+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
+  toGObject = GObject . unSVGNumber
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGNumber . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGNumber :: IsGObject obj => obj -> IO SVGNumber
+castToSVGNumber = castTo gTypeSVGNumber "SVGNumber"
+
+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
+  toGObject = GObject . unSVGNumberList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGNumberList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGNumberList :: IsGObject obj => obj -> IO SVGNumberList
+castToSVGNumberList = castTo gTypeSVGNumberList "SVGNumberList"
+
+foreign import javascript unsafe "window[\"SVGNumberList\"]" gTypeSVGNumberList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPaint".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGColor"
+--     * "GHCJS.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint Mozilla SVGPaint documentation>
+newtype SVGPaint = SVGPaint { unSVGPaint :: JSVal }
+
+instance Eq (SVGPaint) where
+  (SVGPaint a) == (SVGPaint b) = js_eq a b
+
+instance PToJSVal SVGPaint where
+  pToJSVal = unSVGPaint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPaint where
+  pFromJSVal = SVGPaint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPaint where
+  toJSVal = return . unSVGPaint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPaint where
+  fromJSVal = return . fmap SVGPaint . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGColor SVGPaint
+instance IsCSSValue SVGPaint
+instance IsGObject SVGPaint where
+  toGObject = GObject . unSVGPaint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPaint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPaint :: IsGObject obj => obj -> IO SVGPaint
+castToSVGPaint = castTo gTypeSVGPaint "SVGPaint"
+
+foreign import javascript unsafe "window[\"SVGPaint\"]" gTypeSVGPaint :: 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"
+--
+-- <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 IsGObject SVGPathElement where
+  toGObject = GObject . unSVGPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathElement :: IsGObject obj => obj -> IO SVGPathElement
+castToSVGPathElement = castTo gTypeSVGPathElement "SVGPathElement"
+
+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 = unsafeCastGObject . toGObject
+
+instance IsSVGPathSeg SVGPathSeg
+instance IsGObject SVGPathSeg where
+  toGObject = GObject . unSVGPathSeg
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSeg . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSeg :: IsGObject obj => obj -> IO SVGPathSeg
+castToSVGPathSeg = castTo gTypeSVGPathSeg "SVGPathSeg"
+
+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
+  toGObject = GObject . unSVGPathSegArcAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegArcAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegArcAbs :: IsGObject obj => obj -> IO SVGPathSegArcAbs
+castToSVGPathSegArcAbs = castTo gTypeSVGPathSegArcAbs "SVGPathSegArcAbs"
+
+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
+  toGObject = GObject . unSVGPathSegArcRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegArcRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegArcRel :: IsGObject obj => obj -> IO SVGPathSegArcRel
+castToSVGPathSegArcRel = castTo gTypeSVGPathSegArcRel "SVGPathSegArcRel"
+
+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
+  toGObject = GObject . unSVGPathSegClosePath
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegClosePath . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegClosePath :: IsGObject obj => obj -> IO SVGPathSegClosePath
+castToSVGPathSegClosePath = castTo gTypeSVGPathSegClosePath "SVGPathSegClosePath"
+
+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
+  toGObject = GObject . unSVGPathSegCurvetoCubicAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicAbs :: IsGObject obj => obj -> IO SVGPathSegCurvetoCubicAbs
+castToSVGPathSegCurvetoCubicAbs = castTo gTypeSVGPathSegCurvetoCubicAbs "SVGPathSegCurvetoCubicAbs"
+
+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
+  toGObject = GObject . unSVGPathSegCurvetoCubicRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicRel :: IsGObject obj => obj -> IO SVGPathSegCurvetoCubicRel
+castToSVGPathSegCurvetoCubicRel = castTo gTypeSVGPathSegCurvetoCubicRel "SVGPathSegCurvetoCubicRel"
+
+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
+  toGObject = GObject . unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicSmoothAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicSmoothAbs :: IsGObject obj => obj -> IO SVGPathSegCurvetoCubicSmoothAbs
+castToSVGPathSegCurvetoCubicSmoothAbs = castTo gTypeSVGPathSegCurvetoCubicSmoothAbs "SVGPathSegCurvetoCubicSmoothAbs"
+
+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
+  toGObject = GObject . unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicSmoothRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicSmoothRel :: IsGObject obj => obj -> IO SVGPathSegCurvetoCubicSmoothRel
+castToSVGPathSegCurvetoCubicSmoothRel = castTo gTypeSVGPathSegCurvetoCubicSmoothRel "SVGPathSegCurvetoCubicSmoothRel"
+
+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
+  toGObject = GObject . unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticAbs :: IsGObject obj => obj -> IO SVGPathSegCurvetoQuadraticAbs
+castToSVGPathSegCurvetoQuadraticAbs = castTo gTypeSVGPathSegCurvetoQuadraticAbs "SVGPathSegCurvetoQuadraticAbs"
+
+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
+  toGObject = GObject . unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticRel :: IsGObject obj => obj -> IO SVGPathSegCurvetoQuadraticRel
+castToSVGPathSegCurvetoQuadraticRel = castTo gTypeSVGPathSegCurvetoQuadraticRel "SVGPathSegCurvetoQuadraticRel"
+
+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
+  toGObject = GObject . unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticSmoothAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticSmoothAbs :: IsGObject obj => obj -> IO SVGPathSegCurvetoQuadraticSmoothAbs
+castToSVGPathSegCurvetoQuadraticSmoothAbs = castTo gTypeSVGPathSegCurvetoQuadraticSmoothAbs "SVGPathSegCurvetoQuadraticSmoothAbs"
+
+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
+  toGObject = GObject . unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticSmoothRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticSmoothRel :: IsGObject obj => obj -> IO SVGPathSegCurvetoQuadraticSmoothRel
+castToSVGPathSegCurvetoQuadraticSmoothRel = castTo gTypeSVGPathSegCurvetoQuadraticSmoothRel "SVGPathSegCurvetoQuadraticSmoothRel"
+
+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
+  toGObject = GObject . unSVGPathSegLinetoAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoAbs :: IsGObject obj => obj -> IO SVGPathSegLinetoAbs
+castToSVGPathSegLinetoAbs = castTo gTypeSVGPathSegLinetoAbs "SVGPathSegLinetoAbs"
+
+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
+  toGObject = GObject . unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoHorizontalAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoHorizontalAbs :: IsGObject obj => obj -> IO SVGPathSegLinetoHorizontalAbs
+castToSVGPathSegLinetoHorizontalAbs = castTo gTypeSVGPathSegLinetoHorizontalAbs "SVGPathSegLinetoHorizontalAbs"
+
+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
+  toGObject = GObject . unSVGPathSegLinetoHorizontalRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoHorizontalRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoHorizontalRel :: IsGObject obj => obj -> IO SVGPathSegLinetoHorizontalRel
+castToSVGPathSegLinetoHorizontalRel = castTo gTypeSVGPathSegLinetoHorizontalRel "SVGPathSegLinetoHorizontalRel"
+
+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
+  toGObject = GObject . unSVGPathSegLinetoRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoRel :: IsGObject obj => obj -> IO SVGPathSegLinetoRel
+castToSVGPathSegLinetoRel = castTo gTypeSVGPathSegLinetoRel "SVGPathSegLinetoRel"
+
+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
+  toGObject = GObject . unSVGPathSegLinetoVerticalAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoVerticalAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoVerticalAbs :: IsGObject obj => obj -> IO SVGPathSegLinetoVerticalAbs
+castToSVGPathSegLinetoVerticalAbs = castTo gTypeSVGPathSegLinetoVerticalAbs "SVGPathSegLinetoVerticalAbs"
+
+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
+  toGObject = GObject . unSVGPathSegLinetoVerticalRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoVerticalRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoVerticalRel :: IsGObject obj => obj -> IO SVGPathSegLinetoVerticalRel
+castToSVGPathSegLinetoVerticalRel = castTo gTypeSVGPathSegLinetoVerticalRel "SVGPathSegLinetoVerticalRel"
+
+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
+  toGObject = GObject . unSVGPathSegList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegList :: IsGObject obj => obj -> IO SVGPathSegList
+castToSVGPathSegList = castTo gTypeSVGPathSegList "SVGPathSegList"
+
+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
+  toGObject = GObject . unSVGPathSegMovetoAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegMovetoAbs . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegMovetoAbs :: IsGObject obj => obj -> IO SVGPathSegMovetoAbs
+castToSVGPathSegMovetoAbs = castTo gTypeSVGPathSegMovetoAbs "SVGPathSegMovetoAbs"
+
+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
+  toGObject = GObject . unSVGPathSegMovetoRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegMovetoRel . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegMovetoRel :: IsGObject obj => obj -> IO SVGPathSegMovetoRel
+castToSVGPathSegMovetoRel = castTo gTypeSVGPathSegMovetoRel "SVGPathSegMovetoRel"
+
+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"
+--
+-- <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 IsGObject SVGPatternElement where
+  toGObject = GObject . unSVGPatternElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPatternElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPatternElement :: IsGObject obj => obj -> IO SVGPatternElement
+castToSVGPatternElement = castTo gTypeSVGPatternElement "SVGPatternElement"
+
+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
+  toGObject = GObject . unSVGPoint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPoint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPoint :: IsGObject obj => obj -> IO SVGPoint
+castToSVGPoint = castTo gTypeSVGPoint "SVGPoint"
+
+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
+  toGObject = GObject . unSVGPointList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPointList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPointList :: IsGObject obj => obj -> IO SVGPointList
+castToSVGPointList = castTo gTypeSVGPointList "SVGPointList"
+
+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"
+--
+-- <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 IsGObject SVGPolygonElement where
+  toGObject = GObject . unSVGPolygonElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPolygonElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPolygonElement :: IsGObject obj => obj -> IO SVGPolygonElement
+castToSVGPolygonElement = castTo gTypeSVGPolygonElement "SVGPolygonElement"
+
+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"
+--
+-- <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 IsGObject SVGPolylineElement where
+  toGObject = GObject . unSVGPolylineElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPolylineElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPolylineElement :: IsGObject obj => obj -> IO SVGPolylineElement
+castToSVGPolylineElement = castTo gTypeSVGPolylineElement "SVGPolylineElement"
+
+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
+  toGObject = GObject . unSVGPreserveAspectRatio
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPreserveAspectRatio . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPreserveAspectRatio :: IsGObject obj => obj -> IO SVGPreserveAspectRatio
+castToSVGPreserveAspectRatio = castTo gTypeSVGPreserveAspectRatio "SVGPreserveAspectRatio"
+
+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"
+--
+-- <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 IsGObject SVGRadialGradientElement where
+  toGObject = GObject . unSVGRadialGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRadialGradientElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRadialGradientElement :: IsGObject obj => obj -> IO SVGRadialGradientElement
+castToSVGRadialGradientElement = castTo gTypeSVGRadialGradientElement "SVGRadialGradientElement"
+
+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
+  toGObject = GObject . unSVGRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRect . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRect :: IsGObject obj => obj -> IO SVGRect
+castToSVGRect = castTo gTypeSVGRect "SVGRect"
+
+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"
+--
+-- <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 IsGObject SVGRectElement where
+  toGObject = GObject . unSVGRectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRectElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRectElement :: IsGObject obj => obj -> IO SVGRectElement
+castToSVGRectElement = castTo gTypeSVGRectElement "SVGRectElement"
+
+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
+  toGObject = GObject . unSVGRenderingIntent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRenderingIntent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRenderingIntent :: IsGObject obj => obj -> IO SVGRenderingIntent
+castToSVGRenderingIntent = castTo gTypeSVGRenderingIntent "SVGRenderingIntent"
+
+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"
+--
+-- <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 IsGObject SVGSVGElement where
+  toGObject = GObject . unSVGSVGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSVGElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSVGElement :: IsGObject obj => obj -> IO SVGSVGElement
+castToSVGSVGElement = castTo gTypeSVGSVGElement "SVGSVGElement"
+
+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"
+--
+-- <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 IsGObject SVGScriptElement where
+  toGObject = GObject . unSVGScriptElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGScriptElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGScriptElement :: IsGObject obj => obj -> IO SVGScriptElement
+castToSVGScriptElement = castTo gTypeSVGScriptElement "SVGScriptElement"
+
+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"
+--
+-- <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 IsGObject SVGSetElement where
+  toGObject = GObject . unSVGSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSetElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSetElement :: IsGObject obj => obj -> IO SVGSetElement
+castToSVGSetElement = castTo gTypeSVGSetElement "SVGSetElement"
+
+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"
+--
+-- <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 IsGObject SVGStopElement where
+  toGObject = GObject . unSVGStopElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStopElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStopElement :: IsGObject obj => obj -> IO SVGStopElement
+castToSVGStopElement = castTo gTypeSVGStopElement "SVGStopElement"
+
+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
+  toGObject = GObject . unSVGStringList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStringList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStringList :: IsGObject obj => obj -> IO SVGStringList
+castToSVGStringList = castTo gTypeSVGStringList "SVGStringList"
+
+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"
+--
+-- <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 IsGObject SVGStyleElement where
+  toGObject = GObject . unSVGStyleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStyleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStyleElement :: IsGObject obj => obj -> IO SVGStyleElement
+castToSVGStyleElement = castTo gTypeSVGStyleElement "SVGStyleElement"
+
+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"
+--
+-- <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 IsGObject SVGSwitchElement where
+  toGObject = GObject . unSVGSwitchElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSwitchElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSwitchElement :: IsGObject obj => obj -> IO SVGSwitchElement
+castToSVGSwitchElement = castTo gTypeSVGSwitchElement "SVGSwitchElement"
+
+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"
+--
+-- <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 IsGObject SVGSymbolElement where
+  toGObject = GObject . unSVGSymbolElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSymbolElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSymbolElement :: IsGObject obj => obj -> IO SVGSymbolElement
+castToSVGSymbolElement = castTo gTypeSVGSymbolElement "SVGSymbolElement"
+
+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"
+--
+-- <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 IsGObject SVGTRefElement where
+  toGObject = GObject . unSVGTRefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTRefElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTRefElement :: IsGObject obj => obj -> IO SVGTRefElement
+castToSVGTRefElement = castTo gTypeSVGTRefElement "SVGTRefElement"
+
+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"
+--
+-- <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 IsGObject SVGTSpanElement where
+  toGObject = GObject . unSVGTSpanElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTSpanElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTSpanElement :: IsGObject obj => obj -> IO SVGTSpanElement
+castToSVGTSpanElement = castTo gTypeSVGTSpanElement "SVGTSpanElement"
+
+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 #-}
+
+instance IsGObject SVGTests where
+  toGObject = GObject . unSVGTests
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTests . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTests :: IsGObject obj => obj -> IO SVGTests
+castToSVGTests = castTo gTypeSVGTests "SVGTests"
+
+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"
+--
+-- <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 => IsSVGTextContentElement o
+toSVGTextContentElement :: IsSVGTextContentElement o => o -> SVGTextContentElement
+toSVGTextContentElement = unsafeCastGObject . toGObject
+
+instance IsSVGTextContentElement SVGTextContentElement
+instance IsSVGGraphicsElement SVGTextContentElement
+instance IsSVGElement SVGTextContentElement
+instance IsElement SVGTextContentElement
+instance IsNode SVGTextContentElement
+instance IsEventTarget SVGTextContentElement
+instance IsGObject SVGTextContentElement where
+  toGObject = GObject . unSVGTextContentElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextContentElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextContentElement :: IsGObject obj => obj -> IO SVGTextContentElement
+castToSVGTextContentElement = castTo gTypeSVGTextContentElement "SVGTextContentElement"
+
+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"
+--
+-- <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 IsGObject SVGTextElement where
+  toGObject = GObject . unSVGTextElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextElement :: IsGObject obj => obj -> IO SVGTextElement
+castToSVGTextElement = castTo gTypeSVGTextElement "SVGTextElement"
+
+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"
+--
+-- <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 IsGObject SVGTextPathElement where
+  toGObject = GObject . unSVGTextPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextPathElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextPathElement :: IsGObject obj => obj -> IO SVGTextPathElement
+castToSVGTextPathElement = castTo gTypeSVGTextPathElement "SVGTextPathElement"
+
+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"
+--
+-- <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 => IsSVGTextPositioningElement o
+toSVGTextPositioningElement :: IsSVGTextPositioningElement o => o -> SVGTextPositioningElement
+toSVGTextPositioningElement = unsafeCastGObject . toGObject
+
+instance IsSVGTextPositioningElement SVGTextPositioningElement
+instance IsSVGTextContentElement SVGTextPositioningElement
+instance IsSVGGraphicsElement SVGTextPositioningElement
+instance IsSVGElement SVGTextPositioningElement
+instance IsElement SVGTextPositioningElement
+instance IsNode SVGTextPositioningElement
+instance IsEventTarget SVGTextPositioningElement
+instance IsGObject SVGTextPositioningElement where
+  toGObject = GObject . unSVGTextPositioningElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextPositioningElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextPositioningElement :: IsGObject obj => obj -> IO SVGTextPositioningElement
+castToSVGTextPositioningElement = castTo gTypeSVGTextPositioningElement "SVGTextPositioningElement"
+
+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"
+--
+-- <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 IsGObject SVGTitleElement where
+  toGObject = GObject . unSVGTitleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTitleElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTitleElement :: IsGObject obj => obj -> IO SVGTitleElement
+castToSVGTitleElement = castTo gTypeSVGTitleElement "SVGTitleElement"
+
+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
+  toGObject = GObject . unSVGTransform
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTransform . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTransform :: IsGObject obj => obj -> IO SVGTransform
+castToSVGTransform = castTo gTypeSVGTransform "SVGTransform"
+
+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
+  toGObject = GObject . unSVGTransformList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTransformList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTransformList :: IsGObject obj => obj -> IO SVGTransformList
+castToSVGTransformList = castTo gTypeSVGTransformList "SVGTransformList"
+
+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 #-}
+
+instance IsGObject SVGURIReference where
+  toGObject = GObject . unSVGURIReference
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGURIReference . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGURIReference :: IsGObject obj => obj -> IO SVGURIReference
+castToSVGURIReference = castTo gTypeSVGURIReference "SVGURIReference"
+
+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
+  toGObject = GObject . unSVGUnitTypes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGUnitTypes . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGUnitTypes :: IsGObject obj => obj -> IO SVGUnitTypes
+castToSVGUnitTypes = castTo gTypeSVGUnitTypes "SVGUnitTypes"
+
+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"
+--
+-- <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 IsGObject SVGUseElement where
+  toGObject = GObject . unSVGUseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGUseElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGUseElement :: IsGObject obj => obj -> IO SVGUseElement
+castToSVGUseElement = castTo gTypeSVGUseElement "SVGUseElement"
+
+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"
+--
+-- <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 IsGObject SVGVKernElement where
+  toGObject = GObject . unSVGVKernElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGVKernElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGVKernElement :: IsGObject obj => obj -> IO SVGVKernElement
+castToSVGVKernElement = castTo gTypeSVGVKernElement "SVGVKernElement"
+
+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"
+--
+-- <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 IsGObject SVGViewElement where
+  toGObject = GObject . unSVGViewElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGViewElement . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGViewElement :: IsGObject obj => obj -> IO SVGViewElement
+castToSVGViewElement = castTo gTypeSVGViewElement "SVGViewElement"
+
+foreign import javascript unsafe "window[\"SVGViewElement\"]" gTypeSVGViewElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGViewSpec".
+--
+-- <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 IsGObject SVGViewSpec where
+  toGObject = GObject . unSVGViewSpec
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGViewSpec . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGViewSpec :: IsGObject obj => obj -> IO SVGViewSpec
+castToSVGViewSpec = castTo gTypeSVGViewSpec "SVGViewSpec"
+
+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 #-}
+
+instance IsGObject SVGZoomAndPan where
+  toGObject = GObject . unSVGZoomAndPan
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGZoomAndPan . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGZoomAndPan :: IsGObject obj => obj -> IO SVGZoomAndPan
+castToSVGZoomAndPan = castTo gTypeSVGZoomAndPan "SVGZoomAndPan"
+
+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
+  toGObject = GObject . unSVGZoomEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGZoomEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGZoomEvent :: IsGObject obj => obj -> IO SVGZoomEvent
+castToSVGZoomEvent = castTo gTypeSVGZoomEvent "SVGZoomEvent"
+
+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
+  toGObject = GObject . unScreen
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Screen . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScreen :: IsGObject obj => obj -> IO Screen
+castToScreen = castTo gTypeScreen "Screen"
+
+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
+  toGObject = GObject . unScriptProcessorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProcessorNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProcessorNode :: IsGObject obj => obj -> IO ScriptProcessorNode
+castToScriptProcessorNode = castTo gTypeScriptProcessorNode "ScriptProcessorNode"
+
+foreign import javascript unsafe "window[\"ScriptProcessorNode\"]" gTypeScriptProcessorNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ScriptProfile".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile Mozilla ScriptProfile documentation>
+newtype ScriptProfile = ScriptProfile { unScriptProfile :: JSVal }
+
+instance Eq (ScriptProfile) where
+  (ScriptProfile a) == (ScriptProfile b) = js_eq a b
+
+instance PToJSVal ScriptProfile where
+  pToJSVal = unScriptProfile
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProfile where
+  pFromJSVal = ScriptProfile
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProfile where
+  toJSVal = return . unScriptProfile
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProfile where
+  fromJSVal = return . fmap ScriptProfile . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ScriptProfile where
+  toGObject = GObject . unScriptProfile
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProfile . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProfile :: IsGObject obj => obj -> IO ScriptProfile
+castToScriptProfile = castTo gTypeScriptProfile "ScriptProfile"
+
+foreign import javascript unsafe "window[\"ScriptProfile\"]" gTypeScriptProfile :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ScriptProfileNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode Mozilla ScriptProfileNode documentation>
+newtype ScriptProfileNode = ScriptProfileNode { unScriptProfileNode :: JSVal }
+
+instance Eq (ScriptProfileNode) where
+  (ScriptProfileNode a) == (ScriptProfileNode b) = js_eq a b
+
+instance PToJSVal ScriptProfileNode where
+  pToJSVal = unScriptProfileNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProfileNode where
+  pFromJSVal = ScriptProfileNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProfileNode where
+  toJSVal = return . unScriptProfileNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProfileNode where
+  fromJSVal = return . fmap ScriptProfileNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ScriptProfileNode where
+  toGObject = GObject . unScriptProfileNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProfileNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProfileNode :: IsGObject obj => obj -> IO ScriptProfileNode
+castToScriptProfileNode = castTo gTypeScriptProfileNode "ScriptProfileNode"
+
+foreign import javascript unsafe "window[\"ScriptProfileNode\"]" gTypeScriptProfileNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SecurityPolicy".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy Mozilla SecurityPolicy documentation>
+newtype SecurityPolicy = SecurityPolicy { unSecurityPolicy :: JSVal }
+
+instance Eq (SecurityPolicy) where
+  (SecurityPolicy a) == (SecurityPolicy b) = js_eq a b
+
+instance PToJSVal SecurityPolicy where
+  pToJSVal = unSecurityPolicy
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SecurityPolicy where
+  pFromJSVal = SecurityPolicy
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SecurityPolicy where
+  toJSVal = return . unSecurityPolicy
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SecurityPolicy where
+  fromJSVal = return . fmap SecurityPolicy . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SecurityPolicy where
+  toGObject = GObject . unSecurityPolicy
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SecurityPolicy . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSecurityPolicy :: IsGObject obj => obj -> IO SecurityPolicy
+castToSecurityPolicy = castTo gTypeSecurityPolicy "SecurityPolicy"
+
+foreign import javascript unsafe "window[\"SecurityPolicy\"]" gTypeSecurityPolicy :: 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
+  toGObject = GObject . unSecurityPolicyViolationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SecurityPolicyViolationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSecurityPolicyViolationEvent :: IsGObject obj => obj -> IO SecurityPolicyViolationEvent
+castToSecurityPolicyViolationEvent = castTo gTypeSecurityPolicyViolationEvent "SecurityPolicyViolationEvent"
+
+foreign import javascript unsafe "window[\"SecurityPolicyViolationEvent\"]" gTypeSecurityPolicyViolationEvent :: 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
+  toGObject = GObject . unSelection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Selection . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSelection :: IsGObject obj => obj -> IO Selection
+castToSelection = castTo gTypeSelection "Selection"
+
+foreign import javascript unsafe "window[\"Selection\"]" gTypeSelection :: 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
+  toGObject = GObject . unSourceBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceBuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceBuffer :: IsGObject obj => obj -> IO SourceBuffer
+castToSourceBuffer = castTo gTypeSourceBuffer "SourceBuffer"
+
+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
+  toGObject = GObject . unSourceBufferList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceBufferList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceBufferList :: IsGObject obj => obj -> IO SourceBufferList
+castToSourceBufferList = castTo gTypeSourceBufferList "SourceBufferList"
+
+foreign import javascript unsafe "window[\"SourceBufferList\"]" gTypeSourceBufferList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SourceInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo Mozilla SourceInfo documentation>
+newtype SourceInfo = SourceInfo { unSourceInfo :: JSVal }
+
+instance Eq (SourceInfo) where
+  (SourceInfo a) == (SourceInfo b) = js_eq a b
+
+instance PToJSVal SourceInfo where
+  pToJSVal = unSourceInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceInfo where
+  pFromJSVal = SourceInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceInfo where
+  toJSVal = return . unSourceInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceInfo where
+  fromJSVal = return . fmap SourceInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SourceInfo where
+  toGObject = GObject . unSourceInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceInfo :: IsGObject obj => obj -> IO SourceInfo
+castToSourceInfo = castTo gTypeSourceInfo "SourceInfo"
+
+foreign import javascript unsafe "window[\"SourceInfo\"]" gTypeSourceInfo :: 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
+  toGObject = GObject . unSpeechSynthesis
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesis . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesis :: IsGObject obj => obj -> IO SpeechSynthesis
+castToSpeechSynthesis = castTo gTypeSpeechSynthesis "SpeechSynthesis"
+
+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
+  toGObject = GObject . unSpeechSynthesisEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisEvent :: IsGObject obj => obj -> IO SpeechSynthesisEvent
+castToSpeechSynthesisEvent = castTo gTypeSpeechSynthesisEvent "SpeechSynthesisEvent"
+
+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
+  toGObject = GObject . unSpeechSynthesisUtterance
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisUtterance . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisUtterance :: IsGObject obj => obj -> IO SpeechSynthesisUtterance
+castToSpeechSynthesisUtterance = castTo gTypeSpeechSynthesisUtterance "SpeechSynthesisUtterance"
+
+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
+  toGObject = GObject . unSpeechSynthesisVoice
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisVoice . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisVoice :: IsGObject obj => obj -> IO SpeechSynthesisVoice
+castToSpeechSynthesisVoice = castTo gTypeSpeechSynthesisVoice "SpeechSynthesisVoice"
+
+foreign import javascript unsafe "window[\"SpeechSynthesisVoice\"]" gTypeSpeechSynthesisVoice :: 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
+  toGObject = GObject . unStorage
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Storage . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorage :: IsGObject obj => obj -> IO Storage
+castToStorage = castTo gTypeStorage "Storage"
+
+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
+  toGObject = GObject . unStorageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageEvent :: IsGObject obj => obj -> IO StorageEvent
+castToStorageEvent = castTo gTypeStorageEvent "StorageEvent"
+
+foreign import javascript unsafe "window[\"StorageEvent\"]" gTypeStorageEvent :: 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
+  toGObject = GObject . unStorageInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageInfo :: IsGObject obj => obj -> IO StorageInfo
+castToStorageInfo = castTo gTypeStorageInfo "StorageInfo"
+
+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
+  toGObject = GObject . unStorageQuota
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageQuota . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageQuota :: IsGObject obj => obj -> IO StorageQuota
+castToStorageQuota = castTo gTypeStorageQuota "StorageQuota"
+
+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
+  toGObject = GObject . unStyleMedia
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleMedia . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleMedia :: IsGObject obj => obj -> IO StyleMedia
+castToStyleMedia = castTo gTypeStyleMedia "StyleMedia"
+
+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 = unsafeCastGObject . toGObject
+
+instance IsStyleSheet StyleSheet
+instance IsGObject StyleSheet where
+  toGObject = GObject . unStyleSheet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleSheet . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleSheet :: IsGObject obj => obj -> IO StyleSheet
+castToStyleSheet = castTo gTypeStyleSheet "StyleSheet"
+
+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
+  toGObject = GObject . unStyleSheetList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleSheetList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleSheetList :: IsGObject obj => obj -> IO StyleSheetList
+castToStyleSheetList = castTo gTypeStyleSheetList "StyleSheetList"
+
+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
+  toGObject = GObject . unSubtleCrypto
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SubtleCrypto . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSubtleCrypto :: IsGObject obj => obj -> IO SubtleCrypto
+castToSubtleCrypto = castTo gTypeSubtleCrypto "SubtleCrypto"
+
+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"
+--
+-- <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 => IsText o
+toText :: IsText o => o -> Text
+toText = unsafeCastGObject . toGObject
+
+instance IsText Text
+instance IsCharacterData Text
+instance IsNode Text
+instance IsEventTarget Text
+instance IsGObject Text where
+  toGObject = GObject . unText
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Text . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToText :: IsGObject obj => obj -> IO Text
+castToText = castTo gTypeText "Text"
+
+foreign import javascript unsafe "window[\"Text\"]" gTypeText :: 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
+  toGObject = GObject . unTextEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextEvent :: IsGObject obj => obj -> IO TextEvent
+castToTextEvent = castTo gTypeTextEvent "TextEvent"
+
+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
+  toGObject = GObject . unTextMetrics
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextMetrics . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextMetrics :: IsGObject obj => obj -> IO TextMetrics
+castToTextMetrics = castTo gTypeTextMetrics "TextMetrics"
+
+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
+  toGObject = GObject . unTextTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrack :: IsGObject obj => obj -> IO TextTrack
+castToTextTrack = castTo gTypeTextTrack "TextTrack"
+
+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 => IsTextTrackCue o
+toTextTrackCue :: IsTextTrackCue o => o -> TextTrackCue
+toTextTrackCue = unsafeCastGObject . toGObject
+
+instance IsTextTrackCue TextTrackCue
+instance IsEventTarget TextTrackCue
+instance IsGObject TextTrackCue where
+  toGObject = GObject . unTextTrackCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackCue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackCue :: IsGObject obj => obj -> IO TextTrackCue
+castToTextTrackCue = castTo gTypeTextTrackCue "TextTrackCue"
+
+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
+  toGObject = GObject . unTextTrackCueList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackCueList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackCueList :: IsGObject obj => obj -> IO TextTrackCueList
+castToTextTrackCueList = castTo gTypeTextTrackCueList "TextTrackCueList"
+
+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
+  toGObject = GObject . unTextTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackList :: IsGObject obj => obj -> IO TextTrackList
+castToTextTrackList = castTo gTypeTextTrackList "TextTrackList"
+
+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
+  toGObject = GObject . unTimeRanges
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TimeRanges . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTimeRanges :: IsGObject obj => obj -> IO TimeRanges
+castToTimeRanges = castTo gTypeTimeRanges "TimeRanges"
+
+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
+  toGObject = GObject . unTouch
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Touch . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouch :: IsGObject obj => obj -> IO Touch
+castToTouch = castTo gTypeTouch "Touch"
+
+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
+  toGObject = GObject . unTouchEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TouchEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouchEvent :: IsGObject obj => obj -> IO TouchEvent
+castToTouchEvent = castTo gTypeTouchEvent "TouchEvent"
+
+foreign import javascript unsafe "window[\"TouchEvent\"]" gTypeTouchEvent :: 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
+  toGObject = GObject . unTouchList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TouchList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouchList :: IsGObject obj => obj -> IO TouchList
+castToTouchList = castTo gTypeTouchList "TouchList"
+
+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
+  toGObject = GObject . unTrackEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TrackEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTrackEvent :: IsGObject obj => obj -> IO TrackEvent
+castToTrackEvent = castTo gTypeTrackEvent "TrackEvent"
+
+foreign import javascript unsafe "window[\"TrackEvent\"]" gTypeTrackEvent :: 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
+  toGObject = GObject . unTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TransitionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTransitionEvent :: IsGObject obj => obj -> IO TransitionEvent
+castToTransitionEvent = castTo gTypeTransitionEvent "TransitionEvent"
+
+foreign import javascript unsafe "window[\"TransitionEvent\"]" gTypeTransitionEvent :: 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
+  toGObject = GObject . unTreeWalker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TreeWalker . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTreeWalker :: IsGObject obj => obj -> IO TreeWalker
+castToTreeWalker = castTo gTypeTreeWalker "TreeWalker"
+
+foreign import javascript unsafe "window[\"TreeWalker\"]" gTypeTreeWalker :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TypeConversions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions Mozilla TypeConversions documentation>
+newtype TypeConversions = TypeConversions { unTypeConversions :: JSVal }
+
+instance Eq (TypeConversions) where
+  (TypeConversions a) == (TypeConversions b) = js_eq a b
+
+instance PToJSVal TypeConversions where
+  pToJSVal = unTypeConversions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TypeConversions where
+  pFromJSVal = TypeConversions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TypeConversions where
+  toJSVal = return . unTypeConversions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TypeConversions where
+  fromJSVal = return . fmap TypeConversions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TypeConversions where
+  toGObject = GObject . unTypeConversions
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TypeConversions . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTypeConversions :: IsGObject obj => obj -> IO TypeConversions
+castToTypeConversions = castTo gTypeTypeConversions "TypeConversions"
+
+foreign import javascript unsafe "window[\"TypeConversions\"]" gTypeTypeConversions :: 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 => IsUIEvent o
+toUIEvent :: IsUIEvent o => o -> UIEvent
+toUIEvent = unsafeCastGObject . toGObject
+
+instance IsUIEvent UIEvent
+instance IsEvent UIEvent
+instance IsGObject UIEvent where
+  toGObject = GObject . unUIEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UIEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUIEvent :: IsGObject obj => obj -> IO UIEvent
+castToUIEvent = castTo gTypeUIEvent "UIEvent"
+
+foreign import javascript unsafe "window[\"UIEvent\"]" gTypeUIEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.UIRequestEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent Mozilla UIRequestEvent documentation>
+newtype UIRequestEvent = UIRequestEvent { unUIRequestEvent :: JSVal }
+
+instance Eq (UIRequestEvent) where
+  (UIRequestEvent a) == (UIRequestEvent b) = js_eq a b
+
+instance PToJSVal UIRequestEvent where
+  pToJSVal = unUIRequestEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UIRequestEvent where
+  pFromJSVal = UIRequestEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UIRequestEvent where
+  toJSVal = return . unUIRequestEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UIRequestEvent where
+  fromJSVal = return . fmap UIRequestEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEvent UIRequestEvent
+instance IsEvent UIRequestEvent
+instance IsGObject UIRequestEvent where
+  toGObject = GObject . unUIRequestEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UIRequestEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUIRequestEvent :: IsGObject obj => obj -> IO UIRequestEvent
+castToUIRequestEvent = castTo gTypeUIRequestEvent "UIRequestEvent"
+
+foreign import javascript unsafe "window[\"UIRequestEvent\"]" gTypeUIRequestEvent :: 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
+  toGObject = GObject . unURL
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = URL . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToURL :: IsGObject obj => obj -> IO URL
+castToURL = castTo gTypeURL "URL"
+
+foreign import javascript unsafe "window[\"URL\"]" gTypeURL :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.URLUtils".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils Mozilla URLUtils documentation>
+newtype URLUtils = URLUtils { unURLUtils :: JSVal }
+
+instance Eq (URLUtils) where
+  (URLUtils a) == (URLUtils b) = js_eq a b
+
+instance PToJSVal URLUtils where
+  pToJSVal = unURLUtils
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal URLUtils where
+  pFromJSVal = URLUtils
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal URLUtils where
+  toJSVal = return . unURLUtils
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal URLUtils where
+  fromJSVal = return . fmap URLUtils . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject URLUtils where
+  toGObject = GObject . unURLUtils
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = URLUtils . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToURLUtils :: IsGObject obj => obj -> IO URLUtils
+castToURLUtils = castTo gTypeURLUtils "URLUtils"
+
+foreign import javascript unsafe "window[\"URLUtils\"]" gTypeURLUtils :: 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
+  toGObject = GObject . unUserMessageHandler
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UserMessageHandler . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUserMessageHandler :: IsGObject obj => obj -> IO UserMessageHandler
+castToUserMessageHandler = castTo gTypeUserMessageHandler "UserMessageHandler"
+
+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
+  toGObject = GObject . unUserMessageHandlersNamespace
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UserMessageHandlersNamespace . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUserMessageHandlersNamespace :: IsGObject obj => obj -> IO UserMessageHandlersNamespace
+castToUserMessageHandlersNamespace = castTo gTypeUserMessageHandlersNamespace "UserMessageHandlersNamespace"
+
+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
+  toGObject = GObject . unVTTCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTCue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTCue :: IsGObject obj => obj -> IO VTTCue
+castToVTTCue = castTo gTypeVTTCue "VTTCue"
+
+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
+  toGObject = GObject . unVTTRegion
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTRegion . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTRegion :: IsGObject obj => obj -> IO VTTRegion
+castToVTTRegion = castTo gTypeVTTRegion "VTTRegion"
+
+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
+  toGObject = GObject . unVTTRegionList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTRegionList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTRegionList :: IsGObject obj => obj -> IO VTTRegionList
+castToVTTRegionList = castTo gTypeVTTRegionList "VTTRegionList"
+
+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
+  toGObject = GObject . unValidityState
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ValidityState . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToValidityState :: IsGObject obj => obj -> IO ValidityState
+castToValidityState = castTo gTypeValidityState "ValidityState"
+
+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
+  toGObject = GObject . unVideoPlaybackQuality
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoPlaybackQuality . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoPlaybackQuality :: IsGObject obj => obj -> IO VideoPlaybackQuality
+castToVideoPlaybackQuality = castTo gTypeVideoPlaybackQuality "VideoPlaybackQuality"
+
+foreign import javascript unsafe "window[\"VideoPlaybackQuality\"]" gTypeVideoPlaybackQuality :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.VideoStreamTrack".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.MediaStreamTrack"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoStreamTrack Mozilla VideoStreamTrack documentation>
+newtype VideoStreamTrack = VideoStreamTrack { unVideoStreamTrack :: JSVal }
+
+instance Eq (VideoStreamTrack) where
+  (VideoStreamTrack a) == (VideoStreamTrack b) = js_eq a b
+
+instance PToJSVal VideoStreamTrack where
+  pToJSVal = unVideoStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoStreamTrack where
+  pFromJSVal = VideoStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoStreamTrack where
+  toJSVal = return . unVideoStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoStreamTrack where
+  fromJSVal = return . fmap VideoStreamTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsMediaStreamTrack VideoStreamTrack
+instance IsEventTarget VideoStreamTrack
+instance IsGObject VideoStreamTrack where
+  toGObject = GObject . unVideoStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoStreamTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoStreamTrack :: IsGObject obj => obj -> IO VideoStreamTrack
+castToVideoStreamTrack = castTo gTypeVideoStreamTrack "VideoStreamTrack"
+
+foreign import javascript unsafe "window[\"VideoStreamTrack\"]" gTypeVideoStreamTrack :: 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
+  toGObject = GObject . unVideoTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoTrack . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoTrack :: IsGObject obj => obj -> IO VideoTrack
+castToVideoTrack = castTo gTypeVideoTrack "VideoTrack"
+
+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
+  toGObject = GObject . unVideoTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoTrackList . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoTrackList :: IsGObject obj => obj -> IO VideoTrackList
+castToVideoTrackList = castTo gTypeVideoTrackList "VideoTrackList"
+
+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
+  toGObject = GObject . unWaveShaperNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WaveShaperNode . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWaveShaperNode :: IsGObject obj => obj -> IO WaveShaperNode
+castToWaveShaperNode = castTo gTypeWaveShaperNode "WaveShaperNode"
+
+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"
+--     * "GHCJS.DOM.CanvasRenderingContext"
+--
+-- <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 IsCanvasRenderingContext WebGL2RenderingContext
+instance IsGObject WebGL2RenderingContext where
+  toGObject = GObject . unWebGL2RenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGL2RenderingContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGL2RenderingContext :: IsGObject obj => obj -> IO WebGL2RenderingContext
+castToWebGL2RenderingContext = castTo gTypeWebGL2RenderingContext "WebGL2RenderingContext"
+
+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
+  toGObject = GObject . unWebGLActiveInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLActiveInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLActiveInfo :: IsGObject obj => obj -> IO WebGLActiveInfo
+castToWebGLActiveInfo = castTo gTypeWebGLActiveInfo "WebGLActiveInfo"
+
+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
+  toGObject = GObject . unWebGLBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLBuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLBuffer :: IsGObject obj => obj -> IO WebGLBuffer
+castToWebGLBuffer = castTo gTypeWebGLBuffer "WebGLBuffer"
+
+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
+  toGObject = GObject . unWebGLCompressedTextureATC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTextureATC . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTextureATC :: IsGObject obj => obj -> IO WebGLCompressedTextureATC
+castToWebGLCompressedTextureATC = castTo gTypeWebGLCompressedTextureATC "WebGLCompressedTextureATC"
+
+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
+  toGObject = GObject . unWebGLCompressedTexturePVRTC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTexturePVRTC . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTexturePVRTC :: IsGObject obj => obj -> IO WebGLCompressedTexturePVRTC
+castToWebGLCompressedTexturePVRTC = castTo gTypeWebGLCompressedTexturePVRTC "WebGLCompressedTexturePVRTC"
+
+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
+  toGObject = GObject . unWebGLCompressedTextureS3TC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTextureS3TC . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTextureS3TC :: IsGObject obj => obj -> IO WebGLCompressedTextureS3TC
+castToWebGLCompressedTextureS3TC = castTo gTypeWebGLCompressedTextureS3TC "WebGLCompressedTextureS3TC"
+
+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
+  toGObject = GObject . unWebGLContextAttributes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLContextAttributes . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLContextAttributes :: IsGObject obj => obj -> IO WebGLContextAttributes
+castToWebGLContextAttributes = castTo gTypeWebGLContextAttributes "WebGLContextAttributes"
+
+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
+  toGObject = GObject . unWebGLContextEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLContextEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLContextEvent :: IsGObject obj => obj -> IO WebGLContextEvent
+castToWebGLContextEvent = castTo gTypeWebGLContextEvent "WebGLContextEvent"
+
+foreign import javascript unsafe "window[\"WebGLContextEvent\"]" gTypeWebGLContextEvent :: 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
+  toGObject = GObject . unWebGLDebugRendererInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDebugRendererInfo . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDebugRendererInfo :: IsGObject obj => obj -> IO WebGLDebugRendererInfo
+castToWebGLDebugRendererInfo = castTo gTypeWebGLDebugRendererInfo "WebGLDebugRendererInfo"
+
+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
+  toGObject = GObject . unWebGLDebugShaders
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDebugShaders . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDebugShaders :: IsGObject obj => obj -> IO WebGLDebugShaders
+castToWebGLDebugShaders = castTo gTypeWebGLDebugShaders "WebGLDebugShaders"
+
+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
+  toGObject = GObject . unWebGLDepthTexture
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDepthTexture . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDepthTexture :: IsGObject obj => obj -> IO WebGLDepthTexture
+castToWebGLDepthTexture = castTo gTypeWebGLDepthTexture "WebGLDepthTexture"
+
+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
+  toGObject = GObject . unWebGLDrawBuffers
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDrawBuffers . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDrawBuffers :: IsGObject obj => obj -> IO WebGLDrawBuffers
+castToWebGLDrawBuffers = castTo gTypeWebGLDrawBuffers "WebGLDrawBuffers"
+
+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
+  toGObject = GObject . unWebGLFramebuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLFramebuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLFramebuffer :: IsGObject obj => obj -> IO WebGLFramebuffer
+castToWebGLFramebuffer = castTo gTypeWebGLFramebuffer "WebGLFramebuffer"
+
+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
+  toGObject = GObject . unWebGLLoseContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLLoseContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLLoseContext :: IsGObject obj => obj -> IO WebGLLoseContext
+castToWebGLLoseContext = castTo gTypeWebGLLoseContext "WebGLLoseContext"
+
+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
+  toGObject = GObject . unWebGLProgram
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLProgram . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLProgram :: IsGObject obj => obj -> IO WebGLProgram
+castToWebGLProgram = castTo gTypeWebGLProgram "WebGLProgram"
+
+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
+  toGObject = GObject . unWebGLQuery
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLQuery . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLQuery :: IsGObject obj => obj -> IO WebGLQuery
+castToWebGLQuery = castTo gTypeWebGLQuery "WebGLQuery"
+
+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
+  toGObject = GObject . unWebGLRenderbuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderbuffer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderbuffer :: IsGObject obj => obj -> IO WebGLRenderbuffer
+castToWebGLRenderbuffer = castTo gTypeWebGLRenderbuffer "WebGLRenderbuffer"
+
+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"
+--     * "GHCJS.DOM.CanvasRenderingContext"
+--
+-- <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 IsCanvasRenderingContext WebGLRenderingContext
+instance IsGObject WebGLRenderingContext where
+  toGObject = GObject . unWebGLRenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderingContext . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderingContext :: IsGObject obj => obj -> IO WebGLRenderingContext
+castToWebGLRenderingContext = castTo gTypeWebGLRenderingContext "WebGLRenderingContext"
+
+foreign import javascript unsafe "window[\"WebGLRenderingContext\"]" gTypeWebGLRenderingContext :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLRenderingContextBase".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CanvasRenderingContext"
+--
+-- <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 IsCanvasRenderingContext o => IsWebGLRenderingContextBase o
+toWebGLRenderingContextBase :: IsWebGLRenderingContextBase o => o -> WebGLRenderingContextBase
+toWebGLRenderingContextBase = unsafeCastGObject . toGObject
+
+instance IsWebGLRenderingContextBase WebGLRenderingContextBase
+instance IsCanvasRenderingContext WebGLRenderingContextBase
+instance IsGObject WebGLRenderingContextBase where
+  toGObject = GObject . unWebGLRenderingContextBase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderingContextBase . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderingContextBase :: IsGObject obj => obj -> IO WebGLRenderingContextBase
+castToWebGLRenderingContextBase = castTo gTypeWebGLRenderingContextBase "WebGLRenderingContextBase"
+
+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
+  toGObject = GObject . unWebGLSampler
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLSampler . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLSampler :: IsGObject obj => obj -> IO WebGLSampler
+castToWebGLSampler = castTo gTypeWebGLSampler "WebGLSampler"
+
+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
+  toGObject = GObject . unWebGLShader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLShader . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLShader :: IsGObject obj => obj -> IO WebGLShader
+castToWebGLShader = castTo gTypeWebGLShader "WebGLShader"
+
+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
+  toGObject = GObject . unWebGLShaderPrecisionFormat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLShaderPrecisionFormat . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLShaderPrecisionFormat :: IsGObject obj => obj -> IO WebGLShaderPrecisionFormat
+castToWebGLShaderPrecisionFormat = castTo gTypeWebGLShaderPrecisionFormat "WebGLShaderPrecisionFormat"
+
+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
+  toGObject = GObject . unWebGLSync
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLSync . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLSync :: IsGObject obj => obj -> IO WebGLSync
+castToWebGLSync = castTo gTypeWebGLSync "WebGLSync"
+
+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
+  toGObject = GObject . unWebGLTexture
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLTexture . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLTexture :: IsGObject obj => obj -> IO WebGLTexture
+castToWebGLTexture = castTo gTypeWebGLTexture "WebGLTexture"
+
+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
+  toGObject = GObject . unWebGLTransformFeedback
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLTransformFeedback . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLTransformFeedback :: IsGObject obj => obj -> IO WebGLTransformFeedback
+castToWebGLTransformFeedback = castTo gTypeWebGLTransformFeedback "WebGLTransformFeedback"
+
+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
+  toGObject = GObject . unWebGLUniformLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLUniformLocation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLUniformLocation :: IsGObject obj => obj -> IO WebGLUniformLocation
+castToWebGLUniformLocation = castTo gTypeWebGLUniformLocation "WebGLUniformLocation"
+
+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
+  toGObject = GObject . unWebGLVertexArrayObject
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLVertexArrayObject . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLVertexArrayObject :: IsGObject obj => obj -> IO WebGLVertexArrayObject
+castToWebGLVertexArrayObject = castTo gTypeWebGLVertexArrayObject "WebGLVertexArrayObject"
+
+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
+  toGObject = GObject . unWebGLVertexArrayObjectOES
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLVertexArrayObjectOES . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLVertexArrayObjectOES :: IsGObject obj => obj -> IO WebGLVertexArrayObjectOES
+castToWebGLVertexArrayObjectOES = castTo gTypeWebGLVertexArrayObjectOES "WebGLVertexArrayObjectOES"
+
+foreign import javascript unsafe "window[\"WebGLVertexArrayObjectOES\"]" gTypeWebGLVertexArrayObjectOES :: 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
+  toGObject = GObject . unWebKitAnimationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitAnimationEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitAnimationEvent :: IsGObject obj => obj -> IO WebKitAnimationEvent
+castToWebKitAnimationEvent = castTo gTypeWebKitAnimationEvent "WebKitAnimationEvent"
+
+foreign import javascript unsafe "window[\"WebKitAnimationEvent\"]" gTypeWebKitAnimationEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitCSSFilterValue".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSValueList"
+--     * "GHCJS.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue Mozilla WebKitCSSFilterValue documentation>
+newtype WebKitCSSFilterValue = WebKitCSSFilterValue { unWebKitCSSFilterValue :: JSVal }
+
+instance Eq (WebKitCSSFilterValue) where
+  (WebKitCSSFilterValue a) == (WebKitCSSFilterValue b) = js_eq a b
+
+instance PToJSVal WebKitCSSFilterValue where
+  pToJSVal = unWebKitCSSFilterValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSFilterValue where
+  pFromJSVal = WebKitCSSFilterValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSFilterValue where
+  toJSVal = return . unWebKitCSSFilterValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSFilterValue where
+  fromJSVal = return . fmap WebKitCSSFilterValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSValueList WebKitCSSFilterValue
+instance IsCSSValue WebKitCSSFilterValue
+instance IsGObject WebKitCSSFilterValue where
+  toGObject = GObject . unWebKitCSSFilterValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSFilterValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSFilterValue :: IsGObject obj => obj -> IO WebKitCSSFilterValue
+castToWebKitCSSFilterValue = castTo gTypeWebKitCSSFilterValue "WebKitCSSFilterValue"
+
+foreign import javascript unsafe "window[\"WebKitCSSFilterValue\"]" gTypeWebKitCSSFilterValue :: 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
+  toGObject = GObject . unWebKitCSSMatrix
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSMatrix . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSMatrix :: IsGObject obj => obj -> IO WebKitCSSMatrix
+castToWebKitCSSMatrix = castTo gTypeWebKitCSSMatrix "WebKitCSSMatrix"
+
+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
+  toGObject = GObject . unWebKitCSSRegionRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSRegionRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSRegionRule :: IsGObject obj => obj -> IO WebKitCSSRegionRule
+castToWebKitCSSRegionRule = castTo gTypeWebKitCSSRegionRule "WebKitCSSRegionRule"
+
+foreign import javascript unsafe "window[\"WebKitCSSRegionRule\"]" gTypeWebKitCSSRegionRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitCSSTransformValue".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSValueList"
+--     * "GHCJS.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue Mozilla WebKitCSSTransformValue documentation>
+newtype WebKitCSSTransformValue = WebKitCSSTransformValue { unWebKitCSSTransformValue :: JSVal }
+
+instance Eq (WebKitCSSTransformValue) where
+  (WebKitCSSTransformValue a) == (WebKitCSSTransformValue b) = js_eq a b
+
+instance PToJSVal WebKitCSSTransformValue where
+  pToJSVal = unWebKitCSSTransformValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSTransformValue where
+  pFromJSVal = WebKitCSSTransformValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSTransformValue where
+  toJSVal = return . unWebKitCSSTransformValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSTransformValue where
+  fromJSVal = return . fmap WebKitCSSTransformValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSValueList WebKitCSSTransformValue
+instance IsCSSValue WebKitCSSTransformValue
+instance IsGObject WebKitCSSTransformValue where
+  toGObject = GObject . unWebKitCSSTransformValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSTransformValue . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSTransformValue :: IsGObject obj => obj -> IO WebKitCSSTransformValue
+castToWebKitCSSTransformValue = castTo gTypeWebKitCSSTransformValue "WebKitCSSTransformValue"
+
+foreign import javascript unsafe "window[\"WebKitCSSTransformValue\"]" gTypeWebKitCSSTransformValue :: 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
+  toGObject = GObject . unWebKitCSSViewportRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSViewportRule . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSViewportRule :: IsGObject obj => obj -> IO WebKitCSSViewportRule
+castToWebKitCSSViewportRule = castTo gTypeWebKitCSSViewportRule "WebKitCSSViewportRule"
+
+foreign import javascript unsafe "window[\"WebKitCSSViewportRule\"]" gTypeWebKitCSSViewportRule :: 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
+  toGObject = GObject . unWebKitNamedFlow
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitNamedFlow . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitNamedFlow :: IsGObject obj => obj -> IO WebKitNamedFlow
+castToWebKitNamedFlow = castTo gTypeWebKitNamedFlow "WebKitNamedFlow"
+
+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
+  toGObject = GObject . unWebKitNamespace
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitNamespace . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitNamespace :: IsGObject obj => obj -> IO WebKitNamespace
+castToWebKitNamespace = castTo gTypeWebKitNamespace "WebKitNamespace"
+
+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
+  toGObject = GObject . unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitPlaybackTargetAvailabilityEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitPlaybackTargetAvailabilityEvent :: IsGObject obj => obj -> IO WebKitPlaybackTargetAvailabilityEvent
+castToWebKitPlaybackTargetAvailabilityEvent = castTo gTypeWebKitPlaybackTargetAvailabilityEvent "WebKitPlaybackTargetAvailabilityEvent"
+
+foreign import javascript unsafe "window[\"WebKitPlaybackTargetAvailabilityEvent\"]" gTypeWebKitPlaybackTargetAvailabilityEvent :: 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
+  toGObject = GObject . unWebKitPoint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitPoint . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitPoint :: IsGObject obj => obj -> IO WebKitPoint
+castToWebKitPoint = castTo gTypeWebKitPoint "WebKitPoint"
+
+foreign import javascript unsafe "window[\"WebKitPoint\"]" gTypeWebKitPoint :: 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
+  toGObject = GObject . unWebKitTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitTransitionEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitTransitionEvent :: IsGObject obj => obj -> IO WebKitTransitionEvent
+castToWebKitTransitionEvent = castTo gTypeWebKitTransitionEvent "WebKitTransitionEvent"
+
+foreign import javascript unsafe "window[\"WebKitTransitionEvent\"]" gTypeWebKitTransitionEvent :: 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
+  toGObject = GObject . unWebSocket
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebSocket . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebSocket :: IsGObject obj => obj -> IO WebSocket
+castToWebSocket = castTo gTypeWebSocket "WebSocket"
+
+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
+  toGObject = GObject . unWheelEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WheelEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWheelEvent :: IsGObject obj => obj -> IO WheelEvent
+castToWheelEvent = castTo gTypeWheelEvent "WheelEvent"
+
+foreign import javascript unsafe "window[\"WheelEvent\"]" gTypeWheelEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Window".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <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 IsGObject Window where
+  toGObject = GObject . unWindow
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Window . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindow :: IsGObject obj => obj -> IO Window
+castToWindow = castTo gTypeWindow "Window"
+
+foreign import javascript unsafe "window[\"Window\"]" gTypeWindow :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WindowBase64".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64 Mozilla WindowBase64 documentation>
+newtype WindowBase64 = WindowBase64 { unWindowBase64 :: JSVal }
+
+instance Eq (WindowBase64) where
+  (WindowBase64 a) == (WindowBase64 b) = js_eq a b
+
+instance PToJSVal WindowBase64 where
+  pToJSVal = unWindowBase64
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WindowBase64 where
+  pFromJSVal = WindowBase64
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WindowBase64 where
+  toJSVal = return . unWindowBase64
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WindowBase64 where
+  fromJSVal = return . fmap WindowBase64 . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WindowBase64 where
+  toGObject = GObject . unWindowBase64
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WindowBase64 . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindowBase64 :: IsGObject obj => obj -> IO WindowBase64
+castToWindowBase64 = castTo gTypeWindowBase64 "WindowBase64"
+
+foreign import javascript unsafe "window[\"WindowBase64\"]" gTypeWindowBase64 :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WindowTimers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers Mozilla WindowTimers documentation>
+newtype WindowTimers = WindowTimers { unWindowTimers :: JSVal }
+
+instance Eq (WindowTimers) where
+  (WindowTimers a) == (WindowTimers b) = js_eq a b
+
+instance PToJSVal WindowTimers where
+  pToJSVal = unWindowTimers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WindowTimers where
+  pFromJSVal = WindowTimers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WindowTimers where
+  toJSVal = return . unWindowTimers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WindowTimers where
+  fromJSVal = return . fmap WindowTimers . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WindowTimers where
+  toGObject = GObject . unWindowTimers
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WindowTimers . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindowTimers :: IsGObject obj => obj -> IO WindowTimers
+castToWindowTimers = castTo gTypeWindowTimers "WindowTimers"
+
+foreign import javascript unsafe "window[\"WindowTimers\"]" gTypeWindowTimers :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Worker".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <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 IsGObject Worker where
+  toGObject = GObject . unWorker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Worker . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorker :: IsGObject obj => obj -> IO Worker
+castToWorker = castTo gTypeWorker "Worker"
+
+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"
+--
+-- <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 => IsWorkerGlobalScope o
+toWorkerGlobalScope :: IsWorkerGlobalScope o => o -> WorkerGlobalScope
+toWorkerGlobalScope = unsafeCastGObject . toGObject
+
+instance IsWorkerGlobalScope WorkerGlobalScope
+instance IsEventTarget WorkerGlobalScope
+instance IsGObject WorkerGlobalScope where
+  toGObject = GObject . unWorkerGlobalScope
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerGlobalScope . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerGlobalScope :: IsGObject obj => obj -> IO WorkerGlobalScope
+castToWorkerGlobalScope = castTo gTypeWorkerGlobalScope "WorkerGlobalScope"
+
+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
+  toGObject = GObject . unWorkerLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerLocation . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerLocation :: IsGObject obj => obj -> IO WorkerLocation
+castToWorkerLocation = castTo gTypeWorkerLocation "WorkerLocation"
+
+foreign import javascript unsafe "window[\"WorkerLocation\"]" gTypeWorkerLocation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WorkerNavigator".
+--
+-- <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 IsGObject WorkerNavigator where
+  toGObject = GObject . unWorkerNavigator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerNavigator . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerNavigator :: IsGObject obj => obj -> IO WorkerNavigator
+castToWorkerNavigator = castTo gTypeWorkerNavigator "WorkerNavigator"
+
+foreign import javascript unsafe "window[\"WorkerNavigator\"]" gTypeWorkerNavigator :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XMLHttpRequest".
+-- Base interface functions are in:
+--
+--     * "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 IsEventTarget XMLHttpRequest
+instance IsGObject XMLHttpRequest where
+  toGObject = GObject . unXMLHttpRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequest . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequest :: IsGObject obj => obj -> IO XMLHttpRequest
+castToXMLHttpRequest = castTo gTypeXMLHttpRequest "XMLHttpRequest"
+
+foreign import javascript unsafe "window[\"XMLHttpRequest\"]" gTypeXMLHttpRequest :: 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
+  toGObject = GObject . unXMLHttpRequestProgressEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequestProgressEvent . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequestProgressEvent :: IsGObject obj => obj -> IO XMLHttpRequestProgressEvent
+castToXMLHttpRequestProgressEvent = castTo gTypeXMLHttpRequestProgressEvent "XMLHttpRequestProgressEvent"
+
+foreign import javascript unsafe "window[\"XMLHttpRequestProgressEvent\"]" gTypeXMLHttpRequestProgressEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XMLHttpRequestUpload".
+-- Base interface functions are in:
+--
+--     * "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 IsEventTarget XMLHttpRequestUpload
+instance IsGObject XMLHttpRequestUpload where
+  toGObject = GObject . unXMLHttpRequestUpload
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequestUpload . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequestUpload :: IsGObject obj => obj -> IO XMLHttpRequestUpload
+castToXMLHttpRequestUpload = castTo gTypeXMLHttpRequestUpload "XMLHttpRequestUpload"
+
+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
+  toGObject = GObject . unXMLSerializer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLSerializer . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLSerializer :: IsGObject obj => obj -> IO XMLSerializer
+castToXMLSerializer = castTo gTypeXMLSerializer "XMLSerializer"
+
+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
+  toGObject = GObject . unXPathEvaluator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathEvaluator . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathEvaluator :: IsGObject obj => obj -> IO XPathEvaluator
+castToXPathEvaluator = castTo gTypeXPathEvaluator "XPathEvaluator"
+
+foreign import javascript unsafe "window[\"XPathEvaluator\"]" gTypeXPathEvaluator :: 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
+  toGObject = GObject . unXPathExpression
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathExpression . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathExpression :: IsGObject obj => obj -> IO XPathExpression
+castToXPathExpression = castTo gTypeXPathExpression "XPathExpression"
+
+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
+  toGObject = GObject . unXPathNSResolver
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathNSResolver . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathNSResolver :: IsGObject obj => obj -> IO XPathNSResolver
+castToXPathNSResolver = castTo gTypeXPathNSResolver "XPathNSResolver"
+
+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
+  toGObject = GObject . unXPathResult
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathResult . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathResult :: IsGObject obj => obj -> IO XPathResult
+castToXPathResult = castTo gTypeXPathResult "XPathResult"
+
+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
+  toGObject = GObject . unXSLTProcessor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XSLTProcessor . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXSLTProcessor :: IsGObject obj => obj -> IO XSLTProcessor
+castToXSLTProcessor = castTo gTypeXSLTProcessor "XSLTProcessor"
+
+foreign import javascript unsafe "window[\"XSLTProcessor\"]" gTypeXSLTProcessor :: GType
+
