diff --git a/ghcjs-dom.cabal b/ghcjs-dom.cabal
--- a/ghcjs-dom.cabal
+++ b/ghcjs-dom.cabal
@@ -1,205 +1,1114 @@
 name: ghcjs-dom
-version: 0.1.1.3
-cabal-version: >=1.10
-build-type: Simple
-license: MIT
-license-file: LICENSE
-maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
-synopsis: DOM library that supports both GHCJS and WebKitGTK
-description: Documentent Object Model (DOM) functions that work with
-             GHCJS, but can also be used with GHC and WebKitGTK.
-author: Hamish Mackenzie
-data-dir: ""
-category: Web
-
-Source-Repository head
-  type:         git
-  location:     https://github.com/ghcjs/ghcjs-dom
-
-flag ghcjs
-    description: Tell cabal we are using ghcjs (work around until hackage supports impl(ghcjs))
-    default: True
-
-flag jsffi
-    description: Use JavaScriptFFI extension for GHCJS JavaScript output
-    default: True
-
-flag webkit
-    description: Use WebKitGtk DOM functions
-    default: False
-
-flag jsc
-    description: Use WebKitGtk JavaScriptCore
-    default: False
-
-flag gtk3
-    Description: Use GTK3 rather than GTK2 (only matters when using webkit)
-    Default: True
-
-library
-    build-depends: base <5,
-                   mtl -any,
-                   text >= 0.11.0.6 && < 1.3
-
-    default-language: Haskell2010
-    exposed-modules:
-          GHCJS.DOM
-          GHCJS.DOM.Types
-          GHCJS.DOM.Attr
-          GHCJS.DOM.BarProp
-          GHCJS.DOM.Blob
-          GHCJS.DOM.CharacterData
-          GHCJS.DOM.Css
-          GHCJS.DOM.CSSRule
-          GHCJS.DOM.CSSRuleList
-          GHCJS.DOM.CSSStyleDeclaration
-          GHCJS.DOM.CSSStyleSheet
-          GHCJS.DOM.CSSValue
-          GHCJS.DOM.Document
-          GHCJS.DOM.DocumentType
-          GHCJS.DOM.DOMApplicationCache
-          GHCJS.DOM.DOMImplementation
-          GHCJS.DOM.DOMMimeType
-          GHCJS.DOM.DOMMimeTypeArray
-          GHCJS.DOM.DOMNamedFlowCollection
-          GHCJS.DOM.DOMPlugin
-          GHCJS.DOM.DOMPluginArray
-          GHCJS.DOM.DOMSelection
-          GHCJS.DOM.DOMSettableTokenList
-          GHCJS.DOM.DOMTokenList
-          GHCJS.DOM.DOMWindow
-          GHCJS.DOM.DOMWindowCSS
-          GHCJS.DOM.Element
-          GHCJS.DOM.Event
-          GHCJS.DOM.EventM
-          GHCJS.DOM.Events
---          GHCJS.DOM.EventTarget
-          GHCJS.DOM.EventTargetClosures
-          GHCJS.DOM.File
-          GHCJS.DOM.FileList
-          GHCJS.DOM.History
-          GHCJS.DOM.HTMLAnchorElement
-          GHCJS.DOM.HTMLAppletElement
-          GHCJS.DOM.HTMLAreaElement
-          GHCJS.DOM.HTMLBaseElement
-          GHCJS.DOM.HTMLBaseFontElement
-          GHCJS.DOM.HTMLBodyElement
-          GHCJS.DOM.HTMLBRElement
-          GHCJS.DOM.HTMLButtonElement
-          GHCJS.DOM.HTMLCollection
-          GHCJS.DOM.HTMLDirectoryElement
-          GHCJS.DOM.HTMLDivElement
-          GHCJS.DOM.HTMLDListElement
-          GHCJS.DOM.HTMLDocument
-          GHCJS.DOM.HTMLElement
-          GHCJS.DOM.HTMLFieldSetElement
-          GHCJS.DOM.HTMLFontElement
-          GHCJS.DOM.HTMLFormElement
-          GHCJS.DOM.HTMLFrameElement
-          GHCJS.DOM.HTMLFrameSetElement
-          GHCJS.DOM.HTMLHeadElement
-          GHCJS.DOM.HTMLHeadingElement
-          GHCJS.DOM.HTMLHRElement
-          GHCJS.DOM.HTMLHtmlElement
-          GHCJS.DOM.HTMLIFrameElement
-          GHCJS.DOM.HTMLImageElement
-          GHCJS.DOM.HTMLInputElement
-          GHCJS.DOM.HTMLLabelElement
-          GHCJS.DOM.HTMLLegendElement
-          GHCJS.DOM.HTMLLIElement
-          GHCJS.DOM.HTMLLinkElement
-          GHCJS.DOM.HTMLMapElement
-          GHCJS.DOM.HTMLMenuElement
-          GHCJS.DOM.HTMLMetaElement
-          GHCJS.DOM.HTMLModElement
-          GHCJS.DOM.HTMLObjectElement
-          GHCJS.DOM.HTMLOListElement
-          GHCJS.DOM.HTMLOptGroupElement
-          GHCJS.DOM.HTMLOptionElement
-          GHCJS.DOM.HTMLOptionsCollection
-          GHCJS.DOM.HTMLParagraphElement
-          GHCJS.DOM.HTMLParamElement
-          GHCJS.DOM.HTMLPreElement
-          GHCJS.DOM.HTMLQuoteElement
-          GHCJS.DOM.HTMLScriptElement
-          GHCJS.DOM.HTMLSelectElement
-          GHCJS.DOM.HTMLStyleElement
-          GHCJS.DOM.HTMLTableCaptionElement
-          GHCJS.DOM.HTMLTableCellElement
-          GHCJS.DOM.HTMLTableColElement
-          GHCJS.DOM.HTMLTableElement
-          GHCJS.DOM.HTMLTableRowElement
-          GHCJS.DOM.HTMLTableSectionElement
-          GHCJS.DOM.HTMLTextAreaElement
-          GHCJS.DOM.HTMLTitleElement
-          GHCJS.DOM.HTMLUListElement
-          GHCJS.DOM.KeyboardEvent
-          GHCJS.DOM.Location
-          GHCJS.DOM.MediaList
-          GHCJS.DOM.MediaQueryList
-          GHCJS.DOM.MouseEvent
-          GHCJS.DOM.NamedNodeMap
-          GHCJS.DOM.Navigator
-          GHCJS.DOM.Node
-          GHCJS.DOM.NodeFilter
-          GHCJS.DOM.NodeIterator
-          GHCJS.DOM.NodeList
-          GHCJS.DOM.ProcessingInstruction
-          GHCJS.DOM.Range
-          GHCJS.DOM.Ranges
-          GHCJS.DOM.Screen
-          GHCJS.DOM.StyleMedia
-          GHCJS.DOM.StyleSheet
-          GHCJS.DOM.StyleSheetList
-          GHCJS.DOM.Stylesheets
-          GHCJS.DOM.Storage
-          GHCJS.DOM.Text
-          GHCJS.DOM.Traversal
-          GHCJS.DOM.TreeWalker
-          GHCJS.DOM.UIEvent
-          GHCJS.DOM.ValidityState
-          GHCJS.DOM.WebKitNamedFlow
-          GHCJS.DOM.WebKitPoint
-          GHCJS.DOM.XPathExpression
-          GHCJS.DOM.XPathNSResolver
-          GHCJS.DOM.XPathResult
-          GHCJS.DOM.DOMSecurityPolicy
-          GHCJS.DOM.DOMStringList
-          GHCJS.DOM.Geolocation
-          GHCJS.DOM.HTMLCanvasElement
-          GHCJS.DOM.HTMLDetailsElement
-          GHCJS.DOM.HTMLEmbedElement
-          GHCJS.DOM.HTMLKeygenElement
-          GHCJS.DOM.HTMLMarqueeElement
-          GHCJS.DOM.HTMLMediaElement
-          GHCJS.DOM.HTMLVideoElement
-          GHCJS.DOM.MediaError
-          GHCJS.DOM.StorageInfo
-          GHCJS.DOM.TimeRanges
-          -- GHCJS.DOM.WebKitAnimation
-          -- GHCJS.DOM.WebKitAnimationList
-
-    -- Make sure ghcjs gets turned off if ghcjs-base is not avaialbe
-    if flag(ghcjs)
-        build-depends: ghcjs-base
-
---    if impl(ghcjs) && flag(jsffi)
-    if flag(ghcjs) && flag(jsffi)
-        cpp-options: -DUSE_JAVASCRIPTFFI
-        build-depends: ghcjs-base
-
---    if !impl(ghcjs) || flag(webkit)
-    if !flag(ghcjs) || flag(webkit)
-        cpp-options: -DUSE_WEBKIT
-        build-depends: glib >=0.13.0.0 && <0.14,
-                       transformers >=0.3.0.0 && <0.5
-        if flag(gtk3)
-            build-depends: gtk3 >=0.13.0.0 && <0.14, webkitgtk3 >=0.13.0.0 && <0.14
-        else
-            build-depends: gtk >=0.13.0.0 && <0.14, webkit >=0.13.0.0 && <0.14
-        c-sources:      cbits/ghcjs_stubs.c
-
-    hs-source-dirs: src
-    exposed: True
-    buildable: True
+version: 0.2.1.0
+cabal-version: >=1.10
+build-type: Simple
+license: MIT
+license-file: LICENSE
+maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
+synopsis: DOM library that supports both GHCJS and WebKitGTK
+description: Documentent Object Model (DOM) functions that work with
+             GHCJS, but can also be used with GHC and WebKitGTK.
+author: Hamish Mackenzie
+data-dir: ""
+category: Web
+
+Source-Repository head
+  type:         git
+  location:     https://github.com/ghcjs/ghcjs-dom
+
+flag jsffi
+    description: Use JavaScriptFFI extension for GHCJS JavaScript output
+    default: True
+
+flag webkit
+    description: Use WebKitGtk DOM functions
+    default: False
+
+flag old-webkit
+    description: If you have an old version of WebKitGTK+ this will get ghcjs-dom
+                 to build, leaving out functions that are new or have changed.
+                 This option is mainly here to get the travis builds to work.
+    default: False
+
+flag jsc
+    description: Use WebKitGtk JavaScriptCore
+    default: False
+
+flag gtk3
+    description: Use GTK3 rather than GTK2 (only matters when using webkit)
+    default: True
+
+library
+    build-depends: base <5,
+                   transformers >=0.2 && <0.5,
+                   text >= 0.11.0.6 && < 1.3
+
+    default-language: Haskell2010
+    exposed-modules:
+          GHCJS.DOM
+          GHCJS.DOM.ANGLEInstancedArrays
+          GHCJS.DOM.AbstractView
+          GHCJS.DOM.AbstractWorker
+          GHCJS.DOM.AllAudioCapabilities
+          GHCJS.DOM.AllVideoCapabilities
+          GHCJS.DOM.AnalyserNode
+          GHCJS.DOM.AnimationEvent
+          GHCJS.DOM.Attr
+          GHCJS.DOM.AudioBuffer
+          GHCJS.DOM.AudioBufferCallback
+          GHCJS.DOM.AudioBufferSourceNode
+          GHCJS.DOM.AudioContext
+          GHCJS.DOM.AudioDestinationNode
+          GHCJS.DOM.AudioListener
+          GHCJS.DOM.AudioNode
+          GHCJS.DOM.AudioParam
+          GHCJS.DOM.AudioProcessingEvent
+          GHCJS.DOM.AudioStreamTrack
+          GHCJS.DOM.AudioTrack
+          GHCJS.DOM.AudioTrackList
+          GHCJS.DOM.AutocompleteErrorEvent
+          GHCJS.DOM.BarProp
+          GHCJS.DOM.BatteryManager
+          GHCJS.DOM.BeforeLoadEvent
+          GHCJS.DOM.BeforeUnloadEvent
+          GHCJS.DOM.BiquadFilterNode
+          GHCJS.DOM.Blob
+          GHCJS.DOM.CSSCharsetRule
+          GHCJS.DOM.CSSFontFaceLoadEvent
+          GHCJS.DOM.CSSFontFaceRule
+          GHCJS.DOM.CSSImportRule
+          GHCJS.DOM.CSSKeyframeRule
+          GHCJS.DOM.CSSKeyframesRule
+          GHCJS.DOM.CSSMediaRule
+          GHCJS.DOM.CSSPageRule
+          GHCJS.DOM.CSSPrimitiveValue
+          GHCJS.DOM.CSSRule
+          GHCJS.DOM.CSSRuleList
+          GHCJS.DOM.CSSStyleDeclaration
+          GHCJS.DOM.CSSStyleRule
+          GHCJS.DOM.CSSStyleSheet
+          GHCJS.DOM.CSSSupportsRule
+          GHCJS.DOM.CSSValue
+          GHCJS.DOM.CSSValueList
+          GHCJS.DOM.CanvasGradient
+          GHCJS.DOM.CanvasRenderingContext
+          GHCJS.DOM.CanvasRenderingContext2D
+          GHCJS.DOM.CapabilityRange
+          GHCJS.DOM.CharacterData
+          GHCJS.DOM.ChildNode
+          GHCJS.DOM.ClientRect
+          GHCJS.DOM.ClientRectList
+          GHCJS.DOM.CloseEvent
+          GHCJS.DOM.CommandLineAPIHost
+          GHCJS.DOM.Comment
+          GHCJS.DOM.CompositionEvent
+          GHCJS.DOM.ConvolverNode
+          GHCJS.DOM.Coordinates
+          GHCJS.DOM.Counter
+          GHCJS.DOM.Crypto
+          GHCJS.DOM.CryptoKey
+          GHCJS.DOM.CryptoKeyPair
+          GHCJS.DOM.CustomEvent
+          GHCJS.DOM.ApplicationCache
+          GHCJS.DOM.DOMError
+          GHCJS.DOM.FormData
+          GHCJS.DOM.DOMImplementation
+          GHCJS.DOM.MimeType
+          GHCJS.DOM.MimeTypeArray
+          GHCJS.DOM.DOMNamedFlowCollection
+          GHCJS.DOM.DOMParser
+          GHCJS.DOM.Path2D
+          GHCJS.DOM.Plugin
+          GHCJS.DOM.PluginArray
+          GHCJS.DOM.SecurityPolicy
+          GHCJS.DOM.Selection
+          GHCJS.DOM.DOMSettableTokenList
+          GHCJS.DOM.DOMStringList
+          GHCJS.DOM.DOMTokenList
+          GHCJS.DOM.URL
+          GHCJS.DOM.Window
+          GHCJS.DOM.CSS
+          GHCJS.DOM.DataCue
+          GHCJS.DOM.DataTransfer
+          GHCJS.DOM.DataTransferItem
+          GHCJS.DOM.DataTransferItemList
+          GHCJS.DOM.Database
+          GHCJS.DOM.DatabaseCallback
+          GHCJS.DOM.DedicatedWorkerGlobalScope
+          GHCJS.DOM.DelayNode
+          GHCJS.DOM.DeviceMotionEvent
+          GHCJS.DOM.DeviceOrientationEvent
+          GHCJS.DOM.DeviceProximityEvent
+          GHCJS.DOM.Document
+          GHCJS.DOM.DocumentFragment
+          GHCJS.DOM.DocumentType
+          GHCJS.DOM.DynamicsCompressorNode
+          GHCJS.DOM.EXTBlendMinMax
+          GHCJS.DOM.EXTsRGB
+          GHCJS.DOM.EXTTextureFilterAnisotropic
+          GHCJS.DOM.Element
+          GHCJS.DOM.Entity
+          GHCJS.DOM.Enums
+          GHCJS.DOM.ErrorEvent
+          GHCJS.DOM.Event
+          GHCJS.DOM.EventListener
+          GHCJS.DOM.EventM
+          GHCJS.DOM.EventSource
+          GHCJS.DOM.EventTarget
+          GHCJS.DOM.EventTargetClosures
+          GHCJS.DOM.File
+          GHCJS.DOM.FileError
+          GHCJS.DOM.FileList
+          GHCJS.DOM.FileReader
+          GHCJS.DOM.FileReaderSync
+          GHCJS.DOM.FocusEvent
+          GHCJS.DOM.FontLoader
+          GHCJS.DOM.GainNode
+          GHCJS.DOM.Gamepad
+          GHCJS.DOM.GamepadButton
+          GHCJS.DOM.GamepadEvent
+          GHCJS.DOM.Geolocation
+          GHCJS.DOM.Geoposition
+          GHCJS.DOM.HTMLAllCollection
+          GHCJS.DOM.HTMLAnchorElement
+          GHCJS.DOM.HTMLAppletElement
+          GHCJS.DOM.HTMLAreaElement
+          GHCJS.DOM.HTMLBRElement
+          GHCJS.DOM.HTMLBaseElement
+          GHCJS.DOM.HTMLBaseFontElement
+          GHCJS.DOM.HTMLBodyElement
+          GHCJS.DOM.HTMLButtonElement
+          GHCJS.DOM.HTMLCanvasElement
+          GHCJS.DOM.HTMLCollection
+          GHCJS.DOM.HTMLDListElement
+          GHCJS.DOM.HTMLDataListElement
+          GHCJS.DOM.HTMLDetailsElement
+          GHCJS.DOM.HTMLDirectoryElement
+          GHCJS.DOM.HTMLDivElement
+          GHCJS.DOM.HTMLDocument
+          GHCJS.DOM.HTMLElement
+          GHCJS.DOM.HTMLEmbedElement
+          GHCJS.DOM.HTMLFieldSetElement
+          GHCJS.DOM.HTMLFontElement
+          GHCJS.DOM.HTMLFormControlsCollection
+          GHCJS.DOM.HTMLFormElement
+          GHCJS.DOM.HTMLFrameElement
+          GHCJS.DOM.HTMLFrameSetElement
+          GHCJS.DOM.HTMLHRElement
+          GHCJS.DOM.HTMLHeadElement
+          GHCJS.DOM.HTMLHeadingElement
+          GHCJS.DOM.HTMLHtmlElement
+          GHCJS.DOM.HTMLIFrameElement
+          GHCJS.DOM.HTMLImageElement
+          GHCJS.DOM.HTMLInputElement
+          GHCJS.DOM.HTMLKeygenElement
+          GHCJS.DOM.HTMLLIElement
+          GHCJS.DOM.HTMLLabelElement
+          GHCJS.DOM.HTMLLegendElement
+          GHCJS.DOM.HTMLLinkElement
+          GHCJS.DOM.HTMLMapElement
+          GHCJS.DOM.HTMLMarqueeElement
+          GHCJS.DOM.HTMLMediaElement
+          GHCJS.DOM.HTMLMenuElement
+          GHCJS.DOM.HTMLMetaElement
+          GHCJS.DOM.HTMLMeterElement
+          GHCJS.DOM.HTMLModElement
+          GHCJS.DOM.HTMLOListElement
+          GHCJS.DOM.HTMLObjectElement
+          GHCJS.DOM.HTMLOptGroupElement
+          GHCJS.DOM.HTMLOptionElement
+          GHCJS.DOM.HTMLOptionsCollection
+          GHCJS.DOM.HTMLOutputElement
+          GHCJS.DOM.HTMLParagraphElement
+          GHCJS.DOM.HTMLParamElement
+          GHCJS.DOM.HTMLPreElement
+          GHCJS.DOM.HTMLProgressElement
+          GHCJS.DOM.HTMLQuoteElement
+          GHCJS.DOM.HTMLScriptElement
+          GHCJS.DOM.HTMLSelectElement
+          GHCJS.DOM.HTMLSourceElement
+          GHCJS.DOM.HTMLStyleElement
+          GHCJS.DOM.HTMLTableCaptionElement
+          GHCJS.DOM.HTMLTableCellElement
+          GHCJS.DOM.HTMLTableColElement
+          GHCJS.DOM.HTMLTableElement
+          GHCJS.DOM.HTMLTableRowElement
+          GHCJS.DOM.HTMLTableSectionElement
+          GHCJS.DOM.HTMLTemplateElement
+          GHCJS.DOM.HTMLTextAreaElement
+          GHCJS.DOM.HTMLTitleElement
+          GHCJS.DOM.HTMLTrackElement
+          GHCJS.DOM.HTMLUListElement
+          GHCJS.DOM.HTMLVideoElement
+          GHCJS.DOM.HashChangeEvent
+          GHCJS.DOM.History
+          GHCJS.DOM.IDBCursor
+          GHCJS.DOM.IDBCursorWithValue
+          GHCJS.DOM.IDBDatabase
+          GHCJS.DOM.IDBFactory
+          GHCJS.DOM.IDBIndex
+          GHCJS.DOM.IDBKeyRange
+          GHCJS.DOM.IDBObjectStore
+          GHCJS.DOM.IDBOpenDBRequest
+          GHCJS.DOM.IDBRequest
+          GHCJS.DOM.IDBTransaction
+          GHCJS.DOM.IDBVersionChangeEvent
+          GHCJS.DOM.ImageData
+          GHCJS.DOM.InspectorFrontendHost
+          GHCJS.DOM.InternalSettings
+          GHCJS.DOM.Internals
+          GHCJS.DOM.KeyboardEvent
+          GHCJS.DOM.Location
+          GHCJS.DOM.MallocStatistics
+          GHCJS.DOM.MediaController
+          GHCJS.DOM.MediaControlsHost
+          GHCJS.DOM.MediaElementAudioSourceNode
+          GHCJS.DOM.MediaError
+          GHCJS.DOM.MediaKeyError
+          GHCJS.DOM.MediaKeyEvent
+          GHCJS.DOM.MediaKeyMessageEvent
+          GHCJS.DOM.MediaKeyNeededEvent
+          GHCJS.DOM.MediaKeySession
+          GHCJS.DOM.MediaKeys
+          GHCJS.DOM.MediaList
+          GHCJS.DOM.MediaQueryList
+          GHCJS.DOM.MediaQueryListListener
+          GHCJS.DOM.MediaSource
+          GHCJS.DOM.MediaSourceStates
+          GHCJS.DOM.MediaStream
+          GHCJS.DOM.MediaStreamAudioDestinationNode
+          GHCJS.DOM.MediaStreamAudioSourceNode
+          GHCJS.DOM.MediaStreamEvent
+          GHCJS.DOM.MediaStreamTrack
+          GHCJS.DOM.MediaStreamTrackEvent
+          GHCJS.DOM.MediaStreamTrackSourcesCallback
+          GHCJS.DOM.MediaTrackConstraints
+          GHCJS.DOM.MemoryInfo
+          GHCJS.DOM.MessageChannel
+          GHCJS.DOM.MessageEvent
+          GHCJS.DOM.MessagePort
+          GHCJS.DOM.MouseEvent
+          GHCJS.DOM.MutationEvent
+          GHCJS.DOM.MutationObserver
+          GHCJS.DOM.MutationRecord
+          GHCJS.DOM.NamedNodeMap
+          GHCJS.DOM.Navigator
+          GHCJS.DOM.NavigatorUserMediaError
+          GHCJS.DOM.NavigatorUserMediaErrorCallback
+          GHCJS.DOM.NavigatorUserMediaSuccessCallback
+          GHCJS.DOM.Node
+          GHCJS.DOM.NodeFilter
+          GHCJS.DOM.NodeIterator
+          GHCJS.DOM.NodeList
+          GHCJS.DOM.Notification
+          GHCJS.DOM.NotificationCenter
+          GHCJS.DOM.NotificationPermissionCallback
+          GHCJS.DOM.OESStandardDerivatives
+          GHCJS.DOM.OESTextureHalfFloat
+          GHCJS.DOM.OESVertexArrayObject
+          GHCJS.DOM.OfflineAudioCompletionEvent
+          GHCJS.DOM.OfflineAudioContext
+          GHCJS.DOM.OscillatorNode
+          GHCJS.DOM.OverflowEvent
+          GHCJS.DOM.PageTransitionEvent
+          GHCJS.DOM.PannerNode
+          GHCJS.DOM.Performance
+          GHCJS.DOM.PerformanceEntry
+          GHCJS.DOM.PerformanceEntryList
+          GHCJS.DOM.PerformanceNavigation
+          GHCJS.DOM.PerformanceResourceTiming
+          GHCJS.DOM.PerformanceTiming
+          GHCJS.DOM.PopStateEvent
+          GHCJS.DOM.PositionCallback
+          GHCJS.DOM.PositionError
+          GHCJS.DOM.PositionErrorCallback
+          GHCJS.DOM.ProcessingInstruction
+          GHCJS.DOM.ProgressEvent
+          GHCJS.DOM.QuickTimePluginReplacement
+          GHCJS.DOM.RGBColor
+          GHCJS.DOM.RTCConfiguration
+          GHCJS.DOM.RTCDTMFSender
+          GHCJS.DOM.RTCDTMFToneChangeEvent
+          GHCJS.DOM.RTCDataChannel
+          GHCJS.DOM.RTCDataChannelEvent
+          GHCJS.DOM.RTCIceCandidate
+          GHCJS.DOM.RTCIceCandidateEvent
+          GHCJS.DOM.RTCIceServer
+          GHCJS.DOM.RTCPeerConnection
+          GHCJS.DOM.RTCPeerConnectionErrorCallback
+          GHCJS.DOM.RTCSessionDescription
+          GHCJS.DOM.RTCSessionDescriptionCallback
+          GHCJS.DOM.RTCStatsCallback
+          GHCJS.DOM.RTCStatsReport
+          GHCJS.DOM.RTCStatsResponse
+          GHCJS.DOM.RadioNodeList
+          GHCJS.DOM.Range
+          GHCJS.DOM.ReadableStream
+          GHCJS.DOM.Rect
+          GHCJS.DOM.RequestAnimationFrameCallback
+          GHCJS.DOM.SQLError
+          GHCJS.DOM.SQLResultSet
+          GHCJS.DOM.SQLResultSetRowList
+          GHCJS.DOM.SQLStatementCallback
+          GHCJS.DOM.SQLStatementErrorCallback
+          GHCJS.DOM.SQLTransaction
+          GHCJS.DOM.SQLTransactionCallback
+          GHCJS.DOM.SQLTransactionErrorCallback
+          GHCJS.DOM.SVGAElement
+          GHCJS.DOM.SVGAltGlyphElement
+          GHCJS.DOM.SVGAngle
+          GHCJS.DOM.SVGAnimatedAngle
+          GHCJS.DOM.SVGAnimatedBoolean
+          GHCJS.DOM.SVGAnimatedEnumeration
+          GHCJS.DOM.SVGAnimatedInteger
+          GHCJS.DOM.SVGAnimatedLength
+          GHCJS.DOM.SVGAnimatedLengthList
+          GHCJS.DOM.SVGAnimatedNumber
+          GHCJS.DOM.SVGAnimatedNumberList
+          GHCJS.DOM.SVGAnimatedPreserveAspectRatio
+          GHCJS.DOM.SVGAnimatedRect
+          GHCJS.DOM.SVGAnimatedString
+          GHCJS.DOM.SVGAnimatedTransformList
+          GHCJS.DOM.SVGAnimationElement
+          GHCJS.DOM.SVGCircleElement
+          GHCJS.DOM.SVGClipPathElement
+          GHCJS.DOM.SVGColor
+          GHCJS.DOM.SVGComponentTransferFunctionElement
+          GHCJS.DOM.SVGCursorElement
+          GHCJS.DOM.SVGDocument
+          GHCJS.DOM.SVGElement
+          GHCJS.DOM.SVGEllipseElement
+          GHCJS.DOM.SVGExternalResourcesRequired
+          GHCJS.DOM.SVGFEBlendElement
+          GHCJS.DOM.SVGFEColorMatrixElement
+          GHCJS.DOM.SVGFEComponentTransferElement
+          GHCJS.DOM.SVGFECompositeElement
+          GHCJS.DOM.SVGFEConvolveMatrixElement
+          GHCJS.DOM.SVGFEDiffuseLightingElement
+          GHCJS.DOM.SVGFEDisplacementMapElement
+          GHCJS.DOM.SVGFEDistantLightElement
+          GHCJS.DOM.SVGFEDropShadowElement
+          GHCJS.DOM.SVGFEGaussianBlurElement
+          GHCJS.DOM.SVGFEImageElement
+          GHCJS.DOM.SVGFEMergeNodeElement
+          GHCJS.DOM.SVGFEMorphologyElement
+          GHCJS.DOM.SVGFEOffsetElement
+          GHCJS.DOM.SVGFEPointLightElement
+          GHCJS.DOM.SVGFESpecularLightingElement
+          GHCJS.DOM.SVGFESpotLightElement
+          GHCJS.DOM.SVGFETileElement
+          GHCJS.DOM.SVGFETurbulenceElement
+          GHCJS.DOM.SVGFilterElement
+          GHCJS.DOM.SVGFilterPrimitiveStandardAttributes
+          GHCJS.DOM.SVGFitToViewBox
+          GHCJS.DOM.SVGForeignObjectElement
+          GHCJS.DOM.SVGGlyphRefElement
+          GHCJS.DOM.SVGGradientElement
+          GHCJS.DOM.SVGGraphicsElement
+          GHCJS.DOM.SVGImageElement
+          GHCJS.DOM.SVGLength
+          GHCJS.DOM.SVGLengthList
+          GHCJS.DOM.SVGLineElement
+          GHCJS.DOM.SVGLinearGradientElement
+          GHCJS.DOM.SVGMarkerElement
+          GHCJS.DOM.SVGMaskElement
+          GHCJS.DOM.SVGMatrix
+          GHCJS.DOM.SVGNumber
+          GHCJS.DOM.SVGNumberList
+          GHCJS.DOM.SVGPaint
+          GHCJS.DOM.SVGPathElement
+          GHCJS.DOM.SVGPathSeg
+          GHCJS.DOM.SVGPathSegArcAbs
+          GHCJS.DOM.SVGPathSegArcRel
+          GHCJS.DOM.SVGPathSegCurvetoCubicAbs
+          GHCJS.DOM.SVGPathSegCurvetoCubicRel
+          GHCJS.DOM.SVGPathSegCurvetoCubicSmoothAbs
+          GHCJS.DOM.SVGPathSegCurvetoCubicSmoothRel
+          GHCJS.DOM.SVGPathSegCurvetoQuadraticAbs
+          GHCJS.DOM.SVGPathSegCurvetoQuadraticRel
+          GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothAbs
+          GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothRel
+          GHCJS.DOM.SVGPathSegLinetoAbs
+          GHCJS.DOM.SVGPathSegLinetoHorizontalAbs
+          GHCJS.DOM.SVGPathSegLinetoHorizontalRel
+          GHCJS.DOM.SVGPathSegLinetoRel
+          GHCJS.DOM.SVGPathSegLinetoVerticalAbs
+          GHCJS.DOM.SVGPathSegLinetoVerticalRel
+          GHCJS.DOM.SVGPathSegList
+          GHCJS.DOM.SVGPathSegMovetoAbs
+          GHCJS.DOM.SVGPathSegMovetoRel
+          GHCJS.DOM.SVGPatternElement
+          GHCJS.DOM.SVGPoint
+          GHCJS.DOM.SVGPointList
+          GHCJS.DOM.SVGPolygonElement
+          GHCJS.DOM.SVGPolylineElement
+          GHCJS.DOM.SVGPreserveAspectRatio
+          GHCJS.DOM.SVGRadialGradientElement
+          GHCJS.DOM.SVGRect
+          GHCJS.DOM.SVGRectElement
+          GHCJS.DOM.SVGRenderingIntent
+          GHCJS.DOM.SVGScriptElement
+          GHCJS.DOM.SVGSVGElement
+          GHCJS.DOM.SVGStopElement
+          GHCJS.DOM.SVGStringList
+          GHCJS.DOM.SVGStyleElement
+          GHCJS.DOM.SVGTests
+          GHCJS.DOM.SVGTextContentElement
+          GHCJS.DOM.SVGTextPathElement
+          GHCJS.DOM.SVGTextPositioningElement
+          GHCJS.DOM.SVGTransform
+          GHCJS.DOM.SVGTransformList
+          GHCJS.DOM.SVGURIReference
+          GHCJS.DOM.SVGUnitTypes
+          GHCJS.DOM.SVGUseElement
+          GHCJS.DOM.SVGViewElement
+          GHCJS.DOM.SVGViewSpec
+          GHCJS.DOM.SVGZoomAndPan
+          GHCJS.DOM.SVGZoomEvent
+          GHCJS.DOM.Screen
+          GHCJS.DOM.ScriptProcessorNode
+          GHCJS.DOM.ScriptProfile
+          GHCJS.DOM.ScriptProfileNode
+          GHCJS.DOM.SecurityPolicyViolationEvent
+          GHCJS.DOM.SourceBuffer
+          GHCJS.DOM.SourceBufferList
+          GHCJS.DOM.SourceInfo
+          GHCJS.DOM.SpeechSynthesis
+          GHCJS.DOM.SpeechSynthesisEvent
+          GHCJS.DOM.SpeechSynthesisUtterance
+          GHCJS.DOM.SpeechSynthesisVoice
+          GHCJS.DOM.Storage
+          GHCJS.DOM.StorageErrorCallback
+          GHCJS.DOM.StorageEvent
+          GHCJS.DOM.StorageInfo
+          GHCJS.DOM.StorageQuota
+          GHCJS.DOM.StorageQuotaCallback
+          GHCJS.DOM.StorageUsageCallback
+          GHCJS.DOM.StringCallback
+          GHCJS.DOM.StyleMedia
+          GHCJS.DOM.StyleSheet
+          GHCJS.DOM.StyleSheetList
+          GHCJS.DOM.SubtleCrypto
+          GHCJS.DOM.Text
+          GHCJS.DOM.TextEvent
+          GHCJS.DOM.TextMetrics
+          GHCJS.DOM.TextTrack
+          GHCJS.DOM.TextTrackCue
+          GHCJS.DOM.TextTrackCueList
+          GHCJS.DOM.TextTrackList
+          GHCJS.DOM.TimeRanges
+          GHCJS.DOM.Touch
+          GHCJS.DOM.TouchEvent
+          GHCJS.DOM.TouchList
+          GHCJS.DOM.TrackEvent
+          GHCJS.DOM.TransitionEvent
+          GHCJS.DOM.TreeWalker
+          GHCJS.DOM.TypeConversions
+          GHCJS.DOM.Types
+          GHCJS.DOM.UIEvent
+          GHCJS.DOM.UIRequestEvent
+          GHCJS.DOM.URLUtils
+          GHCJS.DOM.UserMessageHandler
+          GHCJS.DOM.VTTCue
+          GHCJS.DOM.VTTRegion
+          GHCJS.DOM.VTTRegionList
+          GHCJS.DOM.ValidityState
+          GHCJS.DOM.VideoPlaybackQuality
+          GHCJS.DOM.VideoStreamTrack
+          GHCJS.DOM.VideoTrack
+          GHCJS.DOM.VideoTrackList
+          GHCJS.DOM.VoidCallback
+          GHCJS.DOM.WaveShaperNode
+          GHCJS.DOM.WebGL2RenderingContext
+          GHCJS.DOM.WebGLActiveInfo
+          GHCJS.DOM.WebGLCompressedTextureATC
+          GHCJS.DOM.WebGLCompressedTexturePVRTC
+          GHCJS.DOM.WebGLCompressedTextureS3TC
+          GHCJS.DOM.WebGLContextAttributes
+          GHCJS.DOM.WebGLContextEvent
+          GHCJS.DOM.WebGLDebugRendererInfo
+          GHCJS.DOM.WebGLDebugShaders
+          GHCJS.DOM.WebGLDepthTexture
+          GHCJS.DOM.WebGLDrawBuffers
+          GHCJS.DOM.WebGLLoseContext
+          GHCJS.DOM.WebGLRenderingContextBase
+          GHCJS.DOM.WebGLShaderPrecisionFormat
+          GHCJS.DOM.WebKitAnimationEvent
+          GHCJS.DOM.WebKitCSSFilterValue
+          GHCJS.DOM.WebKitCSSMatrix
+          GHCJS.DOM.WebKitCSSRegionRule
+          GHCJS.DOM.WebKitCSSTransformValue
+          GHCJS.DOM.WebKitCSSViewportRule
+          GHCJS.DOM.WebKitNamedFlow
+          GHCJS.DOM.WebKitNamespace
+          GHCJS.DOM.WebKitPlaybackTargetAvailabilityEvent
+          GHCJS.DOM.WebKitPoint
+          GHCJS.DOM.WebKitTransitionEvent
+          GHCJS.DOM.WebSocket
+          GHCJS.DOM.WheelEvent
+          GHCJS.DOM.WindowBase64
+          GHCJS.DOM.WindowTimers
+          GHCJS.DOM.Worker
+          GHCJS.DOM.WorkerGlobalScope
+          GHCJS.DOM.WorkerLocation
+          GHCJS.DOM.WorkerNavigator
+          GHCJS.DOM.XMLHttpRequest
+          GHCJS.DOM.XMLHttpRequestProgressEvent
+          GHCJS.DOM.XMLHttpRequestUpload
+          GHCJS.DOM.XMLSerializer
+          GHCJS.DOM.XPathEvaluator
+          GHCJS.DOM.XPathExpression
+          GHCJS.DOM.XPathNSResolver
+          GHCJS.DOM.XPathResult
+          GHCJS.DOM.XSLTProcessor
+
+    if impl(ghcjs) && flag(jsffi)
+        cpp-options: -DUSE_JAVASCRIPTFFI
+        build-depends: ghcjs-base >=0.2.0.0 && <0.3, ghcjs-prim, ghc-prim
+        exposed-modules:
+          GHCJS.DOM.JSFFI.AudioContext
+          GHCJS.DOM.JSFFI.Database
+          GHCJS.DOM.JSFFI.DOMError
+          GHCJS.DOM.JSFFI.Geolocation
+          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
+
+    if !impl(ghcjs) || flag(webkit)
+        cpp-options: -DUSE_WEBKIT
+        build-depends: glib >=0.13.0.0 && <0.14,
+                       transformers >=0.3.0.0 && <0.5
+        if flag(gtk3)
+            build-depends: gtk3 >=0.13.0.0 && <0.15, webkitgtk3 >=0.14.0.0 && <0.15
+        else
+            build-depends: gtk >=0.13.0.0 && <0.14, webkit >=0.14.0.0 && <0.15
+        c-sources:      cbits/ghcjs_stubs.c
+
+    if flag(old-webkit)
+        cpp-options: -DUSE_OLD_WEBKIT
+
+    hs-source-dirs: src
+    exposed: True
+    buildable: True
+    js-sources: jsbits/xhr.js
 
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
--- a/src/GHCJS/DOM.hs
+++ b/src/GHCJS/DOM.hs
@@ -33,7 +33,7 @@
 import System.Glib.Signals (on)
 import System.Glib.Attributes (get, AttrOp(..), set)
 import System.Glib.FFI (maybeNull)
-import System.Glib.MainLoop (priorityHigh)
+import System.Glib.MainLoop (priorityLow)
 import Graphics.UI.Gtk.WebKit.WebSettings
        (webSettingsMonospaceFontFamily, webSettingsUserAgent,
         webSettingsEnableDeveloperExtras)
@@ -41,8 +41,8 @@
 #endif
 
 import GHCJS.DOM.Types
-import GHCJS.DOM.DOMWindow (domWindowGetNavigator, domWindowGetDocument)
-import GHCJS.DOM.Navigator (navigatorGetUserAgent)
+import GHCJS.DOM.Window (getNavigator, getDocument)
+import GHCJS.DOM.Navigator (getUserAgent)
 import Foreign (ForeignPtr, nullPtr, Ptr)
 import Control.Monad (unless, forever, liftM)
 import Control.Concurrent
@@ -59,32 +59,32 @@
 
 #ifdef ghcjs_HOST_OS
 foreign import javascript unsafe "$r = window"
-  ghcjs_currentWindow :: IO (JSRef DOMWindow)
+  ghcjs_currentWindow :: IO (JSRef Window)
 foreign import javascript unsafe "$r = document"
   ghcjs_currentDocument :: IO (JSRef Document)
 #else
-ghcjs_currentWindow :: IO (JSRef DOMWindow)
+ghcjs_currentWindow :: IO (JSRef Window)
 ghcjs_currentWindow = undefined
 ghcjs_currentDocument :: IO (JSRef Document)
 ghcjs_currentDocument = undefined
 #endif
 
-currentWindow :: IO (Maybe DOMWindow)
-currentWindow = fmap DOMWindow . maybeJSNull <$> ghcjs_currentWindow
+currentWindow :: IO (Maybe Window)
+currentWindow = fmap Window . maybeJSNullOrUndefined <$> ghcjs_currentWindow
 currentDocument :: IO (Maybe Document)
-currentDocument = fmap Document . maybeJSNull <$> ghcjs_currentDocument
+currentDocument = fmap Document . maybeJSNullOrUndefined <$> ghcjs_currentDocument
 
-type WebView = DOMWindow
+type WebView = Window
 castToWebView = id
 
-webViewGetDomDocument :: IsDOMWindow w => w -> IO (Maybe Document)
-webViewGetDomDocument = domWindowGetDocument
+webViewGetDomDocument :: Window -> IO (Maybe Document)
+webViewGetDomDocument = getDocument
 #else
 foreign import ccall safe "ghcjs_currentWindow"
-  ghcjs_currentWindow :: IO (Ptr DOMWindow)
+  ghcjs_currentWindow :: IO (Ptr Window)
 
-currentWindow :: IO (Maybe DOMWindow)
-currentWindow = maybeNull (makeNewGObject mkDOMWindow) ghcjs_currentWindow
+currentWindow :: IO (Maybe Window)
+currentWindow = maybeNull (makeNewGObject mkWindow) ghcjs_currentWindow
 
 foreign import ccall unsafe "ghcjs_currentDocument"
   ghcjs_currentDocument :: IO (Ptr Document)
@@ -103,8 +103,8 @@
   case mbWindow of
     Just window -> do
       -- Check if we are running in javascript inside the the native version
-      Just n <- domWindowGetNavigator window
-      agent <- navigatorGetUserAgent n
+      Just n <- getNavigator window
+      agent <- getUserAgent n
       unless ((" " <> userAgentKey) `T.isSuffixOf` agent) $ main (castToWebView window)
     Nothing -> do
       makeDefaultWebView userAgentKey main
@@ -116,7 +116,7 @@
 makeDefaultWebView userAgentKey main = do
   initGUI
   window <- windowNew
-  timeoutAddFull (yield >> return True) priorityHigh 10
+  timeoutAddFull (yield >> return True) priorityLow 10
   windowSetDefaultSize window 900 600
   windowSetPosition window WinPosCenter
   scrollWin <- scrolledWindowNew Nothing Nothing
diff --git a/src/GHCJS/DOM/ANGLEInstancedArrays.hs b/src/GHCJS/DOM/ANGLEInstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ANGLEInstancedArrays.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ANGLEInstancedArrays (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays
+#else
+#endif
diff --git a/src/GHCJS/DOM/AbstractView.hs b/src/GHCJS/DOM/AbstractView.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AbstractView.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AbstractView (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AbstractView
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AbstractView
+#else
+#endif
diff --git a/src/GHCJS/DOM/AbstractWorker.hs b/src/GHCJS/DOM/AbstractWorker.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AbstractWorker.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AbstractWorker (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AbstractWorker
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AbstractWorker
+#else
+#endif
diff --git a/src/GHCJS/DOM/AllAudioCapabilities.hs b/src/GHCJS/DOM/AllAudioCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AllAudioCapabilities.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AllAudioCapabilities (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AllAudioCapabilities
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AllAudioCapabilities
+#else
+#endif
diff --git a/src/GHCJS/DOM/AllVideoCapabilities.hs b/src/GHCJS/DOM/AllVideoCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AllVideoCapabilities.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AllVideoCapabilities (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AllVideoCapabilities
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AllVideoCapabilities
+#else
+#endif
diff --git a/src/GHCJS/DOM/AnalyserNode.hs b/src/GHCJS/DOM/AnalyserNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AnalyserNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AnalyserNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AnalyserNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AnalyserNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/AnimationEvent.hs b/src/GHCJS/DOM/AnimationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AnimationEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AnimationEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AnimationEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AnimationEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/ApplicationCache.hs b/src/GHCJS/DOM/ApplicationCache.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ApplicationCache.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ApplicationCache (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ApplicationCache
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.ApplicationCache
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ApplicationCache
+#else
+import Graphics.UI.Gtk.WebKit.DOM.ApplicationCache
+#endif
diff --git a/src/GHCJS/DOM/Attr.hs b/src/GHCJS/DOM/Attr.hs
--- a/src/GHCJS/DOM/Attr.hs
+++ b/src/GHCJS/DOM/Attr.hs
@@ -1,77 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Attr (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Attr
-       (ghcjs_dom_attr_get_name, attrGetName,
-        ghcjs_dom_attr_get_specified, attrGetSpecified,
-        ghcjs_dom_attr_set_value, attrSetValue, ghcjs_dom_attr_get_value,
-        attrGetValue, ghcjs_dom_attr_get_owner_element,
-        attrGetOwnerElement, ghcjs_dom_attr_get_is_id, attrGetIsId,
-        DOMAttr, IsDOMAttr, castToDOMAttr, gTypeDOMAttr, toDOMAttr)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_attr_get_name :: JSRef DOMAttr -> IO JSString
- 
-attrGetName ::
-            (IsDOMAttr self, FromJSString result) => self -> IO result
-attrGetName self
-  = fromJSString <$>
-      (ghcjs_dom_attr_get_name (unDOMAttr (toDOMAttr self)))
- 
-foreign import javascript unsafe "($1[\"specified\"] ? 1 : 0)"
-        ghcjs_dom_attr_get_specified :: JSRef DOMAttr -> IO Bool
- 
-attrGetSpecified :: (IsDOMAttr self) => self -> IO Bool
-attrGetSpecified self
-  = ghcjs_dom_attr_get_specified (unDOMAttr (toDOMAttr self))
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_attr_set_value :: JSRef DOMAttr -> JSString -> IO ()
- 
-attrSetValue ::
-             (IsDOMAttr self, ToJSString val) => self -> val -> IO ()
-attrSetValue self val
-  = ghcjs_dom_attr_set_value (unDOMAttr (toDOMAttr self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_attr_get_value :: JSRef DOMAttr -> IO JSString
- 
-attrGetValue ::
-             (IsDOMAttr self, FromJSString result) => self -> IO result
-attrGetValue self
-  = fromJSString <$>
-      (ghcjs_dom_attr_get_value (unDOMAttr (toDOMAttr self)))
- 
-foreign import javascript unsafe "$1[\"ownerElement\"]"
-        ghcjs_dom_attr_get_owner_element ::
-        JSRef DOMAttr -> IO (JSRef Element)
- 
-attrGetOwnerElement ::
-                    (IsDOMAttr self) => self -> IO (Maybe Element)
-attrGetOwnerElement self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_attr_get_owner_element (unDOMAttr (toDOMAttr self)))
- 
-foreign import javascript unsafe "($1[\"isId\"] ? 1 : 0)"
-        ghcjs_dom_attr_get_is_id :: JSRef DOMAttr -> IO Bool
- 
-attrGetIsId :: (IsDOMAttr self) => self -> IO Bool
-attrGetIsId self
-  = ghcjs_dom_attr_get_is_id (unDOMAttr (toDOMAttr self))
+  module GHCJS.DOM.JSFFI.Generated.Attr
 #else
-module GHCJS.DOM.Attr (
   module Graphics.UI.Gtk.WebKit.DOM.Attr
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Attr
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Attr
 #endif
diff --git a/src/GHCJS/DOM/AudioBuffer.hs b/src/GHCJS/DOM/AudioBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioBuffer.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioBuffer (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioBuffer
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioBuffer
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioBufferCallback.hs b/src/GHCJS/DOM/AudioBufferCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioBufferCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioBufferCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioBufferCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioBufferCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioBufferSourceNode.hs b/src/GHCJS/DOM/AudioBufferSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioBufferSourceNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioBufferSourceNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioContext.hs b/src/GHCJS/DOM/AudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioContext.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioContext (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.AudioContext
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.AudioContext
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioDestinationNode.hs b/src/GHCJS/DOM/AudioDestinationNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioDestinationNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioDestinationNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioDestinationNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioDestinationNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioListener.hs b/src/GHCJS/DOM/AudioListener.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioListener.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioListener (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioListener
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioListener
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioNode.hs b/src/GHCJS/DOM/AudioNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioParam.hs b/src/GHCJS/DOM/AudioParam.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioParam.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioParam (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioParam
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioParam
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioProcessingEvent.hs b/src/GHCJS/DOM/AudioProcessingEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioProcessingEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioProcessingEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioStreamTrack.hs b/src/GHCJS/DOM/AudioStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioStreamTrack.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioStreamTrack (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioStreamTrack
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioStreamTrack
+#else
+#endif
diff --git a/src/GHCJS/DOM/AudioTrack.hs b/src/GHCJS/DOM/AudioTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioTrack.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioTrack (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioTrack
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.AudioTrack
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioTrack
+#else
+import Graphics.UI.Gtk.WebKit.DOM.AudioTrack
+#endif
diff --git a/src/GHCJS/DOM/AudioTrackList.hs b/src/GHCJS/DOM/AudioTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AudioTrackList.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AudioTrackList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AudioTrackList
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.AudioTrackList
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AudioTrackList
+#else
+import Graphics.UI.Gtk.WebKit.DOM.AudioTrackList
+#endif
diff --git a/src/GHCJS/DOM/AutocompleteErrorEvent.hs b/src/GHCJS/DOM/AutocompleteErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/AutocompleteErrorEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.AutocompleteErrorEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/BarProp.hs b/src/GHCJS/DOM/BarProp.hs
--- a/src/GHCJS/DOM/BarProp.hs
+++ b/src/GHCJS/DOM/BarProp.hs
@@ -1,29 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.BarProp (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.BarProp
-       (ghcjs_dom_bar_prop_get_visible, barPropGetVisible, BarProp,
-        IsBarProp, castToBarProp, gTypeBarProp, toBarProp)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "($1[\"visible\"] ? 1 : 0)"
-        ghcjs_dom_bar_prop_get_visible :: JSRef BarProp -> IO Bool
- 
-barPropGetVisible :: (IsBarProp self) => self -> IO Bool
-barPropGetVisible self
-  = ghcjs_dom_bar_prop_get_visible (unBarProp (toBarProp self))
+  module GHCJS.DOM.JSFFI.Generated.BarProp
 #else
-module GHCJS.DOM.BarProp (
   module Graphics.UI.Gtk.WebKit.DOM.BarProp
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.BarProp
+#else
 import Graphics.UI.Gtk.WebKit.DOM.BarProp
 #endif
diff --git a/src/GHCJS/DOM/BatteryManager.hs b/src/GHCJS/DOM/BatteryManager.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/BatteryManager.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.BatteryManager (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.BatteryManager
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.BatteryManager
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.BatteryManager
+#else
+import Graphics.UI.Gtk.WebKit.DOM.BatteryManager
+#endif
diff --git a/src/GHCJS/DOM/BeforeLoadEvent.hs b/src/GHCJS/DOM/BeforeLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/BeforeLoadEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.BeforeLoadEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/BeforeUnloadEvent.hs b/src/GHCJS/DOM/BeforeUnloadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/BeforeUnloadEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.BeforeUnloadEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/BiquadFilterNode.hs b/src/GHCJS/DOM/BiquadFilterNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/BiquadFilterNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.BiquadFilterNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/Blob.hs b/src/GHCJS/DOM/Blob.hs
--- a/src/GHCJS/DOM/Blob.hs
+++ b/src/GHCJS/DOM/Blob.hs
@@ -1,42 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Blob (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Blob
-       (ghcjs_dom_blob_slice, blobSlice, ghcjs_dom_blob_get_size,
-        blobGetSize, Blob, IsBlob, castToBlob, gTypeBlob, toBlob)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"slice\"]($2, $3, $4)"
-        ghcjs_dom_blob_slice ::
-        JSRef Blob -> Double -> Double -> JSString -> IO (JSRef Blob)
- 
-blobSlice ::
-          (IsBlob self, ToJSString contentType) =>
-            self -> Int64 -> Int64 -> contentType -> IO (Maybe Blob)
-blobSlice self start end contentType
-  = fmap Blob . maybeJSNull <$>
-      (ghcjs_dom_blob_slice (unBlob (toBlob self)) (fromIntegral start)
-         (fromIntegral end)
-         (toJSString contentType))
- 
-foreign import javascript unsafe "$1[\"size\"]"
-        ghcjs_dom_blob_get_size :: JSRef Blob -> IO Double
- 
-blobGetSize :: (IsBlob self) => self -> IO Word64
-blobGetSize self
-  = round <$> (ghcjs_dom_blob_get_size (unBlob (toBlob self)))
+  module GHCJS.DOM.JSFFI.Generated.Blob
 #else
-module GHCJS.DOM.Blob (
   module Graphics.UI.Gtk.WebKit.DOM.Blob
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Blob
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Blob
 #endif
diff --git a/src/GHCJS/DOM/CSS.hs b/src/GHCJS/DOM/CSS.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSS.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSS (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSS
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.CSS
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSS
+#else
+import Graphics.UI.Gtk.WebKit.DOM.CSS
+#endif
diff --git a/src/GHCJS/DOM/CSSCharsetRule.hs b/src/GHCJS/DOM/CSSCharsetRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSCharsetRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSCharsetRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSCharsetRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSCharsetRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSFontFaceLoadEvent.hs b/src/GHCJS/DOM/CSSFontFaceLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSFontFaceLoadEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSFontFaceLoadEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSFontFaceRule.hs b/src/GHCJS/DOM/CSSFontFaceRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSFontFaceRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSFontFaceRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSImportRule.hs b/src/GHCJS/DOM/CSSImportRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSImportRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSImportRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSImportRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSImportRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSKeyframeRule.hs b/src/GHCJS/DOM/CSSKeyframeRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSKeyframeRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSKeyframeRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSKeyframesRule.hs b/src/GHCJS/DOM/CSSKeyframesRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSKeyframesRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSKeyframesRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSMediaRule.hs b/src/GHCJS/DOM/CSSMediaRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSMediaRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSMediaRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSMediaRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSMediaRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSPageRule.hs b/src/GHCJS/DOM/CSSPageRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSPageRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSPageRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSPageRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSPageRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSPrimitiveValue.hs b/src/GHCJS/DOM/CSSPrimitiveValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSPrimitiveValue.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSPrimitiveValue (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSRule.hs b/src/GHCJS/DOM/CSSRule.hs
--- a/src/GHCJS/DOM/CSSRule.hs
+++ b/src/GHCJS/DOM/CSSRule.hs
@@ -1,81 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSRule (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.CSSRule
-       (cUNKNOWN_RULE, cSTYLE_RULE, cCHARSET_RULE, cIMPORT_RULE,
-        cMEDIA_RULE, cFONT_FACE_RULE, cPAGE_RULE, cKEYFRAMES_RULE,
-        cKEYFRAME_RULE, cSUPPORTS_RULE, cWEBKIT_KEYFRAMES_RULE,
-        cWEBKIT_KEYFRAME_RULE, ghcjs_dom_css_rule_set_css_text,
-        cssRuleSetCssText, ghcjs_dom_css_rule_get_css_text,
-        cssRuleGetCssText, ghcjs_dom_css_rule_get_parent_style_sheet,
-        cssRuleGetParentStyleSheet, ghcjs_dom_css_rule_get_parent_rule,
-        cssRuleGetParentRule, CSSRule, IsCSSRule, castToCSSRule,
-        gTypeCSSRule, toCSSRule)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
-cUNKNOWN_RULE = 0
-cSTYLE_RULE = 1
-cCHARSET_RULE = 2
-cIMPORT_RULE = 3
-cMEDIA_RULE = 4
-cFONT_FACE_RULE = 5
-cPAGE_RULE = 6
-cKEYFRAMES_RULE = 7
-cKEYFRAME_RULE = 8
-cSUPPORTS_RULE = 12
-cWEBKIT_KEYFRAMES_RULE = 7
-cWEBKIT_KEYFRAME_RULE = 8
- 
-foreign import javascript unsafe "$1[\"cssText\"] = $2;"
-        ghcjs_dom_css_rule_set_css_text ::
-        JSRef CSSRule -> JSString -> IO ()
- 
-cssRuleSetCssText ::
-                  (IsCSSRule self, ToJSString val) => self -> val -> IO ()
-cssRuleSetCssText self val
-  = ghcjs_dom_css_rule_set_css_text (unCSSRule (toCSSRule self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cssText\"]"
-        ghcjs_dom_css_rule_get_css_text :: JSRef CSSRule -> IO JSString
- 
-cssRuleGetCssText ::
-                  (IsCSSRule self, FromJSString result) => self -> IO result
-cssRuleGetCssText self
-  = fromJSString <$>
-      (ghcjs_dom_css_rule_get_css_text (unCSSRule (toCSSRule self)))
- 
-foreign import javascript unsafe "$1[\"parentStyleSheet\"]"
-        ghcjs_dom_css_rule_get_parent_style_sheet ::
-        JSRef CSSRule -> IO (JSRef CSSStyleSheet)
- 
-cssRuleGetParentStyleSheet ::
-                           (IsCSSRule self) => self -> IO (Maybe CSSStyleSheet)
-cssRuleGetParentStyleSheet self
-  = fmap CSSStyleSheet . maybeJSNull <$>
-      (ghcjs_dom_css_rule_get_parent_style_sheet
-         (unCSSRule (toCSSRule self)))
- 
-foreign import javascript unsafe "$1[\"parentRule\"]"
-        ghcjs_dom_css_rule_get_parent_rule ::
-        JSRef CSSRule -> IO (JSRef CSSRule)
- 
-cssRuleGetParentRule ::
-                     (IsCSSRule self) => self -> IO (Maybe CSSRule)
-cssRuleGetParentRule self
-  = fmap CSSRule . maybeJSNull <$>
-      (ghcjs_dom_css_rule_get_parent_rule (unCSSRule (toCSSRule self)))
+  module GHCJS.DOM.JSFFI.Generated.CSSRule
 #else
-module GHCJS.DOM.CSSRule (
   module Graphics.UI.Gtk.WebKit.DOM.CSSRule
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSRule
+#else
 import Graphics.UI.Gtk.WebKit.DOM.CSSRule
 #endif
diff --git a/src/GHCJS/DOM/CSSRuleList.hs b/src/GHCJS/DOM/CSSRuleList.hs
--- a/src/GHCJS/DOM/CSSRuleList.hs
+++ b/src/GHCJS/DOM/CSSRuleList.hs
@@ -1,43 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSRuleList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.CSSRuleList
-       (ghcjs_dom_css_rule_list_item, cssRuleListItem,
-        ghcjs_dom_css_rule_list_get_length, cssRuleListGetLength,
-        CSSRuleList, IsCSSRuleList, castToCSSRuleList, gTypeCSSRuleList,
-        toCSSRuleList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_css_rule_list_item ::
-        JSRef CSSRuleList -> Word -> IO (JSRef CSSRule)
- 
-cssRuleListItem ::
-                (IsCSSRuleList self) => self -> Word -> IO (Maybe CSSRule)
-cssRuleListItem self index
-  = fmap CSSRule . maybeJSNull <$>
-      (ghcjs_dom_css_rule_list_item (unCSSRuleList (toCSSRuleList self))
-         index)
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_css_rule_list_get_length :: JSRef CSSRuleList -> IO Word
- 
-cssRuleListGetLength :: (IsCSSRuleList self) => self -> IO Word
-cssRuleListGetLength self
-  = ghcjs_dom_css_rule_list_get_length
-      (unCSSRuleList (toCSSRuleList self))
+  module GHCJS.DOM.JSFFI.Generated.CSSRuleList
 #else
-module GHCJS.DOM.CSSRuleList (
   module Graphics.UI.Gtk.WebKit.DOM.CSSRuleList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSRuleList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.CSSRuleList
 #endif
diff --git a/src/GHCJS/DOM/CSSStyleDeclaration.hs b/src/GHCJS/DOM/CSSStyleDeclaration.hs
--- a/src/GHCJS/DOM/CSSStyleDeclaration.hs
+++ b/src/GHCJS/DOM/CSSStyleDeclaration.hs
@@ -1,186 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSStyleDeclaration (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.CSSStyleDeclaration
-       (ghcjs_dom_css_style_declaration_get_property_value,
-        cssStyleDeclarationGetPropertyValue,
-        ghcjs_dom_css_style_declaration_remove_property,
-        cssStyleDeclarationRemoveProperty,
-        ghcjs_dom_css_style_declaration_get_property_priority,
-        cssStyleDeclarationGetPropertyPriority,
-        ghcjs_dom_css_style_declaration_set_property,
-        cssStyleDeclarationSetProperty,
-        ghcjs_dom_css_style_declaration_item, cssStyleDeclarationItem,
-        ghcjs_dom_css_style_declaration_get_property_shorthand,
-        cssStyleDeclarationGetPropertyShorthand,
-        ghcjs_dom_css_style_declaration_is_property_implicit,
-        cssStyleDeclarationIsPropertyImplicit,
-        ghcjs_dom_css_style_declaration_set_css_text,
-        cssStyleDeclarationSetCssText,
-        ghcjs_dom_css_style_declaration_get_css_text,
-        cssStyleDeclarationGetCssText,
-        ghcjs_dom_css_style_declaration_get_length,
-        cssStyleDeclarationGetLength,
-        ghcjs_dom_css_style_declaration_get_parent_rule,
-        cssStyleDeclarationGetParentRule, CSSStyleDeclaration,
-        IsCSSStyleDeclaration, castToCSSStyleDeclaration,
-        gTypeCSSStyleDeclaration, toCSSStyleDeclaration)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"getPropertyValue\"]($2)"
-        ghcjs_dom_css_style_declaration_get_property_value ::
-        JSRef CSSStyleDeclaration -> JSString -> IO JSString
- 
-cssStyleDeclarationGetPropertyValue ::
-                                    (IsCSSStyleDeclaration self, ToJSString propertyName,
-                                     FromJSString result) =>
-                                      self -> propertyName -> IO result
-cssStyleDeclarationGetPropertyValue self propertyName
-  = fromJSString <$>
-      (ghcjs_dom_css_style_declaration_get_property_value
-         (unCSSStyleDeclaration (toCSSStyleDeclaration self))
-         (toJSString propertyName))
- 
-foreign import javascript unsafe "$1[\"removeProperty\"]($2)"
-        ghcjs_dom_css_style_declaration_remove_property ::
-        JSRef CSSStyleDeclaration -> JSString -> IO JSString
- 
-cssStyleDeclarationRemoveProperty ::
-                                  (IsCSSStyleDeclaration self, ToJSString propertyName,
-                                   FromJSString result) =>
-                                    self -> propertyName -> IO result
-cssStyleDeclarationRemoveProperty self propertyName
-  = fromJSString <$>
-      (ghcjs_dom_css_style_declaration_remove_property
-         (unCSSStyleDeclaration (toCSSStyleDeclaration self))
-         (toJSString propertyName))
- 
-foreign import javascript unsafe "$1[\"getPropertyPriority\"]($2)"
-        ghcjs_dom_css_style_declaration_get_property_priority ::
-        JSRef CSSStyleDeclaration -> JSString -> IO JSString
- 
-cssStyleDeclarationGetPropertyPriority ::
-                                       (IsCSSStyleDeclaration self, ToJSString propertyName,
-                                        FromJSString result) =>
-                                         self -> propertyName -> IO result
-cssStyleDeclarationGetPropertyPriority self propertyName
-  = fromJSString <$>
-      (ghcjs_dom_css_style_declaration_get_property_priority
-         (unCSSStyleDeclaration (toCSSStyleDeclaration self))
-         (toJSString propertyName))
- 
-foreign import javascript unsafe "$1[\"setProperty\"]($2, $3, $4)"
-        ghcjs_dom_css_style_declaration_set_property ::
-        JSRef CSSStyleDeclaration ->
-          JSString -> JSString -> JSString -> IO ()
- 
-cssStyleDeclarationSetProperty ::
-                               (IsCSSStyleDeclaration self, ToJSString propertyName,
-                                ToJSString value, ToJSString priority) =>
-                                 self -> propertyName -> value -> priority -> IO ()
-cssStyleDeclarationSetProperty self propertyName value priority
-  = ghcjs_dom_css_style_declaration_set_property
-      (unCSSStyleDeclaration (toCSSStyleDeclaration self))
-      (toJSString propertyName)
-      (toJSString value)
-      (toJSString priority)
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_css_style_declaration_item ::
-        JSRef CSSStyleDeclaration -> Word -> IO JSString
- 
-cssStyleDeclarationItem ::
-                        (IsCSSStyleDeclaration self, FromJSString result) =>
-                          self -> Word -> IO result
-cssStyleDeclarationItem self index
-  = fromJSString <$>
-      (ghcjs_dom_css_style_declaration_item
-         (unCSSStyleDeclaration (toCSSStyleDeclaration self))
-         index)
- 
-foreign import javascript unsafe "$1[\"getPropertyShorthand\"]($2)"
-        ghcjs_dom_css_style_declaration_get_property_shorthand ::
-        JSRef CSSStyleDeclaration -> JSString -> IO JSString
- 
-cssStyleDeclarationGetPropertyShorthand ::
-                                        (IsCSSStyleDeclaration self, ToJSString propertyName,
-                                         FromJSString result) =>
-                                          self -> propertyName -> IO result
-cssStyleDeclarationGetPropertyShorthand self propertyName
-  = fromJSString <$>
-      (ghcjs_dom_css_style_declaration_get_property_shorthand
-         (unCSSStyleDeclaration (toCSSStyleDeclaration self))
-         (toJSString propertyName))
- 
-foreign import javascript unsafe
-        "($1[\"isPropertyImplicit\"]($2) ? 1 : 0)"
-        ghcjs_dom_css_style_declaration_is_property_implicit ::
-        JSRef CSSStyleDeclaration -> JSString -> IO Bool
- 
-cssStyleDeclarationIsPropertyImplicit ::
-                                      (IsCSSStyleDeclaration self, ToJSString propertyName) =>
-                                        self -> propertyName -> IO Bool
-cssStyleDeclarationIsPropertyImplicit self propertyName
-  = ghcjs_dom_css_style_declaration_is_property_implicit
-      (unCSSStyleDeclaration (toCSSStyleDeclaration self))
-      (toJSString propertyName)
- 
-foreign import javascript unsafe "$1[\"cssText\"] = $2;"
-        ghcjs_dom_css_style_declaration_set_css_text ::
-        JSRef CSSStyleDeclaration -> JSString -> IO ()
- 
-cssStyleDeclarationSetCssText ::
-                              (IsCSSStyleDeclaration self, ToJSString val) =>
-                                self -> val -> IO ()
-cssStyleDeclarationSetCssText self val
-  = ghcjs_dom_css_style_declaration_set_css_text
-      (unCSSStyleDeclaration (toCSSStyleDeclaration self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cssText\"]"
-        ghcjs_dom_css_style_declaration_get_css_text ::
-        JSRef CSSStyleDeclaration -> IO JSString
- 
-cssStyleDeclarationGetCssText ::
-                              (IsCSSStyleDeclaration self, FromJSString result) =>
-                                self -> IO result
-cssStyleDeclarationGetCssText self
-  = fromJSString <$>
-      (ghcjs_dom_css_style_declaration_get_css_text
-         (unCSSStyleDeclaration (toCSSStyleDeclaration self)))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_css_style_declaration_get_length ::
-        JSRef CSSStyleDeclaration -> IO Word
- 
-cssStyleDeclarationGetLength ::
-                             (IsCSSStyleDeclaration self) => self -> IO Word
-cssStyleDeclarationGetLength self
-  = ghcjs_dom_css_style_declaration_get_length
-      (unCSSStyleDeclaration (toCSSStyleDeclaration self))
- 
-foreign import javascript unsafe "$1[\"parentRule\"]"
-        ghcjs_dom_css_style_declaration_get_parent_rule ::
-        JSRef CSSStyleDeclaration -> IO (JSRef CSSRule)
- 
-cssStyleDeclarationGetParentRule ::
-                                 (IsCSSStyleDeclaration self) => self -> IO (Maybe CSSRule)
-cssStyleDeclarationGetParentRule self
-  = fmap CSSRule . maybeJSNull <$>
-      (ghcjs_dom_css_style_declaration_get_parent_rule
-         (unCSSStyleDeclaration (toCSSStyleDeclaration self)))
+  module GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration
 #else
-module GHCJS.DOM.CSSStyleDeclaration (
   module Graphics.UI.Gtk.WebKit.DOM.CSSStyleDeclaration
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration
+#else
 import Graphics.UI.Gtk.WebKit.DOM.CSSStyleDeclaration
 #endif
diff --git a/src/GHCJS/DOM/CSSStyleRule.hs b/src/GHCJS/DOM/CSSStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSStyleRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSStyleRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSStyleRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSStyleRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSStyleSheet.hs b/src/GHCJS/DOM/CSSStyleSheet.hs
--- a/src/GHCJS/DOM/CSSStyleSheet.hs
+++ b/src/GHCJS/DOM/CSSStyleSheet.hs
@@ -1,111 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSStyleSheet (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.CSSStyleSheet
-       (ghcjs_dom_css_style_sheet_insert_rule, cssStyleSheetInsertRule,
-        ghcjs_dom_css_style_sheet_delete_rule, cssStyleSheetDeleteRule,
-        ghcjs_dom_css_style_sheet_add_rule, cssStyleSheetAddRule,
-        ghcjs_dom_css_style_sheet_remove_rule, cssStyleSheetRemoveRule,
-        ghcjs_dom_css_style_sheet_get_owner_rule,
-        cssStyleSheetGetOwnerRule, ghcjs_dom_css_style_sheet_get_css_rules,
-        cssStyleSheetGetCssRules, ghcjs_dom_css_style_sheet_get_rules,
-        cssStyleSheetGetRules, CSSStyleSheet, IsCSSStyleSheet,
-        castToCSSStyleSheet, gTypeCSSStyleSheet, toCSSStyleSheet)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
-        ghcjs_dom_css_style_sheet_insert_rule ::
-        JSRef CSSStyleSheet -> JSString -> Word -> IO Word
- 
-cssStyleSheetInsertRule ::
-                        (IsCSSStyleSheet self, ToJSString rule) =>
-                          self -> rule -> Word -> IO Word
-cssStyleSheetInsertRule self rule index
-  = ghcjs_dom_css_style_sheet_insert_rule
-      (unCSSStyleSheet (toCSSStyleSheet self))
-      (toJSString rule)
-      index
- 
-foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
-        ghcjs_dom_css_style_sheet_delete_rule ::
-        JSRef CSSStyleSheet -> Word -> IO ()
- 
-cssStyleSheetDeleteRule ::
-                        (IsCSSStyleSheet self) => self -> Word -> IO ()
-cssStyleSheetDeleteRule self index
-  = ghcjs_dom_css_style_sheet_delete_rule
-      (unCSSStyleSheet (toCSSStyleSheet self))
-      index
- 
-foreign import javascript unsafe "$1[\"addRule\"]($2, $3, $4)"
-        ghcjs_dom_css_style_sheet_add_rule ::
-        JSRef CSSStyleSheet -> JSString -> JSString -> Word -> IO Int
- 
-cssStyleSheetAddRule ::
-                     (IsCSSStyleSheet self, ToJSString selector, ToJSString style) =>
-                       self -> selector -> style -> Word -> IO Int
-cssStyleSheetAddRule self selector style index
-  = ghcjs_dom_css_style_sheet_add_rule
-      (unCSSStyleSheet (toCSSStyleSheet self))
-      (toJSString selector)
-      (toJSString style)
-      index
- 
-foreign import javascript unsafe "$1[\"removeRule\"]($2)"
-        ghcjs_dom_css_style_sheet_remove_rule ::
-        JSRef CSSStyleSheet -> Word -> IO ()
- 
-cssStyleSheetRemoveRule ::
-                        (IsCSSStyleSheet self) => self -> Word -> IO ()
-cssStyleSheetRemoveRule self index
-  = ghcjs_dom_css_style_sheet_remove_rule
-      (unCSSStyleSheet (toCSSStyleSheet self))
-      index
- 
-foreign import javascript unsafe "$1[\"ownerRule\"]"
-        ghcjs_dom_css_style_sheet_get_owner_rule ::
-        JSRef CSSStyleSheet -> IO (JSRef CSSRule)
- 
-cssStyleSheetGetOwnerRule ::
-                          (IsCSSStyleSheet self) => self -> IO (Maybe CSSRule)
-cssStyleSheetGetOwnerRule self
-  = fmap CSSRule . maybeJSNull <$>
-      (ghcjs_dom_css_style_sheet_get_owner_rule
-         (unCSSStyleSheet (toCSSStyleSheet self)))
- 
-foreign import javascript unsafe "$1[\"cssRules\"]"
-        ghcjs_dom_css_style_sheet_get_css_rules ::
-        JSRef CSSStyleSheet -> IO (JSRef CSSRuleList)
- 
-cssStyleSheetGetCssRules ::
-                         (IsCSSStyleSheet self) => self -> IO (Maybe CSSRuleList)
-cssStyleSheetGetCssRules self
-  = fmap CSSRuleList . maybeJSNull <$>
-      (ghcjs_dom_css_style_sheet_get_css_rules
-         (unCSSStyleSheet (toCSSStyleSheet self)))
- 
-foreign import javascript unsafe "$1[\"rules\"]"
-        ghcjs_dom_css_style_sheet_get_rules ::
-        JSRef CSSStyleSheet -> IO (JSRef CSSRuleList)
- 
-cssStyleSheetGetRules ::
-                      (IsCSSStyleSheet self) => self -> IO (Maybe CSSRuleList)
-cssStyleSheetGetRules self
-  = fmap CSSRuleList . maybeJSNull <$>
-      (ghcjs_dom_css_style_sheet_get_rules
-         (unCSSStyleSheet (toCSSStyleSheet self)))
+  module GHCJS.DOM.JSFFI.Generated.CSSStyleSheet
 #else
-module GHCJS.DOM.CSSStyleSheet (
   module Graphics.UI.Gtk.WebKit.DOM.CSSStyleSheet
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSStyleSheet
+#else
 import Graphics.UI.Gtk.WebKit.DOM.CSSStyleSheet
 #endif
diff --git a/src/GHCJS/DOM/CSSSupportsRule.hs b/src/GHCJS/DOM/CSSSupportsRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSSupportsRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSSupportsRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSSupportsRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSSupportsRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/CSSValue.hs b/src/GHCJS/DOM/CSSValue.hs
--- a/src/GHCJS/DOM/CSSValue.hs
+++ b/src/GHCJS/DOM/CSSValue.hs
@@ -1,56 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSValue (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.CSSValue
-       (cCSS_INHERIT, cCSS_PRIMITIVE_VALUE, cCSS_VALUE_LIST, cCSS_CUSTOM,
-        ghcjs_dom_css_value_set_css_text, cssValueSetCssText,
-        ghcjs_dom_css_value_get_css_text, cssValueGetCssText,
-        ghcjs_dom_css_value_get_css_value_type, cssValueGetCssValueType,
-        CSSValue, IsCSSValue, castToCSSValue, gTypeCSSValue, toCSSValue)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
-cCSS_INHERIT = 0
-cCSS_PRIMITIVE_VALUE = 1
-cCSS_VALUE_LIST = 2
-cCSS_CUSTOM = 3
- 
-foreign import javascript unsafe "$1[\"cssText\"] = $2;"
-        ghcjs_dom_css_value_set_css_text ::
-        JSRef CSSValue -> JSString -> IO ()
- 
-cssValueSetCssText ::
-                   (IsCSSValue self, ToJSString val) => self -> val -> IO ()
-cssValueSetCssText self val
-  = ghcjs_dom_css_value_set_css_text (unCSSValue (toCSSValue self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cssText\"]"
-        ghcjs_dom_css_value_get_css_text :: JSRef CSSValue -> IO JSString
- 
-cssValueGetCssText ::
-                   (IsCSSValue self, FromJSString result) => self -> IO result
-cssValueGetCssText self
-  = fromJSString <$>
-      (ghcjs_dom_css_value_get_css_text (unCSSValue (toCSSValue self)))
- 
-foreign import javascript unsafe "$1[\"cssValueType\"]"
-        ghcjs_dom_css_value_get_css_value_type :: JSRef CSSValue -> IO Word
- 
-cssValueGetCssValueType :: (IsCSSValue self) => self -> IO Word
-cssValueGetCssValueType self
-  = ghcjs_dom_css_value_get_css_value_type
-      (unCSSValue (toCSSValue self))
+  module GHCJS.DOM.JSFFI.Generated.CSSValue
 #else
-module GHCJS.DOM.CSSValue (
   module Graphics.UI.Gtk.WebKit.DOM.CSSValue
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSValue
+#else
 import Graphics.UI.Gtk.WebKit.DOM.CSSValue
 #endif
diff --git a/src/GHCJS/DOM/CSSValueList.hs b/src/GHCJS/DOM/CSSValueList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CSSValueList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CSSValueList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CSSValueList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CSSValueList
+#else
+#endif
diff --git a/src/GHCJS/DOM/CanvasGradient.hs b/src/GHCJS/DOM/CanvasGradient.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CanvasGradient.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CanvasGradient (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CanvasGradient
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CanvasGradient
+#else
+#endif
diff --git a/src/GHCJS/DOM/CanvasRenderingContext.hs b/src/GHCJS/DOM/CanvasRenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CanvasRenderingContext.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CanvasRenderingContext (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext
+#else
+#endif
diff --git a/src/GHCJS/DOM/CanvasRenderingContext2D.hs b/src/GHCJS/DOM/CanvasRenderingContext2D.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CanvasRenderingContext2D.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CanvasRenderingContext2D (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
+#else
+#endif
diff --git a/src/GHCJS/DOM/CapabilityRange.hs b/src/GHCJS/DOM/CapabilityRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CapabilityRange.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CapabilityRange (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CapabilityRange
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CapabilityRange
+#else
+#endif
diff --git a/src/GHCJS/DOM/CharacterData.hs b/src/GHCJS/DOM/CharacterData.hs
--- a/src/GHCJS/DOM/CharacterData.hs
+++ b/src/GHCJS/DOM/CharacterData.hs
@@ -1,125 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.CharacterData (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.CharacterData
-       (ghcjs_dom_character_data_substring_data,
-        characterDataSubstringData, ghcjs_dom_character_data_append_data,
-        characterDataAppendData, ghcjs_dom_character_data_insert_data,
-        characterDataInsertData, ghcjs_dom_character_data_delete_data,
-        characterDataDeleteData, ghcjs_dom_character_data_replace_data,
-        characterDataReplaceData, ghcjs_dom_character_data_set_data,
-        characterDataSetData, ghcjs_dom_character_data_get_data,
-        characterDataGetData, ghcjs_dom_character_data_get_length,
-        characterDataGetLength, CharacterData, IsCharacterData,
-        castToCharacterData, gTypeCharacterData, toCharacterData)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"substringData\"]($2, $3)"
-        ghcjs_dom_character_data_substring_data ::
-        JSRef CharacterData -> Word -> Word -> IO JSString
- 
-characterDataSubstringData ::
-                           (IsCharacterData self, FromJSString result) =>
-                             self -> Word -> Word -> IO result
-characterDataSubstringData self offset length
-  = fromJSString <$>
-      (ghcjs_dom_character_data_substring_data
-         (unCharacterData (toCharacterData self))
-         offset
-         length)
- 
-foreign import javascript unsafe "$1[\"appendData\"]($2)"
-        ghcjs_dom_character_data_append_data ::
-        JSRef CharacterData -> JSString -> IO ()
- 
-characterDataAppendData ::
-                        (IsCharacterData self, ToJSString data') => self -> data' -> IO ()
-characterDataAppendData self data'
-  = ghcjs_dom_character_data_append_data
-      (unCharacterData (toCharacterData self))
-      (toJSString data')
- 
-foreign import javascript unsafe "$1[\"insertData\"]($2, $3)"
-        ghcjs_dom_character_data_insert_data ::
-        JSRef CharacterData -> Word -> JSString -> IO ()
- 
-characterDataInsertData ::
-                        (IsCharacterData self, ToJSString data') =>
-                          self -> Word -> data' -> IO ()
-characterDataInsertData self offset data'
-  = ghcjs_dom_character_data_insert_data
-      (unCharacterData (toCharacterData self))
-      offset
-      (toJSString data')
- 
-foreign import javascript unsafe "$1[\"deleteData\"]($2, $3)"
-        ghcjs_dom_character_data_delete_data ::
-        JSRef CharacterData -> Word -> Word -> IO ()
- 
-characterDataDeleteData ::
-                        (IsCharacterData self) => self -> Word -> Word -> IO ()
-characterDataDeleteData self offset length
-  = ghcjs_dom_character_data_delete_data
-      (unCharacterData (toCharacterData self))
-      offset
-      length
- 
-foreign import javascript unsafe "$1[\"replaceData\"]($2, $3, $4)"
-        ghcjs_dom_character_data_replace_data ::
-        JSRef CharacterData -> Word -> Word -> JSString -> IO ()
- 
-characterDataReplaceData ::
-                         (IsCharacterData self, ToJSString data') =>
-                           self -> Word -> Word -> data' -> IO ()
-characterDataReplaceData self offset length data'
-  = ghcjs_dom_character_data_replace_data
-      (unCharacterData (toCharacterData self))
-      offset
-      length
-      (toJSString data')
- 
-foreign import javascript unsafe "$1[\"data\"] = $2;"
-        ghcjs_dom_character_data_set_data ::
-        JSRef CharacterData -> JSString -> IO ()
- 
-characterDataSetData ::
-                     (IsCharacterData self, ToJSString val) => self -> val -> IO ()
-characterDataSetData self val
-  = ghcjs_dom_character_data_set_data
-      (unCharacterData (toCharacterData self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"data\"]"
-        ghcjs_dom_character_data_get_data ::
-        JSRef CharacterData -> IO JSString
- 
-characterDataGetData ::
-                     (IsCharacterData self, FromJSString result) => self -> IO result
-characterDataGetData self
-  = fromJSString <$>
-      (ghcjs_dom_character_data_get_data
-         (unCharacterData (toCharacterData self)))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_character_data_get_length ::
-        JSRef CharacterData -> IO Word
- 
-characterDataGetLength :: (IsCharacterData self) => self -> IO Word
-characterDataGetLength self
-  = ghcjs_dom_character_data_get_length
-      (unCharacterData (toCharacterData self))
+  module GHCJS.DOM.JSFFI.Generated.CharacterData
 #else
-module GHCJS.DOM.CharacterData (
   module Graphics.UI.Gtk.WebKit.DOM.CharacterData
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CharacterData
+#else
 import Graphics.UI.Gtk.WebKit.DOM.CharacterData
 #endif
diff --git a/src/GHCJS/DOM/ChildNode.hs b/src/GHCJS/DOM/ChildNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ChildNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ChildNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ChildNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ChildNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/ClientRect.hs b/src/GHCJS/DOM/ClientRect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ClientRect.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ClientRect (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ClientRect
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ClientRect
+#else
+#endif
diff --git a/src/GHCJS/DOM/ClientRectList.hs b/src/GHCJS/DOM/ClientRectList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ClientRectList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ClientRectList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ClientRectList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ClientRectList
+#else
+#endif
diff --git a/src/GHCJS/DOM/CloseEvent.hs b/src/GHCJS/DOM/CloseEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CloseEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CloseEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CloseEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CloseEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/CommandLineAPIHost.hs b/src/GHCJS/DOM/CommandLineAPIHost.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CommandLineAPIHost.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CommandLineAPIHost (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost
+#else
+#endif
diff --git a/src/GHCJS/DOM/Comment.hs b/src/GHCJS/DOM/Comment.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Comment.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Comment (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Comment
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Comment
+#else
+#endif
diff --git a/src/GHCJS/DOM/CompositionEvent.hs b/src/GHCJS/DOM/CompositionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CompositionEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CompositionEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CompositionEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CompositionEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/ConvolverNode.hs b/src/GHCJS/DOM/ConvolverNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ConvolverNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ConvolverNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ConvolverNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ConvolverNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/Coordinates.hs b/src/GHCJS/DOM/Coordinates.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Coordinates.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Coordinates (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Coordinates
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Coordinates
+#else
+#endif
diff --git a/src/GHCJS/DOM/Counter.hs b/src/GHCJS/DOM/Counter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Counter.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Counter (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Counter
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Counter
+#else
+#endif
diff --git a/src/GHCJS/DOM/Crypto.hs b/src/GHCJS/DOM/Crypto.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Crypto.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Crypto (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Crypto
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Crypto
+#else
+#endif
diff --git a/src/GHCJS/DOM/CryptoKey.hs b/src/GHCJS/DOM/CryptoKey.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CryptoKey.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CryptoKey (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CryptoKey
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CryptoKey
+#else
+#endif
diff --git a/src/GHCJS/DOM/CryptoKeyPair.hs b/src/GHCJS/DOM/CryptoKeyPair.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CryptoKeyPair.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CryptoKeyPair (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CryptoKeyPair
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CryptoKeyPair
+#else
+#endif
diff --git a/src/GHCJS/DOM/Css.hs b/src/GHCJS/DOM/Css.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/Css.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Css (CSSRule, IsCSSRule) where
- 
-data CSSRule = CSSRule
- 
-class IsCSSRule a
- 
-instance IsCSSRule CSSRule
-#else
-module GHCJS.DOM.Css (
-  module Graphics.UI.Gtk.WebKit.DOM.Css
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.Css
-#endif
diff --git a/src/GHCJS/DOM/CustomEvent.hs b/src/GHCJS/DOM/CustomEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/CustomEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.CustomEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.CustomEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.CustomEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/DOMApplicationCache.hs b/src/GHCJS/DOM/DOMApplicationCache.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMApplicationCache.hs
+++ /dev/null
@@ -1,134 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMApplicationCache
-       (ghcjs_dom_dom_application_cache_update, domApplicationCacheUpdate,
-        ghcjs_dom_dom_application_cache_swap_cache,
-        domApplicationCacheSwapCache,
-        ghcjs_dom_dom_application_cache_abort, domApplicationCacheAbort,
-        ghcjs_dom_dom_application_cache_dispatch_event,
-        domApplicationCacheDispatchEvent, cUNCACHED, cIDLE, cCHECKING,
-        cDOWNLOADING, cUPDATEREADY, cOBSOLETE,
-        ghcjs_dom_dom_application_cache_get_status,
-        domApplicationCacheGetStatus, domApplicationCacheOnchecking,
-        domApplicationCacheOnerror, domApplicationCacheOnnoupdate,
-        domApplicationCacheOndownloading, domApplicationCacheOnprogress,
-        domApplicationCacheOnupdateready, domApplicationCacheOncached,
-        domApplicationCacheOnobsolete, DOMApplicationCache,
-        IsDOMApplicationCache, castToDOMApplicationCache,
-        gTypeDOMApplicationCache, toDOMApplicationCache)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"update\"]()"
-        ghcjs_dom_dom_application_cache_update ::
-        JSRef DOMApplicationCache -> IO ()
- 
-domApplicationCacheUpdate ::
-                          (IsDOMApplicationCache self) => self -> IO ()
-domApplicationCacheUpdate self
-  = ghcjs_dom_dom_application_cache_update
-      (unDOMApplicationCache (toDOMApplicationCache self))
- 
-foreign import javascript unsafe "$1[\"swapCache\"]()"
-        ghcjs_dom_dom_application_cache_swap_cache ::
-        JSRef DOMApplicationCache -> IO ()
- 
-domApplicationCacheSwapCache ::
-                             (IsDOMApplicationCache self) => self -> IO ()
-domApplicationCacheSwapCache self
-  = ghcjs_dom_dom_application_cache_swap_cache
-      (unDOMApplicationCache (toDOMApplicationCache self))
- 
-foreign import javascript unsafe "$1[\"abort\"]()"
-        ghcjs_dom_dom_application_cache_abort ::
-        JSRef DOMApplicationCache -> IO ()
- 
-domApplicationCacheAbort ::
-                         (IsDOMApplicationCache self) => self -> IO ()
-domApplicationCacheAbort self
-  = ghcjs_dom_dom_application_cache_abort
-      (unDOMApplicationCache (toDOMApplicationCache self))
- 
-foreign import javascript unsafe
-        "($1[\"dispatchEvent\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_application_cache_dispatch_event ::
-        JSRef DOMApplicationCache -> JSRef Event -> IO Bool
- 
-domApplicationCacheDispatchEvent ::
-                                 (IsDOMApplicationCache self, IsEvent evt) =>
-                                   self -> Maybe evt -> IO Bool
-domApplicationCacheDispatchEvent self evt
-  = ghcjs_dom_dom_application_cache_dispatch_event
-      (unDOMApplicationCache (toDOMApplicationCache self))
-      (maybe jsNull (unEvent . toEvent) evt)
-cUNCACHED = 0
-cIDLE = 1
-cCHECKING = 2
-cDOWNLOADING = 3
-cUPDATEREADY = 4
-cOBSOLETE = 5
- 
-foreign import javascript unsafe "$1[\"status\"]"
-        ghcjs_dom_dom_application_cache_get_status ::
-        JSRef DOMApplicationCache -> IO Word
- 
-domApplicationCacheGetStatus ::
-                             (IsDOMApplicationCache self) => self -> IO Word
-domApplicationCacheGetStatus self
-  = ghcjs_dom_dom_application_cache_get_status
-      (unDOMApplicationCache (toDOMApplicationCache self))
- 
-domApplicationCacheOnchecking ::
-                              (IsDOMApplicationCache self) =>
-                                Signal self (EventM UIEvent self ())
-domApplicationCacheOnchecking = (connect "checking")
- 
-domApplicationCacheOnerror ::
-                           (IsDOMApplicationCache self) =>
-                             Signal self (EventM UIEvent self ())
-domApplicationCacheOnerror = (connect "error")
- 
-domApplicationCacheOnnoupdate ::
-                              (IsDOMApplicationCache self) =>
-                                Signal self (EventM UIEvent self ())
-domApplicationCacheOnnoupdate = (connect "noupdate")
- 
-domApplicationCacheOndownloading ::
-                                 (IsDOMApplicationCache self) =>
-                                   Signal self (EventM UIEvent self ())
-domApplicationCacheOndownloading = (connect "downloading")
- 
-domApplicationCacheOnprogress ::
-                              (IsDOMApplicationCache self) =>
-                                Signal self (EventM UIEvent self ())
-domApplicationCacheOnprogress = (connect "progress")
- 
-domApplicationCacheOnupdateready ::
-                                 (IsDOMApplicationCache self) =>
-                                   Signal self (EventM UIEvent self ())
-domApplicationCacheOnupdateready = (connect "updateready")
- 
-domApplicationCacheOncached ::
-                            (IsDOMApplicationCache self) =>
-                              Signal self (EventM UIEvent self ())
-domApplicationCacheOncached = (connect "cached")
- 
-domApplicationCacheOnobsolete ::
-                              (IsDOMApplicationCache self) =>
-                                Signal self (EventM UIEvent self ())
-domApplicationCacheOnobsolete = (connect "obsolete")
-#else
-module GHCJS.DOM.DOMApplicationCache (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMApplicationCache
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMApplicationCache
-#endif
diff --git a/src/GHCJS/DOM/DOMError.hs b/src/GHCJS/DOM/DOMError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DOMError.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DOMError (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.DOMError
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.DOMError
+#else
+#endif
diff --git a/src/GHCJS/DOM/DOMImplementation.hs b/src/GHCJS/DOM/DOMImplementation.hs
--- a/src/GHCJS/DOM/DOMImplementation.hs
+++ b/src/GHCJS/DOM/DOMImplementation.hs
@@ -1,119 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.DOMImplementation (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMImplementation
-       (ghcjs_dom_dom_implementation_has_feature,
-        domImplementationHasFeature,
-        ghcjs_dom_dom_implementation_create_document_type,
-        domImplementationCreateDocumentType,
-        ghcjs_dom_dom_implementation_create_document,
-        domImplementationCreateDocument,
-        ghcjs_dom_dom_implementation_create_css_style_sheet,
-        domImplementationCreateCSSStyleSheet,
-        ghcjs_dom_dom_implementation_create_html_document,
-        domImplementationCreateHTMLDocument, DOMImplementation,
-        IsDOMImplementation, castToDOMImplementation,
-        gTypeDOMImplementation, toDOMImplementation)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"hasFeature\"]($2,\n$3) ? 1 : 0)"
-        ghcjs_dom_dom_implementation_has_feature ::
-        JSRef DOMImplementation -> JSString -> JSString -> IO Bool
- 
-domImplementationHasFeature ::
-                            (IsDOMImplementation self, ToJSString feature,
-                             ToJSString version) =>
-                              self -> feature -> version -> IO Bool
-domImplementationHasFeature self feature version
-  = ghcjs_dom_dom_implementation_has_feature
-      (unDOMImplementation (toDOMImplementation self))
-      (toJSString feature)
-      (toJSString version)
- 
-foreign import javascript unsafe
-        "$1[\"createDocumentType\"]($2, $3,\n$4)"
-        ghcjs_dom_dom_implementation_create_document_type ::
-        JSRef DOMImplementation ->
-          JSString -> JSString -> JSString -> IO (JSRef DocumentType)
- 
-domImplementationCreateDocumentType ::
-                                    (IsDOMImplementation self, ToJSString qualifiedName,
-                                     ToJSString publicId, ToJSString systemId) =>
-                                      self ->
-                                        qualifiedName ->
-                                          publicId -> systemId -> IO (Maybe DocumentType)
-domImplementationCreateDocumentType self qualifiedName publicId
-  systemId
-  = fmap DocumentType . maybeJSNull <$>
-      (ghcjs_dom_dom_implementation_create_document_type
-         (unDOMImplementation (toDOMImplementation self))
-         (toJSString qualifiedName)
-         (toJSString publicId)
-         (toJSString systemId))
- 
-foreign import javascript unsafe
-        "$1[\"createDocument\"]($2, $3, $4)"
-        ghcjs_dom_dom_implementation_create_document ::
-        JSRef DOMImplementation ->
-          JSString -> JSString -> JSRef DocumentType -> IO (JSRef Document)
- 
-domImplementationCreateDocument ::
-                                (IsDOMImplementation self, ToJSString namespaceURI,
-                                 ToJSString qualifiedName, IsDocumentType doctype) =>
-                                  self ->
-                                    namespaceURI ->
-                                      qualifiedName -> Maybe doctype -> IO (Maybe Document)
-domImplementationCreateDocument self namespaceURI qualifiedName
-  doctype
-  = fmap Document . maybeJSNull <$>
-      (ghcjs_dom_dom_implementation_create_document
-         (unDOMImplementation (toDOMImplementation self))
-         (toJSString namespaceURI)
-         (toJSString qualifiedName)
-         (maybe jsNull (unDocumentType . toDocumentType) doctype))
- 
-foreign import javascript unsafe
-        "$1[\"createCSSStyleSheet\"]($2,\n$3)"
-        ghcjs_dom_dom_implementation_create_css_style_sheet ::
-        JSRef DOMImplementation ->
-          JSString -> JSString -> IO (JSRef CSSStyleSheet)
- 
-domImplementationCreateCSSStyleSheet ::
-                                     (IsDOMImplementation self, ToJSString title,
-                                      ToJSString media) =>
-                                       self -> title -> media -> IO (Maybe CSSStyleSheet)
-domImplementationCreateCSSStyleSheet self title media
-  = fmap CSSStyleSheet . maybeJSNull <$>
-      (ghcjs_dom_dom_implementation_create_css_style_sheet
-         (unDOMImplementation (toDOMImplementation self))
-         (toJSString title)
-         (toJSString media))
- 
-foreign import javascript unsafe "$1[\"createHTMLDocument\"]($2)"
-        ghcjs_dom_dom_implementation_create_html_document ::
-        JSRef DOMImplementation -> JSString -> IO (JSRef HTMLDocument)
- 
-domImplementationCreateHTMLDocument ::
-                                    (IsDOMImplementation self, ToJSString title) =>
-                                      self -> title -> IO (Maybe HTMLDocument)
-domImplementationCreateHTMLDocument self title
-  = fmap HTMLDocument . maybeJSNull <$>
-      (ghcjs_dom_dom_implementation_create_html_document
-         (unDOMImplementation (toDOMImplementation self))
-         (toJSString title))
+  module GHCJS.DOM.JSFFI.Generated.DOMImplementation
 #else
-module GHCJS.DOM.DOMImplementation (
   module Graphics.UI.Gtk.WebKit.DOM.DOMImplementation
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DOMImplementation
+#else
 import Graphics.UI.Gtk.WebKit.DOM.DOMImplementation
 #endif
diff --git a/src/GHCJS/DOM/DOMMimeType.hs b/src/GHCJS/DOM/DOMMimeType.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMMimeType.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMMimeType
-       (ghcjs_dom_dom_mime_type_get_suffixes, domMimeTypeGetSuffixes,
-        ghcjs_dom_dom_mime_type_get_description, domMimeTypeGetDescription,
-        ghcjs_dom_dom_mime_type_get_enabled_plugin,
-        domMimeTypeGetEnabledPlugin, DOMMimeType, IsDOMMimeType,
-        castToDOMMimeType, gTypeDOMMimeType, toDOMMimeType)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"suffixes\"]"
-        ghcjs_dom_dom_mime_type_get_suffixes ::
-        JSRef DOMMimeType -> IO JSString
- 
-domMimeTypeGetSuffixes ::
-                       (IsDOMMimeType self, FromJSString result) => self -> IO result
-domMimeTypeGetSuffixes self
-  = fromJSString <$>
-      (ghcjs_dom_dom_mime_type_get_suffixes
-         (unDOMMimeType (toDOMMimeType self)))
- 
-foreign import javascript unsafe "$1[\"description\"]"
-        ghcjs_dom_dom_mime_type_get_description ::
-        JSRef DOMMimeType -> IO JSString
- 
-domMimeTypeGetDescription ::
-                          (IsDOMMimeType self, FromJSString result) => self -> IO result
-domMimeTypeGetDescription self
-  = fromJSString <$>
-      (ghcjs_dom_dom_mime_type_get_description
-         (unDOMMimeType (toDOMMimeType self)))
- 
-foreign import javascript unsafe "$1[\"enabledPlugin\"]"
-        ghcjs_dom_dom_mime_type_get_enabled_plugin ::
-        JSRef DOMMimeType -> IO (JSRef DOMPlugin)
- 
-domMimeTypeGetEnabledPlugin ::
-                            (IsDOMMimeType self) => self -> IO (Maybe DOMPlugin)
-domMimeTypeGetEnabledPlugin self
-  = fmap DOMPlugin . maybeJSNull <$>
-      (ghcjs_dom_dom_mime_type_get_enabled_plugin
-         (unDOMMimeType (toDOMMimeType self)))
-#else
-module GHCJS.DOM.DOMMimeType (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMMimeType
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMMimeType
-#endif
diff --git a/src/GHCJS/DOM/DOMMimeTypeArray.hs b/src/GHCJS/DOM/DOMMimeTypeArray.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMMimeTypeArray.hs
+++ /dev/null
@@ -1,61 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMMimeTypeArray
-       (ghcjs_dom_dom_mime_type_array_item, domMimeTypeArrayItem,
-        ghcjs_dom_dom_mime_type_array_named_item,
-        domMimeTypeArrayNamedItem,
-        ghcjs_dom_dom_mime_type_array_get_length,
-        domMimeTypeArrayGetLength, DOMMimeTypeArray, IsDOMMimeTypeArray,
-        castToDOMMimeTypeArray, gTypeDOMMimeTypeArray, toDOMMimeTypeArray)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_dom_mime_type_array_item ::
-        JSRef DOMMimeTypeArray -> Word -> IO (JSRef DOMMimeType)
- 
-domMimeTypeArrayItem ::
-                     (IsDOMMimeTypeArray self) => self -> Word -> IO (Maybe DOMMimeType)
-domMimeTypeArrayItem self index
-  = fmap DOMMimeType . maybeJSNull <$>
-      (ghcjs_dom_dom_mime_type_array_item
-         (unDOMMimeTypeArray (toDOMMimeTypeArray self))
-         index)
- 
-foreign import javascript unsafe "$1[\"namedItem\"]($2)"
-        ghcjs_dom_dom_mime_type_array_named_item ::
-        JSRef DOMMimeTypeArray -> JSString -> IO (JSRef DOMMimeType)
- 
-domMimeTypeArrayNamedItem ::
-                          (IsDOMMimeTypeArray self, ToJSString name) =>
-                            self -> name -> IO (Maybe DOMMimeType)
-domMimeTypeArrayNamedItem self name
-  = fmap DOMMimeType . maybeJSNull <$>
-      (ghcjs_dom_dom_mime_type_array_named_item
-         (unDOMMimeTypeArray (toDOMMimeTypeArray self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_dom_mime_type_array_get_length ::
-        JSRef DOMMimeTypeArray -> IO Word
- 
-domMimeTypeArrayGetLength ::
-                          (IsDOMMimeTypeArray self) => self -> IO Word
-domMimeTypeArrayGetLength self
-  = ghcjs_dom_dom_mime_type_array_get_length
-      (unDOMMimeTypeArray (toDOMMimeTypeArray self))
-#else
-module GHCJS.DOM.DOMMimeTypeArray (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMMimeTypeArray
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMMimeTypeArray
-#endif
diff --git a/src/GHCJS/DOM/DOMNamedFlowCollection.hs b/src/GHCJS/DOM/DOMNamedFlowCollection.hs
--- a/src/GHCJS/DOM/DOMNamedFlowCollection.hs
+++ b/src/GHCJS/DOM/DOMNamedFlowCollection.hs
@@ -1,65 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.DOMNamedFlowCollection (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMNamedFlowCollection
-       (ghcjs_dom_dom_named_flow_collection_item,
-        domNamedFlowCollectionItem,
-        ghcjs_dom_dom_named_flow_collection_named_item,
-        domNamedFlowCollectionNamedItem,
-        ghcjs_dom_dom_named_flow_collection_get_length,
-        domNamedFlowCollectionGetLength, DOMNamedFlowCollection,
-        IsDOMNamedFlowCollection, castToDOMNamedFlowCollection,
-        gTypeDOMNamedFlowCollection, toDOMNamedFlowCollection)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_dom_named_flow_collection_item ::
-        JSRef DOMNamedFlowCollection -> Word -> IO (JSRef WebKitNamedFlow)
- 
-domNamedFlowCollectionItem ::
-                           (IsDOMNamedFlowCollection self) =>
-                             self -> Word -> IO (Maybe WebKitNamedFlow)
-domNamedFlowCollectionItem self index
-  = fmap WebKitNamedFlow . maybeJSNull <$>
-      (ghcjs_dom_dom_named_flow_collection_item
-         (unDOMNamedFlowCollection (toDOMNamedFlowCollection self))
-         index)
- 
-foreign import javascript unsafe "$1[\"namedItem\"]($2)"
-        ghcjs_dom_dom_named_flow_collection_named_item ::
-        JSRef DOMNamedFlowCollection ->
-          JSString -> IO (JSRef WebKitNamedFlow)
- 
-domNamedFlowCollectionNamedItem ::
-                                (IsDOMNamedFlowCollection self, ToJSString name) =>
-                                  self -> name -> IO (Maybe WebKitNamedFlow)
-domNamedFlowCollectionNamedItem self name
-  = fmap WebKitNamedFlow . maybeJSNull <$>
-      (ghcjs_dom_dom_named_flow_collection_named_item
-         (unDOMNamedFlowCollection (toDOMNamedFlowCollection self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_dom_named_flow_collection_get_length ::
-        JSRef DOMNamedFlowCollection -> IO Word
- 
-domNamedFlowCollectionGetLength ::
-                                (IsDOMNamedFlowCollection self) => self -> IO Word
-domNamedFlowCollectionGetLength self
-  = ghcjs_dom_dom_named_flow_collection_get_length
-      (unDOMNamedFlowCollection (toDOMNamedFlowCollection self))
+  module GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection
 #else
-module GHCJS.DOM.DOMNamedFlowCollection (
   module Graphics.UI.Gtk.WebKit.DOM.DOMNamedFlowCollection
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection
+#else
 import Graphics.UI.Gtk.WebKit.DOM.DOMNamedFlowCollection
 #endif
diff --git a/src/GHCJS/DOM/DOMParser.hs b/src/GHCJS/DOM/DOMParser.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DOMParser.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DOMParser (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DOMParser
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DOMParser
+#else
+#endif
diff --git a/src/GHCJS/DOM/DOMPlugin.hs b/src/GHCJS/DOM/DOMPlugin.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMPlugin.hs
+++ /dev/null
@@ -1,86 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMPlugin
-       (ghcjs_dom_dom_plugin_item, domPluginItem,
-        ghcjs_dom_dom_plugin_named_item, domPluginNamedItem,
-        ghcjs_dom_dom_plugin_get_name, domPluginGetName,
-        ghcjs_dom_dom_plugin_get_filename, domPluginGetFilename,
-        ghcjs_dom_dom_plugin_get_description, domPluginGetDescription,
-        ghcjs_dom_dom_plugin_get_length, domPluginGetLength, DOMPlugin,
-        IsDOMPlugin, castToDOMPlugin, gTypeDOMPlugin, toDOMPlugin)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_dom_plugin_item ::
-        JSRef DOMPlugin -> Word -> IO (JSRef DOMMimeType)
- 
-domPluginItem ::
-              (IsDOMPlugin self) => self -> Word -> IO (Maybe DOMMimeType)
-domPluginItem self index
-  = fmap DOMMimeType . maybeJSNull <$>
-      (ghcjs_dom_dom_plugin_item (unDOMPlugin (toDOMPlugin self)) index)
- 
-foreign import javascript unsafe "$1[\"namedItem\"]($2)"
-        ghcjs_dom_dom_plugin_named_item ::
-        JSRef DOMPlugin -> JSString -> IO (JSRef DOMMimeType)
- 
-domPluginNamedItem ::
-                   (IsDOMPlugin self, ToJSString name) =>
-                     self -> name -> IO (Maybe DOMMimeType)
-domPluginNamedItem self name
-  = fmap DOMMimeType . maybeJSNull <$>
-      (ghcjs_dom_dom_plugin_named_item (unDOMPlugin (toDOMPlugin self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_dom_plugin_get_name :: JSRef DOMPlugin -> IO JSString
- 
-domPluginGetName ::
-                 (IsDOMPlugin self, FromJSString result) => self -> IO result
-domPluginGetName self
-  = fromJSString <$>
-      (ghcjs_dom_dom_plugin_get_name (unDOMPlugin (toDOMPlugin self)))
- 
-foreign import javascript unsafe "$1[\"filename\"]"
-        ghcjs_dom_dom_plugin_get_filename :: JSRef DOMPlugin -> IO JSString
- 
-domPluginGetFilename ::
-                     (IsDOMPlugin self, FromJSString result) => self -> IO result
-domPluginGetFilename self
-  = fromJSString <$>
-      (ghcjs_dom_dom_plugin_get_filename
-         (unDOMPlugin (toDOMPlugin self)))
- 
-foreign import javascript unsafe "$1[\"description\"]"
-        ghcjs_dom_dom_plugin_get_description ::
-        JSRef DOMPlugin -> IO JSString
- 
-domPluginGetDescription ::
-                        (IsDOMPlugin self, FromJSString result) => self -> IO result
-domPluginGetDescription self
-  = fromJSString <$>
-      (ghcjs_dom_dom_plugin_get_description
-         (unDOMPlugin (toDOMPlugin self)))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_dom_plugin_get_length :: JSRef DOMPlugin -> IO Word
- 
-domPluginGetLength :: (IsDOMPlugin self) => self -> IO Word
-domPluginGetLength self
-  = ghcjs_dom_dom_plugin_get_length (unDOMPlugin (toDOMPlugin self))
-#else
-module GHCJS.DOM.DOMPlugin (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMPlugin
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMPlugin
-#endif
diff --git a/src/GHCJS/DOM/DOMPluginArray.hs b/src/GHCJS/DOM/DOMPluginArray.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMPluginArray.hs
+++ /dev/null
@@ -1,72 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMPluginArray
-       (ghcjs_dom_dom_plugin_array_item, domPluginArrayItem,
-        ghcjs_dom_dom_plugin_array_named_item, domPluginArrayNamedItem,
-        ghcjs_dom_dom_plugin_array_refresh, domPluginArrayRefresh,
-        ghcjs_dom_dom_plugin_array_get_length, domPluginArrayGetLength,
-        DOMPluginArray, IsDOMPluginArray, castToDOMPluginArray,
-        gTypeDOMPluginArray, toDOMPluginArray)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_dom_plugin_array_item ::
-        JSRef DOMPluginArray -> Word -> IO (JSRef DOMPlugin)
- 
-domPluginArrayItem ::
-                   (IsDOMPluginArray self) => self -> Word -> IO (Maybe DOMPlugin)
-domPluginArrayItem self index
-  = fmap DOMPlugin . maybeJSNull <$>
-      (ghcjs_dom_dom_plugin_array_item
-         (unDOMPluginArray (toDOMPluginArray self))
-         index)
- 
-foreign import javascript unsafe "$1[\"namedItem\"]($2)"
-        ghcjs_dom_dom_plugin_array_named_item ::
-        JSRef DOMPluginArray -> JSString -> IO (JSRef DOMPlugin)
- 
-domPluginArrayNamedItem ::
-                        (IsDOMPluginArray self, ToJSString name) =>
-                          self -> name -> IO (Maybe DOMPlugin)
-domPluginArrayNamedItem self name
-  = fmap DOMPlugin . maybeJSNull <$>
-      (ghcjs_dom_dom_plugin_array_named_item
-         (unDOMPluginArray (toDOMPluginArray self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"refresh\"]($2)"
-        ghcjs_dom_dom_plugin_array_refresh ::
-        JSRef DOMPluginArray -> Bool -> IO ()
- 
-domPluginArrayRefresh ::
-                      (IsDOMPluginArray self) => self -> Bool -> IO ()
-domPluginArrayRefresh self reload
-  = ghcjs_dom_dom_plugin_array_refresh
-      (unDOMPluginArray (toDOMPluginArray self))
-      reload
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_dom_plugin_array_get_length ::
-        JSRef DOMPluginArray -> IO Word
- 
-domPluginArrayGetLength ::
-                        (IsDOMPluginArray self) => self -> IO Word
-domPluginArrayGetLength self
-  = ghcjs_dom_dom_plugin_array_get_length
-      (unDOMPluginArray (toDOMPluginArray self))
-#else
-module GHCJS.DOM.DOMPluginArray (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMPluginArray
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMPluginArray
-#endif
diff --git a/src/GHCJS/DOM/DOMSecurityPolicy.hs b/src/GHCJS/DOM/DOMSecurityPolicy.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMSecurityPolicy.hs
+++ /dev/null
@@ -1,235 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMSecurityPolicy
-       (ghcjs_dom_dom_security_policy_allows_connection_to,
-        domSecurityPolicyAllowsConnectionTo,
-        ghcjs_dom_dom_security_policy_allows_font_from,
-        domSecurityPolicyAllowsFontFrom,
-        ghcjs_dom_dom_security_policy_allows_form_action,
-        domSecurityPolicyAllowsFormAction,
-        ghcjs_dom_dom_security_policy_allows_frame_from,
-        domSecurityPolicyAllowsFrameFrom,
-        ghcjs_dom_dom_security_policy_allows_image_from,
-        domSecurityPolicyAllowsImageFrom,
-        ghcjs_dom_dom_security_policy_allows_media_from,
-        domSecurityPolicyAllowsMediaFrom,
-        ghcjs_dom_dom_security_policy_allows_object_from,
-        domSecurityPolicyAllowsObjectFrom,
-        ghcjs_dom_dom_security_policy_allows_plugin_type,
-        domSecurityPolicyAllowsPluginType,
-        ghcjs_dom_dom_security_policy_allows_script_from,
-        domSecurityPolicyAllowsScriptFrom,
-        ghcjs_dom_dom_security_policy_allows_style_from,
-        domSecurityPolicyAllowsStyleFrom,
-        ghcjs_dom_dom_security_policy_get_allows_eval,
-        domSecurityPolicyGetAllowsEval,
-        ghcjs_dom_dom_security_policy_get_allows_inline_script,
-        domSecurityPolicyGetAllowsInlineScript,
-        ghcjs_dom_dom_security_policy_get_allows_inline_style,
-        domSecurityPolicyGetAllowsInlineStyle,
-        ghcjs_dom_dom_security_policy_get_is_active,
-        domSecurityPolicyGetIsActive,
-        ghcjs_dom_dom_security_policy_get_report_ur_is,
-        domSecurityPolicyGetReportURIs, DOMSecurityPolicy,
-        IsDOMSecurityPolicy, castToDOMSecurityPolicy,
-        gTypeDOMSecurityPolicy, toDOMSecurityPolicy)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"allowsConnectionTo\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_connection_to ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsConnectionTo ::
-                                    (IsDOMSecurityPolicy self, ToJSString url) =>
-                                      self -> url -> IO Bool
-domSecurityPolicyAllowsConnectionTo self url
-  = ghcjs_dom_dom_security_policy_allows_connection_to
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe
-        "($1[\"allowsFontFrom\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_font_from ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsFontFrom ::
-                                (IsDOMSecurityPolicy self, ToJSString url) =>
-                                  self -> url -> IO Bool
-domSecurityPolicyAllowsFontFrom self url
-  = ghcjs_dom_dom_security_policy_allows_font_from
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe
-        "($1[\"allowsFormAction\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_form_action ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsFormAction ::
-                                  (IsDOMSecurityPolicy self, ToJSString url) =>
-                                    self -> url -> IO Bool
-domSecurityPolicyAllowsFormAction self url
-  = ghcjs_dom_dom_security_policy_allows_form_action
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe
-        "($1[\"allowsFrameFrom\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_frame_from ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsFrameFrom ::
-                                 (IsDOMSecurityPolicy self, ToJSString url) =>
-                                   self -> url -> IO Bool
-domSecurityPolicyAllowsFrameFrom self url
-  = ghcjs_dom_dom_security_policy_allows_frame_from
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe
-        "($1[\"allowsImageFrom\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_image_from ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsImageFrom ::
-                                 (IsDOMSecurityPolicy self, ToJSString url) =>
-                                   self -> url -> IO Bool
-domSecurityPolicyAllowsImageFrom self url
-  = ghcjs_dom_dom_security_policy_allows_image_from
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe
-        "($1[\"allowsMediaFrom\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_media_from ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsMediaFrom ::
-                                 (IsDOMSecurityPolicy self, ToJSString url) =>
-                                   self -> url -> IO Bool
-domSecurityPolicyAllowsMediaFrom self url
-  = ghcjs_dom_dom_security_policy_allows_media_from
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe
-        "($1[\"allowsObjectFrom\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_object_from ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsObjectFrom ::
-                                  (IsDOMSecurityPolicy self, ToJSString url) =>
-                                    self -> url -> IO Bool
-domSecurityPolicyAllowsObjectFrom self url
-  = ghcjs_dom_dom_security_policy_allows_object_from
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe
-        "($1[\"allowsPluginType\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_plugin_type ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsPluginType ::
-                                  (IsDOMSecurityPolicy self, ToJSString type') =>
-                                    self -> type' -> IO Bool
-domSecurityPolicyAllowsPluginType self type'
-  = ghcjs_dom_dom_security_policy_allows_plugin_type
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString type')
- 
-foreign import javascript unsafe
-        "($1[\"allowsScriptFrom\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_script_from ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsScriptFrom ::
-                                  (IsDOMSecurityPolicy self, ToJSString url) =>
-                                    self -> url -> IO Bool
-domSecurityPolicyAllowsScriptFrom self url
-  = ghcjs_dom_dom_security_policy_allows_script_from
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe
-        "($1[\"allowsStyleFrom\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_allows_style_from ::
-        JSRef DOMSecurityPolicy -> JSString -> IO Bool
- 
-domSecurityPolicyAllowsStyleFrom ::
-                                 (IsDOMSecurityPolicy self, ToJSString url) =>
-                                   self -> url -> IO Bool
-domSecurityPolicyAllowsStyleFrom self url
-  = ghcjs_dom_dom_security_policy_allows_style_from
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
-      (toJSString url)
- 
-foreign import javascript unsafe "($1[\"allowsEval\"] ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_get_allows_eval ::
-        JSRef DOMSecurityPolicy -> IO Bool
- 
-domSecurityPolicyGetAllowsEval ::
-                               (IsDOMSecurityPolicy self) => self -> IO Bool
-domSecurityPolicyGetAllowsEval self
-  = ghcjs_dom_dom_security_policy_get_allows_eval
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
- 
-foreign import javascript unsafe
-        "($1[\"allowsInlineScript\"] ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_get_allows_inline_script ::
-        JSRef DOMSecurityPolicy -> IO Bool
- 
-domSecurityPolicyGetAllowsInlineScript ::
-                                       (IsDOMSecurityPolicy self) => self -> IO Bool
-domSecurityPolicyGetAllowsInlineScript self
-  = ghcjs_dom_dom_security_policy_get_allows_inline_script
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
- 
-foreign import javascript unsafe
-        "($1[\"allowsInlineStyle\"] ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_get_allows_inline_style ::
-        JSRef DOMSecurityPolicy -> IO Bool
- 
-domSecurityPolicyGetAllowsInlineStyle ::
-                                      (IsDOMSecurityPolicy self) => self -> IO Bool
-domSecurityPolicyGetAllowsInlineStyle self
-  = ghcjs_dom_dom_security_policy_get_allows_inline_style
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
- 
-foreign import javascript unsafe "($1[\"isActive\"] ? 1 : 0)"
-        ghcjs_dom_dom_security_policy_get_is_active ::
-        JSRef DOMSecurityPolicy -> IO Bool
- 
-domSecurityPolicyGetIsActive ::
-                             (IsDOMSecurityPolicy self) => self -> IO Bool
-domSecurityPolicyGetIsActive self
-  = ghcjs_dom_dom_security_policy_get_is_active
-      (unDOMSecurityPolicy (toDOMSecurityPolicy self))
- 
-foreign import javascript unsafe "$1[\"reportURIs\"]"
-        ghcjs_dom_dom_security_policy_get_report_ur_is ::
-        JSRef DOMSecurityPolicy -> IO (JSRef DOMStringList)
- 
-domSecurityPolicyGetReportURIs ::
-                               (IsDOMSecurityPolicy self) => self -> IO (Maybe DOMStringList)
-domSecurityPolicyGetReportURIs self
-  = fmap DOMStringList . maybeJSNull <$>
-      (ghcjs_dom_dom_security_policy_get_report_ur_is
-         (unDOMSecurityPolicy (toDOMSecurityPolicy self)))
-#else
-module GHCJS.DOM.DOMSecurityPolicy (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMSecurityPolicy
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMSecurityPolicy
-#endif
diff --git a/src/GHCJS/DOM/DOMSelection.hs b/src/GHCJS/DOM/DOMSelection.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMSelection.hs
+++ /dev/null
@@ -1,324 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMSelection
-       (ghcjs_dom_dom_selection_collapse, domSelectionCollapse,
-        ghcjs_dom_dom_selection_collapse_to_end, domSelectionCollapseToEnd,
-        ghcjs_dom_dom_selection_collapse_to_start,
-        domSelectionCollapseToStart,
-        ghcjs_dom_dom_selection_delete_from_document,
-        domSelectionDeleteFromDocument,
-        ghcjs_dom_dom_selection_contains_node, domSelectionContainsNode,
-        ghcjs_dom_dom_selection_select_all_children,
-        domSelectionSelectAllChildren, ghcjs_dom_dom_selection_extend,
-        domSelectionExtend, ghcjs_dom_dom_selection_get_range_at,
-        domSelectionGetRangeAt, ghcjs_dom_dom_selection_remove_all_ranges,
-        domSelectionRemoveAllRanges, ghcjs_dom_dom_selection_add_range,
-        domSelectionAddRange, ghcjs_dom_dom_selection_modify,
-        domSelectionModify, ghcjs_dom_dom_selection_set_base_and_extent,
-        domSelectionSetBaseAndExtent, ghcjs_dom_dom_selection_set_position,
-        domSelectionSetPosition, ghcjs_dom_dom_selection_empty,
-        domSelectionEmpty, ghcjs_dom_dom_selection_get_anchor_node,
-        domSelectionGetAnchorNode,
-        ghcjs_dom_dom_selection_get_anchor_offset,
-        domSelectionGetAnchorOffset,
-        ghcjs_dom_dom_selection_get_focus_node, domSelectionGetFocusNode,
-        ghcjs_dom_dom_selection_get_focus_offset,
-        domSelectionGetFocusOffset,
-        ghcjs_dom_dom_selection_get_is_collapsed,
-        domSelectionGetIsCollapsed,
-        ghcjs_dom_dom_selection_get_range_count, domSelectionGetRangeCount,
-        ghcjs_dom_dom_selection_get_base_node, domSelectionGetBaseNode,
-        ghcjs_dom_dom_selection_get_base_offset, domSelectionGetBaseOffset,
-        ghcjs_dom_dom_selection_get_extent_node, domSelectionGetExtentNode,
-        ghcjs_dom_dom_selection_get_extent_offset,
-        domSelectionGetExtentOffset, DOMSelection, IsDOMSelection,
-        castToDOMSelection, gTypeDOMSelection, toDOMSelection)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"collapse\"]($2, $3)"
-        ghcjs_dom_dom_selection_collapse ::
-        JSRef DOMSelection -> JSRef Node -> Int -> IO ()
- 
-domSelectionCollapse ::
-                     (IsDOMSelection self, IsNode node) =>
-                       self -> Maybe node -> Int -> IO ()
-domSelectionCollapse self node index
-  = ghcjs_dom_dom_selection_collapse
-      (unDOMSelection (toDOMSelection self))
-      (maybe jsNull (unNode . toNode) node)
-      index
- 
-foreign import javascript unsafe "$1[\"collapseToEnd\"]()"
-        ghcjs_dom_dom_selection_collapse_to_end ::
-        JSRef DOMSelection -> IO ()
- 
-domSelectionCollapseToEnd :: (IsDOMSelection self) => self -> IO ()
-domSelectionCollapseToEnd self
-  = ghcjs_dom_dom_selection_collapse_to_end
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "$1[\"collapseToStart\"]()"
-        ghcjs_dom_dom_selection_collapse_to_start ::
-        JSRef DOMSelection -> IO ()
- 
-domSelectionCollapseToStart ::
-                            (IsDOMSelection self) => self -> IO ()
-domSelectionCollapseToStart self
-  = ghcjs_dom_dom_selection_collapse_to_start
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "$1[\"deleteFromDocument\"]()"
-        ghcjs_dom_dom_selection_delete_from_document ::
-        JSRef DOMSelection -> IO ()
- 
-domSelectionDeleteFromDocument ::
-                               (IsDOMSelection self) => self -> IO ()
-domSelectionDeleteFromDocument self
-  = ghcjs_dom_dom_selection_delete_from_document
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe
-        "($1[\"containsNode\"]($2,\n$3) ? 1 : 0)"
-        ghcjs_dom_dom_selection_contains_node ::
-        JSRef DOMSelection -> JSRef Node -> Bool -> IO Bool
- 
-domSelectionContainsNode ::
-                         (IsDOMSelection self, IsNode node) =>
-                           self -> Maybe node -> Bool -> IO Bool
-domSelectionContainsNode self node allowPartial
-  = ghcjs_dom_dom_selection_contains_node
-      (unDOMSelection (toDOMSelection self))
-      (maybe jsNull (unNode . toNode) node)
-      allowPartial
- 
-foreign import javascript unsafe "$1[\"selectAllChildren\"]($2)"
-        ghcjs_dom_dom_selection_select_all_children ::
-        JSRef DOMSelection -> JSRef Node -> IO ()
- 
-domSelectionSelectAllChildren ::
-                              (IsDOMSelection self, IsNode node) => self -> Maybe node -> IO ()
-domSelectionSelectAllChildren self node
-  = ghcjs_dom_dom_selection_select_all_children
-      (unDOMSelection (toDOMSelection self))
-      (maybe jsNull (unNode . toNode) node)
- 
-foreign import javascript unsafe "$1[\"extend\"]($2, $3)"
-        ghcjs_dom_dom_selection_extend ::
-        JSRef DOMSelection -> JSRef Node -> Int -> IO ()
- 
-domSelectionExtend ::
-                   (IsDOMSelection self, IsNode node) =>
-                     self -> Maybe node -> Int -> IO ()
-domSelectionExtend self node offset
-  = ghcjs_dom_dom_selection_extend
-      (unDOMSelection (toDOMSelection self))
-      (maybe jsNull (unNode . toNode) node)
-      offset
- 
-foreign import javascript unsafe "$1[\"getRangeAt\"]($2)"
-        ghcjs_dom_dom_selection_get_range_at ::
-        JSRef DOMSelection -> Int -> IO (JSRef DOMRange)
- 
-domSelectionGetRangeAt ::
-                       (IsDOMSelection self) => self -> Int -> IO (Maybe DOMRange)
-domSelectionGetRangeAt self index
-  = fmap DOMRange . maybeJSNull <$>
-      (ghcjs_dom_dom_selection_get_range_at
-         (unDOMSelection (toDOMSelection self))
-         index)
- 
-foreign import javascript unsafe "$1[\"removeAllRanges\"]()"
-        ghcjs_dom_dom_selection_remove_all_ranges ::
-        JSRef DOMSelection -> IO ()
- 
-domSelectionRemoveAllRanges ::
-                            (IsDOMSelection self) => self -> IO ()
-domSelectionRemoveAllRanges self
-  = ghcjs_dom_dom_selection_remove_all_ranges
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "$1[\"addRange\"]($2)"
-        ghcjs_dom_dom_selection_add_range ::
-        JSRef DOMSelection -> JSRef DOMRange -> IO ()
- 
-domSelectionAddRange ::
-                     (IsDOMSelection self, IsDOMRange range) =>
-                       self -> Maybe range -> IO ()
-domSelectionAddRange self range
-  = ghcjs_dom_dom_selection_add_range
-      (unDOMSelection (toDOMSelection self))
-      (maybe jsNull (unDOMRange . toDOMRange) range)
- 
-foreign import javascript unsafe "$1[\"modify\"]($2, $3, $4)"
-        ghcjs_dom_dom_selection_modify ::
-        JSRef DOMSelection -> JSString -> JSString -> JSString -> IO ()
- 
-domSelectionModify ::
-                   (IsDOMSelection self, ToJSString alter, ToJSString direction,
-                    ToJSString granularity) =>
-                     self -> alter -> direction -> granularity -> IO ()
-domSelectionModify self alter direction granularity
-  = ghcjs_dom_dom_selection_modify
-      (unDOMSelection (toDOMSelection self))
-      (toJSString alter)
-      (toJSString direction)
-      (toJSString granularity)
- 
-foreign import javascript unsafe
-        "$1[\"setBaseAndExtent\"]($2, $3,\n$4, $5)"
-        ghcjs_dom_dom_selection_set_base_and_extent ::
-        JSRef DOMSelection ->
-          JSRef Node -> Int -> JSRef Node -> Int -> IO ()
- 
-domSelectionSetBaseAndExtent ::
-                             (IsDOMSelection self, IsNode baseNode, IsNode extentNode) =>
-                               self -> Maybe baseNode -> Int -> Maybe extentNode -> Int -> IO ()
-domSelectionSetBaseAndExtent self baseNode baseOffset extentNode
-  extentOffset
-  = ghcjs_dom_dom_selection_set_base_and_extent
-      (unDOMSelection (toDOMSelection self))
-      (maybe jsNull (unNode . toNode) baseNode)
-      baseOffset
-      (maybe jsNull (unNode . toNode) extentNode)
-      extentOffset
- 
-foreign import javascript unsafe "$1[\"setPosition\"]($2, $3)"
-        ghcjs_dom_dom_selection_set_position ::
-        JSRef DOMSelection -> JSRef Node -> Int -> IO ()
- 
-domSelectionSetPosition ::
-                        (IsDOMSelection self, IsNode node) =>
-                          self -> Maybe node -> Int -> IO ()
-domSelectionSetPosition self node offset
-  = ghcjs_dom_dom_selection_set_position
-      (unDOMSelection (toDOMSelection self))
-      (maybe jsNull (unNode . toNode) node)
-      offset
- 
-foreign import javascript unsafe "$1[\"empty\"]()"
-        ghcjs_dom_dom_selection_empty :: JSRef DOMSelection -> IO ()
- 
-domSelectionEmpty :: (IsDOMSelection self) => self -> IO ()
-domSelectionEmpty self
-  = ghcjs_dom_dom_selection_empty
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "$1[\"anchorNode\"]"
-        ghcjs_dom_dom_selection_get_anchor_node ::
-        JSRef DOMSelection -> IO (JSRef Node)
- 
-domSelectionGetAnchorNode ::
-                          (IsDOMSelection self) => self -> IO (Maybe Node)
-domSelectionGetAnchorNode self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_dom_selection_get_anchor_node
-         (unDOMSelection (toDOMSelection self)))
- 
-foreign import javascript unsafe "$1[\"anchorOffset\"]"
-        ghcjs_dom_dom_selection_get_anchor_offset ::
-        JSRef DOMSelection -> IO Int
- 
-domSelectionGetAnchorOffset ::
-                            (IsDOMSelection self) => self -> IO Int
-domSelectionGetAnchorOffset self
-  = ghcjs_dom_dom_selection_get_anchor_offset
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "$1[\"focusNode\"]"
-        ghcjs_dom_dom_selection_get_focus_node ::
-        JSRef DOMSelection -> IO (JSRef Node)
- 
-domSelectionGetFocusNode ::
-                         (IsDOMSelection self) => self -> IO (Maybe Node)
-domSelectionGetFocusNode self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_dom_selection_get_focus_node
-         (unDOMSelection (toDOMSelection self)))
- 
-foreign import javascript unsafe "$1[\"focusOffset\"]"
-        ghcjs_dom_dom_selection_get_focus_offset ::
-        JSRef DOMSelection -> IO Int
- 
-domSelectionGetFocusOffset ::
-                           (IsDOMSelection self) => self -> IO Int
-domSelectionGetFocusOffset self
-  = ghcjs_dom_dom_selection_get_focus_offset
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "($1[\"isCollapsed\"] ? 1 : 0)"
-        ghcjs_dom_dom_selection_get_is_collapsed ::
-        JSRef DOMSelection -> IO Bool
- 
-domSelectionGetIsCollapsed ::
-                           (IsDOMSelection self) => self -> IO Bool
-domSelectionGetIsCollapsed self
-  = ghcjs_dom_dom_selection_get_is_collapsed
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "$1[\"rangeCount\"]"
-        ghcjs_dom_dom_selection_get_range_count ::
-        JSRef DOMSelection -> IO Int
- 
-domSelectionGetRangeCount ::
-                          (IsDOMSelection self) => self -> IO Int
-domSelectionGetRangeCount self
-  = ghcjs_dom_dom_selection_get_range_count
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "$1[\"baseNode\"]"
-        ghcjs_dom_dom_selection_get_base_node ::
-        JSRef DOMSelection -> IO (JSRef Node)
- 
-domSelectionGetBaseNode ::
-                        (IsDOMSelection self) => self -> IO (Maybe Node)
-domSelectionGetBaseNode self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_dom_selection_get_base_node
-         (unDOMSelection (toDOMSelection self)))
- 
-foreign import javascript unsafe "$1[\"baseOffset\"]"
-        ghcjs_dom_dom_selection_get_base_offset ::
-        JSRef DOMSelection -> IO Int
- 
-domSelectionGetBaseOffset ::
-                          (IsDOMSelection self) => self -> IO Int
-domSelectionGetBaseOffset self
-  = ghcjs_dom_dom_selection_get_base_offset
-      (unDOMSelection (toDOMSelection self))
- 
-foreign import javascript unsafe "$1[\"extentNode\"]"
-        ghcjs_dom_dom_selection_get_extent_node ::
-        JSRef DOMSelection -> IO (JSRef Node)
- 
-domSelectionGetExtentNode ::
-                          (IsDOMSelection self) => self -> IO (Maybe Node)
-domSelectionGetExtentNode self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_dom_selection_get_extent_node
-         (unDOMSelection (toDOMSelection self)))
- 
-foreign import javascript unsafe "$1[\"extentOffset\"]"
-        ghcjs_dom_dom_selection_get_extent_offset ::
-        JSRef DOMSelection -> IO Int
- 
-domSelectionGetExtentOffset ::
-                            (IsDOMSelection self) => self -> IO Int
-domSelectionGetExtentOffset self
-  = ghcjs_dom_dom_selection_get_extent_offset
-      (unDOMSelection (toDOMSelection self))
-#else
-module GHCJS.DOM.DOMSelection (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMSelection
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMSelection
-#endif
diff --git a/src/GHCJS/DOM/DOMSettableTokenList.hs b/src/GHCJS/DOM/DOMSettableTokenList.hs
--- a/src/GHCJS/DOM/DOMSettableTokenList.hs
+++ b/src/GHCJS/DOM/DOMSettableTokenList.hs
@@ -1,64 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.DOMSettableTokenList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMSettableTokenList
-       (ghcjs_dom_dom_settable_token_list_get, domSettableTokenList_get,
-        ghcjs_dom_dom_settable_token_list_set_value,
-        domSettableTokenListSetValue,
-        ghcjs_dom_dom_settable_token_list_get_value,
-        domSettableTokenListGetValue, DOMSettableTokenList,
-        IsDOMSettableTokenList, castToDOMSettableTokenList,
-        gTypeDOMSettableTokenList, toDOMSettableTokenList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"_get\"]($2)"
-        ghcjs_dom_dom_settable_token_list_get ::
-        JSRef DOMSettableTokenList -> Word -> IO JSString
- 
-domSettableTokenList_get ::
-                         (IsDOMSettableTokenList self, FromJSString result) =>
-                           self -> Word -> IO result
-domSettableTokenList_get self index
-  = fromJSString <$>
-      (ghcjs_dom_dom_settable_token_list_get
-         (unDOMSettableTokenList (toDOMSettableTokenList self))
-         index)
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_dom_settable_token_list_set_value ::
-        JSRef DOMSettableTokenList -> JSString -> IO ()
- 
-domSettableTokenListSetValue ::
-                             (IsDOMSettableTokenList self, ToJSString val) =>
-                               self -> val -> IO ()
-domSettableTokenListSetValue self val
-  = ghcjs_dom_dom_settable_token_list_set_value
-      (unDOMSettableTokenList (toDOMSettableTokenList self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_dom_settable_token_list_get_value ::
-        JSRef DOMSettableTokenList -> IO JSString
- 
-domSettableTokenListGetValue ::
-                             (IsDOMSettableTokenList self, FromJSString result) =>
-                               self -> IO result
-domSettableTokenListGetValue self
-  = fromJSString <$>
-      (ghcjs_dom_dom_settable_token_list_get_value
-         (unDOMSettableTokenList (toDOMSettableTokenList self)))
+  module GHCJS.DOM.JSFFI.Generated.DOMSettableTokenList
 #else
-module GHCJS.DOM.DOMSettableTokenList (
   module Graphics.UI.Gtk.WebKit.DOM.DOMSettableTokenList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DOMSettableTokenList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.DOMSettableTokenList
 #endif
diff --git a/src/GHCJS/DOM/DOMStringList.hs b/src/GHCJS/DOM/DOMStringList.hs
--- a/src/GHCJS/DOM/DOMStringList.hs
+++ b/src/GHCJS/DOM/DOMStringList.hs
@@ -1,59 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.DOMStringList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMStringList
-       (ghcjs_dom_dom_string_list_item, domStringListItem,
-        ghcjs_dom_dom_string_list_contains, domStringListContains,
-        ghcjs_dom_dom_string_list_get_length, domStringListGetLength,
-        DOMStringList, IsDOMStringList, castToDOMStringList,
-        gTypeDOMStringList, toDOMStringList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_dom_string_list_item ::
-        JSRef DOMStringList -> Word -> IO JSString
- 
-domStringListItem ::
-                  (IsDOMStringList self, FromJSString result) =>
-                    self -> Word -> IO result
-domStringListItem self index
-  = fromJSString <$>
-      (ghcjs_dom_dom_string_list_item
-         (unDOMStringList (toDOMStringList self))
-         index)
- 
-foreign import javascript unsafe "($1[\"contains\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_string_list_contains ::
-        JSRef DOMStringList -> JSString -> IO Bool
- 
-domStringListContains ::
-                      (IsDOMStringList self, ToJSString string) =>
-                        self -> string -> IO Bool
-domStringListContains self string
-  = ghcjs_dom_dom_string_list_contains
-      (unDOMStringList (toDOMStringList self))
-      (toJSString string)
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_dom_string_list_get_length ::
-        JSRef DOMStringList -> IO Word
- 
-domStringListGetLength :: (IsDOMStringList self) => self -> IO Word
-domStringListGetLength self
-  = ghcjs_dom_dom_string_list_get_length
-      (unDOMStringList (toDOMStringList self))
+  module GHCJS.DOM.JSFFI.Generated.DOMStringList
 #else
-module GHCJS.DOM.DOMStringList (
   module Graphics.UI.Gtk.WebKit.DOM.DOMStringList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DOMStringList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.DOMStringList
 #endif
diff --git a/src/GHCJS/DOM/DOMTokenList.hs b/src/GHCJS/DOM/DOMTokenList.hs
--- a/src/GHCJS/DOM/DOMTokenList.hs
+++ b/src/GHCJS/DOM/DOMTokenList.hs
@@ -1,101 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.DOMTokenList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMTokenList
-       (ghcjs_dom_dom_token_list_item, domTokenListItem,
-        ghcjs_dom_dom_token_list_contains, domTokenListContains,
-        ghcjs_dom_dom_token_list_add, domTokenListAdd,
-        ghcjs_dom_dom_token_list_remove, domTokenListRemove,
-        ghcjs_dom_dom_token_list_toggle, domTokenListToggle,
-        ghcjs_dom_dom_token_list_get_length, domTokenListGetLength,
-        DOMTokenList, IsDOMTokenList, castToDOMTokenList,
-        gTypeDOMTokenList, toDOMTokenList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_dom_token_list_item ::
-        JSRef DOMTokenList -> Word -> IO JSString
- 
-domTokenListItem ::
-                 (IsDOMTokenList self, FromJSString result) =>
-                   self -> Word -> IO result
-domTokenListItem self index
-  = fromJSString <$>
-      (ghcjs_dom_dom_token_list_item
-         (unDOMTokenList (toDOMTokenList self))
-         index)
- 
-foreign import javascript unsafe "($1[\"contains\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_token_list_contains ::
-        JSRef DOMTokenList -> JSString -> IO Bool
- 
-domTokenListContains ::
-                     (IsDOMTokenList self, ToJSString token) => self -> token -> IO Bool
-domTokenListContains self token
-  = ghcjs_dom_dom_token_list_contains
-      (unDOMTokenList (toDOMTokenList self))
-      (toJSString token)
- 
-foreign import javascript unsafe "$1[\"add\"].apply($1, $2)"
-        ghcjs_dom_dom_token_list_add ::
-        JSRef DOMTokenList -> JSRef [a] -> IO ()
- 
-domTokenListAdd ::
-                (IsDOMTokenList self, ToJSString tokens, ToJSRef tokens) =>
-                  self -> [tokens] -> IO ()
-domTokenListAdd self tokens
-  = toJSRef tokens >>=
-      \ tokens' ->
-        ghcjs_dom_dom_token_list_add (unDOMTokenList (toDOMTokenList self))
-          tokens'
- 
-foreign import javascript unsafe "$1[\"remove\"].apply($1, $2)"
-        ghcjs_dom_dom_token_list_remove ::
-        JSRef DOMTokenList -> JSRef [a] -> IO ()
- 
-domTokenListRemove ::
-                   (IsDOMTokenList self, ToJSString tokens, ToJSRef tokens) =>
-                     self -> [tokens] -> IO ()
-domTokenListRemove self tokens
-  = toJSRef tokens >>=
-      \ tokens' ->
-        ghcjs_dom_dom_token_list_remove
-          (unDOMTokenList (toDOMTokenList self))
-          tokens'
- 
-foreign import javascript unsafe "($1[\"toggle\"]($2, $3) ? 1 : 0)"
-        ghcjs_dom_dom_token_list_toggle ::
-        JSRef DOMTokenList -> JSString -> Bool -> IO Bool
- 
-domTokenListToggle ::
-                   (IsDOMTokenList self, ToJSString token) =>
-                     self -> token -> Bool -> IO Bool
-domTokenListToggle self token force
-  = ghcjs_dom_dom_token_list_toggle
-      (unDOMTokenList (toDOMTokenList self))
-      (toJSString token)
-      force
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_dom_token_list_get_length ::
-        JSRef DOMTokenList -> IO Word
- 
-domTokenListGetLength :: (IsDOMTokenList self) => self -> IO Word
-domTokenListGetLength self
-  = ghcjs_dom_dom_token_list_get_length
-      (unDOMTokenList (toDOMTokenList self))
+  module GHCJS.DOM.JSFFI.Generated.DOMTokenList
 #else
-module GHCJS.DOM.DOMTokenList (
   module Graphics.UI.Gtk.WebKit.DOM.DOMTokenList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DOMTokenList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.DOMTokenList
 #endif
diff --git a/src/GHCJS/DOM/DOMWindow.hs b/src/GHCJS/DOM/DOMWindow.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMWindow.hs
+++ /dev/null
@@ -1,1161 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMWindow
-       (ghcjs_dom_dom_window_get_selection, domWindowGetSelection,
-        ghcjs_dom_dom_window_blur, domWindowBlur,
-        ghcjs_dom_dom_window_print, domWindowPrint,
-        ghcjs_dom_dom_window_stop, domWindowStop,
-        ghcjs_dom_dom_window_alert, domWindowAlert,
-        ghcjs_dom_dom_window_confirm, domWindowConfirm,
-        ghcjs_dom_dom_window_prompt, domWindowPrompt,
-        ghcjs_dom_dom_window_find, domWindowFind,
-        ghcjs_dom_dom_window_scroll_by, domWindowScrollBy,
-        ghcjs_dom_dom_window_scroll_to, domWindowScrollTo,
-        ghcjs_dom_dom_window_scroll, domWindowScroll,
-        ghcjs_dom_dom_window_move_by, domWindowMoveBy,
-        ghcjs_dom_dom_window_move_to, domWindowMoveTo,
-        ghcjs_dom_dom_window_resize_by, domWindowResizeBy,
-        ghcjs_dom_dom_window_resize_to, domWindowResizeTo,
-        ghcjs_dom_dom_window_match_media, domWindowMatchMedia,
-        ghcjs_dom_dom_window_get_computed_style, domWindowGetComputedStyle,
-        ghcjs_dom_dom_window_webkit_convert_point_from_page_to_node,
-        domWindowWebkitConvertPointFromPageToNode,
-        ghcjs_dom_dom_window_webkit_convert_point_from_node_to_page,
-        domWindowWebkitConvertPointFromNodeToPage,
-        ghcjs_dom_dom_window_dispatch_event, domWindowDispatchEvent,
-        ghcjs_dom_dom_window_capture_events, domWindowCaptureEvents,
-        ghcjs_dom_dom_window_release_events, domWindowReleaseEvents,
-        ghcjs_dom_dom_window_get_screen, domWindowGetScreen,
-        ghcjs_dom_dom_window_get_history, domWindowGetHistory,
-        ghcjs_dom_dom_window_get_locationbar, domWindowGetLocationbar,
-        ghcjs_dom_dom_window_get_menubar, domWindowGetMenubar,
-        ghcjs_dom_dom_window_get_personalbar, domWindowGetPersonalbar,
-        ghcjs_dom_dom_window_get_scrollbars, domWindowGetScrollbars,
-        ghcjs_dom_dom_window_get_statusbar, domWindowGetStatusbar,
-        ghcjs_dom_dom_window_get_toolbar, domWindowGetToolbar,
-        ghcjs_dom_dom_window_get_navigator, domWindowGetNavigator,
-        ghcjs_dom_dom_window_get_client_information,
-        domWindowGetClientInformation,
-        ghcjs_dom_dom_window_get_frame_element, domWindowGetFrameElement,
-        ghcjs_dom_dom_window_get_offscreen_buffering,
-        domWindowGetOffscreenBuffering,
-        ghcjs_dom_dom_window_get_outer_height, domWindowGetOuterHeight,
-        ghcjs_dom_dom_window_get_outer_width, domWindowGetOuterWidth,
-        ghcjs_dom_dom_window_get_inner_height, domWindowGetInnerHeight,
-        ghcjs_dom_dom_window_get_inner_width, domWindowGetInnerWidth,
-        ghcjs_dom_dom_window_get_screen_x, domWindowGetScreenX,
-        ghcjs_dom_dom_window_get_screen_y, domWindowGetScreenY,
-        ghcjs_dom_dom_window_get_screen_left, domWindowGetScreenLeft,
-        ghcjs_dom_dom_window_get_screen_top, domWindowGetScreenTop,
-        ghcjs_dom_dom_window_get_scroll_x, domWindowGetScrollX,
-        ghcjs_dom_dom_window_get_scroll_y, domWindowGetScrollY,
-        ghcjs_dom_dom_window_get_page_x_offset, domWindowGetPageXOffset,
-        ghcjs_dom_dom_window_get_page_y_offset, domWindowGetPageYOffset,
-        ghcjs_dom_dom_window_get_closed, domWindowGetClosed,
-        ghcjs_dom_dom_window_get_length, domWindowGetLength,
-        ghcjs_dom_dom_window_set_name, domWindowSetName,
-        ghcjs_dom_dom_window_get_name, domWindowGetName,
-        ghcjs_dom_dom_window_set_status, domWindowSetStatus,
-        ghcjs_dom_dom_window_get_status, domWindowGetStatus,
-        ghcjs_dom_dom_window_set_default_status, domWindowSetDefaultStatus,
-        ghcjs_dom_dom_window_get_default_status, domWindowGetDefaultStatus,
-        ghcjs_dom_dom_window_get_self, domWindowGetSelf,
-        ghcjs_dom_dom_window_get_window, domWindowGetWindow,
-        ghcjs_dom_dom_window_get_frames, domWindowGetFrames,
-        ghcjs_dom_dom_window_get_opener, domWindowGetOpener,
-        ghcjs_dom_dom_window_get_parent, domWindowGetParent,
-        ghcjs_dom_dom_window_get_top, domWindowGetTop,
-        ghcjs_dom_dom_window_get_document, domWindowGetDocument,
-        ghcjs_dom_dom_window_get_style_media, domWindowGetStyleMedia,
-        ghcjs_dom_dom_window_get_device_pixel_ratio,
-        domWindowGetDevicePixelRatio,
-        ghcjs_dom_dom_window_get_application_cache,
-        domWindowGetApplicationCache,
-        ghcjs_dom_dom_window_get_session_storage,
-        domWindowGetSessionStorage, ghcjs_dom_dom_window_get_local_storage,
-        domWindowGetLocalStorage, ghcjs_dom_dom_window_get_css,
-        domWindowGetCSS, domWindowOnabort, domWindowOnbeforeunload,
-        domWindowOnblur, domWindowOncanplay, domWindowOncanplaythrough,
-        domWindowOnchange, domWindowOnclick, domWindowOncontextmenu,
-        domWindowOndblclick, domWindowOndrag, domWindowOndragend,
-        domWindowOndragenter, domWindowOndragleave, domWindowOndragover,
-        domWindowOndragstart, domWindowOndrop, domWindowOndurationchange,
-        domWindowOnemptied, domWindowOnended, domWindowOnerror,
-        domWindowOnfocus, domWindowOnhashchange, domWindowOninput,
-        domWindowOninvalid, domWindowOnkeydown, domWindowOnkeypress,
-        domWindowOnkeyup, domWindowOnload, domWindowOnloadeddata,
-        domWindowOnloadedmetadata, domWindowOnloadstart,
-        domWindowOnmessage, domWindowOnmousedown, domWindowOnmouseenter,
-        domWindowOnmouseleave, domWindowOnmousemove, domWindowOnmouseout,
-        domWindowOnmouseover, domWindowOnmouseup, domWindowOnmousewheel,
-        domWindowOnoffline, domWindowOnonline, domWindowOnpagehide,
-        domWindowOnpageshow, domWindowOnpause, domWindowOnplay,
-        domWindowOnplaying, domWindowOnpopstate, domWindowOnprogress,
-        domWindowOnratechange, domWindowOnresize, domWindowOnscroll,
-        domWindowOnseeked, domWindowOnseeking, domWindowOnselect,
-        domWindowOnstalled, domWindowOnstorage, domWindowOnsubmit,
-        domWindowOnsuspend, domWindowOntimeupdate, domWindowOnunload,
-        domWindowOnvolumechange, domWindowOnwaiting, domWindowOnwheel,
-        domWindowOnreset, domWindowOnsearch, domWindowOnwebkitanimationend,
-        domWindowOnwebkitanimationiteration,
-        domWindowOnwebkitanimationstart, domWindowOnanimationend,
-        domWindowOnanimationiteration, domWindowOnanimationstart,
-        domWindowOnwebkittransitionend, domWindowOntransitionend,
-        domWindowOntouchstart, domWindowOntouchmove, domWindowOntouchend,
-        domWindowOntouchcancel, domWindowOngesturestart,
-        domWindowOngesturechange, domWindowOngestureend,
-        domWindowOndevicemotion, domWindowOndeviceorientation,
-        domWindowOnwebkitdeviceproximity,
-        domWindowOnwebkitwillrevealbottom, domWindowOnwebkitwillrevealleft,
-        domWindowOnwebkitwillrevealright, domWindowOnwebkitwillrevealtop,
-        DOMWindow, IsDOMWindow, castToDOMWindow, gTypeDOMWindow,
-        toDOMWindow)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"getSelection\"]()"
-        ghcjs_dom_dom_window_get_selection ::
-        JSRef DOMWindow -> IO (JSRef DOMSelection)
- 
-domWindowGetSelection ::
-                      (IsDOMWindow self) => self -> IO (Maybe DOMSelection)
-domWindowGetSelection self
-  = fmap DOMSelection . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_selection
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"blur\"]()"
-        ghcjs_dom_dom_window_blur :: JSRef DOMWindow -> IO ()
- 
-domWindowBlur :: (IsDOMWindow self) => self -> IO ()
-domWindowBlur self
-  = ghcjs_dom_dom_window_blur (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"print\"]()"
-        ghcjs_dom_dom_window_print :: JSRef DOMWindow -> IO ()
- 
-domWindowPrint :: (IsDOMWindow self) => self -> IO ()
-domWindowPrint self
-  = ghcjs_dom_dom_window_print (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"stop\"]()"
-        ghcjs_dom_dom_window_stop :: JSRef DOMWindow -> IO ()
- 
-domWindowStop :: (IsDOMWindow self) => self -> IO ()
-domWindowStop self
-  = ghcjs_dom_dom_window_stop (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"alert\"]($2)"
-        ghcjs_dom_dom_window_alert :: JSRef DOMWindow -> JSString -> IO ()
- 
-domWindowAlert ::
-               (IsDOMWindow self, ToJSString message) => self -> message -> IO ()
-domWindowAlert self message
-  = ghcjs_dom_dom_window_alert (unDOMWindow (toDOMWindow self))
-      (toJSString message)
- 
-foreign import javascript unsafe "($1[\"confirm\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_window_confirm ::
-        JSRef DOMWindow -> JSString -> IO Bool
- 
-domWindowConfirm ::
-                 (IsDOMWindow self, ToJSString message) =>
-                   self -> message -> IO Bool
-domWindowConfirm self message
-  = ghcjs_dom_dom_window_confirm (unDOMWindow (toDOMWindow self))
-      (toJSString message)
- 
-foreign import javascript unsafe "$1[\"prompt\"]($2, $3)"
-        ghcjs_dom_dom_window_prompt ::
-        JSRef DOMWindow -> JSString -> JSString -> IO JSString
- 
-domWindowPrompt ::
-                (IsDOMWindow self, ToJSString message, ToJSString defaultValue,
-                 FromJSString result) =>
-                  self -> message -> defaultValue -> IO result
-domWindowPrompt self message defaultValue
-  = fromJSString <$>
-      (ghcjs_dom_dom_window_prompt (unDOMWindow (toDOMWindow self))
-         (toJSString message)
-         (toJSString defaultValue))
- 
-foreign import javascript unsafe
-        "($1[\"find\"]($2, $3, $4, $5, $6,\n$7, $8) ? 1 : 0)"
-        ghcjs_dom_dom_window_find ::
-        JSRef DOMWindow ->
-          JSString -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> IO Bool
- 
-domWindowFind ::
-              (IsDOMWindow self, ToJSString string) =>
-                self ->
-                  string -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> IO Bool
-domWindowFind self string caseSensitive backwards wrap wholeWord
-  searchInFrames showDialog
-  = ghcjs_dom_dom_window_find (unDOMWindow (toDOMWindow self))
-      (toJSString string)
-      caseSensitive
-      backwards
-      wrap
-      wholeWord
-      searchInFrames
-      showDialog
- 
-foreign import javascript unsafe "$1[\"scrollBy\"]($2, $3)"
-        ghcjs_dom_dom_window_scroll_by ::
-        JSRef DOMWindow -> Int -> Int -> IO ()
- 
-domWindowScrollBy ::
-                  (IsDOMWindow self) => self -> Int -> Int -> IO ()
-domWindowScrollBy self x y
-  = ghcjs_dom_dom_window_scroll_by (unDOMWindow (toDOMWindow self)) x
-      y
- 
-foreign import javascript unsafe "$1[\"scrollTo\"]($2, $3)"
-        ghcjs_dom_dom_window_scroll_to ::
-        JSRef DOMWindow -> Int -> Int -> IO ()
- 
-domWindowScrollTo ::
-                  (IsDOMWindow self) => self -> Int -> Int -> IO ()
-domWindowScrollTo self x y
-  = ghcjs_dom_dom_window_scroll_to (unDOMWindow (toDOMWindow self)) x
-      y
- 
-foreign import javascript unsafe "$1[\"scroll\"]($2, $3)"
-        ghcjs_dom_dom_window_scroll ::
-        JSRef DOMWindow -> Int -> Int -> IO ()
- 
-domWindowScroll ::
-                (IsDOMWindow self) => self -> Int -> Int -> IO ()
-domWindowScroll self x y
-  = ghcjs_dom_dom_window_scroll (unDOMWindow (toDOMWindow self)) x y
- 
-foreign import javascript unsafe "$1[\"moveBy\"]($2, $3)"
-        ghcjs_dom_dom_window_move_by ::
-        JSRef DOMWindow -> Float -> Float -> IO ()
- 
-domWindowMoveBy ::
-                (IsDOMWindow self) => self -> Float -> Float -> IO ()
-domWindowMoveBy self x y
-  = ghcjs_dom_dom_window_move_by (unDOMWindow (toDOMWindow self)) x y
- 
-foreign import javascript unsafe "$1[\"moveTo\"]($2, $3)"
-        ghcjs_dom_dom_window_move_to ::
-        JSRef DOMWindow -> Float -> Float -> IO ()
- 
-domWindowMoveTo ::
-                (IsDOMWindow self) => self -> Float -> Float -> IO ()
-domWindowMoveTo self x y
-  = ghcjs_dom_dom_window_move_to (unDOMWindow (toDOMWindow self)) x y
- 
-foreign import javascript unsafe "$1[\"resizeBy\"]($2, $3)"
-        ghcjs_dom_dom_window_resize_by ::
-        JSRef DOMWindow -> Float -> Float -> IO ()
- 
-domWindowResizeBy ::
-                  (IsDOMWindow self) => self -> Float -> Float -> IO ()
-domWindowResizeBy self x y
-  = ghcjs_dom_dom_window_resize_by (unDOMWindow (toDOMWindow self)) x
-      y
- 
-foreign import javascript unsafe "$1[\"resizeTo\"]($2, $3)"
-        ghcjs_dom_dom_window_resize_to ::
-        JSRef DOMWindow -> Float -> Float -> IO ()
- 
-domWindowResizeTo ::
-                  (IsDOMWindow self) => self -> Float -> Float -> IO ()
-domWindowResizeTo self width height
-  = ghcjs_dom_dom_window_resize_to (unDOMWindow (toDOMWindow self))
-      width
-      height
- 
-foreign import javascript unsafe "$1[\"matchMedia\"]($2)"
-        ghcjs_dom_dom_window_match_media ::
-        JSRef DOMWindow -> JSString -> IO (JSRef MediaQueryList)
- 
-domWindowMatchMedia ::
-                    (IsDOMWindow self, ToJSString query) =>
-                      self -> query -> IO (Maybe MediaQueryList)
-domWindowMatchMedia self query
-  = fmap MediaQueryList . maybeJSNull <$>
-      (ghcjs_dom_dom_window_match_media (unDOMWindow (toDOMWindow self))
-         (toJSString query))
- 
-foreign import javascript unsafe "$1[\"getComputedStyle\"]($2, $3)"
-        ghcjs_dom_dom_window_get_computed_style ::
-        JSRef DOMWindow ->
-          JSRef Element -> JSString -> IO (JSRef CSSStyleDeclaration)
- 
-domWindowGetComputedStyle ::
-                          (IsDOMWindow self, IsElement element, ToJSString pseudoElement) =>
-                            self ->
-                              Maybe element -> pseudoElement -> IO (Maybe CSSStyleDeclaration)
-domWindowGetComputedStyle self element pseudoElement
-  = fmap CSSStyleDeclaration . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_computed_style
-         (unDOMWindow (toDOMWindow self))
-         (maybe jsNull (unElement . toElement) element)
-         (toJSString pseudoElement))
- 
-foreign import javascript unsafe
-        "$1[\"webkitConvertPointFromPageToNode\"]($2,\n$3)"
-        ghcjs_dom_dom_window_webkit_convert_point_from_page_to_node ::
-        JSRef DOMWindow ->
-          JSRef Node -> JSRef WebKitPoint -> IO (JSRef WebKitPoint)
- 
-domWindowWebkitConvertPointFromPageToNode ::
-                                          (IsDOMWindow self, IsNode node, IsWebKitPoint p) =>
-                                            self -> Maybe node -> Maybe p -> IO (Maybe WebKitPoint)
-domWindowWebkitConvertPointFromPageToNode self node p
-  = fmap WebKitPoint . maybeJSNull <$>
-      (ghcjs_dom_dom_window_webkit_convert_point_from_page_to_node
-         (unDOMWindow (toDOMWindow self))
-         (maybe jsNull (unNode . toNode) node)
-         (maybe jsNull (unWebKitPoint . toWebKitPoint) p))
- 
-foreign import javascript unsafe
-        "$1[\"webkitConvertPointFromNodeToPage\"]($2,\n$3)"
-        ghcjs_dom_dom_window_webkit_convert_point_from_node_to_page ::
-        JSRef DOMWindow ->
-          JSRef Node -> JSRef WebKitPoint -> IO (JSRef WebKitPoint)
- 
-domWindowWebkitConvertPointFromNodeToPage ::
-                                          (IsDOMWindow self, IsNode node, IsWebKitPoint p) =>
-                                            self -> Maybe node -> Maybe p -> IO (Maybe WebKitPoint)
-domWindowWebkitConvertPointFromNodeToPage self node p
-  = fmap WebKitPoint . maybeJSNull <$>
-      (ghcjs_dom_dom_window_webkit_convert_point_from_node_to_page
-         (unDOMWindow (toDOMWindow self))
-         (maybe jsNull (unNode . toNode) node)
-         (maybe jsNull (unWebKitPoint . toWebKitPoint) p))
- 
-foreign import javascript unsafe
-        "($1[\"dispatchEvent\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_window_dispatch_event ::
-        JSRef DOMWindow -> JSRef Event -> IO Bool
- 
-domWindowDispatchEvent ::
-                       (IsDOMWindow self, IsEvent evt) => self -> Maybe evt -> IO Bool
-domWindowDispatchEvent self evt
-  = ghcjs_dom_dom_window_dispatch_event
-      (unDOMWindow (toDOMWindow self))
-      (maybe jsNull (unEvent . toEvent) evt)
- 
-foreign import javascript unsafe "$1[\"captureEvents\"]()"
-        ghcjs_dom_dom_window_capture_events :: JSRef DOMWindow -> IO ()
- 
-domWindowCaptureEvents :: (IsDOMWindow self) => self -> IO ()
-domWindowCaptureEvents self
-  = ghcjs_dom_dom_window_capture_events
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"releaseEvents\"]()"
-        ghcjs_dom_dom_window_release_events :: JSRef DOMWindow -> IO ()
- 
-domWindowReleaseEvents :: (IsDOMWindow self) => self -> IO ()
-domWindowReleaseEvents self
-  = ghcjs_dom_dom_window_release_events
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"screen\"]"
-        ghcjs_dom_dom_window_get_screen ::
-        JSRef DOMWindow -> IO (JSRef DOMScreen)
- 
-domWindowGetScreen ::
-                   (IsDOMWindow self) => self -> IO (Maybe DOMScreen)
-domWindowGetScreen self
-  = fmap DOMScreen . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_screen (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"history\"]"
-        ghcjs_dom_dom_window_get_history ::
-        JSRef DOMWindow -> IO (JSRef History)
- 
-domWindowGetHistory ::
-                    (IsDOMWindow self) => self -> IO (Maybe History)
-domWindowGetHistory self
-  = fmap History . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_history (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"locationbar\"]"
-        ghcjs_dom_dom_window_get_locationbar ::
-        JSRef DOMWindow -> IO (JSRef BarProp)
- 
-domWindowGetLocationbar ::
-                        (IsDOMWindow self) => self -> IO (Maybe BarProp)
-domWindowGetLocationbar self
-  = fmap BarProp . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_locationbar
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"menubar\"]"
-        ghcjs_dom_dom_window_get_menubar ::
-        JSRef DOMWindow -> IO (JSRef BarProp)
- 
-domWindowGetMenubar ::
-                    (IsDOMWindow self) => self -> IO (Maybe BarProp)
-domWindowGetMenubar self
-  = fmap BarProp . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_menubar (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"personalbar\"]"
-        ghcjs_dom_dom_window_get_personalbar ::
-        JSRef DOMWindow -> IO (JSRef BarProp)
- 
-domWindowGetPersonalbar ::
-                        (IsDOMWindow self) => self -> IO (Maybe BarProp)
-domWindowGetPersonalbar self
-  = fmap BarProp . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_personalbar
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"scrollbars\"]"
-        ghcjs_dom_dom_window_get_scrollbars ::
-        JSRef DOMWindow -> IO (JSRef BarProp)
- 
-domWindowGetScrollbars ::
-                       (IsDOMWindow self) => self -> IO (Maybe BarProp)
-domWindowGetScrollbars self
-  = fmap BarProp . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_scrollbars
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"statusbar\"]"
-        ghcjs_dom_dom_window_get_statusbar ::
-        JSRef DOMWindow -> IO (JSRef BarProp)
- 
-domWindowGetStatusbar ::
-                      (IsDOMWindow self) => self -> IO (Maybe BarProp)
-domWindowGetStatusbar self
-  = fmap BarProp . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_statusbar
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"toolbar\"]"
-        ghcjs_dom_dom_window_get_toolbar ::
-        JSRef DOMWindow -> IO (JSRef BarProp)
- 
-domWindowGetToolbar ::
-                    (IsDOMWindow self) => self -> IO (Maybe BarProp)
-domWindowGetToolbar self
-  = fmap BarProp . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_toolbar (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"navigator\"]"
-        ghcjs_dom_dom_window_get_navigator ::
-        JSRef DOMWindow -> IO (JSRef Navigator)
- 
-domWindowGetNavigator ::
-                      (IsDOMWindow self) => self -> IO (Maybe Navigator)
-domWindowGetNavigator self
-  = fmap Navigator . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_navigator
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"clientInformation\"]"
-        ghcjs_dom_dom_window_get_client_information ::
-        JSRef DOMWindow -> IO (JSRef Navigator)
- 
-domWindowGetClientInformation ::
-                              (IsDOMWindow self) => self -> IO (Maybe Navigator)
-domWindowGetClientInformation self
-  = fmap Navigator . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_client_information
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"frameElement\"]"
-        ghcjs_dom_dom_window_get_frame_element ::
-        JSRef DOMWindow -> IO (JSRef Element)
- 
-domWindowGetFrameElement ::
-                         (IsDOMWindow self) => self -> IO (Maybe Element)
-domWindowGetFrameElement self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_frame_element
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe
-        "($1[\"offscreenBuffering\"] ? 1 : 0)"
-        ghcjs_dom_dom_window_get_offscreen_buffering ::
-        JSRef DOMWindow -> IO Bool
- 
-domWindowGetOffscreenBuffering ::
-                               (IsDOMWindow self) => self -> IO Bool
-domWindowGetOffscreenBuffering self
-  = ghcjs_dom_dom_window_get_offscreen_buffering
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"outerHeight\"]"
-        ghcjs_dom_dom_window_get_outer_height :: JSRef DOMWindow -> IO Int
- 
-domWindowGetOuterHeight :: (IsDOMWindow self) => self -> IO Int
-domWindowGetOuterHeight self
-  = ghcjs_dom_dom_window_get_outer_height
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"outerWidth\"]"
-        ghcjs_dom_dom_window_get_outer_width :: JSRef DOMWindow -> IO Int
- 
-domWindowGetOuterWidth :: (IsDOMWindow self) => self -> IO Int
-domWindowGetOuterWidth self
-  = ghcjs_dom_dom_window_get_outer_width
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"innerHeight\"]"
-        ghcjs_dom_dom_window_get_inner_height :: JSRef DOMWindow -> IO Int
- 
-domWindowGetInnerHeight :: (IsDOMWindow self) => self -> IO Int
-domWindowGetInnerHeight self
-  = ghcjs_dom_dom_window_get_inner_height
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"innerWidth\"]"
-        ghcjs_dom_dom_window_get_inner_width :: JSRef DOMWindow -> IO Int
- 
-domWindowGetInnerWidth :: (IsDOMWindow self) => self -> IO Int
-domWindowGetInnerWidth self
-  = ghcjs_dom_dom_window_get_inner_width
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"screenX\"]"
-        ghcjs_dom_dom_window_get_screen_x :: JSRef DOMWindow -> IO Int
- 
-domWindowGetScreenX :: (IsDOMWindow self) => self -> IO Int
-domWindowGetScreenX self
-  = ghcjs_dom_dom_window_get_screen_x
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"screenY\"]"
-        ghcjs_dom_dom_window_get_screen_y :: JSRef DOMWindow -> IO Int
- 
-domWindowGetScreenY :: (IsDOMWindow self) => self -> IO Int
-domWindowGetScreenY self
-  = ghcjs_dom_dom_window_get_screen_y
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"screenLeft\"]"
-        ghcjs_dom_dom_window_get_screen_left :: JSRef DOMWindow -> IO Int
- 
-domWindowGetScreenLeft :: (IsDOMWindow self) => self -> IO Int
-domWindowGetScreenLeft self
-  = ghcjs_dom_dom_window_get_screen_left
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"screenTop\"]"
-        ghcjs_dom_dom_window_get_screen_top :: JSRef DOMWindow -> IO Int
- 
-domWindowGetScreenTop :: (IsDOMWindow self) => self -> IO Int
-domWindowGetScreenTop self
-  = ghcjs_dom_dom_window_get_screen_top
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"scrollX\"]"
-        ghcjs_dom_dom_window_get_scroll_x :: JSRef DOMWindow -> IO Int
- 
-domWindowGetScrollX :: (IsDOMWindow self) => self -> IO Int
-domWindowGetScrollX self
-  = ghcjs_dom_dom_window_get_scroll_x
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"scrollY\"]"
-        ghcjs_dom_dom_window_get_scroll_y :: JSRef DOMWindow -> IO Int
- 
-domWindowGetScrollY :: (IsDOMWindow self) => self -> IO Int
-domWindowGetScrollY self
-  = ghcjs_dom_dom_window_get_scroll_y
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"pageXOffset\"]"
-        ghcjs_dom_dom_window_get_page_x_offset :: JSRef DOMWindow -> IO Int
- 
-domWindowGetPageXOffset :: (IsDOMWindow self) => self -> IO Int
-domWindowGetPageXOffset self
-  = ghcjs_dom_dom_window_get_page_x_offset
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"pageYOffset\"]"
-        ghcjs_dom_dom_window_get_page_y_offset :: JSRef DOMWindow -> IO Int
- 
-domWindowGetPageYOffset :: (IsDOMWindow self) => self -> IO Int
-domWindowGetPageYOffset self
-  = ghcjs_dom_dom_window_get_page_y_offset
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "($1[\"closed\"] ? 1 : 0)"
-        ghcjs_dom_dom_window_get_closed :: JSRef DOMWindow -> IO Bool
- 
-domWindowGetClosed :: (IsDOMWindow self) => self -> IO Bool
-domWindowGetClosed self
-  = ghcjs_dom_dom_window_get_closed (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_dom_window_get_length :: JSRef DOMWindow -> IO Word
- 
-domWindowGetLength :: (IsDOMWindow self) => self -> IO Word
-domWindowGetLength self
-  = ghcjs_dom_dom_window_get_length (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_dom_window_set_name ::
-        JSRef DOMWindow -> JSString -> IO ()
- 
-domWindowSetName ::
-                 (IsDOMWindow self, ToJSString val) => self -> val -> IO ()
-domWindowSetName self val
-  = ghcjs_dom_dom_window_set_name (unDOMWindow (toDOMWindow self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_dom_window_get_name :: JSRef DOMWindow -> IO JSString
- 
-domWindowGetName ::
-                 (IsDOMWindow self, FromJSString result) => self -> IO result
-domWindowGetName self
-  = fromJSString <$>
-      (ghcjs_dom_dom_window_get_name (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"status\"] = $2;"
-        ghcjs_dom_dom_window_set_status ::
-        JSRef DOMWindow -> JSString -> IO ()
- 
-domWindowSetStatus ::
-                   (IsDOMWindow self, ToJSString val) => self -> val -> IO ()
-domWindowSetStatus self val
-  = ghcjs_dom_dom_window_set_status (unDOMWindow (toDOMWindow self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"status\"]"
-        ghcjs_dom_dom_window_get_status :: JSRef DOMWindow -> IO JSString
- 
-domWindowGetStatus ::
-                   (IsDOMWindow self, FromJSString result) => self -> IO result
-domWindowGetStatus self
-  = fromJSString <$>
-      (ghcjs_dom_dom_window_get_status (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"defaultStatus\"] = $2;"
-        ghcjs_dom_dom_window_set_default_status ::
-        JSRef DOMWindow -> JSString -> IO ()
- 
-domWindowSetDefaultStatus ::
-                          (IsDOMWindow self, ToJSString val) => self -> val -> IO ()
-domWindowSetDefaultStatus self val
-  = ghcjs_dom_dom_window_set_default_status
-      (unDOMWindow (toDOMWindow self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"defaultStatus\"]"
-        ghcjs_dom_dom_window_get_default_status ::
-        JSRef DOMWindow -> IO JSString
- 
-domWindowGetDefaultStatus ::
-                          (IsDOMWindow self, FromJSString result) => self -> IO result
-domWindowGetDefaultStatus self
-  = fromJSString <$>
-      (ghcjs_dom_dom_window_get_default_status
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"self\"]"
-        ghcjs_dom_dom_window_get_self ::
-        JSRef DOMWindow -> IO (JSRef DOMWindow)
- 
-domWindowGetSelf ::
-                 (IsDOMWindow self) => self -> IO (Maybe DOMWindow)
-domWindowGetSelf self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_self (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"window\"]"
-        ghcjs_dom_dom_window_get_window ::
-        JSRef DOMWindow -> IO (JSRef DOMWindow)
- 
-domWindowGetWindow ::
-                   (IsDOMWindow self) => self -> IO (Maybe DOMWindow)
-domWindowGetWindow self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_window (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"frames\"]"
-        ghcjs_dom_dom_window_get_frames ::
-        JSRef DOMWindow -> IO (JSRef DOMWindow)
- 
-domWindowGetFrames ::
-                   (IsDOMWindow self) => self -> IO (Maybe DOMWindow)
-domWindowGetFrames self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_frames (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"opener\"]"
-        ghcjs_dom_dom_window_get_opener ::
-        JSRef DOMWindow -> IO (JSRef DOMWindow)
- 
-domWindowGetOpener ::
-                   (IsDOMWindow self) => self -> IO (Maybe DOMWindow)
-domWindowGetOpener self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_opener (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"parent\"]"
-        ghcjs_dom_dom_window_get_parent ::
-        JSRef DOMWindow -> IO (JSRef DOMWindow)
- 
-domWindowGetParent ::
-                   (IsDOMWindow self) => self -> IO (Maybe DOMWindow)
-domWindowGetParent self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_parent (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"top\"]"
-        ghcjs_dom_dom_window_get_top ::
-        JSRef DOMWindow -> IO (JSRef DOMWindow)
- 
-domWindowGetTop ::
-                (IsDOMWindow self) => self -> IO (Maybe DOMWindow)
-domWindowGetTop self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_top (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"document\"]"
-        ghcjs_dom_dom_window_get_document ::
-        JSRef DOMWindow -> IO (JSRef Document)
- 
-domWindowGetDocument ::
-                     (IsDOMWindow self) => self -> IO (Maybe Document)
-domWindowGetDocument self
-  = fmap Document . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_document
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"styleMedia\"]"
-        ghcjs_dom_dom_window_get_style_media ::
-        JSRef DOMWindow -> IO (JSRef StyleMedia)
- 
-domWindowGetStyleMedia ::
-                       (IsDOMWindow self) => self -> IO (Maybe StyleMedia)
-domWindowGetStyleMedia self
-  = fmap StyleMedia . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_style_media
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"devicePixelRatio\"]"
-        ghcjs_dom_dom_window_get_device_pixel_ratio ::
-        JSRef DOMWindow -> IO Double
- 
-domWindowGetDevicePixelRatio ::
-                             (IsDOMWindow self) => self -> IO Double
-domWindowGetDevicePixelRatio self
-  = ghcjs_dom_dom_window_get_device_pixel_ratio
-      (unDOMWindow (toDOMWindow self))
- 
-foreign import javascript unsafe "$1[\"applicationCache\"]"
-        ghcjs_dom_dom_window_get_application_cache ::
-        JSRef DOMWindow -> IO (JSRef DOMApplicationCache)
- 
-domWindowGetApplicationCache ::
-                             (IsDOMWindow self) => self -> IO (Maybe DOMApplicationCache)
-domWindowGetApplicationCache self
-  = fmap DOMApplicationCache . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_application_cache
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"sessionStorage\"]"
-        ghcjs_dom_dom_window_get_session_storage ::
-        JSRef DOMWindow -> IO (JSRef Storage)
- 
-domWindowGetSessionStorage ::
-                           (IsDOMWindow self) => self -> IO (Maybe Storage)
-domWindowGetSessionStorage self
-  = fmap Storage . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_session_storage
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"localStorage\"]"
-        ghcjs_dom_dom_window_get_local_storage ::
-        JSRef DOMWindow -> IO (JSRef Storage)
- 
-domWindowGetLocalStorage ::
-                         (IsDOMWindow self) => self -> IO (Maybe Storage)
-domWindowGetLocalStorage self
-  = fmap Storage . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_local_storage
-         (unDOMWindow (toDOMWindow self)))
- 
-foreign import javascript unsafe "$1[\"CSS\"]"
-        ghcjs_dom_dom_window_get_css ::
-        JSRef DOMWindow -> IO (JSRef DOMWindowCSS)
- 
-domWindowGetCSS ::
-                (IsDOMWindow self) => self -> IO (Maybe DOMWindowCSS)
-domWindowGetCSS self
-  = fmap DOMWindowCSS . maybeJSNull <$>
-      (ghcjs_dom_dom_window_get_css (unDOMWindow (toDOMWindow self)))
- 
-domWindowOnabort ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnabort = (connect "abort")
- 
-domWindowOnbeforeunload ::
-                        (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnbeforeunload = (connect "beforeunload")
- 
-domWindowOnblur ::
-                (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnblur = (connect "blur")
- 
-domWindowOncanplay ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOncanplay = (connect "canplay")
- 
-domWindowOncanplaythrough ::
-                          (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOncanplaythrough = (connect "canplaythrough")
- 
-domWindowOnchange ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnchange = (connect "change")
- 
-domWindowOnclick ::
-                 (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOnclick = (connect "click")
- 
-domWindowOncontextmenu ::
-                       (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOncontextmenu = (connect "contextmenu")
- 
-domWindowOndblclick ::
-                    (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOndblclick = (connect "dblclick")
- 
-domWindowOndrag ::
-                (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOndrag = (connect "drag")
- 
-domWindowOndragend ::
-                   (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOndragend = (connect "dragend")
- 
-domWindowOndragenter ::
-                     (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOndragenter = (connect "dragenter")
- 
-domWindowOndragleave ::
-                     (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOndragleave = (connect "dragleave")
- 
-domWindowOndragover ::
-                    (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOndragover = (connect "dragover")
- 
-domWindowOndragstart ::
-                     (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOndragstart = (connect "dragstart")
- 
-domWindowOndrop ::
-                (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOndrop = (connect "drop")
- 
-domWindowOndurationchange ::
-                          (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOndurationchange = (connect "durationchange")
- 
-domWindowOnemptied ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnemptied = (connect "emptied")
- 
-domWindowOnended ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnended = (connect "ended")
- 
-domWindowOnerror ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnerror = (connect "error")
- 
-domWindowOnfocus ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnfocus = (connect "focus")
- 
-domWindowOnhashchange ::
-                      (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnhashchange = (connect "hashchange")
- 
-domWindowOninput ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOninput = (connect "input")
- 
-domWindowOninvalid ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOninvalid = (connect "invalid")
- 
-domWindowOnkeydown ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnkeydown = (connect "keydown")
- 
-domWindowOnkeypress ::
-                    (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnkeypress = (connect "keypress")
- 
-domWindowOnkeyup ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnkeyup = (connect "keyup")
- 
-domWindowOnload ::
-                (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnload = (connect "load")
- 
-domWindowOnloadeddata ::
-                      (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnloadeddata = (connect "loadeddata")
- 
-domWindowOnloadedmetadata ::
-                          (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnloadedmetadata = (connect "loadedmetadata")
- 
-domWindowOnloadstart ::
-                     (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnloadstart = (connect "loadstart")
- 
-domWindowOnmessage ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnmessage = (connect "message")
- 
-domWindowOnmousedown ::
-                     (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOnmousedown = (connect "mousedown")
- 
-domWindowOnmouseenter ::
-                      (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnmouseenter = (connect "mouseenter")
- 
-domWindowOnmouseleave ::
-                      (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnmouseleave = (connect "mouseleave")
- 
-domWindowOnmousemove ::
-                     (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOnmousemove = (connect "mousemove")
- 
-domWindowOnmouseout ::
-                    (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOnmouseout = (connect "mouseout")
- 
-domWindowOnmouseover ::
-                     (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOnmouseover = (connect "mouseover")
- 
-domWindowOnmouseup ::
-                   (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOnmouseup = (connect "mouseup")
- 
-domWindowOnmousewheel ::
-                      (IsDOMWindow self) => Signal self (EventM MouseEvent self ())
-domWindowOnmousewheel = (connect "mousewheel")
- 
-domWindowOnoffline ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnoffline = (connect "offline")
- 
-domWindowOnonline ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnonline = (connect "online")
- 
-domWindowOnpagehide ::
-                    (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnpagehide = (connect "pagehide")
- 
-domWindowOnpageshow ::
-                    (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnpageshow = (connect "pageshow")
- 
-domWindowOnpause ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnpause = (connect "pause")
- 
-domWindowOnplay ::
-                (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnplay = (connect "play")
- 
-domWindowOnplaying ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnplaying = (connect "playing")
- 
-domWindowOnpopstate ::
-                    (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnpopstate = (connect "popstate")
- 
-domWindowOnprogress ::
-                    (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnprogress = (connect "progress")
- 
-domWindowOnratechange ::
-                      (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnratechange = (connect "ratechange")
- 
-domWindowOnresize ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnresize = (connect "resize")
- 
-domWindowOnscroll ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnscroll = (connect "scroll")
- 
-domWindowOnseeked ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnseeked = (connect "seeked")
- 
-domWindowOnseeking ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnseeking = (connect "seeking")
- 
-domWindowOnselect ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnselect = (connect "select")
- 
-domWindowOnstalled ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnstalled = (connect "stalled")
- 
-domWindowOnstorage ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnstorage = (connect "storage")
- 
-domWindowOnsubmit ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnsubmit = (connect "submit")
- 
-domWindowOnsuspend ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnsuspend = (connect "suspend")
- 
-domWindowOntimeupdate ::
-                      (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOntimeupdate = (connect "timeupdate")
- 
-domWindowOnunload ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnunload = (connect "unload")
- 
-domWindowOnvolumechange ::
-                        (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnvolumechange = (connect "volumechange")
- 
-domWindowOnwaiting ::
-                   (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwaiting = (connect "waiting")
- 
-domWindowOnwheel ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwheel = (connect "wheel")
- 
-domWindowOnreset ::
-                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnreset = (connect "reset")
- 
-domWindowOnsearch ::
-                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnsearch = (connect "search")
- 
-domWindowOnwebkitanimationend ::
-                              (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkitanimationend = (connect "webkitanimationend")
- 
-domWindowOnwebkitanimationiteration ::
-                                    (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkitanimationiteration
-  = (connect "webkitanimationiteration")
- 
-domWindowOnwebkitanimationstart ::
-                                (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkitanimationstart = (connect "webkitanimationstart")
- 
-domWindowOnanimationend ::
-                        (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnanimationend = (connect "animationend")
- 
-domWindowOnanimationiteration ::
-                              (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnanimationiteration = (connect "animationiteration")
- 
-domWindowOnanimationstart ::
-                          (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnanimationstart = (connect "animationstart")
- 
-domWindowOnwebkittransitionend ::
-                               (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkittransitionend = (connect "webkittransitionend")
- 
-domWindowOntransitionend ::
-                         (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOntransitionend = (connect "transitionend")
- 
-domWindowOntouchstart ::
-                      (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOntouchstart = (connect "touchstart")
- 
-domWindowOntouchmove ::
-                     (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOntouchmove = (connect "touchmove")
- 
-domWindowOntouchend ::
-                    (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOntouchend = (connect "touchend")
- 
-domWindowOntouchcancel ::
-                       (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOntouchcancel = (connect "touchcancel")
- 
-domWindowOngesturestart ::
-                        (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOngesturestart = (connect "gesturestart")
- 
-domWindowOngesturechange ::
-                         (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOngesturechange = (connect "gesturechange")
- 
-domWindowOngestureend ::
-                      (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOngestureend = (connect "gestureend")
- 
-domWindowOndevicemotion ::
-                        (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOndevicemotion = (connect "devicemotion")
- 
-domWindowOndeviceorientation ::
-                             (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOndeviceorientation = (connect "deviceorientation")
- 
-domWindowOnwebkitdeviceproximity ::
-                                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkitdeviceproximity
-  = (connect "webkitdeviceproximity")
- 
-domWindowOnwebkitwillrevealbottom ::
-                                  (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkitwillrevealbottom
-  = (connect "webkitwillrevealbottom")
- 
-domWindowOnwebkitwillrevealleft ::
-                                (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkitwillrevealleft = (connect "webkitwillrevealleft")
- 
-domWindowOnwebkitwillrevealright ::
-                                 (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkitwillrevealright
-  = (connect "webkitwillrevealright")
- 
-domWindowOnwebkitwillrevealtop ::
-                               (IsDOMWindow self) => Signal self (EventM UIEvent self ())
-domWindowOnwebkitwillrevealtop = (connect "webkitwillrevealtop")
-#else
-module GHCJS.DOM.DOMWindow (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMWindow
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMWindow
-#endif
diff --git a/src/GHCJS/DOM/DOMWindowCSS.hs b/src/GHCJS/DOM/DOMWindowCSS.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/DOMWindowCSS.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DOMWindowCSS
-       (ghcjs_dom_dom_window_css_supports2, domWindowCSSSupports2,
-        ghcjs_dom_dom_window_css_supports, domWindowCSSSupports,
-        DOMWindowCSS, IsDOMWindowCSS, castToDOMWindowCSS,
-        gTypeDOMWindowCSS, toDOMWindowCSS)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"supports\"]($2, $3) ? 1 : 0)"
-        ghcjs_dom_dom_window_css_supports2 ::
-        JSRef DOMWindowCSS -> JSString -> JSString -> IO Bool
- 
-domWindowCSSSupports2 ::
-                      (IsDOMWindowCSS self, ToJSString property, ToJSString value) =>
-                        self -> property -> value -> IO Bool
-domWindowCSSSupports2 self property value
-  = ghcjs_dom_dom_window_css_supports2
-      (unDOMWindowCSS (toDOMWindowCSS self))
-      (toJSString property)
-      (toJSString value)
- 
-foreign import javascript unsafe "($1[\"supports\"]($2) ? 1 : 0)"
-        ghcjs_dom_dom_window_css_supports ::
-        JSRef DOMWindowCSS -> JSString -> IO Bool
- 
-domWindowCSSSupports ::
-                     (IsDOMWindowCSS self, ToJSString conditionText) =>
-                       self -> conditionText -> IO Bool
-domWindowCSSSupports self conditionText
-  = ghcjs_dom_dom_window_css_supports
-      (unDOMWindowCSS (toDOMWindowCSS self))
-      (toJSString conditionText)
-#else
-module GHCJS.DOM.DOMWindowCSS (
-  module Graphics.UI.Gtk.WebKit.DOM.DOMWindowCSS
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.DOMWindowCSS
-#endif
diff --git a/src/GHCJS/DOM/DataCue.hs b/src/GHCJS/DOM/DataCue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DataCue.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DataCue (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DataCue
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DataCue
+#else
+#endif
diff --git a/src/GHCJS/DOM/DataTransfer.hs b/src/GHCJS/DOM/DataTransfer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DataTransfer.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DataTransfer (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DataTransfer
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DataTransfer
+#else
+#endif
diff --git a/src/GHCJS/DOM/DataTransferItem.hs b/src/GHCJS/DOM/DataTransferItem.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DataTransferItem.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DataTransferItem (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DataTransferItem
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DataTransferItem
+#else
+#endif
diff --git a/src/GHCJS/DOM/DataTransferItemList.hs b/src/GHCJS/DOM/DataTransferItemList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DataTransferItemList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DataTransferItemList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DataTransferItemList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DataTransferItemList
+#else
+#endif
diff --git a/src/GHCJS/DOM/Database.hs b/src/GHCJS/DOM/Database.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Database.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Database (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Database
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Database
+#else
+#endif
diff --git a/src/GHCJS/DOM/DatabaseCallback.hs b/src/GHCJS/DOM/DatabaseCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DatabaseCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DatabaseCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DatabaseCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DatabaseCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/DedicatedWorkerGlobalScope.hs b/src/GHCJS/DOM/DedicatedWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DedicatedWorkerGlobalScope.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DedicatedWorkerGlobalScope (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope
+#else
+#endif
diff --git a/src/GHCJS/DOM/DelayNode.hs b/src/GHCJS/DOM/DelayNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DelayNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DelayNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DelayNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DelayNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/DeviceMotionEvent.hs b/src/GHCJS/DOM/DeviceMotionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DeviceMotionEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DeviceMotionEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/DeviceOrientationEvent.hs b/src/GHCJS/DOM/DeviceOrientationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DeviceOrientationEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DeviceOrientationEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/DeviceProximityEvent.hs b/src/GHCJS/DOM/DeviceProximityEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DeviceProximityEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DeviceProximityEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/Document.hs b/src/GHCJS/DOM/Document.hs
--- a/src/GHCJS/DOM/Document.hs
+++ b/src/GHCJS/DOM/Document.hs
@@ -1,1093 +1,13 @@
 {-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Document
-       (ghcjs_dom_document_create_element, documentCreateElement,
-        ghcjs_dom_document_create_document_fragment,
-        documentCreateDocumentFragment,
-        ghcjs_dom_document_create_text_node, documentCreateTextNode,
-        ghcjs_dom_document_create_comment, documentCreateComment,
-        ghcjs_dom_document_create_cdata_section,
-        documentCreateCDATASection,
-        ghcjs_dom_document_create_processing_instruction,
-        documentCreateProcessingInstruction,
-        ghcjs_dom_document_create_attribute, documentCreateAttribute,
-        ghcjs_dom_document_create_entity_reference,
-        documentCreateEntityReference,
-        ghcjs_dom_document_get_elements_by_tag_name,
-        documentGetElementsByTagName, ghcjs_dom_document_import_node,
-        documentImportNode, ghcjs_dom_document_create_element_ns,
-        documentCreateElementNS, ghcjs_dom_document_create_attribute_ns,
-        documentCreateAttributeNS,
-        ghcjs_dom_document_get_elements_by_tag_name_ns,
-        documentGetElementsByTagNameNS,
-        ghcjs_dom_document_get_element_by_id, documentGetElementById,
-        ghcjs_dom_document_adopt_node, documentAdoptNode,
-        ghcjs_dom_document_create_event, documentCreateEvent,
-        ghcjs_dom_document_create_range, documentCreateRange,
-        ghcjs_dom_document_create_node_iterator,
-        documentCreateNodeIterator, ghcjs_dom_document_create_tree_walker,
-        documentCreateTreeWalker, ghcjs_dom_document_get_override_style,
-        documentGetOverrideStyle, ghcjs_dom_document_create_expression,
-        documentCreateExpression, ghcjs_dom_document_create_ns_resolver,
-        documentCreateNSResolver, ghcjs_dom_document_evaluate,
-        documentEvaluate, ghcjs_dom_document_exec_command,
-        documentExecCommand, ghcjs_dom_document_query_command_enabled,
-        documentQueryCommandEnabled,
-        ghcjs_dom_document_query_command_indeterm,
-        documentQueryCommandIndeterm,
-        ghcjs_dom_document_query_command_state, documentQueryCommandState,
-        ghcjs_dom_document_query_command_supported,
-        documentQueryCommandSupported,
-        ghcjs_dom_document_query_command_value, documentQueryCommandValue,
-        ghcjs_dom_document_get_elements_by_name, documentGetElementsByName,
-        ghcjs_dom_document_element_from_point, documentElementFromPoint,
-        ghcjs_dom_document_caret_range_from_point,
-        documentCaretRangeFromPoint,
-        ghcjs_dom_document_create_css_style_declaration,
-        documentCreateCSSStyleDeclaration,
-        ghcjs_dom_document_get_elements_by_class_name,
-        documentGetElementsByClassName, ghcjs_dom_document_has_focus,
-        documentHasFocus, ghcjs_dom_document_query_selector,
-        documentQuerySelector, ghcjs_dom_document_query_selector_all,
-        documentQuerySelectorAll, ghcjs_dom_document_exit_pointer_lock,
-        documentExitPointerLock, ghcjs_dom_document_webkit_get_named_flows,
-        documentWebkitGetNamedFlows, ghcjs_dom_document_get_doctype,
-        documentGetDoctype, ghcjs_dom_document_get_implementation,
-        documentGetImplementation, ghcjs_dom_document_get_document_element,
-        documentGetDocumentElement, ghcjs_dom_document_get_input_encoding,
-        documentGetInputEncoding, ghcjs_dom_document_get_xml_encoding,
-        documentGetXmlEncoding, ghcjs_dom_document_set_xml_version,
-        documentSetXmlVersion, ghcjs_dom_document_get_xml_version,
-        documentGetXmlVersion, ghcjs_dom_document_set_xml_standalone,
-        documentSetXmlStandalone, ghcjs_dom_document_get_xml_standalone,
-        documentGetXmlStandalone, ghcjs_dom_document_set_document_uri,
-        documentSetDocumentURI, ghcjs_dom_document_get_document_uri,
-        documentGetDocumentURI, ghcjs_dom_document_get_default_view,
-        documentGetDefaultView, ghcjs_dom_document_get_style_sheets,
-        documentGetStyleSheets, ghcjs_dom_document_set_title,
-        documentSetTitle, ghcjs_dom_document_get_title, documentGetTitle,
-        ghcjs_dom_document_get_referrer, documentGetReferrer,
-        ghcjs_dom_document_get_domain, documentGetDomain,
-        ghcjs_dom_document_set_cookie, documentSetCookie,
-        ghcjs_dom_document_get_cookie, documentGetCookie,
-        ghcjs_dom_document_set_body, documentSetBody,
-        ghcjs_dom_document_get_body, documentGetBody,
-        ghcjs_dom_document_get_head, documentGetHead,
-        ghcjs_dom_document_get_images, documentGetImages,
-        ghcjs_dom_document_get_applets, documentGetApplets,
-        ghcjs_dom_document_get_links, documentGetLinks,
-        ghcjs_dom_document_get_forms, documentGetForms,
-        ghcjs_dom_document_get_anchors, documentGetAnchors,
-        ghcjs_dom_document_get_last_modified, documentGetLastModified,
-        ghcjs_dom_document_set_charset, documentSetCharset,
-        ghcjs_dom_document_get_charset, documentGetCharset,
-        ghcjs_dom_document_get_default_charset, documentGetDefaultCharset,
-        ghcjs_dom_document_get_ready_state, documentGetReadyState,
-        ghcjs_dom_document_get_character_set, documentGetCharacterSet,
-        ghcjs_dom_document_get_preferred_stylesheet_set,
-        documentGetPreferredStylesheetSet,
-        ghcjs_dom_document_set_selected_stylesheet_set,
-        documentSetSelectedStylesheetSet,
-        ghcjs_dom_document_get_selected_stylesheet_set,
-        documentGetSelectedStylesheetSet,
-        ghcjs_dom_document_get_active_element, documentGetActiveElement,
-        ghcjs_dom_document_get_compat_mode, documentGetCompatMode,
-        ghcjs_dom_document_get_pointer_lock_element,
-        documentGetPointerLockElement,
-        ghcjs_dom_document_get_visibility_state,
-        documentGetVisibilityState, ghcjs_dom_document_get_hidden,
-        documentGetHidden, ghcjs_dom_document_get_security_policy,
-        documentGetSecurityPolicy, ghcjs_dom_document_get_current_script,
-        documentGetCurrentScript, ghcjs_dom_document_get_origin,
-        documentGetOrigin, Document, IsDocument, castToDocument,
-        gTypeDocument, toDocument)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"createElement\"]($2)"
-        ghcjs_dom_document_create_element ::
-        JSRef Document -> JSString -> IO (JSRef Element)
- 
-documentCreateElement ::
-                      (IsDocument self, ToJSString tagName) =>
-                        self -> tagName -> IO (Maybe Element)
-documentCreateElement self tagName
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_document_create_element (unDocument (toDocument self))
-         (toJSString tagName))
- 
-foreign import javascript unsafe "$1[\"createDocumentFragment\"]()"
-        ghcjs_dom_document_create_document_fragment ::
-        JSRef Document -> IO (JSRef DocumentFragment)
- 
-documentCreateDocumentFragment ::
-                               (IsDocument self) => self -> IO (Maybe DocumentFragment)
-documentCreateDocumentFragment self
-  = fmap DocumentFragment . maybeJSNull <$>
-      (ghcjs_dom_document_create_document_fragment
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"createTextNode\"]($2)"
-        ghcjs_dom_document_create_text_node ::
-        JSRef Document -> JSString -> IO (JSRef Text)
- 
-documentCreateTextNode ::
-                       (IsDocument self, ToJSString data') =>
-                         self -> data' -> IO (Maybe Text)
-documentCreateTextNode self data'
-  = fmap Text . maybeJSNull <$>
-      (ghcjs_dom_document_create_text_node (unDocument (toDocument self))
-         (toJSString data'))
- 
-foreign import javascript unsafe "$1[\"createComment\"]($2)"
-        ghcjs_dom_document_create_comment ::
-        JSRef Document -> JSString -> IO (JSRef Comment)
- 
-documentCreateComment ::
-                      (IsDocument self, ToJSString data') =>
-                        self -> data' -> IO (Maybe Comment)
-documentCreateComment self data'
-  = fmap Comment . maybeJSNull <$>
-      (ghcjs_dom_document_create_comment (unDocument (toDocument self))
-         (toJSString data'))
- 
-foreign import javascript unsafe "$1[\"createCDATASection\"]($2)"
-        ghcjs_dom_document_create_cdata_section ::
-        JSRef Document -> JSString -> IO (JSRef CDATASection)
- 
-documentCreateCDATASection ::
-                           (IsDocument self, ToJSString data') =>
-                             self -> data' -> IO (Maybe CDATASection)
-documentCreateCDATASection self data'
-  = fmap CDATASection . maybeJSNull <$>
-      (ghcjs_dom_document_create_cdata_section
-         (unDocument (toDocument self))
-         (toJSString data'))
- 
-foreign import javascript unsafe
-        "$1[\"createProcessingInstruction\"]($2,\n$3)"
-        ghcjs_dom_document_create_processing_instruction ::
-        JSRef Document ->
-          JSString -> JSString -> IO (JSRef ProcessingInstruction)
- 
-documentCreateProcessingInstruction ::
-                                    (IsDocument self, ToJSString target, ToJSString data') =>
-                                      self -> target -> data' -> IO (Maybe ProcessingInstruction)
-documentCreateProcessingInstruction self target data'
-  = fmap ProcessingInstruction . maybeJSNull <$>
-      (ghcjs_dom_document_create_processing_instruction
-         (unDocument (toDocument self))
-         (toJSString target)
-         (toJSString data'))
- 
-foreign import javascript unsafe "$1[\"createAttribute\"]($2)"
-        ghcjs_dom_document_create_attribute ::
-        JSRef Document -> JSString -> IO (JSRef DOMAttr)
- 
-documentCreateAttribute ::
-                        (IsDocument self, ToJSString name) =>
-                          self -> name -> IO (Maybe DOMAttr)
-documentCreateAttribute self name
-  = fmap DOMAttr . maybeJSNull <$>
-      (ghcjs_dom_document_create_attribute (unDocument (toDocument self))
-         (toJSString name))
- 
-foreign import javascript unsafe
-        "$1[\"createEntityReference\"]($2)"
-        ghcjs_dom_document_create_entity_reference ::
-        JSRef Document -> JSString -> IO (JSRef EntityReference)
- 
-documentCreateEntityReference ::
-                              (IsDocument self, ToJSString name) =>
-                                self -> name -> IO (Maybe EntityReference)
-documentCreateEntityReference self name
-  = fmap EntityReference . maybeJSNull <$>
-      (ghcjs_dom_document_create_entity_reference
-         (unDocument (toDocument self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"getElementsByTagName\"]($2)"
-        ghcjs_dom_document_get_elements_by_tag_name ::
-        JSRef Document -> JSString -> IO (JSRef NodeList)
- 
-documentGetElementsByTagName ::
-                             (IsDocument self, ToJSString tagname) =>
-                               self -> tagname -> IO (Maybe NodeList)
-documentGetElementsByTagName self tagname
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_document_get_elements_by_tag_name
-         (unDocument (toDocument self))
-         (toJSString tagname))
- 
-foreign import javascript unsafe "$1[\"importNode\"]($2, $3)"
-        ghcjs_dom_document_import_node ::
-        JSRef Document -> JSRef Node -> Bool -> IO (JSRef Node)
- 
-documentImportNode ::
-                   (IsDocument self, IsNode importedNode) =>
-                     self -> Maybe importedNode -> Bool -> IO (Maybe Node)
-documentImportNode self importedNode deep
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_document_import_node (unDocument (toDocument self))
-         (maybe jsNull (unNode . toNode) importedNode)
-         deep)
- 
-foreign import javascript unsafe "$1[\"createElementNS\"]($2, $3)"
-        ghcjs_dom_document_create_element_ns ::
-        JSRef Document -> JSString -> JSString -> IO (JSRef Element)
- 
-documentCreateElementNS ::
-                        (IsDocument self, ToJSString namespaceURI,
-                         ToJSString qualifiedName) =>
-                          self -> namespaceURI -> qualifiedName -> IO (Maybe Element)
-documentCreateElementNS self namespaceURI qualifiedName
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_document_create_element_ns
-         (unDocument (toDocument self))
-         (toJSString namespaceURI)
-         (toJSString qualifiedName))
- 
-foreign import javascript unsafe
-        "$1[\"createAttributeNS\"]($2, $3)"
-        ghcjs_dom_document_create_attribute_ns ::
-        JSRef Document -> JSString -> JSString -> IO (JSRef DOMAttr)
- 
-documentCreateAttributeNS ::
-                          (IsDocument self, ToJSString namespaceURI,
-                           ToJSString qualifiedName) =>
-                            self -> namespaceURI -> qualifiedName -> IO (Maybe DOMAttr)
-documentCreateAttributeNS self namespaceURI qualifiedName
-  = fmap DOMAttr . maybeJSNull <$>
-      (ghcjs_dom_document_create_attribute_ns
-         (unDocument (toDocument self))
-         (toJSString namespaceURI)
-         (toJSString qualifiedName))
- 
-foreign import javascript unsafe
-        "$1[\"getElementsByTagNameNS\"]($2,\n$3)"
-        ghcjs_dom_document_get_elements_by_tag_name_ns ::
-        JSRef Document -> JSString -> JSString -> IO (JSRef NodeList)
- 
-documentGetElementsByTagNameNS ::
-                               (IsDocument self, ToJSString namespaceURI, ToJSString localName) =>
-                                 self -> namespaceURI -> localName -> IO (Maybe NodeList)
-documentGetElementsByTagNameNS self namespaceURI localName
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_document_get_elements_by_tag_name_ns
-         (unDocument (toDocument self))
-         (toJSString namespaceURI)
-         (toJSString localName))
- 
-foreign import javascript unsafe "$1[\"getElementById\"]($2)"
-        ghcjs_dom_document_get_element_by_id ::
-        JSRef Document -> JSString -> IO (JSRef Element)
- 
-documentGetElementById ::
-                       (IsDocument self, ToJSString elementId) =>
-                         self -> elementId -> IO (Maybe Element)
-documentGetElementById self elementId
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_document_get_element_by_id
-         (unDocument (toDocument self))
-         (toJSString elementId))
- 
-foreign import javascript unsafe "$1[\"adoptNode\"]($2)"
-        ghcjs_dom_document_adopt_node ::
-        JSRef Document -> JSRef Node -> IO (JSRef Node)
- 
-documentAdoptNode ::
-                  (IsDocument self, IsNode source) =>
-                    self -> Maybe source -> IO (Maybe Node)
-documentAdoptNode self source
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_document_adopt_node (unDocument (toDocument self))
-         (maybe jsNull (unNode . toNode) source))
- 
-foreign import javascript unsafe "$1[\"createEvent\"]($2)"
-        ghcjs_dom_document_create_event ::
-        JSRef Document -> JSString -> IO (JSRef Event)
- 
-documentCreateEvent ::
-                    (IsDocument self, ToJSString eventType) =>
-                      self -> eventType -> IO (Maybe Event)
-documentCreateEvent self eventType
-  = fmap Event . maybeJSNull <$>
-      (ghcjs_dom_document_create_event (unDocument (toDocument self))
-         (toJSString eventType))
- 
-foreign import javascript unsafe "$1[\"createRange\"]()"
-        ghcjs_dom_document_create_range ::
-        JSRef Document -> IO (JSRef DOMRange)
- 
-documentCreateRange ::
-                    (IsDocument self) => self -> IO (Maybe DOMRange)
-documentCreateRange self
-  = fmap DOMRange . maybeJSNull <$>
-      (ghcjs_dom_document_create_range (unDocument (toDocument self)))
- 
-foreign import javascript unsafe
-        "$1[\"createNodeIterator\"]($2, $3,\n$4, $5)"
-        ghcjs_dom_document_create_node_iterator ::
-        JSRef Document ->
-          JSRef Node ->
-            Word -> JSRef NodeFilter -> Bool -> IO (JSRef NodeIterator)
- 
-documentCreateNodeIterator ::
-                           (IsDocument self, IsNode root, IsNodeFilter filter) =>
-                             self ->
-                               Maybe root ->
-                                 Word -> Maybe filter -> Bool -> IO (Maybe NodeIterator)
-documentCreateNodeIterator self root whatToShow filter
-  expandEntityReferences
-  = fmap NodeIterator . maybeJSNull <$>
-      (ghcjs_dom_document_create_node_iterator
-         (unDocument (toDocument self))
-         (maybe jsNull (unNode . toNode) root)
-         whatToShow
-         (maybe jsNull (unNodeFilter . toNodeFilter) filter)
-         expandEntityReferences)
- 
-foreign import javascript unsafe
-        "$1[\"createTreeWalker\"]($2, $3,\n$4, $5)"
-        ghcjs_dom_document_create_tree_walker ::
-        JSRef Document ->
-          JSRef Node ->
-            Word -> JSRef NodeFilter -> Bool -> IO (JSRef TreeWalker)
- 
-documentCreateTreeWalker ::
-                         (IsDocument self, IsNode root, IsNodeFilter filter) =>
-                           self ->
-                             Maybe root -> Word -> Maybe filter -> Bool -> IO (Maybe TreeWalker)
-documentCreateTreeWalker self root whatToShow filter
-  expandEntityReferences
-  = fmap TreeWalker . maybeJSNull <$>
-      (ghcjs_dom_document_create_tree_walker
-         (unDocument (toDocument self))
-         (maybe jsNull (unNode . toNode) root)
-         whatToShow
-         (maybe jsNull (unNodeFilter . toNodeFilter) filter)
-         expandEntityReferences)
- 
-foreign import javascript unsafe "$1[\"getOverrideStyle\"]($2, $3)"
-        ghcjs_dom_document_get_override_style ::
-        JSRef Document ->
-          JSRef Element -> JSString -> IO (JSRef CSSStyleDeclaration)
- 
-documentGetOverrideStyle ::
-                         (IsDocument self, IsElement element, ToJSString pseudoElement) =>
-                           self ->
-                             Maybe element -> pseudoElement -> IO (Maybe CSSStyleDeclaration)
-documentGetOverrideStyle self element pseudoElement
-  = fmap CSSStyleDeclaration . maybeJSNull <$>
-      (ghcjs_dom_document_get_override_style
-         (unDocument (toDocument self))
-         (maybe jsNull (unElement . toElement) element)
-         (toJSString pseudoElement))
- 
-foreign import javascript unsafe "$1[\"createExpression\"]($2, $3)"
-        ghcjs_dom_document_create_expression ::
-        JSRef Document ->
-          JSString -> JSRef XPathNSResolver -> IO (JSRef XPathExpression)
- 
-documentCreateExpression ::
-                         (IsDocument self, ToJSString expression,
-                          IsXPathNSResolver resolver) =>
-                           self -> expression -> Maybe resolver -> IO (Maybe XPathExpression)
-documentCreateExpression self expression resolver
-  = fmap XPathExpression . maybeJSNull <$>
-      (ghcjs_dom_document_create_expression
-         (unDocument (toDocument self))
-         (toJSString expression)
-         (maybe jsNull (unXPathNSResolver . toXPathNSResolver) resolver))
- 
-foreign import javascript unsafe "$1[\"createNSResolver\"]($2)"
-        ghcjs_dom_document_create_ns_resolver ::
-        JSRef Document -> JSRef Node -> IO (JSRef XPathNSResolver)
- 
-documentCreateNSResolver ::
-                         (IsDocument self, IsNode nodeResolver) =>
-                           self -> Maybe nodeResolver -> IO (Maybe XPathNSResolver)
-documentCreateNSResolver self nodeResolver
-  = fmap XPathNSResolver . maybeJSNull <$>
-      (ghcjs_dom_document_create_ns_resolver
-         (unDocument (toDocument self))
-         (maybe jsNull (unNode . toNode) nodeResolver))
- 
-foreign import javascript unsafe
-        "$1[\"evaluate\"]($2, $3, $4, $5,\n$6)" ghcjs_dom_document_evaluate
-        ::
-        JSRef Document ->
-          JSString ->
-            JSRef Node ->
-              JSRef XPathNSResolver ->
-                Word -> JSRef XPathResult -> IO (JSRef XPathResult)
- 
-documentEvaluate ::
-                 (IsDocument self, ToJSString expression, IsNode contextNode,
-                  IsXPathNSResolver resolver, IsXPathResult inResult) =>
-                   self ->
-                     expression ->
-                       Maybe contextNode ->
-                         Maybe resolver -> Word -> Maybe inResult -> IO (Maybe XPathResult)
-documentEvaluate self expression contextNode resolver type'
-  inResult
-  = fmap XPathResult . maybeJSNull <$>
-      (ghcjs_dom_document_evaluate (unDocument (toDocument self))
-         (toJSString expression)
-         (maybe jsNull (unNode . toNode) contextNode)
-         (maybe jsNull (unXPathNSResolver . toXPathNSResolver) resolver)
-         type'
-         (maybe jsNull (unXPathResult . toXPathResult) inResult))
- 
-foreign import javascript unsafe
-        "($1[\"execCommand\"]($2, $3,\n$4) ? 1 : 0)"
-        ghcjs_dom_document_exec_command ::
-        JSRef Document -> JSString -> Bool -> JSString -> IO Bool
- 
-documentExecCommand ::
-                    (IsDocument self, ToJSString command, ToJSString value) =>
-                      self -> command -> Bool -> value -> IO Bool
-documentExecCommand self command userInterface value
-  = ghcjs_dom_document_exec_command (unDocument (toDocument self))
-      (toJSString command)
-      userInterface
-      (toJSString value)
- 
-foreign import javascript unsafe
-        "($1[\"queryCommandEnabled\"]($2) ? 1 : 0)"
-        ghcjs_dom_document_query_command_enabled ::
-        JSRef Document -> JSString -> IO Bool
- 
-documentQueryCommandEnabled ::
-                            (IsDocument self, ToJSString command) => self -> command -> IO Bool
-documentQueryCommandEnabled self command
-  = ghcjs_dom_document_query_command_enabled
-      (unDocument (toDocument self))
-      (toJSString command)
- 
-foreign import javascript unsafe
-        "($1[\"queryCommandIndeterm\"]($2) ? 1 : 0)"
-        ghcjs_dom_document_query_command_indeterm ::
-        JSRef Document -> JSString -> IO Bool
- 
-documentQueryCommandIndeterm ::
-                             (IsDocument self, ToJSString command) => self -> command -> IO Bool
-documentQueryCommandIndeterm self command
-  = ghcjs_dom_document_query_command_indeterm
-      (unDocument (toDocument self))
-      (toJSString command)
- 
-foreign import javascript unsafe
-        "($1[\"queryCommandState\"]($2) ? 1 : 0)"
-        ghcjs_dom_document_query_command_state ::
-        JSRef Document -> JSString -> IO Bool
- 
-documentQueryCommandState ::
-                          (IsDocument self, ToJSString command) => self -> command -> IO Bool
-documentQueryCommandState self command
-  = ghcjs_dom_document_query_command_state
-      (unDocument (toDocument self))
-      (toJSString command)
- 
-foreign import javascript unsafe
-        "($1[\"queryCommandSupported\"]($2) ? 1 : 0)"
-        ghcjs_dom_document_query_command_supported ::
-        JSRef Document -> JSString -> IO Bool
- 
-documentQueryCommandSupported ::
-                              (IsDocument self, ToJSString command) => self -> command -> IO Bool
-documentQueryCommandSupported self command
-  = ghcjs_dom_document_query_command_supported
-      (unDocument (toDocument self))
-      (toJSString command)
- 
-foreign import javascript unsafe "$1[\"queryCommandValue\"]($2)"
-        ghcjs_dom_document_query_command_value ::
-        JSRef Document -> JSString -> IO JSString
- 
-documentQueryCommandValue ::
-                          (IsDocument self, ToJSString command, FromJSString result) =>
-                            self -> command -> IO result
-documentQueryCommandValue self command
-  = fromJSString <$>
-      (ghcjs_dom_document_query_command_value
-         (unDocument (toDocument self))
-         (toJSString command))
- 
-foreign import javascript unsafe "$1[\"getElementsByName\"]($2)"
-        ghcjs_dom_document_get_elements_by_name ::
-        JSRef Document -> JSString -> IO (JSRef NodeList)
- 
-documentGetElementsByName ::
-                          (IsDocument self, ToJSString elementName) =>
-                            self -> elementName -> IO (Maybe NodeList)
-documentGetElementsByName self elementName
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_document_get_elements_by_name
-         (unDocument (toDocument self))
-         (toJSString elementName))
- 
-foreign import javascript unsafe "$1[\"elementFromPoint\"]($2, $3)"
-        ghcjs_dom_document_element_from_point ::
-        JSRef Document -> Int -> Int -> IO (JSRef Element)
- 
-documentElementFromPoint ::
-                         (IsDocument self) => self -> Int -> Int -> IO (Maybe Element)
-documentElementFromPoint self x y
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_document_element_from_point
-         (unDocument (toDocument self))
-         x
-         y)
- 
-foreign import javascript unsafe
-        "$1[\"caretRangeFromPoint\"]($2,\n$3)"
-        ghcjs_dom_document_caret_range_from_point ::
-        JSRef Document -> Int -> Int -> IO (JSRef DOMRange)
- 
-documentCaretRangeFromPoint ::
-                            (IsDocument self) => self -> Int -> Int -> IO (Maybe DOMRange)
-documentCaretRangeFromPoint self x y
-  = fmap DOMRange . maybeJSNull <$>
-      (ghcjs_dom_document_caret_range_from_point
-         (unDocument (toDocument self))
-         x
-         y)
- 
-foreign import javascript unsafe
-        "$1[\"createCSSStyleDeclaration\"]()"
-        ghcjs_dom_document_create_css_style_declaration ::
-        JSRef Document -> IO (JSRef CSSStyleDeclaration)
- 
-documentCreateCSSStyleDeclaration ::
-                                  (IsDocument self) => self -> IO (Maybe CSSStyleDeclaration)
-documentCreateCSSStyleDeclaration self
-  = fmap CSSStyleDeclaration . maybeJSNull <$>
-      (ghcjs_dom_document_create_css_style_declaration
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe
-        "$1[\"getElementsByClassName\"]($2)"
-        ghcjs_dom_document_get_elements_by_class_name ::
-        JSRef Document -> JSString -> IO (JSRef NodeList)
- 
-documentGetElementsByClassName ::
-                               (IsDocument self, ToJSString tagname) =>
-                                 self -> tagname -> IO (Maybe NodeList)
-documentGetElementsByClassName self tagname
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_document_get_elements_by_class_name
-         (unDocument (toDocument self))
-         (toJSString tagname))
- 
-foreign import javascript unsafe "($1[\"hasFocus\"]() ? 1 : 0)"
-        ghcjs_dom_document_has_focus :: JSRef Document -> IO Bool
- 
-documentHasFocus :: (IsDocument self) => self -> IO Bool
-documentHasFocus self
-  = ghcjs_dom_document_has_focus (unDocument (toDocument self))
- 
-foreign import javascript unsafe "$1[\"querySelector\"]($2)"
-        ghcjs_dom_document_query_selector ::
-        JSRef Document -> JSString -> IO (JSRef Element)
- 
-documentQuerySelector ::
-                      (IsDocument self, ToJSString selectors) =>
-                        self -> selectors -> IO (Maybe Element)
-documentQuerySelector self selectors
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_document_query_selector (unDocument (toDocument self))
-         (toJSString selectors))
- 
-foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
-        ghcjs_dom_document_query_selector_all ::
-        JSRef Document -> JSString -> IO (JSRef NodeList)
- 
-documentQuerySelectorAll ::
-                         (IsDocument self, ToJSString selectors) =>
-                           self -> selectors -> IO (Maybe NodeList)
-documentQuerySelectorAll self selectors
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_document_query_selector_all
-         (unDocument (toDocument self))
-         (toJSString selectors))
- 
-foreign import javascript unsafe "$1[\"exitPointerLock\"]()"
-        ghcjs_dom_document_exit_pointer_lock :: JSRef Document -> IO ()
- 
-documentExitPointerLock :: (IsDocument self) => self -> IO ()
-documentExitPointerLock self
-  = ghcjs_dom_document_exit_pointer_lock
-      (unDocument (toDocument self))
- 
-foreign import javascript unsafe "$1[\"webkitGetNamedFlows\"]()"
-        ghcjs_dom_document_webkit_get_named_flows ::
-        JSRef Document -> IO (JSRef DOMNamedFlowCollection)
- 
-documentWebkitGetNamedFlows ::
-                            (IsDocument self) => self -> IO (Maybe DOMNamedFlowCollection)
-documentWebkitGetNamedFlows self
-  = fmap DOMNamedFlowCollection . maybeJSNull <$>
-      (ghcjs_dom_document_webkit_get_named_flows
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"doctype\"]"
-        ghcjs_dom_document_get_doctype ::
-        JSRef Document -> IO (JSRef DocumentType)
- 
-documentGetDoctype ::
-                   (IsDocument self) => self -> IO (Maybe DocumentType)
-documentGetDoctype self
-  = fmap DocumentType . maybeJSNull <$>
-      (ghcjs_dom_document_get_doctype (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"implementation\"]"
-        ghcjs_dom_document_get_implementation ::
-        JSRef Document -> IO (JSRef DOMImplementation)
- 
-documentGetImplementation ::
-                          (IsDocument self) => self -> IO (Maybe DOMImplementation)
-documentGetImplementation self
-  = fmap DOMImplementation . maybeJSNull <$>
-      (ghcjs_dom_document_get_implementation
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"documentElement\"]"
-        ghcjs_dom_document_get_document_element ::
-        JSRef Document -> IO (JSRef Element)
- 
-documentGetDocumentElement ::
-                           (IsDocument self) => self -> IO (Maybe Element)
-documentGetDocumentElement self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_document_get_document_element
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"inputEncoding\"]"
-        ghcjs_dom_document_get_input_encoding ::
-        JSRef Document -> IO JSString
- 
-documentGetInputEncoding ::
-                         (IsDocument self, FromJSString result) => self -> IO result
-documentGetInputEncoding self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_input_encoding
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"xmlEncoding\"]"
-        ghcjs_dom_document_get_xml_encoding ::
-        JSRef Document -> IO JSString
- 
-documentGetXmlEncoding ::
-                       (IsDocument self, FromJSString result) => self -> IO result
-documentGetXmlEncoding self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_xml_encoding
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"xmlVersion\"] = $2;"
-        ghcjs_dom_document_set_xml_version ::
-        JSRef Document -> JSString -> IO ()
- 
-documentSetXmlVersion ::
-                      (IsDocument self, ToJSString val) => self -> val -> IO ()
-documentSetXmlVersion self val
-  = ghcjs_dom_document_set_xml_version (unDocument (toDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"xmlVersion\"]"
-        ghcjs_dom_document_get_xml_version :: JSRef Document -> IO JSString
- 
-documentGetXmlVersion ::
-                      (IsDocument self, FromJSString result) => self -> IO result
-documentGetXmlVersion self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_xml_version (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"xmlStandalone\"] = $2;"
-        ghcjs_dom_document_set_xml_standalone ::
-        JSRef Document -> Bool -> IO ()
- 
-documentSetXmlStandalone ::
-                         (IsDocument self) => self -> Bool -> IO ()
-documentSetXmlStandalone self val
-  = ghcjs_dom_document_set_xml_standalone
-      (unDocument (toDocument self))
-      val
- 
-foreign import javascript unsafe "($1[\"xmlStandalone\"] ? 1 : 0)"
-        ghcjs_dom_document_get_xml_standalone :: JSRef Document -> IO Bool
- 
-documentGetXmlStandalone :: (IsDocument self) => self -> IO Bool
-documentGetXmlStandalone self
-  = ghcjs_dom_document_get_xml_standalone
-      (unDocument (toDocument self))
- 
-foreign import javascript unsafe "$1[\"documentURI\"] = $2;"
-        ghcjs_dom_document_set_document_uri ::
-        JSRef Document -> JSString -> IO ()
- 
-documentSetDocumentURI ::
-                       (IsDocument self, ToJSString val) => self -> val -> IO ()
-documentSetDocumentURI self val
-  = ghcjs_dom_document_set_document_uri
-      (unDocument (toDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"documentURI\"]"
-        ghcjs_dom_document_get_document_uri ::
-        JSRef Document -> IO JSString
- 
-documentGetDocumentURI ::
-                       (IsDocument self, FromJSString result) => self -> IO result
-documentGetDocumentURI self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_document_uri
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"defaultView\"]"
-        ghcjs_dom_document_get_default_view ::
-        JSRef Document -> IO (JSRef DOMWindow)
- 
-documentGetDefaultView ::
-                       (IsDocument self) => self -> IO (Maybe DOMWindow)
-documentGetDefaultView self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_document_get_default_view
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"styleSheets\"]"
-        ghcjs_dom_document_get_style_sheets ::
-        JSRef Document -> IO (JSRef StyleSheetList)
- 
-documentGetStyleSheets ::
-                       (IsDocument self) => self -> IO (Maybe StyleSheetList)
-documentGetStyleSheets self
-  = fmap StyleSheetList . maybeJSNull <$>
-      (ghcjs_dom_document_get_style_sheets
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"title\"] = $2;"
-        ghcjs_dom_document_set_title :: JSRef Document -> JSString -> IO ()
- 
-documentSetTitle ::
-                 (IsDocument self, ToJSString val) => self -> val -> IO ()
-documentSetTitle self val
-  = ghcjs_dom_document_set_title (unDocument (toDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"title\"]"
-        ghcjs_dom_document_get_title :: JSRef Document -> IO JSString
- 
-documentGetTitle ::
-                 (IsDocument self, FromJSString result) => self -> IO result
-documentGetTitle self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_title (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"referrer\"]"
-        ghcjs_dom_document_get_referrer :: JSRef Document -> IO JSString
- 
-documentGetReferrer ::
-                    (IsDocument self, FromJSString result) => self -> IO result
-documentGetReferrer self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_referrer (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"domain\"]"
-        ghcjs_dom_document_get_domain :: JSRef Document -> IO JSString
- 
-documentGetDomain ::
-                  (IsDocument self, FromJSString result) => self -> IO result
-documentGetDomain self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_domain (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"cookie\"] = $2;"
-        ghcjs_dom_document_set_cookie ::
-        JSRef Document -> JSString -> IO ()
- 
-documentSetCookie ::
-                  (IsDocument self, ToJSString val) => self -> val -> IO ()
-documentSetCookie self val
-  = ghcjs_dom_document_set_cookie (unDocument (toDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cookie\"]"
-        ghcjs_dom_document_get_cookie :: JSRef Document -> IO JSString
- 
-documentGetCookie ::
-                  (IsDocument self, FromJSString result) => self -> IO result
-documentGetCookie self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_cookie (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"body\"] = $2;"
-        ghcjs_dom_document_set_body ::
-        JSRef Document -> JSRef HTMLElement -> IO ()
- 
-documentSetBody ::
-                (IsDocument self, IsHTMLElement val) => self -> Maybe val -> IO ()
-documentSetBody self val
-  = ghcjs_dom_document_set_body (unDocument (toDocument self))
-      (maybe jsNull (unHTMLElement . toHTMLElement) val)
- 
-foreign import javascript unsafe "$1[\"body\"]"
-        ghcjs_dom_document_get_body ::
-        JSRef Document -> IO (JSRef HTMLElement)
- 
-documentGetBody ::
-                (IsDocument self) => self -> IO (Maybe HTMLElement)
-documentGetBody self
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_document_get_body (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"head\"]"
-        ghcjs_dom_document_get_head ::
-        JSRef Document -> IO (JSRef HTMLHeadElement)
- 
-documentGetHead ::
-                (IsDocument self) => self -> IO (Maybe HTMLHeadElement)
-documentGetHead self
-  = fmap HTMLHeadElement . maybeJSNull <$>
-      (ghcjs_dom_document_get_head (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"images\"]"
-        ghcjs_dom_document_get_images ::
-        JSRef Document -> IO (JSRef HTMLCollection)
- 
-documentGetImages ::
-                  (IsDocument self) => self -> IO (Maybe HTMLCollection)
-documentGetImages self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_document_get_images (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"applets\"]"
-        ghcjs_dom_document_get_applets ::
-        JSRef Document -> IO (JSRef HTMLCollection)
- 
-documentGetApplets ::
-                   (IsDocument self) => self -> IO (Maybe HTMLCollection)
-documentGetApplets self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_document_get_applets (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"links\"]"
-        ghcjs_dom_document_get_links ::
-        JSRef Document -> IO (JSRef HTMLCollection)
- 
-documentGetLinks ::
-                 (IsDocument self) => self -> IO (Maybe HTMLCollection)
-documentGetLinks self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_document_get_links (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"forms\"]"
-        ghcjs_dom_document_get_forms ::
-        JSRef Document -> IO (JSRef HTMLCollection)
- 
-documentGetForms ::
-                 (IsDocument self) => self -> IO (Maybe HTMLCollection)
-documentGetForms self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_document_get_forms (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"anchors\"]"
-        ghcjs_dom_document_get_anchors ::
-        JSRef Document -> IO (JSRef HTMLCollection)
- 
-documentGetAnchors ::
-                   (IsDocument self) => self -> IO (Maybe HTMLCollection)
-documentGetAnchors self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_document_get_anchors (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"lastModified\"]"
-        ghcjs_dom_document_get_last_modified ::
-        JSRef Document -> IO JSString
- 
-documentGetLastModified ::
-                        (IsDocument self, FromJSString result) => self -> IO result
-documentGetLastModified self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_last_modified
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"charset\"] = $2;"
-        ghcjs_dom_document_set_charset ::
-        JSRef Document -> JSString -> IO ()
- 
-documentSetCharset ::
-                   (IsDocument self, ToJSString val) => self -> val -> IO ()
-documentSetCharset self val
-  = ghcjs_dom_document_set_charset (unDocument (toDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"charset\"]"
-        ghcjs_dom_document_get_charset :: JSRef Document -> IO JSString
- 
-documentGetCharset ::
-                   (IsDocument self, FromJSString result) => self -> IO result
-documentGetCharset self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_charset (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"defaultCharset\"]"
-        ghcjs_dom_document_get_default_charset ::
-        JSRef Document -> IO JSString
- 
-documentGetDefaultCharset ::
-                          (IsDocument self, FromJSString result) => self -> IO result
-documentGetDefaultCharset self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_default_charset
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"readyState\"]"
-        ghcjs_dom_document_get_ready_state :: JSRef Document -> IO JSString
- 
-documentGetReadyState ::
-                      (IsDocument self, FromJSString result) => self -> IO result
-documentGetReadyState self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_ready_state (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"characterSet\"]"
-        ghcjs_dom_document_get_character_set ::
-        JSRef Document -> IO JSString
- 
-documentGetCharacterSet ::
-                        (IsDocument self, FromJSString result) => self -> IO result
-documentGetCharacterSet self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_character_set
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"preferredStylesheetSet\"]"
-        ghcjs_dom_document_get_preferred_stylesheet_set ::
-        JSRef Document -> IO JSString
- 
-documentGetPreferredStylesheetSet ::
-                                  (IsDocument self, FromJSString result) => self -> IO result
-documentGetPreferredStylesheetSet self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_preferred_stylesheet_set
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe
-        "$1[\"selectedStylesheetSet\"] = $2;"
-        ghcjs_dom_document_set_selected_stylesheet_set ::
-        JSRef Document -> JSString -> IO ()
- 
-documentSetSelectedStylesheetSet ::
-                                 (IsDocument self, ToJSString val) => self -> val -> IO ()
-documentSetSelectedStylesheetSet self val
-  = ghcjs_dom_document_set_selected_stylesheet_set
-      (unDocument (toDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"selectedStylesheetSet\"]"
-        ghcjs_dom_document_get_selected_stylesheet_set ::
-        JSRef Document -> IO JSString
- 
-documentGetSelectedStylesheetSet ::
-                                 (IsDocument self, FromJSString result) => self -> IO result
-documentGetSelectedStylesheetSet self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_selected_stylesheet_set
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"activeElement\"]"
-        ghcjs_dom_document_get_active_element ::
-        JSRef Document -> IO (JSRef Element)
- 
-documentGetActiveElement ::
-                         (IsDocument self) => self -> IO (Maybe Element)
-documentGetActiveElement self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_document_get_active_element
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"compatMode\"]"
-        ghcjs_dom_document_get_compat_mode :: JSRef Document -> IO JSString
- 
-documentGetCompatMode ::
-                      (IsDocument self, FromJSString result) => self -> IO result
-documentGetCompatMode self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_compat_mode (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"pointerLockElement\"]"
-        ghcjs_dom_document_get_pointer_lock_element ::
-        JSRef Document -> IO (JSRef Element)
- 
-documentGetPointerLockElement ::
-                              (IsDocument self) => self -> IO (Maybe Element)
-documentGetPointerLockElement self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_document_get_pointer_lock_element
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"visibilityState\"]"
-        ghcjs_dom_document_get_visibility_state ::
-        JSRef Document -> IO JSString
- 
-documentGetVisibilityState ::
-                           (IsDocument self, FromJSString result) => self -> IO result
-documentGetVisibilityState self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_visibility_state
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "($1[\"hidden\"] ? 1 : 0)"
-        ghcjs_dom_document_get_hidden :: JSRef Document -> IO Bool
- 
-documentGetHidden :: (IsDocument self) => self -> IO Bool
-documentGetHidden self
-  = ghcjs_dom_document_get_hidden (unDocument (toDocument self))
- 
-foreign import javascript unsafe "$1[\"securityPolicy\"]"
-        ghcjs_dom_document_get_security_policy ::
-        JSRef Document -> IO (JSRef DOMSecurityPolicy)
- 
-documentGetSecurityPolicy ::
-                          (IsDocument self) => self -> IO (Maybe DOMSecurityPolicy)
-documentGetSecurityPolicy self
-  = fmap DOMSecurityPolicy . maybeJSNull <$>
-      (ghcjs_dom_document_get_security_policy
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"currentScript\"]"
-        ghcjs_dom_document_get_current_script ::
-        JSRef Document -> IO (JSRef HTMLScriptElement)
- 
-documentGetCurrentScript ::
-                         (IsDocument self) => self -> IO (Maybe HTMLScriptElement)
-documentGetCurrentScript self
-  = fmap HTMLScriptElement . maybeJSNull <$>
-      (ghcjs_dom_document_get_current_script
-         (unDocument (toDocument self)))
- 
-foreign import javascript unsafe "$1[\"origin\"]"
-        ghcjs_dom_document_get_origin :: JSRef Document -> IO JSString
- 
-documentGetOrigin ::
-                  (IsDocument self, FromJSString result) => self -> IO result
-documentGetOrigin self
-  = fromJSString <$>
-      (ghcjs_dom_document_get_origin (unDocument (toDocument self)))
-#else
-module GHCJS.DOM.Document (
-  module Graphics.UI.Gtk.WebKit.DOM.Document
-  ) where
+module GHCJS.DOM.Document (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Document
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.Document
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Document
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Document
 #endif
diff --git a/src/GHCJS/DOM/DocumentFragment.hs b/src/GHCJS/DOM/DocumentFragment.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DocumentFragment.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DocumentFragment (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DocumentFragment
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DocumentFragment
+#else
+#endif
diff --git a/src/GHCJS/DOM/DocumentType.hs b/src/GHCJS/DOM/DocumentType.hs
--- a/src/GHCJS/DOM/DocumentType.hs
+++ b/src/GHCJS/DOM/DocumentType.hs
@@ -1,94 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.DocumentType (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.DocumentType
-       (ghcjs_dom_document_type_get_name, documentTypeGetName,
-        ghcjs_dom_document_type_get_entities, documentTypeGetEntities,
-        ghcjs_dom_document_type_get_notations, documentTypeGetNotations,
-        ghcjs_dom_document_type_get_public_id, documentTypeGetPublicId,
-        ghcjs_dom_document_type_get_system_id, documentTypeGetSystemId,
-        ghcjs_dom_document_type_get_internal_subset,
-        documentTypeGetInternalSubset, DocumentType, IsDocumentType,
-        castToDocumentType, gTypeDocumentType, toDocumentType)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_document_type_get_name ::
-        JSRef DocumentType -> IO JSString
- 
-documentTypeGetName ::
-                    (IsDocumentType self, FromJSString result) => self -> IO result
-documentTypeGetName self
-  = fromJSString <$>
-      (ghcjs_dom_document_type_get_name
-         (unDocumentType (toDocumentType self)))
- 
-foreign import javascript unsafe "$1[\"entities\"]"
-        ghcjs_dom_document_type_get_entities ::
-        JSRef DocumentType -> IO (JSRef NamedNodeMap)
- 
-documentTypeGetEntities ::
-                        (IsDocumentType self) => self -> IO (Maybe NamedNodeMap)
-documentTypeGetEntities self
-  = fmap NamedNodeMap . maybeJSNull <$>
-      (ghcjs_dom_document_type_get_entities
-         (unDocumentType (toDocumentType self)))
- 
-foreign import javascript unsafe "$1[\"notations\"]"
-        ghcjs_dom_document_type_get_notations ::
-        JSRef DocumentType -> IO (JSRef NamedNodeMap)
- 
-documentTypeGetNotations ::
-                         (IsDocumentType self) => self -> IO (Maybe NamedNodeMap)
-documentTypeGetNotations self
-  = fmap NamedNodeMap . maybeJSNull <$>
-      (ghcjs_dom_document_type_get_notations
-         (unDocumentType (toDocumentType self)))
- 
-foreign import javascript unsafe "$1[\"publicId\"]"
-        ghcjs_dom_document_type_get_public_id ::
-        JSRef DocumentType -> IO JSString
- 
-documentTypeGetPublicId ::
-                        (IsDocumentType self, FromJSString result) => self -> IO result
-documentTypeGetPublicId self
-  = fromJSString <$>
-      (ghcjs_dom_document_type_get_public_id
-         (unDocumentType (toDocumentType self)))
- 
-foreign import javascript unsafe "$1[\"systemId\"]"
-        ghcjs_dom_document_type_get_system_id ::
-        JSRef DocumentType -> IO JSString
- 
-documentTypeGetSystemId ::
-                        (IsDocumentType self, FromJSString result) => self -> IO result
-documentTypeGetSystemId self
-  = fromJSString <$>
-      (ghcjs_dom_document_type_get_system_id
-         (unDocumentType (toDocumentType self)))
- 
-foreign import javascript unsafe "$1[\"internalSubset\"]"
-        ghcjs_dom_document_type_get_internal_subset ::
-        JSRef DocumentType -> IO JSString
- 
-documentTypeGetInternalSubset ::
-                              (IsDocumentType self, FromJSString result) => self -> IO result
-documentTypeGetInternalSubset self
-  = fromJSString <$>
-      (ghcjs_dom_document_type_get_internal_subset
-         (unDocumentType (toDocumentType self)))
+  module GHCJS.DOM.JSFFI.Generated.DocumentType
 #else
-module GHCJS.DOM.DocumentType (
   module Graphics.UI.Gtk.WebKit.DOM.DocumentType
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DocumentType
+#else
 import Graphics.UI.Gtk.WebKit.DOM.DocumentType
 #endif
diff --git a/src/GHCJS/DOM/DynamicsCompressorNode.hs b/src/GHCJS/DOM/DynamicsCompressorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/DynamicsCompressorNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.DynamicsCompressorNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/EXTBlendMinMax.hs b/src/GHCJS/DOM/EXTBlendMinMax.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/EXTBlendMinMax.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.EXTBlendMinMax (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax
+#else
+#endif
diff --git a/src/GHCJS/DOM/EXTTextureFilterAnisotropic.hs b/src/GHCJS/DOM/EXTTextureFilterAnisotropic.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/EXTTextureFilterAnisotropic.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.EXTTextureFilterAnisotropic (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic
+#else
+#endif
diff --git a/src/GHCJS/DOM/EXTsRGB.hs b/src/GHCJS/DOM/EXTsRGB.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/EXTsRGB.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.EXTsRGB (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.EXTsRGB
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.EXTsRGB
+#else
+#endif
diff --git a/src/GHCJS/DOM/Element.hs b/src/GHCJS/DOM/Element.hs
--- a/src/GHCJS/DOM/Element.hs
+++ b/src/GHCJS/DOM/Element.hs
@@ -1,899 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Element (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Element
-       (ghcjs_dom_element_get_attribute, elementGetAttribute,
-        ghcjs_dom_element_set_attribute, elementSetAttribute,
-        ghcjs_dom_element_remove_attribute, elementRemoveAttribute,
-        ghcjs_dom_element_get_attribute_node, elementGetAttributeNode,
-        ghcjs_dom_element_set_attribute_node, elementSetAttributeNode,
-        ghcjs_dom_element_remove_attribute_node,
-        elementRemoveAttributeNode,
-        ghcjs_dom_element_get_elements_by_tag_name,
-        elementGetElementsByTagName, ghcjs_dom_element_has_attributes,
-        elementHasAttributes, ghcjs_dom_element_get_attribute_ns,
-        elementGetAttributeNS, ghcjs_dom_element_set_attribute_ns,
-        elementSetAttributeNS, ghcjs_dom_element_remove_attribute_ns,
-        elementRemoveAttributeNS,
-        ghcjs_dom_element_get_elements_by_tag_name_ns,
-        elementGetElementsByTagNameNS,
-        ghcjs_dom_element_get_attribute_node_ns, elementGetAttributeNodeNS,
-        ghcjs_dom_element_set_attribute_node_ns, elementSetAttributeNodeNS,
-        ghcjs_dom_element_has_attribute, elementHasAttribute,
-        ghcjs_dom_element_has_attribute_ns, elementHasAttributeNS,
-        ghcjs_dom_element_focus, elementFocus, ghcjs_dom_element_blur,
-        elementBlur, ghcjs_dom_element_scroll_into_view,
-        elementScrollIntoView,
-        ghcjs_dom_element_scroll_into_view_if_needed,
-        elementScrollIntoViewIfNeeded, ghcjs_dom_element_scroll_by_lines,
-        elementScrollByLines, ghcjs_dom_element_scroll_by_pages,
-        elementScrollByPages, ghcjs_dom_element_get_elements_by_class_name,
-        elementGetElementsByClassName, ghcjs_dom_element_query_selector,
-        elementQuerySelector, ghcjs_dom_element_query_selector_all,
-        elementQuerySelectorAll, ghcjs_dom_element_matches, elementMatches,
-        ghcjs_dom_element_closest, elementClosest,
-        ghcjs_dom_element_webkit_matches_selector,
-        elementWebkitMatchesSelector,
-        ghcjs_dom_element_request_pointer_lock, elementRequestPointerLock,
-        ghcjs_dom_element_get_tag_name, elementGetTagName,
-        ghcjs_dom_element_get_attributes, elementGetAttributes,
-        ghcjs_dom_element_get_style, elementGetStyle,
-        ghcjs_dom_element_set_id, elementSetId, ghcjs_dom_element_get_id,
-        elementGetId, ghcjs_dom_element_get_offset_left,
-        elementGetOffsetLeft, ghcjs_dom_element_get_offset_top,
-        elementGetOffsetTop, ghcjs_dom_element_get_offset_width,
-        elementGetOffsetWidth, ghcjs_dom_element_get_offset_height,
-        elementGetOffsetHeight, ghcjs_dom_element_get_client_left,
-        elementGetClientLeft, ghcjs_dom_element_get_client_top,
-        elementGetClientTop, ghcjs_dom_element_get_client_width,
-        elementGetClientWidth, ghcjs_dom_element_get_client_height,
-        elementGetClientHeight, ghcjs_dom_element_set_scroll_left,
-        elementSetScrollLeft, ghcjs_dom_element_get_scroll_left,
-        elementGetScrollLeft, ghcjs_dom_element_set_scroll_top,
-        elementSetScrollTop, ghcjs_dom_element_get_scroll_top,
-        elementGetScrollTop, ghcjs_dom_element_get_scroll_width,
-        elementGetScrollWidth, ghcjs_dom_element_get_scroll_height,
-        elementGetScrollHeight, ghcjs_dom_element_get_offset_parent,
-        elementGetOffsetParent, ghcjs_dom_element_set_class_name,
-        elementSetClassName, ghcjs_dom_element_get_class_name,
-        elementGetClassName, ghcjs_dom_element_get_class_list,
-        elementGetClassList, ghcjs_dom_element_get_first_element_child,
-        elementGetFirstElementChild,
-        ghcjs_dom_element_get_last_element_child,
-        elementGetLastElementChild,
-        ghcjs_dom_element_get_previous_element_sibling,
-        elementGetPreviousElementSibling,
-        ghcjs_dom_element_get_next_element_sibling,
-        elementGetNextElementSibling,
-        ghcjs_dom_element_get_child_element_count,
-        elementGetChildElementCount,
-        ghcjs_dom_element_get_webkit_region_overset,
-        elementGetWebkitRegionOverset, elementOnabort, elementOnblur,
-        elementOnchange, elementOnclick, elementOncontextmenu,
-        elementOndblclick, elementOndrag, elementOndragend,
-        elementOndragenter, elementOndragleave, elementOndragover,
-        elementOndragstart, elementOndrop, elementOnerror, elementOnfocus,
-        elementOninput, elementOninvalid, elementOnkeydown,
-        elementOnkeypress, elementOnkeyup, elementOnload,
-        elementOnmousedown, elementOnmouseenter, elementOnmouseleave,
-        elementOnmousemove, elementOnmouseout, elementOnmouseover,
-        elementOnmouseup, elementOnmousewheel, elementOnscroll,
-        elementOnselect, elementOnsubmit, elementOnwheel,
-        elementOnbeforecut, elementOncut, elementOnbeforecopy,
-        elementOncopy, elementOnbeforepaste, elementOnpaste,
-        elementOnreset, elementOnsearch, elementOnselectstart,
-        elementOntouchstart, elementOntouchmove, elementOntouchend,
-        elementOntouchcancel, elementOnwebkitfullscreenchange,
-        elementOnwebkitfullscreenerror, elementOnwebkitwillrevealbottom,
-        elementOnwebkitwillrevealleft, elementOnwebkitwillrevealright,
-        elementOnwebkitwillrevealtop, Element, IsElement, castToElement,
-        gTypeElement, toElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"getAttribute\"]($2)"
-        ghcjs_dom_element_get_attribute ::
-        JSRef Element -> JSString -> IO JSString
- 
-elementGetAttribute ::
-                    (IsElement self, ToJSString name, FromJSString result) =>
-                      self -> name -> IO result
-elementGetAttribute self name
-  = fromJSString <$>
-      (ghcjs_dom_element_get_attribute (unElement (toElement self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"setAttribute\"]($2, $3)"
-        ghcjs_dom_element_set_attribute ::
-        JSRef Element -> JSString -> JSString -> IO ()
- 
-elementSetAttribute ::
-                    (IsElement self, ToJSString name, ToJSString value) =>
-                      self -> name -> value -> IO ()
-elementSetAttribute self name value
-  = ghcjs_dom_element_set_attribute (unElement (toElement self))
-      (toJSString name)
-      (toJSString value)
- 
-foreign import javascript unsafe "$1[\"removeAttribute\"]($2)"
-        ghcjs_dom_element_remove_attribute ::
-        JSRef Element -> JSString -> IO ()
- 
-elementRemoveAttribute ::
-                       (IsElement self, ToJSString name) => self -> name -> IO ()
-elementRemoveAttribute self name
-  = ghcjs_dom_element_remove_attribute (unElement (toElement self))
-      (toJSString name)
- 
-foreign import javascript unsafe "$1[\"getAttributeNode\"]($2)"
-        ghcjs_dom_element_get_attribute_node ::
-        JSRef Element -> JSString -> IO (JSRef DOMAttr)
- 
-elementGetAttributeNode ::
-                        (IsElement self, ToJSString name) =>
-                          self -> name -> IO (Maybe DOMAttr)
-elementGetAttributeNode self name
-  = fmap DOMAttr . maybeJSNull <$>
-      (ghcjs_dom_element_get_attribute_node (unElement (toElement self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"setAttributeNode\"]($2)"
-        ghcjs_dom_element_set_attribute_node ::
-        JSRef Element -> JSRef DOMAttr -> IO (JSRef DOMAttr)
- 
-elementSetAttributeNode ::
-                        (IsElement self, IsDOMAttr newAttr) =>
-                          self -> Maybe newAttr -> IO (Maybe DOMAttr)
-elementSetAttributeNode self newAttr
-  = fmap DOMAttr . maybeJSNull <$>
-      (ghcjs_dom_element_set_attribute_node (unElement (toElement self))
-         (maybe jsNull (unDOMAttr . toDOMAttr) newAttr))
- 
-foreign import javascript unsafe "$1[\"removeAttributeNode\"]($2)"
-        ghcjs_dom_element_remove_attribute_node ::
-        JSRef Element -> JSRef DOMAttr -> IO (JSRef DOMAttr)
- 
-elementRemoveAttributeNode ::
-                           (IsElement self, IsDOMAttr oldAttr) =>
-                             self -> Maybe oldAttr -> IO (Maybe DOMAttr)
-elementRemoveAttributeNode self oldAttr
-  = fmap DOMAttr . maybeJSNull <$>
-      (ghcjs_dom_element_remove_attribute_node
-         (unElement (toElement self))
-         (maybe jsNull (unDOMAttr . toDOMAttr) oldAttr))
- 
-foreign import javascript unsafe "$1[\"getElementsByTagName\"]($2)"
-        ghcjs_dom_element_get_elements_by_tag_name ::
-        JSRef Element -> JSString -> IO (JSRef NodeList)
- 
-elementGetElementsByTagName ::
-                            (IsElement self, ToJSString name) =>
-                              self -> name -> IO (Maybe NodeList)
-elementGetElementsByTagName self name
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_element_get_elements_by_tag_name
-         (unElement (toElement self))
-         (toJSString name))
- 
-foreign import javascript unsafe
-        "($1[\"hasAttributes\"]() ? 1 : 0)"
-        ghcjs_dom_element_has_attributes :: JSRef Element -> IO Bool
- 
-elementHasAttributes :: (IsElement self) => self -> IO Bool
-elementHasAttributes self
-  = ghcjs_dom_element_has_attributes (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"getAttributeNS\"]($2, $3)"
-        ghcjs_dom_element_get_attribute_ns ::
-        JSRef Element -> JSString -> JSString -> IO JSString
- 
-elementGetAttributeNS ::
-                      (IsElement self, ToJSString namespaceURI, ToJSString localName,
-                       FromJSString result) =>
-                        self -> namespaceURI -> localName -> IO result
-elementGetAttributeNS self namespaceURI localName
-  = fromJSString <$>
-      (ghcjs_dom_element_get_attribute_ns (unElement (toElement self))
-         (toJSString namespaceURI)
-         (toJSString localName))
- 
-foreign import javascript unsafe
-        "$1[\"setAttributeNS\"]($2, $3, $4)"
-        ghcjs_dom_element_set_attribute_ns ::
-        JSRef Element -> JSString -> JSString -> JSString -> IO ()
- 
-elementSetAttributeNS ::
-                      (IsElement self, ToJSString namespaceURI, ToJSString qualifiedName,
-                       ToJSString value) =>
-                        self -> namespaceURI -> qualifiedName -> value -> IO ()
-elementSetAttributeNS self namespaceURI qualifiedName value
-  = ghcjs_dom_element_set_attribute_ns (unElement (toElement self))
-      (toJSString namespaceURI)
-      (toJSString qualifiedName)
-      (toJSString value)
- 
-foreign import javascript unsafe
-        "$1[\"removeAttributeNS\"]($2, $3)"
-        ghcjs_dom_element_remove_attribute_ns ::
-        JSRef Element -> JSString -> JSString -> IO ()
- 
-elementRemoveAttributeNS ::
-                         (IsElement self, ToJSString namespaceURI, ToJSString localName) =>
-                           self -> namespaceURI -> localName -> IO ()
-elementRemoveAttributeNS self namespaceURI localName
-  = ghcjs_dom_element_remove_attribute_ns
-      (unElement (toElement self))
-      (toJSString namespaceURI)
-      (toJSString localName)
- 
-foreign import javascript unsafe
-        "$1[\"getElementsByTagNameNS\"]($2,\n$3)"
-        ghcjs_dom_element_get_elements_by_tag_name_ns ::
-        JSRef Element -> JSString -> JSString -> IO (JSRef NodeList)
- 
-elementGetElementsByTagNameNS ::
-                              (IsElement self, ToJSString namespaceURI, ToJSString localName) =>
-                                self -> namespaceURI -> localName -> IO (Maybe NodeList)
-elementGetElementsByTagNameNS self namespaceURI localName
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_element_get_elements_by_tag_name_ns
-         (unElement (toElement self))
-         (toJSString namespaceURI)
-         (toJSString localName))
- 
-foreign import javascript unsafe
-        "$1[\"getAttributeNodeNS\"]($2, $3)"
-        ghcjs_dom_element_get_attribute_node_ns ::
-        JSRef Element -> JSString -> JSString -> IO (JSRef DOMAttr)
- 
-elementGetAttributeNodeNS ::
-                          (IsElement self, ToJSString namespaceURI, ToJSString localName) =>
-                            self -> namespaceURI -> localName -> IO (Maybe DOMAttr)
-elementGetAttributeNodeNS self namespaceURI localName
-  = fmap DOMAttr . maybeJSNull <$>
-      (ghcjs_dom_element_get_attribute_node_ns
-         (unElement (toElement self))
-         (toJSString namespaceURI)
-         (toJSString localName))
- 
-foreign import javascript unsafe "$1[\"setAttributeNodeNS\"]($2)"
-        ghcjs_dom_element_set_attribute_node_ns ::
-        JSRef Element -> JSRef DOMAttr -> IO (JSRef DOMAttr)
- 
-elementSetAttributeNodeNS ::
-                          (IsElement self, IsDOMAttr newAttr) =>
-                            self -> Maybe newAttr -> IO (Maybe DOMAttr)
-elementSetAttributeNodeNS self newAttr
-  = fmap DOMAttr . maybeJSNull <$>
-      (ghcjs_dom_element_set_attribute_node_ns
-         (unElement (toElement self))
-         (maybe jsNull (unDOMAttr . toDOMAttr) newAttr))
- 
-foreign import javascript unsafe
-        "($1[\"hasAttribute\"]($2) ? 1 : 0)"
-        ghcjs_dom_element_has_attribute ::
-        JSRef Element -> JSString -> IO Bool
- 
-elementHasAttribute ::
-                    (IsElement self, ToJSString name) => self -> name -> IO Bool
-elementHasAttribute self name
-  = ghcjs_dom_element_has_attribute (unElement (toElement self))
-      (toJSString name)
- 
-foreign import javascript unsafe
-        "($1[\"hasAttributeNS\"]($2,\n$3) ? 1 : 0)"
-        ghcjs_dom_element_has_attribute_ns ::
-        JSRef Element -> JSString -> JSString -> IO Bool
- 
-elementHasAttributeNS ::
-                      (IsElement self, ToJSString namespaceURI, ToJSString localName) =>
-                        self -> namespaceURI -> localName -> IO Bool
-elementHasAttributeNS self namespaceURI localName
-  = ghcjs_dom_element_has_attribute_ns (unElement (toElement self))
-      (toJSString namespaceURI)
-      (toJSString localName)
- 
-foreign import javascript unsafe "$1[\"focus\"]()"
-        ghcjs_dom_element_focus :: JSRef Element -> IO ()
- 
-elementFocus :: (IsElement self) => self -> IO ()
-elementFocus self
-  = ghcjs_dom_element_focus (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"blur\"]()"
-        ghcjs_dom_element_blur :: JSRef Element -> IO ()
- 
-elementBlur :: (IsElement self) => self -> IO ()
-elementBlur self
-  = ghcjs_dom_element_blur (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"scrollIntoView\"]($2)"
-        ghcjs_dom_element_scroll_into_view ::
-        JSRef Element -> Bool -> IO ()
- 
-elementScrollIntoView :: (IsElement self) => self -> Bool -> IO ()
-elementScrollIntoView self alignWithTop
-  = ghcjs_dom_element_scroll_into_view (unElement (toElement self))
-      alignWithTop
- 
-foreign import javascript unsafe
-        "$1[\"scrollIntoViewIfNeeded\"]($2)"
-        ghcjs_dom_element_scroll_into_view_if_needed ::
-        JSRef Element -> Bool -> IO ()
- 
-elementScrollIntoViewIfNeeded ::
-                              (IsElement self) => self -> Bool -> IO ()
-elementScrollIntoViewIfNeeded self centerIfNeeded
-  = ghcjs_dom_element_scroll_into_view_if_needed
-      (unElement (toElement self))
-      centerIfNeeded
- 
-foreign import javascript unsafe "$1[\"scrollByLines\"]($2)"
-        ghcjs_dom_element_scroll_by_lines :: JSRef Element -> Int -> IO ()
- 
-elementScrollByLines :: (IsElement self) => self -> Int -> IO ()
-elementScrollByLines self lines
-  = ghcjs_dom_element_scroll_by_lines (unElement (toElement self))
-      lines
- 
-foreign import javascript unsafe "$1[\"scrollByPages\"]($2)"
-        ghcjs_dom_element_scroll_by_pages :: JSRef Element -> Int -> IO ()
- 
-elementScrollByPages :: (IsElement self) => self -> Int -> IO ()
-elementScrollByPages self pages
-  = ghcjs_dom_element_scroll_by_pages (unElement (toElement self))
-      pages
- 
-foreign import javascript unsafe
-        "$1[\"getElementsByClassName\"]($2)"
-        ghcjs_dom_element_get_elements_by_class_name ::
-        JSRef Element -> JSString -> IO (JSRef NodeList)
- 
-elementGetElementsByClassName ::
-                              (IsElement self, ToJSString name) =>
-                                self -> name -> IO (Maybe NodeList)
-elementGetElementsByClassName self name
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_element_get_elements_by_class_name
-         (unElement (toElement self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"querySelector\"]($2)"
-        ghcjs_dom_element_query_selector ::
-        JSRef Element -> JSString -> IO (JSRef Element)
- 
-elementQuerySelector ::
-                     (IsElement self, ToJSString selectors) =>
-                       self -> selectors -> IO (Maybe Element)
-elementQuerySelector self selectors
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_element_query_selector (unElement (toElement self))
-         (toJSString selectors))
- 
-foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
-        ghcjs_dom_element_query_selector_all ::
-        JSRef Element -> JSString -> IO (JSRef NodeList)
- 
-elementQuerySelectorAll ::
-                        (IsElement self, ToJSString selectors) =>
-                          self -> selectors -> IO (Maybe NodeList)
-elementQuerySelectorAll self selectors
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_element_query_selector_all (unElement (toElement self))
-         (toJSString selectors))
- 
-foreign import javascript unsafe "($1[\"matches\"]($2) ? 1 : 0)"
-        ghcjs_dom_element_matches :: JSRef Element -> JSString -> IO Bool
- 
-elementMatches ::
-               (IsElement self, ToJSString selectors) =>
-                 self -> selectors -> IO Bool
-elementMatches self selectors
-  = ghcjs_dom_element_matches (unElement (toElement self))
-      (toJSString selectors)
- 
-foreign import javascript unsafe "$1[\"closest\"]($2)"
-        ghcjs_dom_element_closest ::
-        JSRef Element -> JSString -> IO (JSRef Element)
- 
-elementClosest ::
-               (IsElement self, ToJSString selectors) =>
-                 self -> selectors -> IO (Maybe Element)
-elementClosest self selectors
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_element_closest (unElement (toElement self))
-         (toJSString selectors))
- 
-foreign import javascript unsafe
-        "($1[\"webkitMatchesSelector\"]($2) ? 1 : 0)"
-        ghcjs_dom_element_webkit_matches_selector ::
-        JSRef Element -> JSString -> IO Bool
- 
-elementWebkitMatchesSelector ::
-                             (IsElement self, ToJSString selectors) =>
-                               self -> selectors -> IO Bool
-elementWebkitMatchesSelector self selectors
-  = ghcjs_dom_element_webkit_matches_selector
-      (unElement (toElement self))
-      (toJSString selectors)
- 
-foreign import javascript unsafe "$1[\"requestPointerLock\"]()"
-        ghcjs_dom_element_request_pointer_lock :: JSRef Element -> IO ()
- 
-elementRequestPointerLock :: (IsElement self) => self -> IO ()
-elementRequestPointerLock self
-  = ghcjs_dom_element_request_pointer_lock
-      (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"tagName\"]"
-        ghcjs_dom_element_get_tag_name :: JSRef Element -> IO JSString
- 
-elementGetTagName ::
-                  (IsElement self, FromJSString result) => self -> IO result
-elementGetTagName self
-  = fromJSString <$>
-      (ghcjs_dom_element_get_tag_name (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"attributes\"]"
-        ghcjs_dom_element_get_attributes ::
-        JSRef Element -> IO (JSRef NamedNodeMap)
- 
-elementGetAttributes ::
-                     (IsElement self) => self -> IO (Maybe NamedNodeMap)
-elementGetAttributes self
-  = fmap NamedNodeMap . maybeJSNull <$>
-      (ghcjs_dom_element_get_attributes (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"style\"]"
-        ghcjs_dom_element_get_style ::
-        JSRef Element -> IO (JSRef CSSStyleDeclaration)
- 
-elementGetStyle ::
-                (IsElement self) => self -> IO (Maybe CSSStyleDeclaration)
-elementGetStyle self
-  = fmap CSSStyleDeclaration . maybeJSNull <$>
-      (ghcjs_dom_element_get_style (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"id\"] = $2;"
-        ghcjs_dom_element_set_id :: JSRef Element -> JSString -> IO ()
- 
-elementSetId ::
-             (IsElement self, ToJSString val) => self -> val -> IO ()
-elementSetId self val
-  = ghcjs_dom_element_set_id (unElement (toElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"id\"]"
-        ghcjs_dom_element_get_id :: JSRef Element -> IO JSString
- 
-elementGetId ::
-             (IsElement self, FromJSString result) => self -> IO result
-elementGetId self
-  = fromJSString <$>
-      (ghcjs_dom_element_get_id (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"offsetLeft\"]"
-        ghcjs_dom_element_get_offset_left :: JSRef Element -> IO Double
- 
-elementGetOffsetLeft :: (IsElement self) => self -> IO Double
-elementGetOffsetLeft self
-  = ghcjs_dom_element_get_offset_left (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"offsetTop\"]"
-        ghcjs_dom_element_get_offset_top :: JSRef Element -> IO Double
- 
-elementGetOffsetTop :: (IsElement self) => self -> IO Double
-elementGetOffsetTop self
-  = ghcjs_dom_element_get_offset_top (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"offsetWidth\"]"
-        ghcjs_dom_element_get_offset_width :: JSRef Element -> IO Double
- 
-elementGetOffsetWidth :: (IsElement self) => self -> IO Double
-elementGetOffsetWidth self
-  = ghcjs_dom_element_get_offset_width (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"offsetHeight\"]"
-        ghcjs_dom_element_get_offset_height :: JSRef Element -> IO Double
- 
-elementGetOffsetHeight :: (IsElement self) => self -> IO Double
-elementGetOffsetHeight self
-  = ghcjs_dom_element_get_offset_height (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"clientLeft\"]"
-        ghcjs_dom_element_get_client_left :: JSRef Element -> IO Double
- 
-elementGetClientLeft :: (IsElement self) => self -> IO Double
-elementGetClientLeft self
-  = ghcjs_dom_element_get_client_left (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"clientTop\"]"
-        ghcjs_dom_element_get_client_top :: JSRef Element -> IO Double
- 
-elementGetClientTop :: (IsElement self) => self -> IO Double
-elementGetClientTop self
-  = ghcjs_dom_element_get_client_top (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"clientWidth\"]"
-        ghcjs_dom_element_get_client_width :: JSRef Element -> IO Double
- 
-elementGetClientWidth :: (IsElement self) => self -> IO Double
-elementGetClientWidth self
-  = ghcjs_dom_element_get_client_width (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"clientHeight\"]"
-        ghcjs_dom_element_get_client_height :: JSRef Element -> IO Double
- 
-elementGetClientHeight :: (IsElement self) => self -> IO Double
-elementGetClientHeight self
-  = ghcjs_dom_element_get_client_height (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"scrollLeft\"] = $2;"
-        ghcjs_dom_element_set_scroll_left :: JSRef Element -> Int -> IO ()
- 
-elementSetScrollLeft :: (IsElement self) => self -> Int -> IO ()
-elementSetScrollLeft self val
-  = ghcjs_dom_element_set_scroll_left (unElement (toElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"scrollLeft\"]"
-        ghcjs_dom_element_get_scroll_left :: JSRef Element -> IO Int
- 
-elementGetScrollLeft :: (IsElement self) => self -> IO Int
-elementGetScrollLeft self
-  = ghcjs_dom_element_get_scroll_left (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"scrollTop\"] = $2;"
-        ghcjs_dom_element_set_scroll_top :: JSRef Element -> Int -> IO ()
- 
-elementSetScrollTop :: (IsElement self) => self -> Int -> IO ()
-elementSetScrollTop self val
-  = ghcjs_dom_element_set_scroll_top (unElement (toElement self)) val
- 
-foreign import javascript unsafe "$1[\"scrollTop\"]"
-        ghcjs_dom_element_get_scroll_top :: JSRef Element -> IO Int
- 
-elementGetScrollTop :: (IsElement self) => self -> IO Int
-elementGetScrollTop self
-  = ghcjs_dom_element_get_scroll_top (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"scrollWidth\"]"
-        ghcjs_dom_element_get_scroll_width :: JSRef Element -> IO Int
- 
-elementGetScrollWidth :: (IsElement self) => self -> IO Int
-elementGetScrollWidth self
-  = ghcjs_dom_element_get_scroll_width (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"scrollHeight\"]"
-        ghcjs_dom_element_get_scroll_height :: JSRef Element -> IO Int
- 
-elementGetScrollHeight :: (IsElement self) => self -> IO Int
-elementGetScrollHeight self
-  = ghcjs_dom_element_get_scroll_height (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"offsetParent\"]"
-        ghcjs_dom_element_get_offset_parent ::
-        JSRef Element -> IO (JSRef Element)
- 
-elementGetOffsetParent ::
-                       (IsElement self) => self -> IO (Maybe Element)
-elementGetOffsetParent self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_element_get_offset_parent (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"className\"] = $2;"
-        ghcjs_dom_element_set_class_name ::
-        JSRef Element -> JSString -> IO ()
- 
-elementSetClassName ::
-                    (IsElement self, ToJSString val) => self -> val -> IO ()
-elementSetClassName self val
-  = ghcjs_dom_element_set_class_name (unElement (toElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"className\"]"
-        ghcjs_dom_element_get_class_name :: JSRef Element -> IO JSString
- 
-elementGetClassName ::
-                    (IsElement self, FromJSString result) => self -> IO result
-elementGetClassName self
-  = fromJSString <$>
-      (ghcjs_dom_element_get_class_name (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"classList\"]"
-        ghcjs_dom_element_get_class_list ::
-        JSRef Element -> IO (JSRef DOMTokenList)
- 
-elementGetClassList ::
-                    (IsElement self) => self -> IO (Maybe DOMTokenList)
-elementGetClassList self
-  = fmap DOMTokenList . maybeJSNull <$>
-      (ghcjs_dom_element_get_class_list (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"firstElementChild\"]"
-        ghcjs_dom_element_get_first_element_child ::
-        JSRef Element -> IO (JSRef Element)
- 
-elementGetFirstElementChild ::
-                            (IsElement self) => self -> IO (Maybe Element)
-elementGetFirstElementChild self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_element_get_first_element_child
-         (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"lastElementChild\"]"
-        ghcjs_dom_element_get_last_element_child ::
-        JSRef Element -> IO (JSRef Element)
- 
-elementGetLastElementChild ::
-                           (IsElement self) => self -> IO (Maybe Element)
-elementGetLastElementChild self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_element_get_last_element_child
-         (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"previousElementSibling\"]"
-        ghcjs_dom_element_get_previous_element_sibling ::
-        JSRef Element -> IO (JSRef Element)
- 
-elementGetPreviousElementSibling ::
-                                 (IsElement self) => self -> IO (Maybe Element)
-elementGetPreviousElementSibling self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_element_get_previous_element_sibling
-         (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"nextElementSibling\"]"
-        ghcjs_dom_element_get_next_element_sibling ::
-        JSRef Element -> IO (JSRef Element)
- 
-elementGetNextElementSibling ::
-                             (IsElement self) => self -> IO (Maybe Element)
-elementGetNextElementSibling self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_element_get_next_element_sibling
-         (unElement (toElement self)))
- 
-foreign import javascript unsafe "$1[\"childElementCount\"]"
-        ghcjs_dom_element_get_child_element_count ::
-        JSRef Element -> IO Word
- 
-elementGetChildElementCount :: (IsElement self) => self -> IO Word
-elementGetChildElementCount self
-  = ghcjs_dom_element_get_child_element_count
-      (unElement (toElement self))
- 
-foreign import javascript unsafe "$1[\"webkitRegionOverset\"]"
-        ghcjs_dom_element_get_webkit_region_overset ::
-        JSRef Element -> IO JSString
- 
-elementGetWebkitRegionOverset ::
-                              (IsElement self, FromJSString result) => self -> IO result
-elementGetWebkitRegionOverset self
-  = fromJSString <$>
-      (ghcjs_dom_element_get_webkit_region_overset
-         (unElement (toElement self)))
- 
-elementOnabort ::
-               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnabort = (connect "abort")
- 
-elementOnblur ::
-              (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnblur = (connect "blur")
- 
-elementOnchange ::
-                (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnchange = (connect "change")
- 
-elementOnclick ::
-               (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOnclick = (connect "click")
- 
-elementOncontextmenu ::
-                     (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOncontextmenu = (connect "contextmenu")
- 
-elementOndblclick ::
-                  (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOndblclick = (connect "dblclick")
- 
-elementOndrag ::
-              (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOndrag = (connect "drag")
- 
-elementOndragend ::
-                 (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOndragend = (connect "dragend")
- 
-elementOndragenter ::
-                   (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOndragenter = (connect "dragenter")
- 
-elementOndragleave ::
-                   (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOndragleave = (connect "dragleave")
- 
-elementOndragover ::
-                  (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOndragover = (connect "dragover")
- 
-elementOndragstart ::
-                   (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOndragstart = (connect "dragstart")
- 
-elementOndrop ::
-              (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOndrop = (connect "drop")
- 
-elementOnerror ::
-               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnerror = (connect "error")
- 
-elementOnfocus ::
-               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnfocus = (connect "focus")
- 
-elementOninput ::
-               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOninput = (connect "input")
- 
-elementOninvalid ::
-                 (IsElement self) => Signal self (EventM UIEvent self ())
-elementOninvalid = (connect "invalid")
- 
-elementOnkeydown ::
-                 (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnkeydown = (connect "keydown")
- 
-elementOnkeypress ::
-                  (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnkeypress = (connect "keypress")
- 
-elementOnkeyup ::
-               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnkeyup = (connect "keyup")
- 
-elementOnload ::
-              (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnload = (connect "load")
- 
-elementOnmousedown ::
-                   (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOnmousedown = (connect "mousedown")
- 
-elementOnmouseenter ::
-                    (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnmouseenter = (connect "mouseenter")
- 
-elementOnmouseleave ::
-                    (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnmouseleave = (connect "mouseleave")
- 
-elementOnmousemove ::
-                   (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOnmousemove = (connect "mousemove")
- 
-elementOnmouseout ::
-                  (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOnmouseout = (connect "mouseout")
- 
-elementOnmouseover ::
-                   (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOnmouseover = (connect "mouseover")
- 
-elementOnmouseup ::
-                 (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOnmouseup = (connect "mouseup")
- 
-elementOnmousewheel ::
-                    (IsElement self) => Signal self (EventM MouseEvent self ())
-elementOnmousewheel = (connect "mousewheel")
- 
-elementOnscroll ::
-                (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnscroll = (connect "scroll")
- 
-elementOnselect ::
-                (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnselect = (connect "select")
- 
-elementOnsubmit ::
-                (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnsubmit = (connect "submit")
- 
-elementOnwheel ::
-               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnwheel = (connect "wheel")
- 
-elementOnbeforecut ::
-                   (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnbeforecut = (connect "beforecut")
- 
-elementOncut ::
-             (IsElement self) => Signal self (EventM UIEvent self ())
-elementOncut = (connect "cut")
- 
-elementOnbeforecopy ::
-                    (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnbeforecopy = (connect "beforecopy")
- 
-elementOncopy ::
-              (IsElement self) => Signal self (EventM UIEvent self ())
-elementOncopy = (connect "copy")
- 
-elementOnbeforepaste ::
-                     (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnbeforepaste = (connect "beforepaste")
- 
-elementOnpaste ::
-               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnpaste = (connect "paste")
- 
-elementOnreset ::
-               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnreset = (connect "reset")
- 
-elementOnsearch ::
-                (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnsearch = (connect "search")
- 
-elementOnselectstart ::
-                     (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnselectstart = (connect "selectstart")
- 
-elementOntouchstart ::
-                    (IsElement self) => Signal self (EventM UIEvent self ())
-elementOntouchstart = (connect "touchstart")
- 
-elementOntouchmove ::
-                   (IsElement self) => Signal self (EventM UIEvent self ())
-elementOntouchmove = (connect "touchmove")
- 
-elementOntouchend ::
-                  (IsElement self) => Signal self (EventM UIEvent self ())
-elementOntouchend = (connect "touchend")
- 
-elementOntouchcancel ::
-                     (IsElement self) => Signal self (EventM UIEvent self ())
-elementOntouchcancel = (connect "touchcancel")
- 
-elementOnwebkitfullscreenchange ::
-                                (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnwebkitfullscreenchange
-  = (connect "webkitfullscreenchange")
- 
-elementOnwebkitfullscreenerror ::
-                               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnwebkitfullscreenerror = (connect "webkitfullscreenerror")
- 
-elementOnwebkitwillrevealbottom ::
-                                (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnwebkitwillrevealbottom
-  = (connect "webkitwillrevealbottom")
- 
-elementOnwebkitwillrevealleft ::
-                              (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnwebkitwillrevealleft = (connect "webkitwillrevealleft")
- 
-elementOnwebkitwillrevealright ::
-                               (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnwebkitwillrevealright = (connect "webkitwillrevealright")
- 
-elementOnwebkitwillrevealtop ::
-                             (IsElement self) => Signal self (EventM UIEvent self ())
-elementOnwebkitwillrevealtop = (connect "webkitwillrevealtop")
+  module GHCJS.DOM.JSFFI.Generated.Element
 #else
-module GHCJS.DOM.Element (
   module Graphics.UI.Gtk.WebKit.DOM.Element
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Element
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Element
 #endif
diff --git a/src/GHCJS/DOM/Entity.hs b/src/GHCJS/DOM/Entity.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Entity.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Entity (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Entity
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Entity
+#else
+#endif
diff --git a/src/GHCJS/DOM/Enums.hs b/src/GHCJS/DOM/Enums.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Enums.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Enums (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Enums
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.Enums
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Enums
+#else
+import Graphics.UI.Gtk.WebKit.DOM.Enums
+#endif
diff --git a/src/GHCJS/DOM/ErrorEvent.hs b/src/GHCJS/DOM/ErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ErrorEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ErrorEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ErrorEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ErrorEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/Event.hs b/src/GHCJS/DOM/Event.hs
--- a/src/GHCJS/DOM/Event.hs
+++ b/src/GHCJS/DOM/Event.hs
@@ -1,189 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Event (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Event
-       (ghcjs_dom_event_stop_propagation, eventStopPropagation,
-        ghcjs_dom_event_prevent_default, eventPreventDefault,
-        ghcjs_dom_event_init_event, eventInitEvent,
-        ghcjs_dom_event_stop_immediate_propagation,
-        eventStopImmediatePropagation, cNONE, cCAPTURING_PHASE, cAT_TARGET,
-        cBUBBLING_PHASE, cMOUSEDOWN, cMOUSEUP, cMOUSEOVER, cMOUSEOUT,
-        cMOUSEMOVE, cMOUSEDRAG, cCLICK, cDBLCLICK, cKEYDOWN, cKEYUP,
-        cKEYPRESS, cDRAGDROP, cFOCUS, cBLUR, cSELECT, cCHANGE,
-        ghcjs_dom_event_get_target, eventGetTarget,
-        ghcjs_dom_event_get_current_target, eventGetCurrentTarget,
-        ghcjs_dom_event_get_event_phase, eventGetEventPhase,
-        ghcjs_dom_event_get_bubbles, eventGetBubbles,
-        ghcjs_dom_event_get_cancelable, eventGetCancelable,
-        ghcjs_dom_event_get_time_stamp, eventGetTimeStamp,
-        ghcjs_dom_event_get_default_prevented, eventGetDefaultPrevented,
-        ghcjs_dom_event_get_src_element, eventGetSrcElement,
-        ghcjs_dom_event_set_return_value, eventSetReturnValue,
-        ghcjs_dom_event_get_return_value, eventGetReturnValue,
-        ghcjs_dom_event_set_cancel_bubble, eventSetCancelBubble,
-        ghcjs_dom_event_get_cancel_bubble, eventGetCancelBubble, Event,
-        IsEvent, castToEvent, gTypeEvent, toEvent)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-
- 
-foreign import javascript unsafe "$1[\"stopPropagation\"]()"
-        ghcjs_dom_event_stop_propagation :: JSRef Event -> IO ()
- 
-eventStopPropagation :: (IsEvent self) => self -> IO ()
-eventStopPropagation self
-  = ghcjs_dom_event_stop_propagation (unEvent (toEvent self))
- 
-foreign import javascript unsafe "$1[\"preventDefault\"]()"
-        ghcjs_dom_event_prevent_default :: JSRef Event -> IO ()
- 
-eventPreventDefault :: (IsEvent self) => self -> IO ()
-eventPreventDefault self
-  = ghcjs_dom_event_prevent_default (unEvent (toEvent self))
- 
-foreign import javascript unsafe "$1[\"initEvent\"]($2, $3, $4)"
-        ghcjs_dom_event_init_event ::
-        JSRef Event -> JSString -> Bool -> Bool -> IO ()
- 
-eventInitEvent ::
-               (IsEvent self, ToJSString eventTypeArg) =>
-                 self -> eventTypeArg -> Bool -> Bool -> IO ()
-eventInitEvent self eventTypeArg canBubbleArg cancelableArg
-  = ghcjs_dom_event_init_event (unEvent (toEvent self))
-      (toJSString eventTypeArg)
-      canBubbleArg
-      cancelableArg
- 
-foreign import javascript unsafe
-        "$1[\"stopImmediatePropagation\"]()"
-        ghcjs_dom_event_stop_immediate_propagation :: JSRef Event -> IO ()
- 
-eventStopImmediatePropagation :: (IsEvent self) => self -> IO ()
-eventStopImmediatePropagation self
-  = ghcjs_dom_event_stop_immediate_propagation
-      (unEvent (toEvent self))
-cNONE = 0
-cCAPTURING_PHASE = 1
-cAT_TARGET = 2
-cBUBBLING_PHASE = 3
-cMOUSEDOWN = 1
-cMOUSEUP = 2
-cMOUSEOVER = 4
-cMOUSEOUT = 8
-cMOUSEMOVE = 16
-cMOUSEDRAG = 32
-cCLICK = 64
-cDBLCLICK = 128
-cKEYDOWN = 256
-cKEYUP = 512
-cKEYPRESS = 1024
-cDRAGDROP = 2048
-cFOCUS = 4096
-cBLUR = 8192
-cSELECT = 16384
-cCHANGE = 32768
- 
-foreign import javascript unsafe "$1[\"target\"]"
-        ghcjs_dom_event_get_target :: JSRef Event -> IO (JSRef EventTarget)
- 
-eventGetTarget :: (IsEvent self) => self -> IO (Maybe EventTarget)
-eventGetTarget self
-  = fmap EventTarget . maybeJSNull <$>
-      (ghcjs_dom_event_get_target (unEvent (toEvent self)))
- 
-foreign import javascript unsafe "$1[\"currentTarget\"]"
-        ghcjs_dom_event_get_current_target ::
-        JSRef Event -> IO (JSRef EventTarget)
- 
-eventGetCurrentTarget ::
-                      (IsEvent self) => self -> IO (Maybe EventTarget)
-eventGetCurrentTarget self
-  = fmap EventTarget . maybeJSNull <$>
-      (ghcjs_dom_event_get_current_target (unEvent (toEvent self)))
- 
-foreign import javascript unsafe "$1[\"eventPhase\"]"
-        ghcjs_dom_event_get_event_phase :: JSRef Event -> IO Word
- 
-eventGetEventPhase :: (IsEvent self) => self -> IO Word
-eventGetEventPhase self
-  = ghcjs_dom_event_get_event_phase (unEvent (toEvent self))
- 
-foreign import javascript unsafe "($1[\"bubbles\"] ? 1 : 0)"
-        ghcjs_dom_event_get_bubbles :: JSRef Event -> IO Bool
- 
-eventGetBubbles :: (IsEvent self) => self -> IO Bool
-eventGetBubbles self
-  = ghcjs_dom_event_get_bubbles (unEvent (toEvent self))
- 
-foreign import javascript unsafe "($1[\"cancelable\"] ? 1 : 0)"
-        ghcjs_dom_event_get_cancelable :: JSRef Event -> IO Bool
- 
-eventGetCancelable :: (IsEvent self) => self -> IO Bool
-eventGetCancelable self
-  = ghcjs_dom_event_get_cancelable (unEvent (toEvent self))
- 
-foreign import javascript unsafe "$1[\"timeStamp\"]"
-        ghcjs_dom_event_get_time_stamp :: JSRef Event -> IO Word
- 
-eventGetTimeStamp :: (IsEvent self) => self -> IO Word
-eventGetTimeStamp self
-  = fromIntegral <$>
-      (ghcjs_dom_event_get_time_stamp (unEvent (toEvent self)))
- 
-foreign import javascript unsafe
-        "($1[\"defaultPrevented\"] ? 1 : 0)"
-        ghcjs_dom_event_get_default_prevented :: JSRef Event -> IO Bool
- 
-eventGetDefaultPrevented :: (IsEvent self) => self -> IO Bool
-eventGetDefaultPrevented self
-  = ghcjs_dom_event_get_default_prevented (unEvent (toEvent self))
- 
-foreign import javascript unsafe "$1[\"srcElement\"]"
-        ghcjs_dom_event_get_src_element ::
-        JSRef Event -> IO (JSRef EventTarget)
- 
-eventGetSrcElement ::
-                   (IsEvent self) => self -> IO (Maybe EventTarget)
-eventGetSrcElement self
-  = fmap EventTarget . maybeJSNull <$>
-      (ghcjs_dom_event_get_src_element (unEvent (toEvent self)))
- 
-foreign import javascript unsafe "$1[\"returnValue\"] = $2;"
-        ghcjs_dom_event_set_return_value :: JSRef Event -> Bool -> IO ()
- 
-eventSetReturnValue :: (IsEvent self) => self -> Bool -> IO ()
-eventSetReturnValue self val
-  = ghcjs_dom_event_set_return_value (unEvent (toEvent self)) val
- 
-foreign import javascript unsafe "($1[\"returnValue\"] ? 1 : 0)"
-        ghcjs_dom_event_get_return_value :: JSRef Event -> IO Bool
- 
-eventGetReturnValue :: (IsEvent self) => self -> IO Bool
-eventGetReturnValue self
-  = ghcjs_dom_event_get_return_value (unEvent (toEvent self))
- 
-foreign import javascript unsafe "$1[\"cancelBubble\"] = $2;"
-        ghcjs_dom_event_set_cancel_bubble :: JSRef Event -> Bool -> IO ()
- 
-eventSetCancelBubble :: (IsEvent self) => self -> Bool -> IO ()
-eventSetCancelBubble self val
-  = ghcjs_dom_event_set_cancel_bubble (unEvent (toEvent self)) val
- 
-foreign import javascript unsafe "($1[\"cancelBubble\"] ? 1 : 0)"
-        ghcjs_dom_event_get_cancel_bubble :: JSRef Event -> IO Bool
- 
-eventGetCancelBubble :: (IsEvent self) => self -> IO Bool
-eventGetCancelBubble self
-  = ghcjs_dom_event_get_cancel_bubble (unEvent (toEvent self))
+  module GHCJS.DOM.JSFFI.Generated.Event
 #else
-module GHCJS.DOM.Event (
   module Graphics.UI.Gtk.WebKit.DOM.Event
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Event
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Event
 #endif
diff --git a/src/GHCJS/DOM/EventListener.hs b/src/GHCJS/DOM/EventListener.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/EventListener.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.EventListener (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.EventListener
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.EventListener
+#else
+#endif
diff --git a/src/GHCJS/DOM/EventM.hs b/src/GHCJS/DOM/EventM.hs
--- a/src/GHCJS/DOM/EventM.hs
+++ b/src/GHCJS/DOM/EventM.hs
@@ -1,11 +1,19 @@
 {-# LANGUAGE ConstraintKinds #-}
 module GHCJS.DOM.EventM
 (
-  Signal (..)
-, EventM (..)
-, target
+  EventM(..)
+, SaferEventListener(..)
+, EventName
+, newListener
+, newListenerSync
+, newListenerAsync
+, addListener
+, removeListener
+, releaseListener
+, on
 , event
 , eventTarget
+, target
 , eventCurrentTarget
 , eventPhase
 , bubbles
@@ -54,211 +62,225 @@
 , mouseXY
 , mouseFromElement
 , mouseToElement
-, connect
 )
 where
-import Control.Applicative ((<$>))
-import Control.Monad.Reader ( ReaderT, ask, runReaderT )
-import Control.Monad.Trans ( liftIO )
-import GHCJS.DOM.Types
-import GHCJS.DOM.Event
-import GHCJS.DOM.UIEvent
-import GHCJS.DOM.MouseEvent
-import GHCJS.DOM.EventTargetClosures
-import Data.Word (Word)
+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.Event as Event
+import qualified GHCJS.DOM.UIEvent as UIEvent
+import qualified GHCJS.DOM.MouseEvent as MouseEvent
+import           GHCJS.DOM.EventTarget
+import           GHCJS.DOM.EventTargetClosures
+import           Data.Word (Word)
 
-type Signal target callback = target -> callback -> IO (IO ())
+type EventM t e = ReaderT e IO
 
-type EventM e t a = ReaderT (t, e) IO a
+newListener :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListener f = SaferEventListener <$> eventListenerNew (runReaderT f)
 
-target :: EventM e t t
-target = fst <$> ask
+newListenerSync :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListenerSync f = SaferEventListener <$> eventListenerNewSync (runReaderT f)
 
-event :: EventM e t e
-event = snd <$> ask
+newListenerAsync :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListenerAsync f = SaferEventListener <$> eventListenerNewAsync (runReaderT f)
 
-eventTarget :: IsEvent e => EventM e t (Maybe EventTarget)
-eventTarget = event >>= (liftIO . eventGetTarget)
+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
 
-eventCurrentTarget :: IsEvent e => EventM e t (Maybe EventTarget)
-eventCurrentTarget = event >>= (liftIO . eventGetCurrentTarget)
+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
 
-eventPhase :: IsEvent e => EventM e t Word
-eventPhase = event >>= (liftIO . eventGetEventPhase)
+releaseListener :: (IsEventTarget t, IsEvent e) => SaferEventListener t e -> IO ()
+releaseListener (SaferEventListener l) = eventListenerRelease l
 
-bubbles :: IsEvent e => EventM e t Bool
-bubbles = event >>= (liftIO . eventGetBubbles)
+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)
 
-cancelable :: IsEvent e => EventM e t Bool
-cancelable = event >>= (liftIO . eventGetCancelable)
+event :: EventM t e e
+event = ask
 
-timeStamp :: IsEvent e => EventM e t Word
-timeStamp = event >>= (liftIO . eventGetTimeStamp)
+eventTarget :: IsEvent e => EventM t e (Maybe EventTarget)
+eventTarget = event >>= Event.getTarget
 
-stopPropagation :: IsEvent e => EventM e t ()
-stopPropagation = event >>= (liftIO . eventStopPropagation)
+target :: (IsEvent e, IsGObject t) => EventM t e (Maybe t)
+target = (fmap (unsafeCastGObject . toGObject)) <$> eventTarget
 
-preventDefault :: IsEvent e => EventM e t ()
-preventDefault = event >>= (liftIO . eventPreventDefault)
+eventCurrentTarget :: IsEvent e => EventM t e (Maybe EventTarget)
+eventCurrentTarget = event >>= Event.getCurrentTarget
 
-defaultPrevented :: IsEvent e => EventM e t Bool
-defaultPrevented = event >>= (liftIO . eventGetDefaultPrevented)
+eventPhase :: IsEvent e => EventM t e Word
+eventPhase = event >>= Event.getEventPhase
 
-stopImmediatePropagation :: IsEvent e => EventM e t ()
-stopImmediatePropagation = event >>= (liftIO . eventStopImmediatePropagation)
+bubbles :: IsEvent e => EventM t e Bool
+bubbles = event >>= Event.getBubbles
 
-srcElement :: IsEvent e => EventM e t (Maybe EventTarget)
-srcElement = event >>= (liftIO . eventGetSrcElement)
+cancelable :: IsEvent e => EventM t e Bool
+cancelable = event >>= Event.getCancelable
 
-getCancelBubble :: IsEvent e => EventM e t Bool
-getCancelBubble = event >>= (liftIO . eventGetCancelBubble)
+timeStamp :: IsEvent e => EventM t e Word
+timeStamp = event >>= Event.getTimeStamp
 
-cancelBubble :: IsEvent e => Bool -> EventM e t ()
-cancelBubble f = event >>= (liftIO . flip eventSetCancelBubble f)
+stopPropagation :: IsEvent e => EventM t e ()
+stopPropagation = event >>= Event.stopPropagation
 
-getReturnValue :: IsEvent e => EventM e t Bool
-getReturnValue = event >>= (liftIO . eventGetReturnValue)
+preventDefault :: IsEvent e => EventM t e ()
+preventDefault = event >>= Event.preventDefault
 
-returnValue :: IsEvent e => Bool -> EventM e t ()
-returnValue f = event >>= (liftIO . flip eventSetReturnValue f)
+defaultPrevented :: IsEvent e => EventM t e Bool
+defaultPrevented = event >>= Event.getDefaultPrevented
 
-uiView :: IsUIEvent e => EventM e t (Maybe DOMWindow)
-uiView = event >>= (liftIO . uiEventGetView)
+stopImmediatePropagation :: IsEvent e => EventM t e ()
+stopImmediatePropagation = event >>= Event.stopImmediatePropagation
 
-uiDetail :: IsUIEvent e => EventM e t Int
-uiDetail = event >>= (liftIO . uiEventGetDetail)
+srcElement :: IsEvent e => EventM t e (Maybe EventTarget)
+srcElement = event >>= Event.getSrcElement
 
-uiKeyCode :: IsUIEvent e => EventM e t Int
-uiKeyCode = event >>= (liftIO . uiEventGetKeyCode)
+getCancelBubble :: IsEvent e => EventM t e Bool
+getCancelBubble = event >>= Event.getCancelBubble
 
-uiCharCode :: IsUIEvent e => EventM e t Int
-uiCharCode = event >>= (liftIO . uiEventGetCharCode)
+cancelBubble :: IsEvent e => Bool -> EventM t e ()
+cancelBubble f = event >>= flip Event.setCancelBubble f
 
-uiLayerX :: IsUIEvent e => EventM e t Int
-uiLayerX = event >>= (liftIO . uiEventGetLayerX)
+getReturnValue :: IsEvent e => EventM t e Bool
+getReturnValue = event >>= Event.getReturnValue
 
-uiLayerY :: IsUIEvent e => EventM e t Int
-uiLayerY = event >>= (liftIO . uiEventGetLayerY)
+returnValue :: IsEvent e => Bool -> EventM t e ()
+returnValue f = event >>= flip Event.setReturnValue f
 
-uiLayerXY :: IsUIEvent e => EventM e t (Int, Int)
+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
-  liftIO $ do
-    x <- uiEventGetLayerX e
-    y <- uiEventGetLayerY e
+    e <- event
+    x <- UIEvent.getLayerX e
+    y <- UIEvent.getLayerY e
     return (x, y)
 
-uiPageX :: IsUIEvent e => EventM e t Int
-uiPageX = event >>= (liftIO . uiEventGetPageX)
+uiPageX :: IsUIEvent e => EventM t e Int
+uiPageX = event >>= UIEvent.getPageX
 
-uiPageY :: IsUIEvent e => EventM e t Int
-uiPageY = event >>= (liftIO . uiEventGetPageY)
+uiPageY :: IsUIEvent e => EventM t e Int
+uiPageY = event >>= UIEvent.getPageY
 
-uiPageXY :: IsUIEvent e => EventM e t (Int, Int)
+uiPageXY :: IsUIEvent e => EventM t e (Int, Int)
 uiPageXY = do
-  e <- event
-  liftIO $ do
-    x <- uiEventGetPageX e
-    y <- uiEventGetPageY e
+    e <- event
+    x <- UIEvent.getPageX e
+    y <- UIEvent.getPageY e
     return (x, y)
 
-uiWhich :: IsUIEvent e => EventM e t Int
-uiWhich = event >>= (liftIO . uiEventGetWhich)
+uiWhich :: IsUIEvent e => EventM t e Int
+uiWhich = event >>= UIEvent.getWhich
 
-mouseScreenX :: IsMouseEvent e => EventM e t Int
-mouseScreenX = event >>= (liftIO . mouseEventGetScreenX)
+mouseScreenX :: IsMouseEvent e => EventM t e Int
+mouseScreenX = event >>= MouseEvent.getScreenX
 
-mouseScreenY :: IsMouseEvent e => EventM e t Int
-mouseScreenY = event >>= (liftIO . mouseEventGetScreenY)
+mouseScreenY :: IsMouseEvent e => EventM t e Int
+mouseScreenY = event >>= MouseEvent.getScreenY
 
-mouseScreenXY :: IsMouseEvent e => EventM e t (Int, Int)
+mouseScreenXY :: IsMouseEvent e => EventM t e (Int, Int)
 mouseScreenXY = do
-  e <- event
-  liftIO $ do
-    x <- mouseEventGetScreenX e
-    y <- mouseEventGetScreenY e
+    e <- event
+    x <- MouseEvent.getScreenX e
+    y <- MouseEvent.getScreenY e
     return (x, y)
 
-mouseClientX :: IsMouseEvent e => EventM e t Int
-mouseClientX = event >>= (liftIO . mouseEventGetClientX)
+mouseClientX :: IsMouseEvent e => EventM t e Int
+mouseClientX = event >>= MouseEvent.getClientX
 
-mouseClientY :: IsMouseEvent e => EventM e t Int
-mouseClientY = event >>= (liftIO . mouseEventGetClientY)
+mouseClientY :: IsMouseEvent e => EventM t e Int
+mouseClientY = event >>= MouseEvent.getClientY
 
-mouseClientXY :: IsMouseEvent e => EventM e t (Int, Int)
+mouseClientXY :: IsMouseEvent e => EventM t e (Int, Int)
 mouseClientXY = do
-  e <- event
-  liftIO $ do
-    x <- mouseEventGetClientX e
-    y <- mouseEventGetClientY e
+    e <- event
+    x <- MouseEvent.getClientX e
+    y <- MouseEvent.getClientY e
     return (x, y)
 
-mouseMovementX :: IsMouseEvent e => EventM e t Int
-mouseMovementX = event >>= (liftIO . mouseEventGetMovementX)
+mouseMovementX :: IsMouseEvent e => EventM t e Int
+mouseMovementX = event >>= MouseEvent.getMovementX
 
-mouseMovementY :: IsMouseEvent e => EventM e t Int
-mouseMovementY = event >>= (liftIO . mouseEventGetMovementY)
+mouseMovementY :: IsMouseEvent e => EventM t e Int
+mouseMovementY = event >>= MouseEvent.getMovementY
 
-mouseMovementXY :: IsMouseEvent e => EventM e t (Int, Int)
+mouseMovementXY :: IsMouseEvent e => EventM t e (Int, Int)
 mouseMovementXY = do
-  e <- event
-  liftIO $ do
-    x <- mouseEventGetMovementX e
-    y <- mouseEventGetMovementY e
+    e <- event
+    x <- MouseEvent.getMovementX e
+    y <- MouseEvent.getMovementY e
     return (x, y)
 
-mouseCtrlKey :: IsMouseEvent e => EventM e t Bool
-mouseCtrlKey = event >>= (liftIO . mouseEventGetCtrlKey)
+mouseCtrlKey :: IsMouseEvent e => EventM t e Bool
+mouseCtrlKey = event >>= MouseEvent.getCtrlKey
 
-mouseShiftKey :: IsMouseEvent e => EventM e t Bool
-mouseShiftKey = event >>= (liftIO . mouseEventGetShiftKey)
+mouseShiftKey :: IsMouseEvent e => EventM t e Bool
+mouseShiftKey = event >>= MouseEvent.getShiftKey
 
-mouseAltKey :: IsMouseEvent e => EventM e t Bool
-mouseAltKey = event >>= (liftIO . mouseEventGetAltKey)
+mouseAltKey :: IsMouseEvent e => EventM t e Bool
+mouseAltKey = event >>= MouseEvent.getAltKey
 
-mouseMetaKey :: IsMouseEvent e => EventM e t Bool
-mouseMetaKey = event >>= (liftIO . mouseEventGetMetaKey)
+mouseMetaKey :: IsMouseEvent e => EventM t e Bool
+mouseMetaKey = event >>= MouseEvent.getMetaKey
 
-mouseButton :: IsMouseEvent e => EventM e t Word
-mouseButton = event >>= (liftIO . mouseEventGetButton)
+mouseButton :: IsMouseEvent e => EventM t e Word
+mouseButton = event >>= MouseEvent.getButton
 
-mouseRelatedTarget :: IsMouseEvent e => EventM e t (Maybe EventTarget)
-mouseRelatedTarget = event >>= (liftIO . mouseEventGetRelatedTarget)
+mouseRelatedTarget :: IsMouseEvent e => EventM t e (Maybe EventTarget)
+mouseRelatedTarget = event >>= MouseEvent.getRelatedTarget
 
-mouseOffsetX :: IsMouseEvent e => EventM e t Int
-mouseOffsetX = event >>= (liftIO . mouseEventGetOffsetX)
+mouseOffsetX :: IsMouseEvent e => EventM t e Int
+mouseOffsetX = event >>= MouseEvent.getOffsetX
 
-mouseOffsetY :: IsMouseEvent e => EventM e t Int
-mouseOffsetY = event >>= (liftIO . mouseEventGetOffsetY)
+mouseOffsetY :: IsMouseEvent e => EventM t e Int
+mouseOffsetY = event >>= MouseEvent.getOffsetY
 
-mouseOffsetXY :: IsMouseEvent e => EventM e t (Int, Int)
+mouseOffsetXY :: IsMouseEvent e => EventM t e (Int, Int)
 mouseOffsetXY = do
-  e <- event
-  liftIO $ do
-    x <- mouseEventGetOffsetX e
-    y <- mouseEventGetOffsetY e
+    e <- event
+    x <- MouseEvent.getOffsetX e
+    y <- MouseEvent.getOffsetY e
     return (x, y)
 
-mouseX :: IsMouseEvent e => EventM e t Int
-mouseX = event >>= (liftIO . mouseEventGetX)
+mouseX :: IsMouseEvent e => EventM t e Int
+mouseX = event >>= MouseEvent.getX
 
-mouseY :: IsMouseEvent e => EventM e t Int
-mouseY = event >>= (liftIO . mouseEventGetY)
+mouseY :: IsMouseEvent e => EventM t e Int
+mouseY = event >>= MouseEvent.getY
 
-mouseXY :: IsMouseEvent e => EventM e t (Int, Int)
+mouseXY :: IsMouseEvent e => EventM t e (Int, Int)
 mouseXY = do
-  e <- event
-  liftIO $ do
-    x <- mouseEventGetX e
-    y <- mouseEventGetY e
+    e <- event
+    x <- MouseEvent.getX e
+    y <- MouseEvent.getY e
     return (x, y)
 
-mouseFromElement :: IsMouseEvent e => EventM e t (Maybe Node)
-mouseFromElement = event >>= (liftIO . mouseEventGetFromElement)
+mouseFromElement :: IsMouseEvent e => EventM t e (Maybe Node)
+mouseFromElement = event >>= MouseEvent.getFromElement
 
-mouseToElement :: IsMouseEvent e => EventM e t (Maybe Node)
-mouseToElement = event >>= (liftIO . mouseEventGetToElement)
+mouseToElement :: IsMouseEvent e => EventM t e (Maybe Node)
+mouseToElement = event >>= MouseEvent.getToElement
 
-connect :: (GObjectClass t, IsEvent e, ToDOMString string) => string -> t -> EventM e t () -> IO (IO ())
-connect eventName target callback =
-  eventTargetAddEventListener target eventName False $ curry (runReaderT callback)
diff --git a/src/GHCJS/DOM/EventSource.hs b/src/GHCJS/DOM/EventSource.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/EventSource.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.EventSource (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.EventSource
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.EventSource
+#else
+#endif
diff --git a/src/GHCJS/DOM/EventTarget.hs b/src/GHCJS/DOM/EventTarget.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/EventTarget.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.EventTarget (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.EventTarget
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.EventTarget
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.EventTarget
+#else
+import Graphics.UI.Gtk.WebKit.DOM.EventTarget
+#endif
diff --git a/src/GHCJS/DOM/EventTargetClosures.hs b/src/GHCJS/DOM/EventTargetClosures.hs
--- a/src/GHCJS/DOM/EventTargetClosures.hs
+++ b/src/GHCJS/DOM/EventTargetClosures.hs
@@ -2,49 +2,42 @@
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
 {-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface #-}
 module GHCJS.DOM.EventTargetClosures
-       (eventTargetAddEventListener) where
+       (EventName(..), SaferEventListener(..), unsafeEventName, eventListenerNew, eventListenerNewSync, eventListenerNewAsync, eventListenerRelease) where
 
+import Control.Applicative ((<$>))
 import GHCJS.Types
-import GHCJS.Foreign
+import GHCJS.Foreign.Callback.Internal
+import GHCJS.Foreign.Callback
+import GHCJS.Marshal.Pure
 import GHCJS.DOM.Types
+import GHCJS.Marshal.Pure (pToJSRef, pFromJSRef)
 
-#ifdef ghcjs_HOST_OS
-foreign import javascript unsafe
-        "($1[\"addEventListener\"]($2, $3, $4) ? 1 : 0)"
-        ghcjs_dom_event_target_add_event_listener ::
-        JSRef GObject -> JSString -> JSRef a -> Bool -> IO Bool
+newtype EventName t e = EventName DOMString
+newtype SaferEventListener t e = SaferEventListener EventListener
 
-foreign import javascript unsafe
-        "($1[\"removeEventListener\"]($2, $3, $4) ? 1 : 0)"
-        ghcjs_dom_event_target_remove_event_listener ::
-        JSRef GObject -> JSString -> JSRef a -> Bool -> IO Bool
-#else
-ghcjs_dom_event_target_add_event_listener ::
-        JSRef GObject -> JSString -> JSRef a -> Bool -> IO Bool
-ghcjs_dom_event_target_add_event_listener = undefined
+instance PToJSRef (SaferEventListener t e) where
+    pToJSRef (SaferEventListener l) = castRef $ pToJSRef l
+    {-# INLINE pToJSRef #-}
 
-ghcjs_dom_event_target_remove_event_listener ::
-        JSRef GObject -> JSString -> JSRef a -> Bool -> IO Bool
-ghcjs_dom_event_target_remove_event_listener = undefined
-#endif
+instance PFromJSRef (SaferEventListener t e) where
+    pFromJSRef = SaferEventListener . pFromJSRef . castRef
+    {-# INLINE pFromJSRef #-}
 
-eventTargetAddEventListener ::
-                         (GObjectClass self, ToJSString eventName, IsEvent event) =>
-                           self -> eventName -> Bool -> (self -> event -> IO ()) -> IO (IO ())
-eventTargetAddEventListener self eventName bubble user = do
-    callback <- syncCallback1 AlwaysRetain True $ \e -> user self (unsafeCastGObject $ GObject e)
-    ghcjs_dom_event_target_add_event_listener
-        (unGObject (toGObject self))
-        (toJSString eventName)
-        callback
-        bubble
-    return $ do
-        ghcjs_dom_event_target_remove_event_listener
-            (unGObject (toGObject self))
-            (toJSString eventName)
-            callback
-            bubble
-        release callback
+unsafeEventName :: DOMString -> EventName t e
+unsafeEventName = EventName
+
+eventListenerNew :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNew callback = (EventListener . castRef . pToJSRef) <$> syncCallback1 ContinueAsync (callback . unsafeCastGObject . GObject)
+
+eventListenerNewSync :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNewSync callback = (EventListener . castRef . pToJSRef) <$> syncCallback1 ThrowWouldBlock (callback . unsafeCastGObject . GObject)
+
+eventListenerNewAsync :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNewAsync callback = (EventListener . castRef . pToJSRef) <$> asyncCallback1 (callback . unsafeCastGObject . GObject)
+
+eventListenerRelease :: EventListener -> IO ()
+eventListenerRelease (EventListener ref) = releaseCallback (Callback $ castRef ref)
+
 #else
 module GHCJS.DOM.EventTargetClosures (
   module Graphics.UI.Gtk.WebKit.DOM.EventTargetClosures
diff --git a/src/GHCJS/DOM/Events.hs b/src/GHCJS/DOM/Events.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/Events.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Events (Event, IsEvent) where
- 
-data Event = Event
- 
-class IsEvent a
- 
-instance IsEvent Event
-#else
-module GHCJS.DOM.Events (
-  module Graphics.UI.Gtk.WebKit.DOM.Events
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.Events
-#endif
diff --git a/src/GHCJS/DOM/File.hs b/src/GHCJS/DOM/File.hs
--- a/src/GHCJS/DOM/File.hs
+++ b/src/GHCJS/DOM/File.hs
@@ -1,30 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.File (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.File
-       (ghcjs_dom_file_get_name, fileGetName, File, IsFile, castToFile,
-        gTypeFile, toFile)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_file_get_name :: JSRef File -> IO JSString
- 
-fileGetName ::
-            (IsFile self, FromJSString result) => self -> IO result
-fileGetName self
-  = fromJSString <$> (ghcjs_dom_file_get_name (unFile (toFile self)))
+  module GHCJS.DOM.JSFFI.Generated.File
 #else
-module GHCJS.DOM.File (
   module Graphics.UI.Gtk.WebKit.DOM.File
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.File
+#else
 import Graphics.UI.Gtk.WebKit.DOM.File
 #endif
diff --git a/src/GHCJS/DOM/FileError.hs b/src/GHCJS/DOM/FileError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/FileError.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.FileError (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.FileError
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.FileError
+#else
+#endif
diff --git a/src/GHCJS/DOM/FileList.hs b/src/GHCJS/DOM/FileList.hs
--- a/src/GHCJS/DOM/FileList.hs
+++ b/src/GHCJS/DOM/FileList.hs
@@ -1,40 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.FileList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.FileList
-       (ghcjs_dom_file_list_item, fileListItem,
-        ghcjs_dom_file_list_get_length, fileListGetLength, FileList,
-        IsFileList, castToFileList, gTypeFileList, toFileList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_file_list_item ::
-        JSRef FileList -> Word -> IO (JSRef File)
- 
-fileListItem ::
-             (IsFileList self) => self -> Word -> IO (Maybe File)
-fileListItem self index
-  = fmap File . maybeJSNull <$>
-      (ghcjs_dom_file_list_item (unFileList (toFileList self)) index)
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_file_list_get_length :: JSRef FileList -> IO Word
- 
-fileListGetLength :: (IsFileList self) => self -> IO Word
-fileListGetLength self
-  = ghcjs_dom_file_list_get_length (unFileList (toFileList self))
+  module GHCJS.DOM.JSFFI.Generated.FileList
 #else
-module GHCJS.DOM.FileList (
   module Graphics.UI.Gtk.WebKit.DOM.FileList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.FileList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.FileList
 #endif
diff --git a/src/GHCJS/DOM/FileReader.hs b/src/GHCJS/DOM/FileReader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/FileReader.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.FileReader (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.FileReader
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.FileReader
+#else
+#endif
diff --git a/src/GHCJS/DOM/FileReaderSync.hs b/src/GHCJS/DOM/FileReaderSync.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/FileReaderSync.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.FileReaderSync (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.FileReaderSync
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.FileReaderSync
+#else
+#endif
diff --git a/src/GHCJS/DOM/FocusEvent.hs b/src/GHCJS/DOM/FocusEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/FocusEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.FocusEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.FocusEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.FocusEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/FontLoader.hs b/src/GHCJS/DOM/FontLoader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/FontLoader.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.FontLoader (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.FontLoader
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.FontLoader
+#else
+#endif
diff --git a/src/GHCJS/DOM/FormData.hs b/src/GHCJS/DOM/FormData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/FormData.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.FormData (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.FormData
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.FormData
+#else
+#endif
diff --git a/src/GHCJS/DOM/GainNode.hs b/src/GHCJS/DOM/GainNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/GainNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.GainNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.GainNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.GainNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/Gamepad.hs b/src/GHCJS/DOM/Gamepad.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Gamepad.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Gamepad (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Gamepad
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Gamepad
+#else
+#endif
diff --git a/src/GHCJS/DOM/GamepadButton.hs b/src/GHCJS/DOM/GamepadButton.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/GamepadButton.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.GamepadButton (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.GamepadButton
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.GamepadButton
+#else
+#endif
diff --git a/src/GHCJS/DOM/GamepadEvent.hs b/src/GHCJS/DOM/GamepadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/GamepadEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.GamepadEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.GamepadEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.GamepadEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/Geolocation.hs b/src/GHCJS/DOM/Geolocation.hs
--- a/src/GHCJS/DOM/Geolocation.hs
+++ b/src/GHCJS/DOM/Geolocation.hs
@@ -1,34 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Geolocation (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Geolocation
-       (ghcjs_dom_geolocation_clear_watch, geolocationClearWatch,
-        Geolocation, IsGeolocation, castToGeolocation, gTypeGeolocation,
-        toGeolocation)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"clearWatch\"]($2)"
-        ghcjs_dom_geolocation_clear_watch ::
-        JSRef Geolocation -> Int -> IO ()
- 
-geolocationClearWatch ::
-                      (IsGeolocation self) => self -> Int -> IO ()
-geolocationClearWatch self watchID
-  = ghcjs_dom_geolocation_clear_watch
-      (unGeolocation (toGeolocation self))
-      watchID
+  module GHCJS.DOM.JSFFI.Geolocation
 #else
-module GHCJS.DOM.Geolocation (
   module Graphics.UI.Gtk.WebKit.DOM.Geolocation
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Geolocation
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Geolocation
 #endif
diff --git a/src/GHCJS/DOM/Geoposition.hs b/src/GHCJS/DOM/Geoposition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Geoposition.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Geoposition (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Geoposition
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Geoposition
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLAllCollection.hs b/src/GHCJS/DOM/HTMLAllCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLAllCollection.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLAllCollection (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLAllCollection
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLAllCollection
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLAnchorElement.hs b/src/GHCJS/DOM/HTMLAnchorElement.hs
--- a/src/GHCJS/DOM/HTMLAnchorElement.hs
+++ b/src/GHCJS/DOM/HTMLAnchorElement.hs
@@ -1,542 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLAnchorElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLAnchorElement
-       (ghcjs_dom_html_anchor_element_set_charset,
-        htmlAnchorElementSetCharset,
-        ghcjs_dom_html_anchor_element_get_charset,
-        htmlAnchorElementGetCharset,
-        ghcjs_dom_html_anchor_element_set_coords,
-        htmlAnchorElementSetCoords,
-        ghcjs_dom_html_anchor_element_get_coords,
-        htmlAnchorElementGetCoords,
-        ghcjs_dom_html_anchor_element_set_download,
-        htmlAnchorElementSetDownload,
-        ghcjs_dom_html_anchor_element_get_download,
-        htmlAnchorElementGetDownload,
-        ghcjs_dom_html_anchor_element_set_href, htmlAnchorElementSetHref,
-        ghcjs_dom_html_anchor_element_get_href, htmlAnchorElementGetHref,
-        ghcjs_dom_html_anchor_element_set_hreflang,
-        htmlAnchorElementSetHreflang,
-        ghcjs_dom_html_anchor_element_get_hreflang,
-        htmlAnchorElementGetHreflang,
-        ghcjs_dom_html_anchor_element_set_name, htmlAnchorElementSetName,
-        ghcjs_dom_html_anchor_element_get_name, htmlAnchorElementGetName,
-        ghcjs_dom_html_anchor_element_set_ping, htmlAnchorElementSetPing,
-        ghcjs_dom_html_anchor_element_get_ping, htmlAnchorElementGetPing,
-        ghcjs_dom_html_anchor_element_set_rel, htmlAnchorElementSetRel,
-        ghcjs_dom_html_anchor_element_get_rel, htmlAnchorElementGetRel,
-        ghcjs_dom_html_anchor_element_set_rev, htmlAnchorElementSetRev,
-        ghcjs_dom_html_anchor_element_get_rev, htmlAnchorElementGetRev,
-        ghcjs_dom_html_anchor_element_set_shape, htmlAnchorElementSetShape,
-        ghcjs_dom_html_anchor_element_get_shape, htmlAnchorElementGetShape,
-        ghcjs_dom_html_anchor_element_set_target,
-        htmlAnchorElementSetTarget,
-        ghcjs_dom_html_anchor_element_get_target,
-        htmlAnchorElementGetTarget, ghcjs_dom_html_anchor_element_set_hash,
-        htmlAnchorElementSetHash, ghcjs_dom_html_anchor_element_get_hash,
-        htmlAnchorElementGetHash, ghcjs_dom_html_anchor_element_set_host,
-        htmlAnchorElementSetHost, ghcjs_dom_html_anchor_element_get_host,
-        htmlAnchorElementGetHost,
-        ghcjs_dom_html_anchor_element_set_hostname,
-        htmlAnchorElementSetHostname,
-        ghcjs_dom_html_anchor_element_get_hostname,
-        htmlAnchorElementGetHostname,
-        ghcjs_dom_html_anchor_element_set_pathname,
-        htmlAnchorElementSetPathname,
-        ghcjs_dom_html_anchor_element_get_pathname,
-        htmlAnchorElementGetPathname,
-        ghcjs_dom_html_anchor_element_set_port, htmlAnchorElementSetPort,
-        ghcjs_dom_html_anchor_element_get_port, htmlAnchorElementGetPort,
-        ghcjs_dom_html_anchor_element_set_protocol,
-        htmlAnchorElementSetProtocol,
-        ghcjs_dom_html_anchor_element_get_protocol,
-        htmlAnchorElementGetProtocol,
-        ghcjs_dom_html_anchor_element_set_search,
-        htmlAnchorElementSetSearch,
-        ghcjs_dom_html_anchor_element_get_search,
-        htmlAnchorElementGetSearch,
-        ghcjs_dom_html_anchor_element_get_origin,
-        htmlAnchorElementGetOrigin, ghcjs_dom_html_anchor_element_set_text,
-        htmlAnchorElementSetText, ghcjs_dom_html_anchor_element_get_text,
-        htmlAnchorElementGetText,
-        ghcjs_dom_html_anchor_element_get_rel_list,
-        htmlAnchorElementGetRelList, HTMLAnchorElement,
-        IsHTMLAnchorElement, castToHTMLAnchorElement,
-        gTypeHTMLAnchorElement, toHTMLAnchorElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"charset\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_charset ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetCharset ::
-                            (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetCharset self val
-  = ghcjs_dom_html_anchor_element_set_charset
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"charset\"]"
-        ghcjs_dom_html_anchor_element_get_charset ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetCharset ::
-                            (IsHTMLAnchorElement self, FromJSString result) =>
-                              self -> IO result
-htmlAnchorElementGetCharset self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_charset
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"coords\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_coords ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetCoords ::
-                           (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetCoords self val
-  = ghcjs_dom_html_anchor_element_set_coords
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"coords\"]"
-        ghcjs_dom_html_anchor_element_get_coords ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetCoords ::
-                           (IsHTMLAnchorElement self, FromJSString result) =>
-                             self -> IO result
-htmlAnchorElementGetCoords self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_coords
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"download\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_download ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetDownload ::
-                             (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetDownload self val
-  = ghcjs_dom_html_anchor_element_set_download
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"download\"]"
-        ghcjs_dom_html_anchor_element_get_download ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetDownload ::
-                             (IsHTMLAnchorElement self, FromJSString result) =>
-                               self -> IO result
-htmlAnchorElementGetDownload self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_download
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"href\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_href ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetHref ::
-                         (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetHref self val
-  = ghcjs_dom_html_anchor_element_set_href
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"href\"]"
-        ghcjs_dom_html_anchor_element_get_href ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetHref ::
-                         (IsHTMLAnchorElement self, FromJSString result) =>
-                           self -> IO result
-htmlAnchorElementGetHref self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_href
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"hreflang\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_hreflang ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetHreflang ::
-                             (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetHreflang self val
-  = ghcjs_dom_html_anchor_element_set_hreflang
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"hreflang\"]"
-        ghcjs_dom_html_anchor_element_get_hreflang ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetHreflang ::
-                             (IsHTMLAnchorElement self, FromJSString result) =>
-                               self -> IO result
-htmlAnchorElementGetHreflang self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_hreflang
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_name ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetName ::
-                         (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetName self val
-  = ghcjs_dom_html_anchor_element_set_name
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_anchor_element_get_name ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetName ::
-                         (IsHTMLAnchorElement self, FromJSString result) =>
-                           self -> IO result
-htmlAnchorElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_name
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"ping\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_ping ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetPing ::
-                         (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetPing self val
-  = ghcjs_dom_html_anchor_element_set_ping
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"ping\"]"
-        ghcjs_dom_html_anchor_element_get_ping ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetPing ::
-                         (IsHTMLAnchorElement self, FromJSString result) =>
-                           self -> IO result
-htmlAnchorElementGetPing self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_ping
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"rel\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_rel ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetRel ::
-                        (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetRel self val
-  = ghcjs_dom_html_anchor_element_set_rel
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"rel\"]"
-        ghcjs_dom_html_anchor_element_get_rel ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetRel ::
-                        (IsHTMLAnchorElement self, FromJSString result) =>
-                          self -> IO result
-htmlAnchorElementGetRel self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_rel
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"rev\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_rev ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetRev ::
-                        (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetRev self val
-  = ghcjs_dom_html_anchor_element_set_rev
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"rev\"]"
-        ghcjs_dom_html_anchor_element_get_rev ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetRev ::
-                        (IsHTMLAnchorElement self, FromJSString result) =>
-                          self -> IO result
-htmlAnchorElementGetRev self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_rev
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"shape\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_shape ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetShape ::
-                          (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetShape self val
-  = ghcjs_dom_html_anchor_element_set_shape
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"shape\"]"
-        ghcjs_dom_html_anchor_element_get_shape ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetShape ::
-                          (IsHTMLAnchorElement self, FromJSString result) =>
-                            self -> IO result
-htmlAnchorElementGetShape self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_shape
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"target\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_target ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetTarget ::
-                           (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetTarget self val
-  = ghcjs_dom_html_anchor_element_set_target
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"target\"]"
-        ghcjs_dom_html_anchor_element_get_target ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetTarget ::
-                           (IsHTMLAnchorElement self, FromJSString result) =>
-                             self -> IO result
-htmlAnchorElementGetTarget self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_target
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"hash\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_hash ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetHash ::
-                         (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetHash self val
-  = ghcjs_dom_html_anchor_element_set_hash
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"hash\"]"
-        ghcjs_dom_html_anchor_element_get_hash ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetHash ::
-                         (IsHTMLAnchorElement self, FromJSString result) =>
-                           self -> IO result
-htmlAnchorElementGetHash self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_hash
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"host\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_host ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetHost ::
-                         (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetHost self val
-  = ghcjs_dom_html_anchor_element_set_host
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"host\"]"
-        ghcjs_dom_html_anchor_element_get_host ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetHost ::
-                         (IsHTMLAnchorElement self, FromJSString result) =>
-                           self -> IO result
-htmlAnchorElementGetHost self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_host
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"hostname\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_hostname ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetHostname ::
-                             (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetHostname self val
-  = ghcjs_dom_html_anchor_element_set_hostname
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"hostname\"]"
-        ghcjs_dom_html_anchor_element_get_hostname ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetHostname ::
-                             (IsHTMLAnchorElement self, FromJSString result) =>
-                               self -> IO result
-htmlAnchorElementGetHostname self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_hostname
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"pathname\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_pathname ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetPathname ::
-                             (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetPathname self val
-  = ghcjs_dom_html_anchor_element_set_pathname
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"pathname\"]"
-        ghcjs_dom_html_anchor_element_get_pathname ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetPathname ::
-                             (IsHTMLAnchorElement self, FromJSString result) =>
-                               self -> IO result
-htmlAnchorElementGetPathname self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_pathname
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"port\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_port ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetPort ::
-                         (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetPort self val
-  = ghcjs_dom_html_anchor_element_set_port
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"port\"]"
-        ghcjs_dom_html_anchor_element_get_port ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetPort ::
-                         (IsHTMLAnchorElement self, FromJSString result) =>
-                           self -> IO result
-htmlAnchorElementGetPort self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_port
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"protocol\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_protocol ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetProtocol ::
-                             (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetProtocol self val
-  = ghcjs_dom_html_anchor_element_set_protocol
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"protocol\"]"
-        ghcjs_dom_html_anchor_element_get_protocol ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetProtocol ::
-                             (IsHTMLAnchorElement self, FromJSString result) =>
-                               self -> IO result
-htmlAnchorElementGetProtocol self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_protocol
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"search\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_search ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetSearch ::
-                           (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetSearch self val
-  = ghcjs_dom_html_anchor_element_set_search
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"search\"]"
-        ghcjs_dom_html_anchor_element_get_search ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetSearch ::
-                           (IsHTMLAnchorElement self, FromJSString result) =>
-                             self -> IO result
-htmlAnchorElementGetSearch self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_search
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"origin\"]"
-        ghcjs_dom_html_anchor_element_get_origin ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetOrigin ::
-                           (IsHTMLAnchorElement self, FromJSString result) =>
-                             self -> IO result
-htmlAnchorElementGetOrigin self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_origin
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"text\"] = $2;"
-        ghcjs_dom_html_anchor_element_set_text ::
-        JSRef HTMLAnchorElement -> JSString -> IO ()
- 
-htmlAnchorElementSetText ::
-                         (IsHTMLAnchorElement self, ToJSString val) => self -> val -> IO ()
-htmlAnchorElementSetText self val
-  = ghcjs_dom_html_anchor_element_set_text
-      (unHTMLAnchorElement (toHTMLAnchorElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"text\"]"
-        ghcjs_dom_html_anchor_element_get_text ::
-        JSRef HTMLAnchorElement -> IO JSString
- 
-htmlAnchorElementGetText ::
-                         (IsHTMLAnchorElement self, FromJSString result) =>
-                           self -> IO result
-htmlAnchorElementGetText self
-  = fromJSString <$>
-      (ghcjs_dom_html_anchor_element_get_text
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
- 
-foreign import javascript unsafe "$1[\"relList\"]"
-        ghcjs_dom_html_anchor_element_get_rel_list ::
-        JSRef HTMLAnchorElement -> IO (JSRef DOMTokenList)
- 
-htmlAnchorElementGetRelList ::
-                            (IsHTMLAnchorElement self) => self -> IO (Maybe DOMTokenList)
-htmlAnchorElementGetRelList self
-  = fmap DOMTokenList . maybeJSNull <$>
-      (ghcjs_dom_html_anchor_element_get_rel_list
-         (unHTMLAnchorElement (toHTMLAnchorElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
 #else
-module GHCJS.DOM.HTMLAnchorElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLAnchorElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLAnchorElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLAppletElement.hs b/src/GHCJS/DOM/HTMLAppletElement.hs
--- a/src/GHCJS/DOM/HTMLAppletElement.hs
+++ b/src/GHCJS/DOM/HTMLAppletElement.hs
@@ -1,304 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLAppletElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLAppletElement
-       (ghcjs_dom_html_applet_element_set_align,
-        htmlAppletElementSetAlign, ghcjs_dom_html_applet_element_get_align,
-        htmlAppletElementGetAlign, ghcjs_dom_html_applet_element_set_alt,
-        htmlAppletElementSetAlt, ghcjs_dom_html_applet_element_get_alt,
-        htmlAppletElementGetAlt, ghcjs_dom_html_applet_element_set_archive,
-        htmlAppletElementSetArchive,
-        ghcjs_dom_html_applet_element_get_archive,
-        htmlAppletElementGetArchive,
-        ghcjs_dom_html_applet_element_set_code, htmlAppletElementSetCode,
-        ghcjs_dom_html_applet_element_get_code, htmlAppletElementGetCode,
-        ghcjs_dom_html_applet_element_set_code_base,
-        htmlAppletElementSetCodeBase,
-        ghcjs_dom_html_applet_element_get_code_base,
-        htmlAppletElementGetCodeBase,
-        ghcjs_dom_html_applet_element_set_height,
-        htmlAppletElementSetHeight,
-        ghcjs_dom_html_applet_element_get_height,
-        htmlAppletElementGetHeight,
-        ghcjs_dom_html_applet_element_set_hspace,
-        htmlAppletElementSetHspace,
-        ghcjs_dom_html_applet_element_get_hspace,
-        htmlAppletElementGetHspace, ghcjs_dom_html_applet_element_set_name,
-        htmlAppletElementSetName, ghcjs_dom_html_applet_element_get_name,
-        htmlAppletElementGetName, ghcjs_dom_html_applet_element_set_object,
-        htmlAppletElementSetObject,
-        ghcjs_dom_html_applet_element_get_object,
-        htmlAppletElementGetObject,
-        ghcjs_dom_html_applet_element_set_vspace,
-        htmlAppletElementSetVspace,
-        ghcjs_dom_html_applet_element_get_vspace,
-        htmlAppletElementGetVspace,
-        ghcjs_dom_html_applet_element_set_width, htmlAppletElementSetWidth,
-        ghcjs_dom_html_applet_element_get_width, htmlAppletElementGetWidth,
-        HTMLAppletElement, IsHTMLAppletElement, castToHTMLAppletElement,
-        gTypeHTMLAppletElement, toHTMLAppletElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_applet_element_set_align ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetAlign ::
-                          (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetAlign self val
-  = ghcjs_dom_html_applet_element_set_align
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_applet_element_get_align ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetAlign ::
-                          (IsHTMLAppletElement self, FromJSString result) =>
-                            self -> IO result
-htmlAppletElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_align
-         (unHTMLAppletElement (toHTMLAppletElement self)))
- 
-foreign import javascript unsafe "$1[\"alt\"] = $2;"
-        ghcjs_dom_html_applet_element_set_alt ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetAlt ::
-                        (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetAlt self val
-  = ghcjs_dom_html_applet_element_set_alt
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"alt\"]"
-        ghcjs_dom_html_applet_element_get_alt ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetAlt ::
-                        (IsHTMLAppletElement self, FromJSString result) =>
-                          self -> IO result
-htmlAppletElementGetAlt self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_alt
-         (unHTMLAppletElement (toHTMLAppletElement self)))
- 
-foreign import javascript unsafe "$1[\"archive\"] = $2;"
-        ghcjs_dom_html_applet_element_set_archive ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetArchive ::
-                            (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetArchive self val
-  = ghcjs_dom_html_applet_element_set_archive
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"archive\"]"
-        ghcjs_dom_html_applet_element_get_archive ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetArchive ::
-                            (IsHTMLAppletElement self, FromJSString result) =>
-                              self -> IO result
-htmlAppletElementGetArchive self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_archive
-         (unHTMLAppletElement (toHTMLAppletElement self)))
- 
-foreign import javascript unsafe "$1[\"code\"] = $2;"
-        ghcjs_dom_html_applet_element_set_code ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetCode ::
-                         (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetCode self val
-  = ghcjs_dom_html_applet_element_set_code
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"code\"]"
-        ghcjs_dom_html_applet_element_get_code ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetCode ::
-                         (IsHTMLAppletElement self, FromJSString result) =>
-                           self -> IO result
-htmlAppletElementGetCode self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_code
-         (unHTMLAppletElement (toHTMLAppletElement self)))
- 
-foreign import javascript unsafe "$1[\"codeBase\"] = $2;"
-        ghcjs_dom_html_applet_element_set_code_base ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetCodeBase ::
-                             (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetCodeBase self val
-  = ghcjs_dom_html_applet_element_set_code_base
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"codeBase\"]"
-        ghcjs_dom_html_applet_element_get_code_base ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetCodeBase ::
-                             (IsHTMLAppletElement self, FromJSString result) =>
-                               self -> IO result
-htmlAppletElementGetCodeBase self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_code_base
-         (unHTMLAppletElement (toHTMLAppletElement self)))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_applet_element_set_height ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetHeight ::
-                           (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetHeight self val
-  = ghcjs_dom_html_applet_element_set_height
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_applet_element_get_height ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetHeight ::
-                           (IsHTMLAppletElement self, FromJSString result) =>
-                             self -> IO result
-htmlAppletElementGetHeight self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_height
-         (unHTMLAppletElement (toHTMLAppletElement self)))
- 
-foreign import javascript unsafe "$1[\"hspace\"] = $2;"
-        ghcjs_dom_html_applet_element_set_hspace ::
-        JSRef HTMLAppletElement -> Int -> IO ()
- 
-htmlAppletElementSetHspace ::
-                           (IsHTMLAppletElement self) => self -> Int -> IO ()
-htmlAppletElementSetHspace self val
-  = ghcjs_dom_html_applet_element_set_hspace
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"hspace\"]"
-        ghcjs_dom_html_applet_element_get_hspace ::
-        JSRef HTMLAppletElement -> IO Int
- 
-htmlAppletElementGetHspace ::
-                           (IsHTMLAppletElement self) => self -> IO Int
-htmlAppletElementGetHspace self
-  = ghcjs_dom_html_applet_element_get_hspace
-      (unHTMLAppletElement (toHTMLAppletElement self))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_applet_element_set_name ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetName ::
-                         (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetName self val
-  = ghcjs_dom_html_applet_element_set_name
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_applet_element_get_name ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetName ::
-                         (IsHTMLAppletElement self, FromJSString result) =>
-                           self -> IO result
-htmlAppletElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_name
-         (unHTMLAppletElement (toHTMLAppletElement self)))
- 
-foreign import javascript unsafe "$1[\"object\"] = $2;"
-        ghcjs_dom_html_applet_element_set_object ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetObject ::
-                           (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetObject self val
-  = ghcjs_dom_html_applet_element_set_object
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"object\"]"
-        ghcjs_dom_html_applet_element_get_object ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetObject ::
-                           (IsHTMLAppletElement self, FromJSString result) =>
-                             self -> IO result
-htmlAppletElementGetObject self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_object
-         (unHTMLAppletElement (toHTMLAppletElement self)))
- 
-foreign import javascript unsafe "$1[\"vspace\"] = $2;"
-        ghcjs_dom_html_applet_element_set_vspace ::
-        JSRef HTMLAppletElement -> Int -> IO ()
- 
-htmlAppletElementSetVspace ::
-                           (IsHTMLAppletElement self) => self -> Int -> IO ()
-htmlAppletElementSetVspace self val
-  = ghcjs_dom_html_applet_element_set_vspace
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"vspace\"]"
-        ghcjs_dom_html_applet_element_get_vspace ::
-        JSRef HTMLAppletElement -> IO Int
- 
-htmlAppletElementGetVspace ::
-                           (IsHTMLAppletElement self) => self -> IO Int
-htmlAppletElementGetVspace self
-  = ghcjs_dom_html_applet_element_get_vspace
-      (unHTMLAppletElement (toHTMLAppletElement self))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_applet_element_set_width ::
-        JSRef HTMLAppletElement -> JSString -> IO ()
- 
-htmlAppletElementSetWidth ::
-                          (IsHTMLAppletElement self, ToJSString val) => self -> val -> IO ()
-htmlAppletElementSetWidth self val
-  = ghcjs_dom_html_applet_element_set_width
-      (unHTMLAppletElement (toHTMLAppletElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_applet_element_get_width ::
-        JSRef HTMLAppletElement -> IO JSString
- 
-htmlAppletElementGetWidth ::
-                          (IsHTMLAppletElement self, FromJSString result) =>
-                            self -> IO result
-htmlAppletElementGetWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_applet_element_get_width
-         (unHTMLAppletElement (toHTMLAppletElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLAppletElement
 #else
-module GHCJS.DOM.HTMLAppletElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLAppletElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLAppletElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLAppletElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLAreaElement.hs b/src/GHCJS/DOM/HTMLAreaElement.hs
--- a/src/GHCJS/DOM/HTMLAreaElement.hs
+++ b/src/GHCJS/DOM/HTMLAreaElement.hs
@@ -1,310 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLAreaElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLAreaElement
-       (ghcjs_dom_html_area_element_set_alt, htmlAreaElementSetAlt,
-        ghcjs_dom_html_area_element_get_alt, htmlAreaElementGetAlt,
-        ghcjs_dom_html_area_element_set_coords, htmlAreaElementSetCoords,
-        ghcjs_dom_html_area_element_get_coords, htmlAreaElementGetCoords,
-        ghcjs_dom_html_area_element_set_href, htmlAreaElementSetHref,
-        ghcjs_dom_html_area_element_get_href, htmlAreaElementGetHref,
-        ghcjs_dom_html_area_element_set_no_href, htmlAreaElementSetNoHref,
-        ghcjs_dom_html_area_element_get_no_href, htmlAreaElementGetNoHref,
-        ghcjs_dom_html_area_element_set_ping, htmlAreaElementSetPing,
-        ghcjs_dom_html_area_element_get_ping, htmlAreaElementGetPing,
-        ghcjs_dom_html_area_element_set_rel, htmlAreaElementSetRel,
-        ghcjs_dom_html_area_element_get_rel, htmlAreaElementGetRel,
-        ghcjs_dom_html_area_element_set_shape, htmlAreaElementSetShape,
-        ghcjs_dom_html_area_element_get_shape, htmlAreaElementGetShape,
-        ghcjs_dom_html_area_element_set_target, htmlAreaElementSetTarget,
-        ghcjs_dom_html_area_element_get_target, htmlAreaElementGetTarget,
-        ghcjs_dom_html_area_element_get_hash, htmlAreaElementGetHash,
-        ghcjs_dom_html_area_element_get_host, htmlAreaElementGetHost,
-        ghcjs_dom_html_area_element_get_hostname,
-        htmlAreaElementGetHostname,
-        ghcjs_dom_html_area_element_get_pathname,
-        htmlAreaElementGetPathname, ghcjs_dom_html_area_element_get_port,
-        htmlAreaElementGetPort, ghcjs_dom_html_area_element_get_protocol,
-        htmlAreaElementGetProtocol, ghcjs_dom_html_area_element_get_search,
-        htmlAreaElementGetSearch, ghcjs_dom_html_area_element_get_rel_list,
-        htmlAreaElementGetRelList, HTMLAreaElement, IsHTMLAreaElement,
-        castToHTMLAreaElement, gTypeHTMLAreaElement, toHTMLAreaElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"alt\"] = $2;"
-        ghcjs_dom_html_area_element_set_alt ::
-        JSRef HTMLAreaElement -> JSString -> IO ()
- 
-htmlAreaElementSetAlt ::
-                      (IsHTMLAreaElement self, ToJSString val) => self -> val -> IO ()
-htmlAreaElementSetAlt self val
-  = ghcjs_dom_html_area_element_set_alt
-      (unHTMLAreaElement (toHTMLAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"alt\"]"
-        ghcjs_dom_html_area_element_get_alt ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetAlt ::
-                      (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetAlt self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_alt
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"coords\"] = $2;"
-        ghcjs_dom_html_area_element_set_coords ::
-        JSRef HTMLAreaElement -> JSString -> IO ()
- 
-htmlAreaElementSetCoords ::
-                         (IsHTMLAreaElement self, ToJSString val) => self -> val -> IO ()
-htmlAreaElementSetCoords self val
-  = ghcjs_dom_html_area_element_set_coords
-      (unHTMLAreaElement (toHTMLAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"coords\"]"
-        ghcjs_dom_html_area_element_get_coords ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetCoords ::
-                         (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetCoords self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_coords
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"href\"] = $2;"
-        ghcjs_dom_html_area_element_set_href ::
-        JSRef HTMLAreaElement -> JSString -> IO ()
- 
-htmlAreaElementSetHref ::
-                       (IsHTMLAreaElement self, ToJSString val) => self -> val -> IO ()
-htmlAreaElementSetHref self val
-  = ghcjs_dom_html_area_element_set_href
-      (unHTMLAreaElement (toHTMLAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"href\"]"
-        ghcjs_dom_html_area_element_get_href ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetHref ::
-                       (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetHref self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_href
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"noHref\"] = $2;"
-        ghcjs_dom_html_area_element_set_no_href ::
-        JSRef HTMLAreaElement -> Bool -> IO ()
- 
-htmlAreaElementSetNoHref ::
-                         (IsHTMLAreaElement self) => self -> Bool -> IO ()
-htmlAreaElementSetNoHref self val
-  = ghcjs_dom_html_area_element_set_no_href
-      (unHTMLAreaElement (toHTMLAreaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"noHref\"] ? 1 : 0)"
-        ghcjs_dom_html_area_element_get_no_href ::
-        JSRef HTMLAreaElement -> IO Bool
- 
-htmlAreaElementGetNoHref ::
-                         (IsHTMLAreaElement self) => self -> IO Bool
-htmlAreaElementGetNoHref self
-  = ghcjs_dom_html_area_element_get_no_href
-      (unHTMLAreaElement (toHTMLAreaElement self))
- 
-foreign import javascript unsafe "$1[\"ping\"] = $2;"
-        ghcjs_dom_html_area_element_set_ping ::
-        JSRef HTMLAreaElement -> JSString -> IO ()
- 
-htmlAreaElementSetPing ::
-                       (IsHTMLAreaElement self, ToJSString val) => self -> val -> IO ()
-htmlAreaElementSetPing self val
-  = ghcjs_dom_html_area_element_set_ping
-      (unHTMLAreaElement (toHTMLAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"ping\"]"
-        ghcjs_dom_html_area_element_get_ping ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetPing ::
-                       (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetPing self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_ping
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"rel\"] = $2;"
-        ghcjs_dom_html_area_element_set_rel ::
-        JSRef HTMLAreaElement -> JSString -> IO ()
- 
-htmlAreaElementSetRel ::
-                      (IsHTMLAreaElement self, ToJSString val) => self -> val -> IO ()
-htmlAreaElementSetRel self val
-  = ghcjs_dom_html_area_element_set_rel
-      (unHTMLAreaElement (toHTMLAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"rel\"]"
-        ghcjs_dom_html_area_element_get_rel ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetRel ::
-                      (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetRel self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_rel
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"shape\"] = $2;"
-        ghcjs_dom_html_area_element_set_shape ::
-        JSRef HTMLAreaElement -> JSString -> IO ()
- 
-htmlAreaElementSetShape ::
-                        (IsHTMLAreaElement self, ToJSString val) => self -> val -> IO ()
-htmlAreaElementSetShape self val
-  = ghcjs_dom_html_area_element_set_shape
-      (unHTMLAreaElement (toHTMLAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"shape\"]"
-        ghcjs_dom_html_area_element_get_shape ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetShape ::
-                        (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetShape self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_shape
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"target\"] = $2;"
-        ghcjs_dom_html_area_element_set_target ::
-        JSRef HTMLAreaElement -> JSString -> IO ()
- 
-htmlAreaElementSetTarget ::
-                         (IsHTMLAreaElement self, ToJSString val) => self -> val -> IO ()
-htmlAreaElementSetTarget self val
-  = ghcjs_dom_html_area_element_set_target
-      (unHTMLAreaElement (toHTMLAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"target\"]"
-        ghcjs_dom_html_area_element_get_target ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetTarget ::
-                         (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetTarget self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_target
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"hash\"]"
-        ghcjs_dom_html_area_element_get_hash ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetHash ::
-                       (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetHash self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_hash
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"host\"]"
-        ghcjs_dom_html_area_element_get_host ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetHost ::
-                       (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetHost self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_host
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"hostname\"]"
-        ghcjs_dom_html_area_element_get_hostname ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetHostname ::
-                           (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetHostname self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_hostname
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"pathname\"]"
-        ghcjs_dom_html_area_element_get_pathname ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetPathname ::
-                           (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetPathname self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_pathname
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"port\"]"
-        ghcjs_dom_html_area_element_get_port ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetPort ::
-                       (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetPort self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_port
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"protocol\"]"
-        ghcjs_dom_html_area_element_get_protocol ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetProtocol ::
-                           (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetProtocol self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_protocol
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"search\"]"
-        ghcjs_dom_html_area_element_get_search ::
-        JSRef HTMLAreaElement -> IO JSString
- 
-htmlAreaElementGetSearch ::
-                         (IsHTMLAreaElement self, FromJSString result) => self -> IO result
-htmlAreaElementGetSearch self
-  = fromJSString <$>
-      (ghcjs_dom_html_area_element_get_search
-         (unHTMLAreaElement (toHTMLAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"relList\"]"
-        ghcjs_dom_html_area_element_get_rel_list ::
-        JSRef HTMLAreaElement -> IO (JSRef DOMTokenList)
- 
-htmlAreaElementGetRelList ::
-                          (IsHTMLAreaElement self) => self -> IO (Maybe DOMTokenList)
-htmlAreaElementGetRelList self
-  = fmap DOMTokenList . maybeJSNull <$>
-      (ghcjs_dom_html_area_element_get_rel_list
-         (unHTMLAreaElement (toHTMLAreaElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
 #else
-module GHCJS.DOM.HTMLAreaElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLAreaElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLAreaElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLBRElement.hs b/src/GHCJS/DOM/HTMLBRElement.hs
--- a/src/GHCJS/DOM/HTMLBRElement.hs
+++ b/src/GHCJS/DOM/HTMLBRElement.hs
@@ -1,46 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLBRElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLBRElement
-       (ghcjs_dom_htmlbr_element_set_clear, htmlbrElementSetClear,
-        ghcjs_dom_htmlbr_element_get_clear, htmlbrElementGetClear,
-        HTMLBRElement, IsHTMLBRElement, castToHTMLBRElement,
-        gTypeHTMLBRElement, toHTMLBRElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"clear\"] = $2;"
-        ghcjs_dom_htmlbr_element_set_clear ::
-        JSRef HTMLBRElement -> JSString -> IO ()
- 
-htmlbrElementSetClear ::
-                      (IsHTMLBRElement self, ToJSString val) => self -> val -> IO ()
-htmlbrElementSetClear self val
-  = ghcjs_dom_htmlbr_element_set_clear
-      (unHTMLBRElement (toHTMLBRElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"clear\"]"
-        ghcjs_dom_htmlbr_element_get_clear ::
-        JSRef HTMLBRElement -> IO JSString
- 
-htmlbrElementGetClear ::
-                      (IsHTMLBRElement self, FromJSString result) => self -> IO result
-htmlbrElementGetClear self
-  = fromJSString <$>
-      (ghcjs_dom_htmlbr_element_get_clear
-         (unHTMLBRElement (toHTMLBRElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLBRElement
 #else
-module GHCJS.DOM.HTMLBRElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLBRElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLBRElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLBRElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLBaseElement.hs b/src/GHCJS/DOM/HTMLBaseElement.hs
--- a/src/GHCJS/DOM/HTMLBaseElement.hs
+++ b/src/GHCJS/DOM/HTMLBaseElement.hs
@@ -1,70 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLBaseElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLBaseElement
-       (ghcjs_dom_html_base_element_set_href, htmlBaseElementSetHref,
-        ghcjs_dom_html_base_element_get_href, htmlBaseElementGetHref,
-        ghcjs_dom_html_base_element_set_target, htmlBaseElementSetTarget,
-        ghcjs_dom_html_base_element_get_target, htmlBaseElementGetTarget,
-        HTMLBaseElement, IsHTMLBaseElement, castToHTMLBaseElement,
-        gTypeHTMLBaseElement, toHTMLBaseElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"href\"] = $2;"
-        ghcjs_dom_html_base_element_set_href ::
-        JSRef HTMLBaseElement -> JSString -> IO ()
- 
-htmlBaseElementSetHref ::
-                       (IsHTMLBaseElement self, ToJSString val) => self -> val -> IO ()
-htmlBaseElementSetHref self val
-  = ghcjs_dom_html_base_element_set_href
-      (unHTMLBaseElement (toHTMLBaseElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"href\"]"
-        ghcjs_dom_html_base_element_get_href ::
-        JSRef HTMLBaseElement -> IO JSString
- 
-htmlBaseElementGetHref ::
-                       (IsHTMLBaseElement self, FromJSString result) => self -> IO result
-htmlBaseElementGetHref self
-  = fromJSString <$>
-      (ghcjs_dom_html_base_element_get_href
-         (unHTMLBaseElement (toHTMLBaseElement self)))
- 
-foreign import javascript unsafe "$1[\"target\"] = $2;"
-        ghcjs_dom_html_base_element_set_target ::
-        JSRef HTMLBaseElement -> JSString -> IO ()
- 
-htmlBaseElementSetTarget ::
-                         (IsHTMLBaseElement self, ToJSString val) => self -> val -> IO ()
-htmlBaseElementSetTarget self val
-  = ghcjs_dom_html_base_element_set_target
-      (unHTMLBaseElement (toHTMLBaseElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"target\"]"
-        ghcjs_dom_html_base_element_get_target ::
-        JSRef HTMLBaseElement -> IO JSString
- 
-htmlBaseElementGetTarget ::
-                         (IsHTMLBaseElement self, FromJSString result) => self -> IO result
-htmlBaseElementGetTarget self
-  = fromJSString <$>
-      (ghcjs_dom_html_base_element_get_target
-         (unHTMLBaseElement (toHTMLBaseElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
 #else
-module GHCJS.DOM.HTMLBaseElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLBaseElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLBaseElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLBaseFontElement.hs b/src/GHCJS/DOM/HTMLBaseFontElement.hs
--- a/src/GHCJS/DOM/HTMLBaseFontElement.hs
+++ b/src/GHCJS/DOM/HTMLBaseFontElement.hs
@@ -1,103 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLBaseFontElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLBaseFontElement
-       (ghcjs_dom_html_base_font_element_set_color,
-        htmlBaseFontElementSetColor,
-        ghcjs_dom_html_base_font_element_get_color,
-        htmlBaseFontElementGetColor,
-        ghcjs_dom_html_base_font_element_set_face,
-        htmlBaseFontElementSetFace,
-        ghcjs_dom_html_base_font_element_get_face,
-        htmlBaseFontElementGetFace,
-        ghcjs_dom_html_base_font_element_set_size,
-        htmlBaseFontElementSetSize,
-        ghcjs_dom_html_base_font_element_get_size,
-        htmlBaseFontElementGetSize, HTMLBaseFontElement,
-        IsHTMLBaseFontElement, castToHTMLBaseFontElement,
-        gTypeHTMLBaseFontElement, toHTMLBaseFontElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"color\"] = $2;"
-        ghcjs_dom_html_base_font_element_set_color ::
-        JSRef HTMLBaseFontElement -> JSString -> IO ()
- 
-htmlBaseFontElementSetColor ::
-                            (IsHTMLBaseFontElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlBaseFontElementSetColor self val
-  = ghcjs_dom_html_base_font_element_set_color
-      (unHTMLBaseFontElement (toHTMLBaseFontElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"color\"]"
-        ghcjs_dom_html_base_font_element_get_color ::
-        JSRef HTMLBaseFontElement -> IO JSString
- 
-htmlBaseFontElementGetColor ::
-                            (IsHTMLBaseFontElement self, FromJSString result) =>
-                              self -> IO result
-htmlBaseFontElementGetColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_base_font_element_get_color
-         (unHTMLBaseFontElement (toHTMLBaseFontElement self)))
- 
-foreign import javascript unsafe "$1[\"face\"] = $2;"
-        ghcjs_dom_html_base_font_element_set_face ::
-        JSRef HTMLBaseFontElement -> JSString -> IO ()
- 
-htmlBaseFontElementSetFace ::
-                           (IsHTMLBaseFontElement self, ToJSString val) =>
-                             self -> val -> IO ()
-htmlBaseFontElementSetFace self val
-  = ghcjs_dom_html_base_font_element_set_face
-      (unHTMLBaseFontElement (toHTMLBaseFontElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"face\"]"
-        ghcjs_dom_html_base_font_element_get_face ::
-        JSRef HTMLBaseFontElement -> IO JSString
- 
-htmlBaseFontElementGetFace ::
-                           (IsHTMLBaseFontElement self, FromJSString result) =>
-                             self -> IO result
-htmlBaseFontElementGetFace self
-  = fromJSString <$>
-      (ghcjs_dom_html_base_font_element_get_face
-         (unHTMLBaseFontElement (toHTMLBaseFontElement self)))
- 
-foreign import javascript unsafe "$1[\"size\"] = $2;"
-        ghcjs_dom_html_base_font_element_set_size ::
-        JSRef HTMLBaseFontElement -> Int -> IO ()
- 
-htmlBaseFontElementSetSize ::
-                           (IsHTMLBaseFontElement self) => self -> Int -> IO ()
-htmlBaseFontElementSetSize self val
-  = ghcjs_dom_html_base_font_element_set_size
-      (unHTMLBaseFontElement (toHTMLBaseFontElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"size\"]"
-        ghcjs_dom_html_base_font_element_get_size ::
-        JSRef HTMLBaseFontElement -> IO Int
- 
-htmlBaseFontElementGetSize ::
-                           (IsHTMLBaseFontElement self) => self -> IO Int
-htmlBaseFontElementGetSize self
-  = ghcjs_dom_html_base_font_element_get_size
-      (unHTMLBaseFontElement (toHTMLBaseFontElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLBaseFontElement
 #else
-module GHCJS.DOM.HTMLBaseFontElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLBaseFontElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLBaseFontElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLBaseFontElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLBodyElement.hs b/src/GHCJS/DOM/HTMLBodyElement.hs
--- a/src/GHCJS/DOM/HTMLBodyElement.hs
+++ b/src/GHCJS/DOM/HTMLBodyElement.hs
@@ -1,232 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLBodyElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLBodyElement
-       (ghcjs_dom_html_body_element_set_a_link, htmlBodyElementSetALink,
-        ghcjs_dom_html_body_element_get_a_link, htmlBodyElementGetALink,
-        ghcjs_dom_html_body_element_set_background,
-        htmlBodyElementSetBackground,
-        ghcjs_dom_html_body_element_get_background,
-        htmlBodyElementGetBackground,
-        ghcjs_dom_html_body_element_set_bg_color,
-        htmlBodyElementSetBgColor,
-        ghcjs_dom_html_body_element_get_bg_color,
-        htmlBodyElementGetBgColor, ghcjs_dom_html_body_element_set_link,
-        htmlBodyElementSetLink, ghcjs_dom_html_body_element_get_link,
-        htmlBodyElementGetLink, ghcjs_dom_html_body_element_set_text,
-        htmlBodyElementSetText, ghcjs_dom_html_body_element_get_text,
-        htmlBodyElementGetText, ghcjs_dom_html_body_element_set_v_link,
-        htmlBodyElementSetVLink, ghcjs_dom_html_body_element_get_v_link,
-        htmlBodyElementGetVLink, htmlBodyElementOnbeforeunload,
-        htmlBodyElementOnhashchange, htmlBodyElementOnmessage,
-        htmlBodyElementOnoffline, htmlBodyElementOnonline,
-        htmlBodyElementOnpopstate, htmlBodyElementOnresize,
-        htmlBodyElementOnstorage, htmlBodyElementOnunload,
-        htmlBodyElementOnorientationchange, htmlBodyElementOnblur,
-        htmlBodyElementOnerror, htmlBodyElementOnfocus,
-        htmlBodyElementOnload, HTMLBodyElement, IsHTMLBodyElement,
-        castToHTMLBodyElement, gTypeHTMLBodyElement, toHTMLBodyElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"aLink\"] = $2;"
-        ghcjs_dom_html_body_element_set_a_link ::
-        JSRef HTMLBodyElement -> JSString -> IO ()
- 
-htmlBodyElementSetALink ::
-                        (IsHTMLBodyElement self, ToJSString val) => self -> val -> IO ()
-htmlBodyElementSetALink self val
-  = ghcjs_dom_html_body_element_set_a_link
-      (unHTMLBodyElement (toHTMLBodyElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"aLink\"]"
-        ghcjs_dom_html_body_element_get_a_link ::
-        JSRef HTMLBodyElement -> IO JSString
- 
-htmlBodyElementGetALink ::
-                        (IsHTMLBodyElement self, FromJSString result) => self -> IO result
-htmlBodyElementGetALink self
-  = fromJSString <$>
-      (ghcjs_dom_html_body_element_get_a_link
-         (unHTMLBodyElement (toHTMLBodyElement self)))
- 
-foreign import javascript unsafe "$1[\"background\"] = $2;"
-        ghcjs_dom_html_body_element_set_background ::
-        JSRef HTMLBodyElement -> JSString -> IO ()
- 
-htmlBodyElementSetBackground ::
-                             (IsHTMLBodyElement self, ToJSString val) => self -> val -> IO ()
-htmlBodyElementSetBackground self val
-  = ghcjs_dom_html_body_element_set_background
-      (unHTMLBodyElement (toHTMLBodyElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"background\"]"
-        ghcjs_dom_html_body_element_get_background ::
-        JSRef HTMLBodyElement -> IO JSString
- 
-htmlBodyElementGetBackground ::
-                             (IsHTMLBodyElement self, FromJSString result) => self -> IO result
-htmlBodyElementGetBackground self
-  = fromJSString <$>
-      (ghcjs_dom_html_body_element_get_background
-         (unHTMLBodyElement (toHTMLBodyElement self)))
- 
-foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
-        ghcjs_dom_html_body_element_set_bg_color ::
-        JSRef HTMLBodyElement -> JSString -> IO ()
- 
-htmlBodyElementSetBgColor ::
-                          (IsHTMLBodyElement self, ToJSString val) => self -> val -> IO ()
-htmlBodyElementSetBgColor self val
-  = ghcjs_dom_html_body_element_set_bg_color
-      (unHTMLBodyElement (toHTMLBodyElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"bgColor\"]"
-        ghcjs_dom_html_body_element_get_bg_color ::
-        JSRef HTMLBodyElement -> IO JSString
- 
-htmlBodyElementGetBgColor ::
-                          (IsHTMLBodyElement self, FromJSString result) => self -> IO result
-htmlBodyElementGetBgColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_body_element_get_bg_color
-         (unHTMLBodyElement (toHTMLBodyElement self)))
- 
-foreign import javascript unsafe "$1[\"link\"] = $2;"
-        ghcjs_dom_html_body_element_set_link ::
-        JSRef HTMLBodyElement -> JSString -> IO ()
- 
-htmlBodyElementSetLink ::
-                       (IsHTMLBodyElement self, ToJSString val) => self -> val -> IO ()
-htmlBodyElementSetLink self val
-  = ghcjs_dom_html_body_element_set_link
-      (unHTMLBodyElement (toHTMLBodyElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"link\"]"
-        ghcjs_dom_html_body_element_get_link ::
-        JSRef HTMLBodyElement -> IO JSString
- 
-htmlBodyElementGetLink ::
-                       (IsHTMLBodyElement self, FromJSString result) => self -> IO result
-htmlBodyElementGetLink self
-  = fromJSString <$>
-      (ghcjs_dom_html_body_element_get_link
-         (unHTMLBodyElement (toHTMLBodyElement self)))
- 
-foreign import javascript unsafe "$1[\"text\"] = $2;"
-        ghcjs_dom_html_body_element_set_text ::
-        JSRef HTMLBodyElement -> JSString -> IO ()
- 
-htmlBodyElementSetText ::
-                       (IsHTMLBodyElement self, ToJSString val) => self -> val -> IO ()
-htmlBodyElementSetText self val
-  = ghcjs_dom_html_body_element_set_text
-      (unHTMLBodyElement (toHTMLBodyElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"text\"]"
-        ghcjs_dom_html_body_element_get_text ::
-        JSRef HTMLBodyElement -> IO JSString
- 
-htmlBodyElementGetText ::
-                       (IsHTMLBodyElement self, FromJSString result) => self -> IO result
-htmlBodyElementGetText self
-  = fromJSString <$>
-      (ghcjs_dom_html_body_element_get_text
-         (unHTMLBodyElement (toHTMLBodyElement self)))
- 
-foreign import javascript unsafe "$1[\"vLink\"] = $2;"
-        ghcjs_dom_html_body_element_set_v_link ::
-        JSRef HTMLBodyElement -> JSString -> IO ()
- 
-htmlBodyElementSetVLink ::
-                        (IsHTMLBodyElement self, ToJSString val) => self -> val -> IO ()
-htmlBodyElementSetVLink self val
-  = ghcjs_dom_html_body_element_set_v_link
-      (unHTMLBodyElement (toHTMLBodyElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"vLink\"]"
-        ghcjs_dom_html_body_element_get_v_link ::
-        JSRef HTMLBodyElement -> IO JSString
- 
-htmlBodyElementGetVLink ::
-                        (IsHTMLBodyElement self, FromJSString result) => self -> IO result
-htmlBodyElementGetVLink self
-  = fromJSString <$>
-      (ghcjs_dom_html_body_element_get_v_link
-         (unHTMLBodyElement (toHTMLBodyElement self)))
- 
-htmlBodyElementOnbeforeunload ::
-                              (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnbeforeunload = (connect "beforeunload")
- 
-htmlBodyElementOnhashchange ::
-                            (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnhashchange = (connect "hashchange")
- 
-htmlBodyElementOnmessage ::
-                         (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnmessage = (connect "message")
- 
-htmlBodyElementOnoffline ::
-                         (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnoffline = (connect "offline")
- 
-htmlBodyElementOnonline ::
-                        (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnonline = (connect "online")
- 
-htmlBodyElementOnpopstate ::
-                          (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnpopstate = (connect "popstate")
- 
-htmlBodyElementOnresize ::
-                        (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnresize = (connect "resize")
- 
-htmlBodyElementOnstorage ::
-                         (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnstorage = (connect "storage")
- 
-htmlBodyElementOnunload ::
-                        (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnunload = (connect "unload")
- 
-htmlBodyElementOnorientationchange ::
-                                   (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnorientationchange = (connect "orientationchange")
- 
-htmlBodyElementOnblur ::
-                      (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnblur = (connect "blur")
- 
-htmlBodyElementOnerror ::
-                       (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnerror = (connect "error")
- 
-htmlBodyElementOnfocus ::
-                       (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnfocus = (connect "focus")
- 
-htmlBodyElementOnload ::
-                      (IsHTMLBodyElement self) => Signal self (EventM UIEvent self ())
-htmlBodyElementOnload = (connect "load")
+  module GHCJS.DOM.JSFFI.Generated.HTMLBodyElement
 #else
-module GHCJS.DOM.HTMLBodyElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLBodyElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLBodyElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLBodyElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLButtonElement.hs b/src/GHCJS/DOM/HTMLButtonElement.hs
--- a/src/GHCJS/DOM/HTMLButtonElement.hs
+++ b/src/GHCJS/DOM/HTMLButtonElement.hs
@@ -1,346 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLButtonElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLButtonElement
-       (ghcjs_dom_html_button_element_check_validity,
-        htmlButtonElementCheckValidity,
-        ghcjs_dom_html_button_element_set_custom_validity,
-        htmlButtonElementSetCustomValidity,
-        ghcjs_dom_html_button_element_set_autofocus,
-        htmlButtonElementSetAutofocus,
-        ghcjs_dom_html_button_element_get_autofocus,
-        htmlButtonElementGetAutofocus,
-        ghcjs_dom_html_button_element_set_disabled,
-        htmlButtonElementSetDisabled,
-        ghcjs_dom_html_button_element_get_disabled,
-        htmlButtonElementGetDisabled,
-        ghcjs_dom_html_button_element_get_form, htmlButtonElementGetForm,
-        ghcjs_dom_html_button_element_set_form_action,
-        htmlButtonElementSetFormAction,
-        ghcjs_dom_html_button_element_get_form_action,
-        htmlButtonElementGetFormAction,
-        ghcjs_dom_html_button_element_set_form_enctype,
-        htmlButtonElementSetFormEnctype,
-        ghcjs_dom_html_button_element_get_form_enctype,
-        htmlButtonElementGetFormEnctype,
-        ghcjs_dom_html_button_element_set_form_method,
-        htmlButtonElementSetFormMethod,
-        ghcjs_dom_html_button_element_get_form_method,
-        htmlButtonElementGetFormMethod,
-        ghcjs_dom_html_button_element_set_form_no_validate,
-        htmlButtonElementSetFormNoValidate,
-        ghcjs_dom_html_button_element_get_form_no_validate,
-        htmlButtonElementGetFormNoValidate,
-        ghcjs_dom_html_button_element_set_form_target,
-        htmlButtonElementSetFormTarget,
-        ghcjs_dom_html_button_element_get_form_target,
-        htmlButtonElementGetFormTarget,
-        ghcjs_dom_html_button_element_set_name, htmlButtonElementSetName,
-        ghcjs_dom_html_button_element_get_name, htmlButtonElementGetName,
-        ghcjs_dom_html_button_element_set_value, htmlButtonElementSetValue,
-        ghcjs_dom_html_button_element_get_value, htmlButtonElementGetValue,
-        ghcjs_dom_html_button_element_get_will_validate,
-        htmlButtonElementGetWillValidate,
-        ghcjs_dom_html_button_element_get_validity,
-        htmlButtonElementGetValidity,
-        ghcjs_dom_html_button_element_get_validation_message,
-        htmlButtonElementGetValidationMessage,
-        ghcjs_dom_html_button_element_get_labels,
-        htmlButtonElementGetLabels, HTMLButtonElement, IsHTMLButtonElement,
-        castToHTMLButtonElement, gTypeHTMLButtonElement,
-        toHTMLButtonElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"checkValidity\"]() ? 1 : 0)"
-        ghcjs_dom_html_button_element_check_validity ::
-        JSRef HTMLButtonElement -> IO Bool
- 
-htmlButtonElementCheckValidity ::
-                               (IsHTMLButtonElement self) => self -> IO Bool
-htmlButtonElementCheckValidity self
-  = ghcjs_dom_html_button_element_check_validity
-      (unHTMLButtonElement (toHTMLButtonElement self))
- 
-foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
-        ghcjs_dom_html_button_element_set_custom_validity ::
-        JSRef HTMLButtonElement -> JSString -> IO ()
- 
-htmlButtonElementSetCustomValidity ::
-                                   (IsHTMLButtonElement self, ToJSString error) =>
-                                     self -> error -> IO ()
-htmlButtonElementSetCustomValidity self error
-  = ghcjs_dom_html_button_element_set_custom_validity
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      (toJSString error)
- 
-foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
-        ghcjs_dom_html_button_element_set_autofocus ::
-        JSRef HTMLButtonElement -> Bool -> IO ()
- 
-htmlButtonElementSetAutofocus ::
-                              (IsHTMLButtonElement self) => self -> Bool -> IO ()
-htmlButtonElementSetAutofocus self val
-  = ghcjs_dom_html_button_element_set_autofocus
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
-        ghcjs_dom_html_button_element_get_autofocus ::
-        JSRef HTMLButtonElement -> IO Bool
- 
-htmlButtonElementGetAutofocus ::
-                              (IsHTMLButtonElement self) => self -> IO Bool
-htmlButtonElementGetAutofocus self
-  = ghcjs_dom_html_button_element_get_autofocus
-      (unHTMLButtonElement (toHTMLButtonElement self))
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_button_element_set_disabled ::
-        JSRef HTMLButtonElement -> Bool -> IO ()
- 
-htmlButtonElementSetDisabled ::
-                             (IsHTMLButtonElement self) => self -> Bool -> IO ()
-htmlButtonElementSetDisabled self val
-  = ghcjs_dom_html_button_element_set_disabled
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_button_element_get_disabled ::
-        JSRef HTMLButtonElement -> IO Bool
- 
-htmlButtonElementGetDisabled ::
-                             (IsHTMLButtonElement self) => self -> IO Bool
-htmlButtonElementGetDisabled self
-  = ghcjs_dom_html_button_element_get_disabled
-      (unHTMLButtonElement (toHTMLButtonElement self))
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_button_element_get_form ::
-        JSRef HTMLButtonElement -> IO (JSRef HTMLFormElement)
- 
-htmlButtonElementGetForm ::
-                         (IsHTMLButtonElement self) => self -> IO (Maybe HTMLFormElement)
-htmlButtonElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_button_element_get_form
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "$1[\"formAction\"] = $2;"
-        ghcjs_dom_html_button_element_set_form_action ::
-        JSRef HTMLButtonElement -> JSString -> IO ()
- 
-htmlButtonElementSetFormAction ::
-                               (IsHTMLButtonElement self, ToJSString val) => self -> val -> IO ()
-htmlButtonElementSetFormAction self val
-  = ghcjs_dom_html_button_element_set_form_action
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"formAction\"]"
-        ghcjs_dom_html_button_element_get_form_action ::
-        JSRef HTMLButtonElement -> IO JSString
- 
-htmlButtonElementGetFormAction ::
-                               (IsHTMLButtonElement self, FromJSString result) =>
-                                 self -> IO result
-htmlButtonElementGetFormAction self
-  = fromJSString <$>
-      (ghcjs_dom_html_button_element_get_form_action
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "$1[\"formEnctype\"] = $2;"
-        ghcjs_dom_html_button_element_set_form_enctype ::
-        JSRef HTMLButtonElement -> JSString -> IO ()
- 
-htmlButtonElementSetFormEnctype ::
-                                (IsHTMLButtonElement self, ToJSString val) => self -> val -> IO ()
-htmlButtonElementSetFormEnctype self val
-  = ghcjs_dom_html_button_element_set_form_enctype
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"formEnctype\"]"
-        ghcjs_dom_html_button_element_get_form_enctype ::
-        JSRef HTMLButtonElement -> IO JSString
- 
-htmlButtonElementGetFormEnctype ::
-                                (IsHTMLButtonElement self, FromJSString result) =>
-                                  self -> IO result
-htmlButtonElementGetFormEnctype self
-  = fromJSString <$>
-      (ghcjs_dom_html_button_element_get_form_enctype
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "$1[\"formMethod\"] = $2;"
-        ghcjs_dom_html_button_element_set_form_method ::
-        JSRef HTMLButtonElement -> JSString -> IO ()
- 
-htmlButtonElementSetFormMethod ::
-                               (IsHTMLButtonElement self, ToJSString val) => self -> val -> IO ()
-htmlButtonElementSetFormMethod self val
-  = ghcjs_dom_html_button_element_set_form_method
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"formMethod\"]"
-        ghcjs_dom_html_button_element_get_form_method ::
-        JSRef HTMLButtonElement -> IO JSString
- 
-htmlButtonElementGetFormMethod ::
-                               (IsHTMLButtonElement self, FromJSString result) =>
-                                 self -> IO result
-htmlButtonElementGetFormMethod self
-  = fromJSString <$>
-      (ghcjs_dom_html_button_element_get_form_method
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "$1[\"formNoValidate\"] = $2;"
-        ghcjs_dom_html_button_element_set_form_no_validate ::
-        JSRef HTMLButtonElement -> Bool -> IO ()
- 
-htmlButtonElementSetFormNoValidate ::
-                                   (IsHTMLButtonElement self) => self -> Bool -> IO ()
-htmlButtonElementSetFormNoValidate self val
-  = ghcjs_dom_html_button_element_set_form_no_validate
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"formNoValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_button_element_get_form_no_validate ::
-        JSRef HTMLButtonElement -> IO Bool
- 
-htmlButtonElementGetFormNoValidate ::
-                                   (IsHTMLButtonElement self) => self -> IO Bool
-htmlButtonElementGetFormNoValidate self
-  = ghcjs_dom_html_button_element_get_form_no_validate
-      (unHTMLButtonElement (toHTMLButtonElement self))
- 
-foreign import javascript unsafe "$1[\"formTarget\"] = $2;"
-        ghcjs_dom_html_button_element_set_form_target ::
-        JSRef HTMLButtonElement -> JSString -> IO ()
- 
-htmlButtonElementSetFormTarget ::
-                               (IsHTMLButtonElement self, ToJSString val) => self -> val -> IO ()
-htmlButtonElementSetFormTarget self val
-  = ghcjs_dom_html_button_element_set_form_target
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"formTarget\"]"
-        ghcjs_dom_html_button_element_get_form_target ::
-        JSRef HTMLButtonElement -> IO JSString
- 
-htmlButtonElementGetFormTarget ::
-                               (IsHTMLButtonElement self, FromJSString result) =>
-                                 self -> IO result
-htmlButtonElementGetFormTarget self
-  = fromJSString <$>
-      (ghcjs_dom_html_button_element_get_form_target
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_button_element_set_name ::
-        JSRef HTMLButtonElement -> JSString -> IO ()
- 
-htmlButtonElementSetName ::
-                         (IsHTMLButtonElement self, ToJSString val) => self -> val -> IO ()
-htmlButtonElementSetName self val
-  = ghcjs_dom_html_button_element_set_name
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_button_element_get_name ::
-        JSRef HTMLButtonElement -> IO JSString
- 
-htmlButtonElementGetName ::
-                         (IsHTMLButtonElement self, FromJSString result) =>
-                           self -> IO result
-htmlButtonElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_button_element_get_name
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_html_button_element_set_value ::
-        JSRef HTMLButtonElement -> JSString -> IO ()
- 
-htmlButtonElementSetValue ::
-                          (IsHTMLButtonElement self, ToJSString val) => self -> val -> IO ()
-htmlButtonElementSetValue self val
-  = ghcjs_dom_html_button_element_set_value
-      (unHTMLButtonElement (toHTMLButtonElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_html_button_element_get_value ::
-        JSRef HTMLButtonElement -> IO JSString
- 
-htmlButtonElementGetValue ::
-                          (IsHTMLButtonElement self, FromJSString result) =>
-                            self -> IO result
-htmlButtonElementGetValue self
-  = fromJSString <$>
-      (ghcjs_dom_html_button_element_get_value
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_button_element_get_will_validate ::
-        JSRef HTMLButtonElement -> IO Bool
- 
-htmlButtonElementGetWillValidate ::
-                                 (IsHTMLButtonElement self) => self -> IO Bool
-htmlButtonElementGetWillValidate self
-  = ghcjs_dom_html_button_element_get_will_validate
-      (unHTMLButtonElement (toHTMLButtonElement self))
- 
-foreign import javascript unsafe "$1[\"validity\"]"
-        ghcjs_dom_html_button_element_get_validity ::
-        JSRef HTMLButtonElement -> IO (JSRef ValidityState)
- 
-htmlButtonElementGetValidity ::
-                             (IsHTMLButtonElement self) => self -> IO (Maybe ValidityState)
-htmlButtonElementGetValidity self
-  = fmap ValidityState . maybeJSNull <$>
-      (ghcjs_dom_html_button_element_get_validity
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "$1[\"validationMessage\"]"
-        ghcjs_dom_html_button_element_get_validation_message ::
-        JSRef HTMLButtonElement -> IO JSString
- 
-htmlButtonElementGetValidationMessage ::
-                                      (IsHTMLButtonElement self, FromJSString result) =>
-                                        self -> IO result
-htmlButtonElementGetValidationMessage self
-  = fromJSString <$>
-      (ghcjs_dom_html_button_element_get_validation_message
-         (unHTMLButtonElement (toHTMLButtonElement self)))
- 
-foreign import javascript unsafe "$1[\"labels\"]"
-        ghcjs_dom_html_button_element_get_labels ::
-        JSRef HTMLButtonElement -> IO (JSRef NodeList)
- 
-htmlButtonElementGetLabels ::
-                           (IsHTMLButtonElement self) => self -> IO (Maybe NodeList)
-htmlButtonElementGetLabels self
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_html_button_element_get_labels
-         (unHTMLButtonElement (toHTMLButtonElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLButtonElement
 #else
-module GHCJS.DOM.HTMLButtonElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLButtonElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLButtonElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLButtonElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLCanvasElement.hs b/src/GHCJS/DOM/HTMLCanvasElement.hs
--- a/src/GHCJS/DOM/HTMLCanvasElement.hs
+++ b/src/GHCJS/DOM/HTMLCanvasElement.hs
@@ -1,71 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLCanvasElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLCanvasElement
-       (ghcjs_dom_html_canvas_element_set_width,
-        htmlCanvasElementSetWidth, ghcjs_dom_html_canvas_element_get_width,
-        htmlCanvasElementGetWidth,
-        ghcjs_dom_html_canvas_element_set_height,
-        htmlCanvasElementSetHeight,
-        ghcjs_dom_html_canvas_element_get_height,
-        htmlCanvasElementGetHeight, HTMLCanvasElement, IsHTMLCanvasElement,
-        castToHTMLCanvasElement, gTypeHTMLCanvasElement,
-        toHTMLCanvasElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_canvas_element_set_width ::
-        JSRef HTMLCanvasElement -> Int -> IO ()
- 
-htmlCanvasElementSetWidth ::
-                          (IsHTMLCanvasElement self) => self -> Int -> IO ()
-htmlCanvasElementSetWidth self val
-  = ghcjs_dom_html_canvas_element_set_width
-      (unHTMLCanvasElement (toHTMLCanvasElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_canvas_element_get_width ::
-        JSRef HTMLCanvasElement -> IO Int
- 
-htmlCanvasElementGetWidth ::
-                          (IsHTMLCanvasElement self) => self -> IO Int
-htmlCanvasElementGetWidth self
-  = ghcjs_dom_html_canvas_element_get_width
-      (unHTMLCanvasElement (toHTMLCanvasElement self))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_canvas_element_set_height ::
-        JSRef HTMLCanvasElement -> Int -> IO ()
- 
-htmlCanvasElementSetHeight ::
-                           (IsHTMLCanvasElement self) => self -> Int -> IO ()
-htmlCanvasElementSetHeight self val
-  = ghcjs_dom_html_canvas_element_set_height
-      (unHTMLCanvasElement (toHTMLCanvasElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_canvas_element_get_height ::
-        JSRef HTMLCanvasElement -> IO Int
- 
-htmlCanvasElementGetHeight ::
-                           (IsHTMLCanvasElement self) => self -> IO Int
-htmlCanvasElementGetHeight self
-  = ghcjs_dom_html_canvas_element_get_height
-      (unHTMLCanvasElement (toHTMLCanvasElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement
 #else
-module GHCJS.DOM.HTMLCanvasElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLCanvasElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLCanvasElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLCollection.hs b/src/GHCJS/DOM/HTMLCollection.hs
--- a/src/GHCJS/DOM/HTMLCollection.hs
+++ b/src/GHCJS/DOM/HTMLCollection.hs
@@ -1,60 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLCollection (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLCollection
-       (ghcjs_dom_html_collection_item, htmlCollectionItem,
-        ghcjs_dom_html_collection_named_item, htmlCollectionNamedItem,
-        ghcjs_dom_html_collection_get_length, htmlCollectionGetLength,
-        HTMLCollection, IsHTMLCollection, castToHTMLCollection,
-        gTypeHTMLCollection, toHTMLCollection)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_html_collection_item ::
-        JSRef HTMLCollection -> Word -> IO (JSRef Node)
- 
-htmlCollectionItem ::
-                   (IsHTMLCollection self) => self -> Word -> IO (Maybe Node)
-htmlCollectionItem self index
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_html_collection_item
-         (unHTMLCollection (toHTMLCollection self))
-         index)
- 
-foreign import javascript unsafe "$1[\"namedItem\"]($2)"
-        ghcjs_dom_html_collection_named_item ::
-        JSRef HTMLCollection -> JSString -> IO (JSRef Node)
- 
-htmlCollectionNamedItem ::
-                        (IsHTMLCollection self, ToJSString name) =>
-                          self -> name -> IO (Maybe Node)
-htmlCollectionNamedItem self name
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_html_collection_named_item
-         (unHTMLCollection (toHTMLCollection self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_html_collection_get_length ::
-        JSRef HTMLCollection -> IO Word
- 
-htmlCollectionGetLength ::
-                        (IsHTMLCollection self) => self -> IO Word
-htmlCollectionGetLength self
-  = ghcjs_dom_html_collection_get_length
-      (unHTMLCollection (toHTMLCollection self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLCollection
 #else
-module GHCJS.DOM.HTMLCollection (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLCollection
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLCollection
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLCollection
 #endif
diff --git a/src/GHCJS/DOM/HTMLDListElement.hs b/src/GHCJS/DOM/HTMLDListElement.hs
--- a/src/GHCJS/DOM/HTMLDListElement.hs
+++ b/src/GHCJS/DOM/HTMLDListElement.hs
@@ -1,46 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLDListElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLDListElement
-       (ghcjs_dom_htmld_list_element_set_compact,
-        htmldListElementSetCompact,
-        ghcjs_dom_htmld_list_element_get_compact,
-        htmldListElementGetCompact, HTMLDListElement, IsHTMLDListElement,
-        castToHTMLDListElement, gTypeHTMLDListElement, toHTMLDListElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"compact\"] = $2;"
-        ghcjs_dom_htmld_list_element_set_compact ::
-        JSRef HTMLDListElement -> Bool -> IO ()
- 
-htmldListElementSetCompact ::
-                           (IsHTMLDListElement self) => self -> Bool -> IO ()
-htmldListElementSetCompact self val
-  = ghcjs_dom_htmld_list_element_set_compact
-      (unHTMLDListElement (toHTMLDListElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
-        ghcjs_dom_htmld_list_element_get_compact ::
-        JSRef HTMLDListElement -> IO Bool
- 
-htmldListElementGetCompact ::
-                           (IsHTMLDListElement self) => self -> IO Bool
-htmldListElementGetCompact self
-  = ghcjs_dom_htmld_list_element_get_compact
-      (unHTMLDListElement (toHTMLDListElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLDListElement
 #else
-module GHCJS.DOM.HTMLDListElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLDListElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLDListElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLDListElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLDataListElement.hs b/src/GHCJS/DOM/HTMLDataListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLDataListElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLDataListElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLDataListElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLDataListElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLDetailsElement.hs b/src/GHCJS/DOM/HTMLDetailsElement.hs
--- a/src/GHCJS/DOM/HTMLDetailsElement.hs
+++ b/src/GHCJS/DOM/HTMLDetailsElement.hs
@@ -1,46 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLDetailsElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLDetailsElement
-       (ghcjs_dom_html_details_element_set_open,
-        htmlDetailsElementSetOpen, ghcjs_dom_html_details_element_get_open,
-        htmlDetailsElementGetOpen, HTMLDetailsElement,
-        IsHTMLDetailsElement, castToHTMLDetailsElement,
-        gTypeHTMLDetailsElement, toHTMLDetailsElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"open\"] = $2;"
-        ghcjs_dom_html_details_element_set_open ::
-        JSRef HTMLDetailsElement -> Bool -> IO ()
- 
-htmlDetailsElementSetOpen ::
-                          (IsHTMLDetailsElement self) => self -> Bool -> IO ()
-htmlDetailsElementSetOpen self val
-  = ghcjs_dom_html_details_element_set_open
-      (unHTMLDetailsElement (toHTMLDetailsElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"open\"] ? 1 : 0)"
-        ghcjs_dom_html_details_element_get_open ::
-        JSRef HTMLDetailsElement -> IO Bool
- 
-htmlDetailsElementGetOpen ::
-                          (IsHTMLDetailsElement self) => self -> IO Bool
-htmlDetailsElementGetOpen self
-  = ghcjs_dom_html_details_element_get_open
-      (unHTMLDetailsElement (toHTMLDetailsElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement
 #else
-module GHCJS.DOM.HTMLDetailsElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLDetailsElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLDetailsElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLDirectoryElement.hs b/src/GHCJS/DOM/HTMLDirectoryElement.hs
--- a/src/GHCJS/DOM/HTMLDirectoryElement.hs
+++ b/src/GHCJS/DOM/HTMLDirectoryElement.hs
@@ -1,47 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLDirectoryElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLDirectoryElement
-       (ghcjs_dom_html_directory_element_set_compact,
-        htmlDirectoryElementSetCompact,
-        ghcjs_dom_html_directory_element_get_compact,
-        htmlDirectoryElementGetCompact, HTMLDirectoryElement,
-        IsHTMLDirectoryElement, castToHTMLDirectoryElement,
-        gTypeHTMLDirectoryElement, toHTMLDirectoryElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"compact\"] = $2;"
-        ghcjs_dom_html_directory_element_set_compact ::
-        JSRef HTMLDirectoryElement -> Bool -> IO ()
- 
-htmlDirectoryElementSetCompact ::
-                               (IsHTMLDirectoryElement self) => self -> Bool -> IO ()
-htmlDirectoryElementSetCompact self val
-  = ghcjs_dom_html_directory_element_set_compact
-      (unHTMLDirectoryElement (toHTMLDirectoryElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
-        ghcjs_dom_html_directory_element_get_compact ::
-        JSRef HTMLDirectoryElement -> IO Bool
- 
-htmlDirectoryElementGetCompact ::
-                               (IsHTMLDirectoryElement self) => self -> IO Bool
-htmlDirectoryElementGetCompact self
-  = ghcjs_dom_html_directory_element_get_compact
-      (unHTMLDirectoryElement (toHTMLDirectoryElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement
 #else
-module GHCJS.DOM.HTMLDirectoryElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLDirectoryElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLDirectoryElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLDivElement.hs b/src/GHCJS/DOM/HTMLDivElement.hs
--- a/src/GHCJS/DOM/HTMLDivElement.hs
+++ b/src/GHCJS/DOM/HTMLDivElement.hs
@@ -1,46 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLDivElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLDivElement
-       (ghcjs_dom_html_div_element_set_align, htmlDivElementSetAlign,
-        ghcjs_dom_html_div_element_get_align, htmlDivElementGetAlign,
-        HTMLDivElement, IsHTMLDivElement, castToHTMLDivElement,
-        gTypeHTMLDivElement, toHTMLDivElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_div_element_set_align ::
-        JSRef HTMLDivElement -> JSString -> IO ()
- 
-htmlDivElementSetAlign ::
-                       (IsHTMLDivElement self, ToJSString val) => self -> val -> IO ()
-htmlDivElementSetAlign self val
-  = ghcjs_dom_html_div_element_set_align
-      (unHTMLDivElement (toHTMLDivElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_div_element_get_align ::
-        JSRef HTMLDivElement -> IO JSString
- 
-htmlDivElementGetAlign ::
-                       (IsHTMLDivElement self, FromJSString result) => self -> IO result
-htmlDivElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_div_element_get_align
-         (unHTMLDivElement (toHTMLDivElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLDivElement
 #else
-module GHCJS.DOM.HTMLDivElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLDivElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLDivElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLDivElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLDocument.hs b/src/GHCJS/DOM/HTMLDocument.hs
--- a/src/GHCJS/DOM/HTMLDocument.hs
+++ b/src/GHCJS/DOM/HTMLDocument.hs
@@ -1,294 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLDocument (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLDocument
-       (ghcjs_dom_html_document_close, htmlDocumentClose,
-        ghcjs_dom_html_document_clear, htmlDocumentClear,
-        ghcjs_dom_html_document_capture_events, htmlDocumentCaptureEvents,
-        ghcjs_dom_html_document_release_events, htmlDocumentReleaseEvents,
-        ghcjs_dom_html_document_get_embeds, htmlDocumentGetEmbeds,
-        ghcjs_dom_html_document_get_plugins, htmlDocumentGetPlugins,
-        ghcjs_dom_html_document_get_scripts, htmlDocumentGetScripts,
-        ghcjs_dom_html_document_get_width, htmlDocumentGetWidth,
-        ghcjs_dom_html_document_get_height, htmlDocumentGetHeight,
-        ghcjs_dom_html_document_set_dir, htmlDocumentSetDir,
-        ghcjs_dom_html_document_get_dir, htmlDocumentGetDir,
-        ghcjs_dom_html_document_set_design_mode, htmlDocumentSetDesignMode,
-        ghcjs_dom_html_document_get_design_mode, htmlDocumentGetDesignMode,
-        ghcjs_dom_html_document_get_compat_mode, htmlDocumentGetCompatMode,
-        ghcjs_dom_html_document_set_bg_color, htmlDocumentSetBgColor,
-        ghcjs_dom_html_document_get_bg_color, htmlDocumentGetBgColor,
-        ghcjs_dom_html_document_set_fg_color, htmlDocumentSetFgColor,
-        ghcjs_dom_html_document_get_fg_color, htmlDocumentGetFgColor,
-        ghcjs_dom_html_document_set_alink_color, htmlDocumentSetAlinkColor,
-        ghcjs_dom_html_document_get_alink_color, htmlDocumentGetAlinkColor,
-        ghcjs_dom_html_document_set_link_color, htmlDocumentSetLinkColor,
-        ghcjs_dom_html_document_get_link_color, htmlDocumentGetLinkColor,
-        ghcjs_dom_html_document_set_vlink_color, htmlDocumentSetVlinkColor,
-        ghcjs_dom_html_document_get_vlink_color, htmlDocumentGetVlinkColor,
-        HTMLDocument, IsHTMLDocument, castToHTMLDocument,
-        gTypeHTMLDocument, toHTMLDocument)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"close\"]()"
-        ghcjs_dom_html_document_close :: JSRef HTMLDocument -> IO ()
- 
-htmlDocumentClose :: (IsHTMLDocument self) => self -> IO ()
-htmlDocumentClose self
-  = ghcjs_dom_html_document_close
-      (unHTMLDocument (toHTMLDocument self))
- 
-foreign import javascript unsafe "$1[\"clear\"]()"
-        ghcjs_dom_html_document_clear :: JSRef HTMLDocument -> IO ()
- 
-htmlDocumentClear :: (IsHTMLDocument self) => self -> IO ()
-htmlDocumentClear self
-  = ghcjs_dom_html_document_clear
-      (unHTMLDocument (toHTMLDocument self))
- 
-foreign import javascript unsafe "$1[\"captureEvents\"]()"
-        ghcjs_dom_html_document_capture_events ::
-        JSRef HTMLDocument -> IO ()
- 
-htmlDocumentCaptureEvents :: (IsHTMLDocument self) => self -> IO ()
-htmlDocumentCaptureEvents self
-  = ghcjs_dom_html_document_capture_events
-      (unHTMLDocument (toHTMLDocument self))
- 
-foreign import javascript unsafe "$1[\"releaseEvents\"]()"
-        ghcjs_dom_html_document_release_events ::
-        JSRef HTMLDocument -> IO ()
- 
-htmlDocumentReleaseEvents :: (IsHTMLDocument self) => self -> IO ()
-htmlDocumentReleaseEvents self
-  = ghcjs_dom_html_document_release_events
-      (unHTMLDocument (toHTMLDocument self))
- 
-foreign import javascript unsafe "$1[\"embeds\"]"
-        ghcjs_dom_html_document_get_embeds ::
-        JSRef HTMLDocument -> IO (JSRef HTMLCollection)
- 
-htmlDocumentGetEmbeds ::
-                      (IsHTMLDocument self) => self -> IO (Maybe HTMLCollection)
-htmlDocumentGetEmbeds self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_document_get_embeds
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"plugins\"]"
-        ghcjs_dom_html_document_get_plugins ::
-        JSRef HTMLDocument -> IO (JSRef HTMLCollection)
- 
-htmlDocumentGetPlugins ::
-                       (IsHTMLDocument self) => self -> IO (Maybe HTMLCollection)
-htmlDocumentGetPlugins self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_document_get_plugins
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"scripts\"]"
-        ghcjs_dom_html_document_get_scripts ::
-        JSRef HTMLDocument -> IO (JSRef HTMLCollection)
- 
-htmlDocumentGetScripts ::
-                       (IsHTMLDocument self) => self -> IO (Maybe HTMLCollection)
-htmlDocumentGetScripts self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_document_get_scripts
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_document_get_width :: JSRef HTMLDocument -> IO Int
- 
-htmlDocumentGetWidth :: (IsHTMLDocument self) => self -> IO Int
-htmlDocumentGetWidth self
-  = ghcjs_dom_html_document_get_width
-      (unHTMLDocument (toHTMLDocument self))
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_document_get_height :: JSRef HTMLDocument -> IO Int
- 
-htmlDocumentGetHeight :: (IsHTMLDocument self) => self -> IO Int
-htmlDocumentGetHeight self
-  = ghcjs_dom_html_document_get_height
-      (unHTMLDocument (toHTMLDocument self))
- 
-foreign import javascript unsafe "$1[\"dir\"] = $2;"
-        ghcjs_dom_html_document_set_dir ::
-        JSRef HTMLDocument -> JSString -> IO ()
- 
-htmlDocumentSetDir ::
-                   (IsHTMLDocument self, ToJSString val) => self -> val -> IO ()
-htmlDocumentSetDir self val
-  = ghcjs_dom_html_document_set_dir
-      (unHTMLDocument (toHTMLDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"dir\"]"
-        ghcjs_dom_html_document_get_dir ::
-        JSRef HTMLDocument -> IO JSString
- 
-htmlDocumentGetDir ::
-                   (IsHTMLDocument self, FromJSString result) => self -> IO result
-htmlDocumentGetDir self
-  = fromJSString <$>
-      (ghcjs_dom_html_document_get_dir
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"designMode\"] = $2;"
-        ghcjs_dom_html_document_set_design_mode ::
-        JSRef HTMLDocument -> JSString -> IO ()
- 
-htmlDocumentSetDesignMode ::
-                          (IsHTMLDocument self, ToJSString val) => self -> val -> IO ()
-htmlDocumentSetDesignMode self val
-  = ghcjs_dom_html_document_set_design_mode
-      (unHTMLDocument (toHTMLDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"designMode\"]"
-        ghcjs_dom_html_document_get_design_mode ::
-        JSRef HTMLDocument -> IO JSString
- 
-htmlDocumentGetDesignMode ::
-                          (IsHTMLDocument self, FromJSString result) => self -> IO result
-htmlDocumentGetDesignMode self
-  = fromJSString <$>
-      (ghcjs_dom_html_document_get_design_mode
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"compatMode\"]"
-        ghcjs_dom_html_document_get_compat_mode ::
-        JSRef HTMLDocument -> IO JSString
- 
-htmlDocumentGetCompatMode ::
-                          (IsHTMLDocument self, FromJSString result) => self -> IO result
-htmlDocumentGetCompatMode self
-  = fromJSString <$>
-      (ghcjs_dom_html_document_get_compat_mode
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
-        ghcjs_dom_html_document_set_bg_color ::
-        JSRef HTMLDocument -> JSString -> IO ()
- 
-htmlDocumentSetBgColor ::
-                       (IsHTMLDocument self, ToJSString val) => self -> val -> IO ()
-htmlDocumentSetBgColor self val
-  = ghcjs_dom_html_document_set_bg_color
-      (unHTMLDocument (toHTMLDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"bgColor\"]"
-        ghcjs_dom_html_document_get_bg_color ::
-        JSRef HTMLDocument -> IO JSString
- 
-htmlDocumentGetBgColor ::
-                       (IsHTMLDocument self, FromJSString result) => self -> IO result
-htmlDocumentGetBgColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_document_get_bg_color
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"fgColor\"] = $2;"
-        ghcjs_dom_html_document_set_fg_color ::
-        JSRef HTMLDocument -> JSString -> IO ()
- 
-htmlDocumentSetFgColor ::
-                       (IsHTMLDocument self, ToJSString val) => self -> val -> IO ()
-htmlDocumentSetFgColor self val
-  = ghcjs_dom_html_document_set_fg_color
-      (unHTMLDocument (toHTMLDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"fgColor\"]"
-        ghcjs_dom_html_document_get_fg_color ::
-        JSRef HTMLDocument -> IO JSString
- 
-htmlDocumentGetFgColor ::
-                       (IsHTMLDocument self, FromJSString result) => self -> IO result
-htmlDocumentGetFgColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_document_get_fg_color
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"alinkColor\"] = $2;"
-        ghcjs_dom_html_document_set_alink_color ::
-        JSRef HTMLDocument -> JSString -> IO ()
- 
-htmlDocumentSetAlinkColor ::
-                          (IsHTMLDocument self, ToJSString val) => self -> val -> IO ()
-htmlDocumentSetAlinkColor self val
-  = ghcjs_dom_html_document_set_alink_color
-      (unHTMLDocument (toHTMLDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"alinkColor\"]"
-        ghcjs_dom_html_document_get_alink_color ::
-        JSRef HTMLDocument -> IO JSString
- 
-htmlDocumentGetAlinkColor ::
-                          (IsHTMLDocument self, FromJSString result) => self -> IO result
-htmlDocumentGetAlinkColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_document_get_alink_color
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"linkColor\"] = $2;"
-        ghcjs_dom_html_document_set_link_color ::
-        JSRef HTMLDocument -> JSString -> IO ()
- 
-htmlDocumentSetLinkColor ::
-                         (IsHTMLDocument self, ToJSString val) => self -> val -> IO ()
-htmlDocumentSetLinkColor self val
-  = ghcjs_dom_html_document_set_link_color
-      (unHTMLDocument (toHTMLDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"linkColor\"]"
-        ghcjs_dom_html_document_get_link_color ::
-        JSRef HTMLDocument -> IO JSString
- 
-htmlDocumentGetLinkColor ::
-                         (IsHTMLDocument self, FromJSString result) => self -> IO result
-htmlDocumentGetLinkColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_document_get_link_color
-         (unHTMLDocument (toHTMLDocument self)))
- 
-foreign import javascript unsafe "$1[\"vlinkColor\"] = $2;"
-        ghcjs_dom_html_document_set_vlink_color ::
-        JSRef HTMLDocument -> JSString -> IO ()
- 
-htmlDocumentSetVlinkColor ::
-                          (IsHTMLDocument self, ToJSString val) => self -> val -> IO ()
-htmlDocumentSetVlinkColor self val
-  = ghcjs_dom_html_document_set_vlink_color
-      (unHTMLDocument (toHTMLDocument self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"vlinkColor\"]"
-        ghcjs_dom_html_document_get_vlink_color ::
-        JSRef HTMLDocument -> IO JSString
- 
-htmlDocumentGetVlinkColor ::
-                          (IsHTMLDocument self, FromJSString result) => self -> IO result
-htmlDocumentGetVlinkColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_document_get_vlink_color
-         (unHTMLDocument (toHTMLDocument self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLDocument
 #else
-module GHCJS.DOM.HTMLDocument (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLDocument
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLDocument
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLDocument
 #endif
diff --git a/src/GHCJS/DOM/HTMLElement.hs b/src/GHCJS/DOM/HTMLElement.hs
--- a/src/GHCJS/DOM/HTMLElement.hs
+++ b/src/GHCJS/DOM/HTMLElement.hs
@@ -1,454 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLElement
-       (ghcjs_dom_html_element_insert_adjacent_element,
-        htmlElementInsertAdjacentElement,
-        ghcjs_dom_html_element_insert_adjacent_html,
-        htmlElementInsertAdjacentHTML,
-        ghcjs_dom_html_element_insert_adjacent_text,
-        htmlElementInsertAdjacentText, ghcjs_dom_html_element_click,
-        htmlElementClick, ghcjs_dom_html_element_set_title,
-        htmlElementSetTitle, ghcjs_dom_html_element_get_title,
-        htmlElementGetTitle, ghcjs_dom_html_element_set_lang,
-        htmlElementSetLang, ghcjs_dom_html_element_get_lang,
-        htmlElementGetLang, ghcjs_dom_html_element_set_translate,
-        htmlElementSetTranslate, ghcjs_dom_html_element_get_translate,
-        htmlElementGetTranslate, ghcjs_dom_html_element_set_dir,
-        htmlElementSetDir, ghcjs_dom_html_element_get_dir,
-        htmlElementGetDir, ghcjs_dom_html_element_set_tab_index,
-        htmlElementSetTabIndex, ghcjs_dom_html_element_get_tab_index,
-        htmlElementGetTabIndex, ghcjs_dom_html_element_set_draggable,
-        htmlElementSetDraggable, ghcjs_dom_html_element_get_draggable,
-        htmlElementGetDraggable, ghcjs_dom_html_element_set_webkitdropzone,
-        htmlElementSetWebkitdropzone,
-        ghcjs_dom_html_element_get_webkitdropzone,
-        htmlElementGetWebkitdropzone, ghcjs_dom_html_element_set_hidden,
-        htmlElementSetHidden, ghcjs_dom_html_element_get_hidden,
-        htmlElementGetHidden, ghcjs_dom_html_element_set_access_key,
-        htmlElementSetAccessKey, ghcjs_dom_html_element_get_access_key,
-        htmlElementGetAccessKey, ghcjs_dom_html_element_set_inner_html,
-        htmlElementSetInnerHTML, ghcjs_dom_html_element_get_inner_html,
-        htmlElementGetInnerHTML, ghcjs_dom_html_element_set_inner_text,
-        htmlElementSetInnerText, ghcjs_dom_html_element_get_inner_text,
-        htmlElementGetInnerText, ghcjs_dom_html_element_set_outer_html,
-        htmlElementSetOuterHTML, ghcjs_dom_html_element_get_outer_html,
-        htmlElementGetOuterHTML, ghcjs_dom_html_element_set_outer_text,
-        htmlElementSetOuterText, ghcjs_dom_html_element_get_outer_text,
-        htmlElementGetOuterText, ghcjs_dom_html_element_get_children,
-        htmlElementGetChildren,
-        ghcjs_dom_html_element_set_content_editable,
-        htmlElementSetContentEditable,
-        ghcjs_dom_html_element_get_content_editable,
-        htmlElementGetContentEditable,
-        ghcjs_dom_html_element_get_is_content_editable,
-        htmlElementGetIsContentEditable,
-        ghcjs_dom_html_element_set_spellcheck, htmlElementSetSpellcheck,
-        ghcjs_dom_html_element_get_spellcheck, htmlElementGetSpellcheck,
-        HTMLElement, IsHTMLElement, castToHTMLElement, gTypeHTMLElement,
-        toHTMLElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "$1[\"insertAdjacentElement\"]($2,\n$3)"
-        ghcjs_dom_html_element_insert_adjacent_element ::
-        JSRef HTMLElement ->
-          JSString -> JSRef Element -> IO (JSRef Element)
- 
-htmlElementInsertAdjacentElement ::
-                                 (IsHTMLElement self, ToJSString where', IsElement element) =>
-                                   self -> where' -> Maybe element -> IO (Maybe Element)
-htmlElementInsertAdjacentElement self where' element
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_html_element_insert_adjacent_element
-         (unHTMLElement (toHTMLElement self))
-         (toJSString where')
-         (maybe jsNull (unElement . toElement) element))
- 
-foreign import javascript unsafe
-        "$1[\"insertAdjacentHTML\"]($2, $3)"
-        ghcjs_dom_html_element_insert_adjacent_html ::
-        JSRef HTMLElement -> JSString -> JSString -> IO ()
- 
-htmlElementInsertAdjacentHTML ::
-                              (IsHTMLElement self, ToJSString where', ToJSString html) =>
-                                self -> where' -> html -> IO ()
-htmlElementInsertAdjacentHTML self where' html
-  = ghcjs_dom_html_element_insert_adjacent_html
-      (unHTMLElement (toHTMLElement self))
-      (toJSString where')
-      (toJSString html)
- 
-foreign import javascript unsafe
-        "$1[\"insertAdjacentText\"]($2, $3)"
-        ghcjs_dom_html_element_insert_adjacent_text ::
-        JSRef HTMLElement -> JSString -> JSString -> IO ()
- 
-htmlElementInsertAdjacentText ::
-                              (IsHTMLElement self, ToJSString where', ToJSString text) =>
-                                self -> where' -> text -> IO ()
-htmlElementInsertAdjacentText self where' text
-  = ghcjs_dom_html_element_insert_adjacent_text
-      (unHTMLElement (toHTMLElement self))
-      (toJSString where')
-      (toJSString text)
- 
-foreign import javascript unsafe "$1[\"click\"]()"
-        ghcjs_dom_html_element_click :: JSRef HTMLElement -> IO ()
- 
-htmlElementClick :: (IsHTMLElement self) => self -> IO ()
-htmlElementClick self
-  = ghcjs_dom_html_element_click (unHTMLElement (toHTMLElement self))
- 
-foreign import javascript unsafe "$1[\"title\"] = $2;"
-        ghcjs_dom_html_element_set_title ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetTitle ::
-                    (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetTitle self val
-  = ghcjs_dom_html_element_set_title
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"title\"]"
-        ghcjs_dom_html_element_get_title ::
-        JSRef HTMLElement -> IO JSString
- 
-htmlElementGetTitle ::
-                    (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetTitle self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_title
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"lang\"] = $2;"
-        ghcjs_dom_html_element_set_lang ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetLang ::
-                   (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetLang self val
-  = ghcjs_dom_html_element_set_lang
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"lang\"]"
-        ghcjs_dom_html_element_get_lang :: JSRef HTMLElement -> IO JSString
- 
-htmlElementGetLang ::
-                   (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetLang self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_lang
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"translate\"] = $2;"
-        ghcjs_dom_html_element_set_translate ::
-        JSRef HTMLElement -> Bool -> IO ()
- 
-htmlElementSetTranslate ::
-                        (IsHTMLElement self) => self -> Bool -> IO ()
-htmlElementSetTranslate self val
-  = ghcjs_dom_html_element_set_translate
-      (unHTMLElement (toHTMLElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"translate\"] ? 1 : 0)"
-        ghcjs_dom_html_element_get_translate ::
-        JSRef HTMLElement -> IO Bool
- 
-htmlElementGetTranslate :: (IsHTMLElement self) => self -> IO Bool
-htmlElementGetTranslate self
-  = ghcjs_dom_html_element_get_translate
-      (unHTMLElement (toHTMLElement self))
- 
-foreign import javascript unsafe "$1[\"dir\"] = $2;"
-        ghcjs_dom_html_element_set_dir ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetDir ::
-                  (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetDir self val
-  = ghcjs_dom_html_element_set_dir
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"dir\"]"
-        ghcjs_dom_html_element_get_dir :: JSRef HTMLElement -> IO JSString
- 
-htmlElementGetDir ::
-                  (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetDir self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_dir
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"tabIndex\"] = $2;"
-        ghcjs_dom_html_element_set_tab_index ::
-        JSRef HTMLElement -> Int -> IO ()
- 
-htmlElementSetTabIndex ::
-                       (IsHTMLElement self) => self -> Int -> IO ()
-htmlElementSetTabIndex self val
-  = ghcjs_dom_html_element_set_tab_index
-      (unHTMLElement (toHTMLElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"tabIndex\"]"
-        ghcjs_dom_html_element_get_tab_index :: JSRef HTMLElement -> IO Int
- 
-htmlElementGetTabIndex :: (IsHTMLElement self) => self -> IO Int
-htmlElementGetTabIndex self
-  = ghcjs_dom_html_element_get_tab_index
-      (unHTMLElement (toHTMLElement self))
- 
-foreign import javascript unsafe "$1[\"draggable\"] = $2;"
-        ghcjs_dom_html_element_set_draggable ::
-        JSRef HTMLElement -> Bool -> IO ()
- 
-htmlElementSetDraggable ::
-                        (IsHTMLElement self) => self -> Bool -> IO ()
-htmlElementSetDraggable self val
-  = ghcjs_dom_html_element_set_draggable
-      (unHTMLElement (toHTMLElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"draggable\"] ? 1 : 0)"
-        ghcjs_dom_html_element_get_draggable ::
-        JSRef HTMLElement -> IO Bool
- 
-htmlElementGetDraggable :: (IsHTMLElement self) => self -> IO Bool
-htmlElementGetDraggable self
-  = ghcjs_dom_html_element_get_draggable
-      (unHTMLElement (toHTMLElement self))
- 
-foreign import javascript unsafe "$1[\"webkitdropzone\"] = $2;"
-        ghcjs_dom_html_element_set_webkitdropzone ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetWebkitdropzone ::
-                             (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetWebkitdropzone self val
-  = ghcjs_dom_html_element_set_webkitdropzone
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"webkitdropzone\"]"
-        ghcjs_dom_html_element_get_webkitdropzone ::
-        JSRef HTMLElement -> IO JSString
- 
-htmlElementGetWebkitdropzone ::
-                             (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetWebkitdropzone self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_webkitdropzone
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"hidden\"] = $2;"
-        ghcjs_dom_html_element_set_hidden ::
-        JSRef HTMLElement -> Bool -> IO ()
- 
-htmlElementSetHidden ::
-                     (IsHTMLElement self) => self -> Bool -> IO ()
-htmlElementSetHidden self val
-  = ghcjs_dom_html_element_set_hidden
-      (unHTMLElement (toHTMLElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"hidden\"] ? 1 : 0)"
-        ghcjs_dom_html_element_get_hidden :: JSRef HTMLElement -> IO Bool
- 
-htmlElementGetHidden :: (IsHTMLElement self) => self -> IO Bool
-htmlElementGetHidden self
-  = ghcjs_dom_html_element_get_hidden
-      (unHTMLElement (toHTMLElement self))
- 
-foreign import javascript unsafe "$1[\"accessKey\"] = $2;"
-        ghcjs_dom_html_element_set_access_key ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetAccessKey ::
-                        (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetAccessKey self val
-  = ghcjs_dom_html_element_set_access_key
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"accessKey\"]"
-        ghcjs_dom_html_element_get_access_key ::
-        JSRef HTMLElement -> IO JSString
- 
-htmlElementGetAccessKey ::
-                        (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetAccessKey self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_access_key
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"innerHTML\"] = $2;"
-        ghcjs_dom_html_element_set_inner_html ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetInnerHTML ::
-                        (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetInnerHTML self val
-  = ghcjs_dom_html_element_set_inner_html
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"innerHTML\"]"
-        ghcjs_dom_html_element_get_inner_html ::
-        JSRef HTMLElement -> IO JSString
- 
-htmlElementGetInnerHTML ::
-                        (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetInnerHTML self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_inner_html
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"innerText\"] = $2;"
-        ghcjs_dom_html_element_set_inner_text ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetInnerText ::
-                        (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetInnerText self val
-  = ghcjs_dom_html_element_set_inner_text
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"innerText\"]"
-        ghcjs_dom_html_element_get_inner_text ::
-        JSRef HTMLElement -> IO JSString
- 
-htmlElementGetInnerText ::
-                        (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetInnerText self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_inner_text
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"outerHTML\"] = $2;"
-        ghcjs_dom_html_element_set_outer_html ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetOuterHTML ::
-                        (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetOuterHTML self val
-  = ghcjs_dom_html_element_set_outer_html
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"outerHTML\"]"
-        ghcjs_dom_html_element_get_outer_html ::
-        JSRef HTMLElement -> IO JSString
- 
-htmlElementGetOuterHTML ::
-                        (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetOuterHTML self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_outer_html
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"outerText\"] = $2;"
-        ghcjs_dom_html_element_set_outer_text ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetOuterText ::
-                        (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetOuterText self val
-  = ghcjs_dom_html_element_set_outer_text
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"outerText\"]"
-        ghcjs_dom_html_element_get_outer_text ::
-        JSRef HTMLElement -> IO JSString
- 
-htmlElementGetOuterText ::
-                        (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetOuterText self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_outer_text
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"children\"]"
-        ghcjs_dom_html_element_get_children ::
-        JSRef HTMLElement -> IO (JSRef HTMLCollection)
- 
-htmlElementGetChildren ::
-                       (IsHTMLElement self) => self -> IO (Maybe HTMLCollection)
-htmlElementGetChildren self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_element_get_children
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe "$1[\"contentEditable\"] = $2;"
-        ghcjs_dom_html_element_set_content_editable ::
-        JSRef HTMLElement -> JSString -> IO ()
- 
-htmlElementSetContentEditable ::
-                              (IsHTMLElement self, ToJSString val) => self -> val -> IO ()
-htmlElementSetContentEditable self val
-  = ghcjs_dom_html_element_set_content_editable
-      (unHTMLElement (toHTMLElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"contentEditable\"]"
-        ghcjs_dom_html_element_get_content_editable ::
-        JSRef HTMLElement -> IO JSString
- 
-htmlElementGetContentEditable ::
-                              (IsHTMLElement self, FromJSString result) => self -> IO result
-htmlElementGetContentEditable self
-  = fromJSString <$>
-      (ghcjs_dom_html_element_get_content_editable
-         (unHTMLElement (toHTMLElement self)))
- 
-foreign import javascript unsafe
-        "($1[\"isContentEditable\"] ? 1 : 0)"
-        ghcjs_dom_html_element_get_is_content_editable ::
-        JSRef HTMLElement -> IO Bool
- 
-htmlElementGetIsContentEditable ::
-                                (IsHTMLElement self) => self -> IO Bool
-htmlElementGetIsContentEditable self
-  = ghcjs_dom_html_element_get_is_content_editable
-      (unHTMLElement (toHTMLElement self))
- 
-foreign import javascript unsafe "$1[\"spellcheck\"] = $2;"
-        ghcjs_dom_html_element_set_spellcheck ::
-        JSRef HTMLElement -> Bool -> IO ()
- 
-htmlElementSetSpellcheck ::
-                         (IsHTMLElement self) => self -> Bool -> IO ()
-htmlElementSetSpellcheck self val
-  = ghcjs_dom_html_element_set_spellcheck
-      (unHTMLElement (toHTMLElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"spellcheck\"] ? 1 : 0)"
-        ghcjs_dom_html_element_get_spellcheck ::
-        JSRef HTMLElement -> IO Bool
- 
-htmlElementGetSpellcheck :: (IsHTMLElement self) => self -> IO Bool
-htmlElementGetSpellcheck self
-  = ghcjs_dom_html_element_get_spellcheck
-      (unHTMLElement (toHTMLElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLElement
 #else
-module GHCJS.DOM.HTMLElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLEmbedElement.hs b/src/GHCJS/DOM/HTMLEmbedElement.hs
--- a/src/GHCJS/DOM/HTMLEmbedElement.hs
+++ b/src/GHCJS/DOM/HTMLEmbedElement.hs
@@ -1,140 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLEmbedElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLEmbedElement
-       (ghcjs_dom_html_embed_element_set_align, htmlEmbedElementSetAlign,
-        ghcjs_dom_html_embed_element_get_align, htmlEmbedElementGetAlign,
-        ghcjs_dom_html_embed_element_set_height, htmlEmbedElementSetHeight,
-        ghcjs_dom_html_embed_element_get_height, htmlEmbedElementGetHeight,
-        ghcjs_dom_html_embed_element_set_name, htmlEmbedElementSetName,
-        ghcjs_dom_html_embed_element_get_name, htmlEmbedElementGetName,
-        ghcjs_dom_html_embed_element_set_src, htmlEmbedElementSetSrc,
-        ghcjs_dom_html_embed_element_get_src, htmlEmbedElementGetSrc,
-        ghcjs_dom_html_embed_element_set_width, htmlEmbedElementSetWidth,
-        ghcjs_dom_html_embed_element_get_width, htmlEmbedElementGetWidth,
-        HTMLEmbedElement, IsHTMLEmbedElement, castToHTMLEmbedElement,
-        gTypeHTMLEmbedElement, toHTMLEmbedElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_embed_element_set_align ::
-        JSRef HTMLEmbedElement -> JSString -> IO ()
- 
-htmlEmbedElementSetAlign ::
-                         (IsHTMLEmbedElement self, ToJSString val) => self -> val -> IO ()
-htmlEmbedElementSetAlign self val
-  = ghcjs_dom_html_embed_element_set_align
-      (unHTMLEmbedElement (toHTMLEmbedElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_embed_element_get_align ::
-        JSRef HTMLEmbedElement -> IO JSString
- 
-htmlEmbedElementGetAlign ::
-                         (IsHTMLEmbedElement self, FromJSString result) => self -> IO result
-htmlEmbedElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_embed_element_get_align
-         (unHTMLEmbedElement (toHTMLEmbedElement self)))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_embed_element_set_height ::
-        JSRef HTMLEmbedElement -> Int -> IO ()
- 
-htmlEmbedElementSetHeight ::
-                          (IsHTMLEmbedElement self) => self -> Int -> IO ()
-htmlEmbedElementSetHeight self val
-  = ghcjs_dom_html_embed_element_set_height
-      (unHTMLEmbedElement (toHTMLEmbedElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_embed_element_get_height ::
-        JSRef HTMLEmbedElement -> IO Int
- 
-htmlEmbedElementGetHeight ::
-                          (IsHTMLEmbedElement self) => self -> IO Int
-htmlEmbedElementGetHeight self
-  = ghcjs_dom_html_embed_element_get_height
-      (unHTMLEmbedElement (toHTMLEmbedElement self))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_embed_element_set_name ::
-        JSRef HTMLEmbedElement -> JSString -> IO ()
- 
-htmlEmbedElementSetName ::
-                        (IsHTMLEmbedElement self, ToJSString val) => self -> val -> IO ()
-htmlEmbedElementSetName self val
-  = ghcjs_dom_html_embed_element_set_name
-      (unHTMLEmbedElement (toHTMLEmbedElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_embed_element_get_name ::
-        JSRef HTMLEmbedElement -> IO JSString
- 
-htmlEmbedElementGetName ::
-                        (IsHTMLEmbedElement self, FromJSString result) => self -> IO result
-htmlEmbedElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_embed_element_get_name
-         (unHTMLEmbedElement (toHTMLEmbedElement self)))
- 
-foreign import javascript unsafe "$1[\"src\"] = $2;"
-        ghcjs_dom_html_embed_element_set_src ::
-        JSRef HTMLEmbedElement -> JSString -> IO ()
- 
-htmlEmbedElementSetSrc ::
-                       (IsHTMLEmbedElement self, ToJSString val) => self -> val -> IO ()
-htmlEmbedElementSetSrc self val
-  = ghcjs_dom_html_embed_element_set_src
-      (unHTMLEmbedElement (toHTMLEmbedElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"src\"]"
-        ghcjs_dom_html_embed_element_get_src ::
-        JSRef HTMLEmbedElement -> IO JSString
- 
-htmlEmbedElementGetSrc ::
-                       (IsHTMLEmbedElement self, FromJSString result) => self -> IO result
-htmlEmbedElementGetSrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_embed_element_get_src
-         (unHTMLEmbedElement (toHTMLEmbedElement self)))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_embed_element_set_width ::
-        JSRef HTMLEmbedElement -> Int -> IO ()
- 
-htmlEmbedElementSetWidth ::
-                         (IsHTMLEmbedElement self) => self -> Int -> IO ()
-htmlEmbedElementSetWidth self val
-  = ghcjs_dom_html_embed_element_set_width
-      (unHTMLEmbedElement (toHTMLEmbedElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_embed_element_get_width ::
-        JSRef HTMLEmbedElement -> IO Int
- 
-htmlEmbedElementGetWidth ::
-                         (IsHTMLEmbedElement self) => self -> IO Int
-htmlEmbedElementGetWidth self
-  = ghcjs_dom_html_embed_element_get_width
-      (unHTMLEmbedElement (toHTMLEmbedElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement
 #else
-module GHCJS.DOM.HTMLEmbedElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLEmbedElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLEmbedElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLFieldSetElement.hs b/src/GHCJS/DOM/HTMLFieldSetElement.hs
--- a/src/GHCJS/DOM/HTMLFieldSetElement.hs
+++ b/src/GHCJS/DOM/HTMLFieldSetElement.hs
@@ -1,167 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLFieldSetElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLFieldSetElement
-       (ghcjs_dom_html_field_set_element_check_validity,
-        htmlFieldSetElementCheckValidity,
-        ghcjs_dom_html_field_set_element_set_custom_validity,
-        htmlFieldSetElementSetCustomValidity,
-        ghcjs_dom_html_field_set_element_set_disabled,
-        htmlFieldSetElementSetDisabled,
-        ghcjs_dom_html_field_set_element_get_disabled,
-        htmlFieldSetElementGetDisabled,
-        ghcjs_dom_html_field_set_element_get_form,
-        htmlFieldSetElementGetForm,
-        ghcjs_dom_html_field_set_element_set_name,
-        htmlFieldSetElementSetName,
-        ghcjs_dom_html_field_set_element_get_name,
-        htmlFieldSetElementGetName,
-        ghcjs_dom_html_field_set_element_get_elements,
-        htmlFieldSetElementGetElements,
-        ghcjs_dom_html_field_set_element_get_will_validate,
-        htmlFieldSetElementGetWillValidate,
-        ghcjs_dom_html_field_set_element_get_validity,
-        htmlFieldSetElementGetValidity,
-        ghcjs_dom_html_field_set_element_get_validation_message,
-        htmlFieldSetElementGetValidationMessage, HTMLFieldSetElement,
-        IsHTMLFieldSetElement, castToHTMLFieldSetElement,
-        gTypeHTMLFieldSetElement, toHTMLFieldSetElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"checkValidity\"]() ? 1 : 0)"
-        ghcjs_dom_html_field_set_element_check_validity ::
-        JSRef HTMLFieldSetElement -> IO Bool
- 
-htmlFieldSetElementCheckValidity ::
-                                 (IsHTMLFieldSetElement self) => self -> IO Bool
-htmlFieldSetElementCheckValidity self
-  = ghcjs_dom_html_field_set_element_check_validity
-      (unHTMLFieldSetElement (toHTMLFieldSetElement self))
- 
-foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
-        ghcjs_dom_html_field_set_element_set_custom_validity ::
-        JSRef HTMLFieldSetElement -> JSString -> IO ()
- 
-htmlFieldSetElementSetCustomValidity ::
-                                     (IsHTMLFieldSetElement self, ToJSString error) =>
-                                       self -> error -> IO ()
-htmlFieldSetElementSetCustomValidity self error
-  = ghcjs_dom_html_field_set_element_set_custom_validity
-      (unHTMLFieldSetElement (toHTMLFieldSetElement self))
-      (toJSString error)
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_field_set_element_set_disabled ::
-        JSRef HTMLFieldSetElement -> Bool -> IO ()
- 
-htmlFieldSetElementSetDisabled ::
-                               (IsHTMLFieldSetElement self) => self -> Bool -> IO ()
-htmlFieldSetElementSetDisabled self val
-  = ghcjs_dom_html_field_set_element_set_disabled
-      (unHTMLFieldSetElement (toHTMLFieldSetElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_field_set_element_get_disabled ::
-        JSRef HTMLFieldSetElement -> IO Bool
- 
-htmlFieldSetElementGetDisabled ::
-                               (IsHTMLFieldSetElement self) => self -> IO Bool
-htmlFieldSetElementGetDisabled self
-  = ghcjs_dom_html_field_set_element_get_disabled
-      (unHTMLFieldSetElement (toHTMLFieldSetElement self))
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_field_set_element_get_form ::
-        JSRef HTMLFieldSetElement -> IO (JSRef HTMLFormElement)
- 
-htmlFieldSetElementGetForm ::
-                           (IsHTMLFieldSetElement self) => self -> IO (Maybe HTMLFormElement)
-htmlFieldSetElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_field_set_element_get_form
-         (unHTMLFieldSetElement (toHTMLFieldSetElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_field_set_element_set_name ::
-        JSRef HTMLFieldSetElement -> JSString -> IO ()
- 
-htmlFieldSetElementSetName ::
-                           (IsHTMLFieldSetElement self, ToJSString val) =>
-                             self -> val -> IO ()
-htmlFieldSetElementSetName self val
-  = ghcjs_dom_html_field_set_element_set_name
-      (unHTMLFieldSetElement (toHTMLFieldSetElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_field_set_element_get_name ::
-        JSRef HTMLFieldSetElement -> IO JSString
- 
-htmlFieldSetElementGetName ::
-                           (IsHTMLFieldSetElement self, FromJSString result) =>
-                             self -> IO result
-htmlFieldSetElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_field_set_element_get_name
-         (unHTMLFieldSetElement (toHTMLFieldSetElement self)))
- 
-foreign import javascript unsafe "$1[\"elements\"]"
-        ghcjs_dom_html_field_set_element_get_elements ::
-        JSRef HTMLFieldSetElement -> IO (JSRef HTMLCollection)
- 
-htmlFieldSetElementGetElements ::
-                               (IsHTMLFieldSetElement self) => self -> IO (Maybe HTMLCollection)
-htmlFieldSetElementGetElements self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_field_set_element_get_elements
-         (unHTMLFieldSetElement (toHTMLFieldSetElement self)))
- 
-foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_field_set_element_get_will_validate ::
-        JSRef HTMLFieldSetElement -> IO Bool
- 
-htmlFieldSetElementGetWillValidate ::
-                                   (IsHTMLFieldSetElement self) => self -> IO Bool
-htmlFieldSetElementGetWillValidate self
-  = ghcjs_dom_html_field_set_element_get_will_validate
-      (unHTMLFieldSetElement (toHTMLFieldSetElement self))
- 
-foreign import javascript unsafe "$1[\"validity\"]"
-        ghcjs_dom_html_field_set_element_get_validity ::
-        JSRef HTMLFieldSetElement -> IO (JSRef ValidityState)
- 
-htmlFieldSetElementGetValidity ::
-                               (IsHTMLFieldSetElement self) => self -> IO (Maybe ValidityState)
-htmlFieldSetElementGetValidity self
-  = fmap ValidityState . maybeJSNull <$>
-      (ghcjs_dom_html_field_set_element_get_validity
-         (unHTMLFieldSetElement (toHTMLFieldSetElement self)))
- 
-foreign import javascript unsafe "$1[\"validationMessage\"]"
-        ghcjs_dom_html_field_set_element_get_validation_message ::
-        JSRef HTMLFieldSetElement -> IO JSString
- 
-htmlFieldSetElementGetValidationMessage ::
-                                        (IsHTMLFieldSetElement self, FromJSString result) =>
-                                          self -> IO result
-htmlFieldSetElementGetValidationMessage self
-  = fromJSString <$>
-      (ghcjs_dom_html_field_set_element_get_validation_message
-         (unHTMLFieldSetElement (toHTMLFieldSetElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement
 #else
-module GHCJS.DOM.HTMLFieldSetElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLFieldSetElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLFieldSetElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLFontElement.hs b/src/GHCJS/DOM/HTMLFontElement.hs
--- a/src/GHCJS/DOM/HTMLFontElement.hs
+++ b/src/GHCJS/DOM/HTMLFontElement.hs
@@ -1,94 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLFontElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLFontElement
-       (ghcjs_dom_html_font_element_set_color, htmlFontElementSetColor,
-        ghcjs_dom_html_font_element_get_color, htmlFontElementGetColor,
-        ghcjs_dom_html_font_element_set_face, htmlFontElementSetFace,
-        ghcjs_dom_html_font_element_get_face, htmlFontElementGetFace,
-        ghcjs_dom_html_font_element_set_size, htmlFontElementSetSize,
-        ghcjs_dom_html_font_element_get_size, htmlFontElementGetSize,
-        HTMLFontElement, IsHTMLFontElement, castToHTMLFontElement,
-        gTypeHTMLFontElement, toHTMLFontElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"color\"] = $2;"
-        ghcjs_dom_html_font_element_set_color ::
-        JSRef HTMLFontElement -> JSString -> IO ()
- 
-htmlFontElementSetColor ::
-                        (IsHTMLFontElement self, ToJSString val) => self -> val -> IO ()
-htmlFontElementSetColor self val
-  = ghcjs_dom_html_font_element_set_color
-      (unHTMLFontElement (toHTMLFontElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"color\"]"
-        ghcjs_dom_html_font_element_get_color ::
-        JSRef HTMLFontElement -> IO JSString
- 
-htmlFontElementGetColor ::
-                        (IsHTMLFontElement self, FromJSString result) => self -> IO result
-htmlFontElementGetColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_font_element_get_color
-         (unHTMLFontElement (toHTMLFontElement self)))
- 
-foreign import javascript unsafe "$1[\"face\"] = $2;"
-        ghcjs_dom_html_font_element_set_face ::
-        JSRef HTMLFontElement -> JSString -> IO ()
- 
-htmlFontElementSetFace ::
-                       (IsHTMLFontElement self, ToJSString val) => self -> val -> IO ()
-htmlFontElementSetFace self val
-  = ghcjs_dom_html_font_element_set_face
-      (unHTMLFontElement (toHTMLFontElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"face\"]"
-        ghcjs_dom_html_font_element_get_face ::
-        JSRef HTMLFontElement -> IO JSString
- 
-htmlFontElementGetFace ::
-                       (IsHTMLFontElement self, FromJSString result) => self -> IO result
-htmlFontElementGetFace self
-  = fromJSString <$>
-      (ghcjs_dom_html_font_element_get_face
-         (unHTMLFontElement (toHTMLFontElement self)))
- 
-foreign import javascript unsafe "$1[\"size\"] = $2;"
-        ghcjs_dom_html_font_element_set_size ::
-        JSRef HTMLFontElement -> JSString -> IO ()
- 
-htmlFontElementSetSize ::
-                       (IsHTMLFontElement self, ToJSString val) => self -> val -> IO ()
-htmlFontElementSetSize self val
-  = ghcjs_dom_html_font_element_set_size
-      (unHTMLFontElement (toHTMLFontElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"size\"]"
-        ghcjs_dom_html_font_element_get_size ::
-        JSRef HTMLFontElement -> IO JSString
- 
-htmlFontElementGetSize ::
-                       (IsHTMLFontElement self, FromJSString result) => self -> IO result
-htmlFontElementGetSize self
-  = fromJSString <$>
-      (ghcjs_dom_html_font_element_get_size
-         (unHTMLFontElement (toHTMLFontElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLFontElement
 #else
-module GHCJS.DOM.HTMLFontElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLFontElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLFontElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLFontElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLFormControlsCollection.hs b/src/GHCJS/DOM/HTMLFormControlsCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLFormControlsCollection.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLFormControlsCollection (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLFormElement.hs b/src/GHCJS/DOM/HTMLFormElement.hs
--- a/src/GHCJS/DOM/HTMLFormElement.hs
+++ b/src/GHCJS/DOM/HTMLFormElement.hs
@@ -1,377 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLFormElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLFormElement
-       (ghcjs_dom_html_form_element_get, htmlFormElement_get,
-        ghcjs_dom_html_form_element_submit, htmlFormElementSubmit,
-        ghcjs_dom_html_form_element_reset, htmlFormElementReset,
-        ghcjs_dom_html_form_element_check_validity,
-        htmlFormElementCheckValidity,
-        ghcjs_dom_html_form_element_request_autocomplete,
-        htmlFormElementRequestAutocomplete,
-        ghcjs_dom_html_form_element_set_accept_charset,
-        htmlFormElementSetAcceptCharset,
-        ghcjs_dom_html_form_element_get_accept_charset,
-        htmlFormElementGetAcceptCharset,
-        ghcjs_dom_html_form_element_set_action, htmlFormElementSetAction,
-        ghcjs_dom_html_form_element_get_action, htmlFormElementGetAction,
-        ghcjs_dom_html_form_element_set_autocomplete,
-        htmlFormElementSetAutocomplete,
-        ghcjs_dom_html_form_element_get_autocomplete,
-        htmlFormElementGetAutocomplete,
-        ghcjs_dom_html_form_element_set_enctype, htmlFormElementSetEnctype,
-        ghcjs_dom_html_form_element_get_enctype, htmlFormElementGetEnctype,
-        ghcjs_dom_html_form_element_set_encoding,
-        htmlFormElementSetEncoding,
-        ghcjs_dom_html_form_element_get_encoding,
-        htmlFormElementGetEncoding, ghcjs_dom_html_form_element_set_method,
-        htmlFormElementSetMethod, ghcjs_dom_html_form_element_get_method,
-        htmlFormElementGetMethod, ghcjs_dom_html_form_element_set_name,
-        htmlFormElementSetName, ghcjs_dom_html_form_element_get_name,
-        htmlFormElementGetName,
-        ghcjs_dom_html_form_element_set_no_validate,
-        htmlFormElementSetNoValidate,
-        ghcjs_dom_html_form_element_get_no_validate,
-        htmlFormElementGetNoValidate,
-        ghcjs_dom_html_form_element_set_target, htmlFormElementSetTarget,
-        ghcjs_dom_html_form_element_get_target, htmlFormElementGetTarget,
-        ghcjs_dom_html_form_element_get_elements,
-        htmlFormElementGetElements, ghcjs_dom_html_form_element_get_length,
-        htmlFormElementGetLength,
-        ghcjs_dom_html_form_element_set_autocorrect,
-        htmlFormElementSetAutocorrect,
-        ghcjs_dom_html_form_element_get_autocorrect,
-        htmlFormElementGetAutocorrect,
-        ghcjs_dom_html_form_element_set_autocapitalize,
-        htmlFormElementSetAutocapitalize,
-        ghcjs_dom_html_form_element_get_autocapitalize,
-        htmlFormElementGetAutocapitalize, HTMLFormElement,
-        IsHTMLFormElement, castToHTMLFormElement, gTypeHTMLFormElement,
-        toHTMLFormElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"_get\"]($2)"
-        ghcjs_dom_html_form_element_get ::
-        JSRef HTMLFormElement -> Word -> IO (JSRef Element)
- 
-htmlFormElement_get ::
-                    (IsHTMLFormElement self) => self -> Word -> IO (Maybe Element)
-htmlFormElement_get self index
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_html_form_element_get
-         (unHTMLFormElement (toHTMLFormElement self))
-         index)
- 
-foreign import javascript unsafe "$1[\"submit\"]()"
-        ghcjs_dom_html_form_element_submit ::
-        JSRef HTMLFormElement -> IO ()
- 
-htmlFormElementSubmit :: (IsHTMLFormElement self) => self -> IO ()
-htmlFormElementSubmit self
-  = ghcjs_dom_html_form_element_submit
-      (unHTMLFormElement (toHTMLFormElement self))
- 
-foreign import javascript unsafe "$1[\"reset\"]()"
-        ghcjs_dom_html_form_element_reset :: JSRef HTMLFormElement -> IO ()
- 
-htmlFormElementReset :: (IsHTMLFormElement self) => self -> IO ()
-htmlFormElementReset self
-  = ghcjs_dom_html_form_element_reset
-      (unHTMLFormElement (toHTMLFormElement self))
- 
-foreign import javascript unsafe
-        "($1[\"checkValidity\"]() ? 1 : 0)"
-        ghcjs_dom_html_form_element_check_validity ::
-        JSRef HTMLFormElement -> IO Bool
- 
-htmlFormElementCheckValidity ::
-                             (IsHTMLFormElement self) => self -> IO Bool
-htmlFormElementCheckValidity self
-  = ghcjs_dom_html_form_element_check_validity
-      (unHTMLFormElement (toHTMLFormElement self))
- 
-foreign import javascript unsafe "$1[\"requestAutocomplete\"]()"
-        ghcjs_dom_html_form_element_request_autocomplete ::
-        JSRef HTMLFormElement -> IO ()
- 
-htmlFormElementRequestAutocomplete ::
-                                   (IsHTMLFormElement self) => self -> IO ()
-htmlFormElementRequestAutocomplete self
-  = ghcjs_dom_html_form_element_request_autocomplete
-      (unHTMLFormElement (toHTMLFormElement self))
- 
-foreign import javascript unsafe "$1[\"acceptCharset\"] = $2;"
-        ghcjs_dom_html_form_element_set_accept_charset ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetAcceptCharset ::
-                                (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetAcceptCharset self val
-  = ghcjs_dom_html_form_element_set_accept_charset
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"acceptCharset\"]"
-        ghcjs_dom_html_form_element_get_accept_charset ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetAcceptCharset ::
-                                (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetAcceptCharset self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_accept_charset
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"action\"] = $2;"
-        ghcjs_dom_html_form_element_set_action ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetAction ::
-                         (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetAction self val
-  = ghcjs_dom_html_form_element_set_action
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"action\"]"
-        ghcjs_dom_html_form_element_get_action ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetAction ::
-                         (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetAction self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_action
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"autocomplete\"] = $2;"
-        ghcjs_dom_html_form_element_set_autocomplete ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetAutocomplete ::
-                               (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetAutocomplete self val
-  = ghcjs_dom_html_form_element_set_autocomplete
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"autocomplete\"]"
-        ghcjs_dom_html_form_element_get_autocomplete ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetAutocomplete ::
-                               (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetAutocomplete self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_autocomplete
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"enctype\"] = $2;"
-        ghcjs_dom_html_form_element_set_enctype ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetEnctype ::
-                          (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetEnctype self val
-  = ghcjs_dom_html_form_element_set_enctype
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"enctype\"]"
-        ghcjs_dom_html_form_element_get_enctype ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetEnctype ::
-                          (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetEnctype self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_enctype
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"encoding\"] = $2;"
-        ghcjs_dom_html_form_element_set_encoding ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetEncoding ::
-                           (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetEncoding self val
-  = ghcjs_dom_html_form_element_set_encoding
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"encoding\"]"
-        ghcjs_dom_html_form_element_get_encoding ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetEncoding ::
-                           (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetEncoding self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_encoding
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"method\"] = $2;"
-        ghcjs_dom_html_form_element_set_method ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetMethod ::
-                         (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetMethod self val
-  = ghcjs_dom_html_form_element_set_method
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"method\"]"
-        ghcjs_dom_html_form_element_get_method ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetMethod ::
-                         (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetMethod self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_method
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_form_element_set_name ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetName ::
-                       (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetName self val
-  = ghcjs_dom_html_form_element_set_name
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_form_element_get_name ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetName ::
-                       (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_name
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"noValidate\"] = $2;"
-        ghcjs_dom_html_form_element_set_no_validate ::
-        JSRef HTMLFormElement -> Bool -> IO ()
- 
-htmlFormElementSetNoValidate ::
-                             (IsHTMLFormElement self) => self -> Bool -> IO ()
-htmlFormElementSetNoValidate self val
-  = ghcjs_dom_html_form_element_set_no_validate
-      (unHTMLFormElement (toHTMLFormElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"noValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_form_element_get_no_validate ::
-        JSRef HTMLFormElement -> IO Bool
- 
-htmlFormElementGetNoValidate ::
-                             (IsHTMLFormElement self) => self -> IO Bool
-htmlFormElementGetNoValidate self
-  = ghcjs_dom_html_form_element_get_no_validate
-      (unHTMLFormElement (toHTMLFormElement self))
- 
-foreign import javascript unsafe "$1[\"target\"] = $2;"
-        ghcjs_dom_html_form_element_set_target ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetTarget ::
-                         (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetTarget self val
-  = ghcjs_dom_html_form_element_set_target
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"target\"]"
-        ghcjs_dom_html_form_element_get_target ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetTarget ::
-                         (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetTarget self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_target
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"elements\"]"
-        ghcjs_dom_html_form_element_get_elements ::
-        JSRef HTMLFormElement -> IO (JSRef HTMLCollection)
- 
-htmlFormElementGetElements ::
-                           (IsHTMLFormElement self) => self -> IO (Maybe HTMLCollection)
-htmlFormElementGetElements self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_form_element_get_elements
-         (unHTMLFormElement (toHTMLFormElement self)))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_html_form_element_get_length ::
-        JSRef HTMLFormElement -> IO Int
- 
-htmlFormElementGetLength ::
-                         (IsHTMLFormElement self) => self -> IO Int
-htmlFormElementGetLength self
-  = ghcjs_dom_html_form_element_get_length
-      (unHTMLFormElement (toHTMLFormElement self))
- 
-foreign import javascript unsafe "$1[\"autocorrect\"] = $2;"
-        ghcjs_dom_html_form_element_set_autocorrect ::
-        JSRef HTMLFormElement -> Bool -> IO ()
- 
-htmlFormElementSetAutocorrect ::
-                              (IsHTMLFormElement self) => self -> Bool -> IO ()
-htmlFormElementSetAutocorrect self val
-  = ghcjs_dom_html_form_element_set_autocorrect
-      (unHTMLFormElement (toHTMLFormElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
-        ghcjs_dom_html_form_element_get_autocorrect ::
-        JSRef HTMLFormElement -> IO Bool
- 
-htmlFormElementGetAutocorrect ::
-                              (IsHTMLFormElement self) => self -> IO Bool
-htmlFormElementGetAutocorrect self
-  = ghcjs_dom_html_form_element_get_autocorrect
-      (unHTMLFormElement (toHTMLFormElement self))
- 
-foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
-        ghcjs_dom_html_form_element_set_autocapitalize ::
-        JSRef HTMLFormElement -> JSString -> IO ()
- 
-htmlFormElementSetAutocapitalize ::
-                                 (IsHTMLFormElement self, ToJSString val) => self -> val -> IO ()
-htmlFormElementSetAutocapitalize self val
-  = ghcjs_dom_html_form_element_set_autocapitalize
-      (unHTMLFormElement (toHTMLFormElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"autocapitalize\"]"
-        ghcjs_dom_html_form_element_get_autocapitalize ::
-        JSRef HTMLFormElement -> IO JSString
- 
-htmlFormElementGetAutocapitalize ::
-                                 (IsHTMLFormElement self, FromJSString result) => self -> IO result
-htmlFormElementGetAutocapitalize self
-  = fromJSString <$>
-      (ghcjs_dom_html_form_element_get_autocapitalize
-         (unHTMLFormElement (toHTMLFormElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLFormElement
 #else
-module GHCJS.DOM.HTMLFormElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLFormElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLFormElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLFormElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLFrameElement.hs b/src/GHCJS/DOM/HTMLFrameElement.hs
--- a/src/GHCJS/DOM/HTMLFrameElement.hs
+++ b/src/GHCJS/DOM/HTMLFrameElement.hs
@@ -1,273 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLFrameElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLFrameElement
-       (ghcjs_dom_html_frame_element_set_frame_border,
-        htmlFrameElementSetFrameBorder,
-        ghcjs_dom_html_frame_element_get_frame_border,
-        htmlFrameElementGetFrameBorder,
-        ghcjs_dom_html_frame_element_set_long_desc,
-        htmlFrameElementSetLongDesc,
-        ghcjs_dom_html_frame_element_get_long_desc,
-        htmlFrameElementGetLongDesc,
-        ghcjs_dom_html_frame_element_set_margin_height,
-        htmlFrameElementSetMarginHeight,
-        ghcjs_dom_html_frame_element_get_margin_height,
-        htmlFrameElementGetMarginHeight,
-        ghcjs_dom_html_frame_element_set_margin_width,
-        htmlFrameElementSetMarginWidth,
-        ghcjs_dom_html_frame_element_get_margin_width,
-        htmlFrameElementGetMarginWidth,
-        ghcjs_dom_html_frame_element_set_name, htmlFrameElementSetName,
-        ghcjs_dom_html_frame_element_get_name, htmlFrameElementGetName,
-        ghcjs_dom_html_frame_element_set_no_resize,
-        htmlFrameElementSetNoResize,
-        ghcjs_dom_html_frame_element_get_no_resize,
-        htmlFrameElementGetNoResize,
-        ghcjs_dom_html_frame_element_set_scrolling,
-        htmlFrameElementSetScrolling,
-        ghcjs_dom_html_frame_element_get_scrolling,
-        htmlFrameElementGetScrolling, ghcjs_dom_html_frame_element_set_src,
-        htmlFrameElementSetSrc, ghcjs_dom_html_frame_element_get_src,
-        htmlFrameElementGetSrc,
-        ghcjs_dom_html_frame_element_get_content_document,
-        htmlFrameElementGetContentDocument,
-        ghcjs_dom_html_frame_element_get_content_window,
-        htmlFrameElementGetContentWindow,
-        ghcjs_dom_html_frame_element_get_width, htmlFrameElementGetWidth,
-        ghcjs_dom_html_frame_element_get_height, htmlFrameElementGetHeight,
-        HTMLFrameElement, IsHTMLFrameElement, castToHTMLFrameElement,
-        gTypeHTMLFrameElement, toHTMLFrameElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"frameBorder\"] = $2;"
-        ghcjs_dom_html_frame_element_set_frame_border ::
-        JSRef HTMLFrameElement -> JSString -> IO ()
- 
-htmlFrameElementSetFrameBorder ::
-                               (IsHTMLFrameElement self, ToJSString val) => self -> val -> IO ()
-htmlFrameElementSetFrameBorder self val
-  = ghcjs_dom_html_frame_element_set_frame_border
-      (unHTMLFrameElement (toHTMLFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"frameBorder\"]"
-        ghcjs_dom_html_frame_element_get_frame_border ::
-        JSRef HTMLFrameElement -> IO JSString
- 
-htmlFrameElementGetFrameBorder ::
-                               (IsHTMLFrameElement self, FromJSString result) => self -> IO result
-htmlFrameElementGetFrameBorder self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_element_get_frame_border
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"longDesc\"] = $2;"
-        ghcjs_dom_html_frame_element_set_long_desc ::
-        JSRef HTMLFrameElement -> JSString -> IO ()
- 
-htmlFrameElementSetLongDesc ::
-                            (IsHTMLFrameElement self, ToJSString val) => self -> val -> IO ()
-htmlFrameElementSetLongDesc self val
-  = ghcjs_dom_html_frame_element_set_long_desc
-      (unHTMLFrameElement (toHTMLFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"longDesc\"]"
-        ghcjs_dom_html_frame_element_get_long_desc ::
-        JSRef HTMLFrameElement -> IO JSString
- 
-htmlFrameElementGetLongDesc ::
-                            (IsHTMLFrameElement self, FromJSString result) => self -> IO result
-htmlFrameElementGetLongDesc self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_element_get_long_desc
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"marginHeight\"] = $2;"
-        ghcjs_dom_html_frame_element_set_margin_height ::
-        JSRef HTMLFrameElement -> JSString -> IO ()
- 
-htmlFrameElementSetMarginHeight ::
-                                (IsHTMLFrameElement self, ToJSString val) => self -> val -> IO ()
-htmlFrameElementSetMarginHeight self val
-  = ghcjs_dom_html_frame_element_set_margin_height
-      (unHTMLFrameElement (toHTMLFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"marginHeight\"]"
-        ghcjs_dom_html_frame_element_get_margin_height ::
-        JSRef HTMLFrameElement -> IO JSString
- 
-htmlFrameElementGetMarginHeight ::
-                                (IsHTMLFrameElement self, FromJSString result) => self -> IO result
-htmlFrameElementGetMarginHeight self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_element_get_margin_height
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"marginWidth\"] = $2;"
-        ghcjs_dom_html_frame_element_set_margin_width ::
-        JSRef HTMLFrameElement -> JSString -> IO ()
- 
-htmlFrameElementSetMarginWidth ::
-                               (IsHTMLFrameElement self, ToJSString val) => self -> val -> IO ()
-htmlFrameElementSetMarginWidth self val
-  = ghcjs_dom_html_frame_element_set_margin_width
-      (unHTMLFrameElement (toHTMLFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"marginWidth\"]"
-        ghcjs_dom_html_frame_element_get_margin_width ::
-        JSRef HTMLFrameElement -> IO JSString
- 
-htmlFrameElementGetMarginWidth ::
-                               (IsHTMLFrameElement self, FromJSString result) => self -> IO result
-htmlFrameElementGetMarginWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_element_get_margin_width
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_frame_element_set_name ::
-        JSRef HTMLFrameElement -> JSString -> IO ()
- 
-htmlFrameElementSetName ::
-                        (IsHTMLFrameElement self, ToJSString val) => self -> val -> IO ()
-htmlFrameElementSetName self val
-  = ghcjs_dom_html_frame_element_set_name
-      (unHTMLFrameElement (toHTMLFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_frame_element_get_name ::
-        JSRef HTMLFrameElement -> IO JSString
- 
-htmlFrameElementGetName ::
-                        (IsHTMLFrameElement self, FromJSString result) => self -> IO result
-htmlFrameElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_element_get_name
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"noResize\"] = $2;"
-        ghcjs_dom_html_frame_element_set_no_resize ::
-        JSRef HTMLFrameElement -> Bool -> IO ()
- 
-htmlFrameElementSetNoResize ::
-                            (IsHTMLFrameElement self) => self -> Bool -> IO ()
-htmlFrameElementSetNoResize self val
-  = ghcjs_dom_html_frame_element_set_no_resize
-      (unHTMLFrameElement (toHTMLFrameElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"noResize\"] ? 1 : 0)"
-        ghcjs_dom_html_frame_element_get_no_resize ::
-        JSRef HTMLFrameElement -> IO Bool
- 
-htmlFrameElementGetNoResize ::
-                            (IsHTMLFrameElement self) => self -> IO Bool
-htmlFrameElementGetNoResize self
-  = ghcjs_dom_html_frame_element_get_no_resize
-      (unHTMLFrameElement (toHTMLFrameElement self))
- 
-foreign import javascript unsafe "$1[\"scrolling\"] = $2;"
-        ghcjs_dom_html_frame_element_set_scrolling ::
-        JSRef HTMLFrameElement -> JSString -> IO ()
- 
-htmlFrameElementSetScrolling ::
-                             (IsHTMLFrameElement self, ToJSString val) => self -> val -> IO ()
-htmlFrameElementSetScrolling self val
-  = ghcjs_dom_html_frame_element_set_scrolling
-      (unHTMLFrameElement (toHTMLFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"scrolling\"]"
-        ghcjs_dom_html_frame_element_get_scrolling ::
-        JSRef HTMLFrameElement -> IO JSString
- 
-htmlFrameElementGetScrolling ::
-                             (IsHTMLFrameElement self, FromJSString result) => self -> IO result
-htmlFrameElementGetScrolling self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_element_get_scrolling
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"src\"] = $2;"
-        ghcjs_dom_html_frame_element_set_src ::
-        JSRef HTMLFrameElement -> JSString -> IO ()
- 
-htmlFrameElementSetSrc ::
-                       (IsHTMLFrameElement self, ToJSString val) => self -> val -> IO ()
-htmlFrameElementSetSrc self val
-  = ghcjs_dom_html_frame_element_set_src
-      (unHTMLFrameElement (toHTMLFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"src\"]"
-        ghcjs_dom_html_frame_element_get_src ::
-        JSRef HTMLFrameElement -> IO JSString
- 
-htmlFrameElementGetSrc ::
-                       (IsHTMLFrameElement self, FromJSString result) => self -> IO result
-htmlFrameElementGetSrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_element_get_src
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"contentDocument\"]"
-        ghcjs_dom_html_frame_element_get_content_document ::
-        JSRef HTMLFrameElement -> IO (JSRef Document)
- 
-htmlFrameElementGetContentDocument ::
-                                   (IsHTMLFrameElement self) => self -> IO (Maybe Document)
-htmlFrameElementGetContentDocument self
-  = fmap Document . maybeJSNull <$>
-      (ghcjs_dom_html_frame_element_get_content_document
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"contentWindow\"]"
-        ghcjs_dom_html_frame_element_get_content_window ::
-        JSRef HTMLFrameElement -> IO (JSRef DOMWindow)
- 
-htmlFrameElementGetContentWindow ::
-                                 (IsHTMLFrameElement self) => self -> IO (Maybe DOMWindow)
-htmlFrameElementGetContentWindow self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_html_frame_element_get_content_window
-         (unHTMLFrameElement (toHTMLFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_frame_element_get_width ::
-        JSRef HTMLFrameElement -> IO Int
- 
-htmlFrameElementGetWidth ::
-                         (IsHTMLFrameElement self) => self -> IO Int
-htmlFrameElementGetWidth self
-  = ghcjs_dom_html_frame_element_get_width
-      (unHTMLFrameElement (toHTMLFrameElement self))
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_frame_element_get_height ::
-        JSRef HTMLFrameElement -> IO Int
- 
-htmlFrameElementGetHeight ::
-                          (IsHTMLFrameElement self) => self -> IO Int
-htmlFrameElementGetHeight self
-  = ghcjs_dom_html_frame_element_get_height
-      (unHTMLFrameElement (toHTMLFrameElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLFrameElement
 #else
-module GHCJS.DOM.HTMLFrameElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLFrameElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLFrameElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLFrameElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLFrameSetElement.hs b/src/GHCJS/DOM/HTMLFrameSetElement.hs
--- a/src/GHCJS/DOM/HTMLFrameSetElement.hs
+++ b/src/GHCJS/DOM/HTMLFrameSetElement.hs
@@ -1,156 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLFrameSetElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLFrameSetElement
-       (ghcjs_dom_html_frame_set_element_set_cols,
-        htmlFrameSetElementSetCols,
-        ghcjs_dom_html_frame_set_element_get_cols,
-        htmlFrameSetElementGetCols,
-        ghcjs_dom_html_frame_set_element_set_rows,
-        htmlFrameSetElementSetRows,
-        ghcjs_dom_html_frame_set_element_get_rows,
-        htmlFrameSetElementGetRows, htmlFrameSetElementOnbeforeunload,
-        htmlFrameSetElementOnhashchange, htmlFrameSetElementOnmessage,
-        htmlFrameSetElementOnoffline, htmlFrameSetElementOnonline,
-        htmlFrameSetElementOnpopstate, htmlFrameSetElementOnresize,
-        htmlFrameSetElementOnstorage, htmlFrameSetElementOnunload,
-        htmlFrameSetElementOnorientationchange, htmlFrameSetElementOnblur,
-        htmlFrameSetElementOnerror, htmlFrameSetElementOnfocus,
-        htmlFrameSetElementOnload, HTMLFrameSetElement,
-        IsHTMLFrameSetElement, castToHTMLFrameSetElement,
-        gTypeHTMLFrameSetElement, toHTMLFrameSetElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"cols\"] = $2;"
-        ghcjs_dom_html_frame_set_element_set_cols ::
-        JSRef HTMLFrameSetElement -> JSString -> IO ()
- 
-htmlFrameSetElementSetCols ::
-                           (IsHTMLFrameSetElement self, ToJSString val) =>
-                             self -> val -> IO ()
-htmlFrameSetElementSetCols self val
-  = ghcjs_dom_html_frame_set_element_set_cols
-      (unHTMLFrameSetElement (toHTMLFrameSetElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cols\"]"
-        ghcjs_dom_html_frame_set_element_get_cols ::
-        JSRef HTMLFrameSetElement -> IO JSString
- 
-htmlFrameSetElementGetCols ::
-                           (IsHTMLFrameSetElement self, FromJSString result) =>
-                             self -> IO result
-htmlFrameSetElementGetCols self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_set_element_get_cols
-         (unHTMLFrameSetElement (toHTMLFrameSetElement self)))
- 
-foreign import javascript unsafe "$1[\"rows\"] = $2;"
-        ghcjs_dom_html_frame_set_element_set_rows ::
-        JSRef HTMLFrameSetElement -> JSString -> IO ()
- 
-htmlFrameSetElementSetRows ::
-                           (IsHTMLFrameSetElement self, ToJSString val) =>
-                             self -> val -> IO ()
-htmlFrameSetElementSetRows self val
-  = ghcjs_dom_html_frame_set_element_set_rows
-      (unHTMLFrameSetElement (toHTMLFrameSetElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"rows\"]"
-        ghcjs_dom_html_frame_set_element_get_rows ::
-        JSRef HTMLFrameSetElement -> IO JSString
- 
-htmlFrameSetElementGetRows ::
-                           (IsHTMLFrameSetElement self, FromJSString result) =>
-                             self -> IO result
-htmlFrameSetElementGetRows self
-  = fromJSString <$>
-      (ghcjs_dom_html_frame_set_element_get_rows
-         (unHTMLFrameSetElement (toHTMLFrameSetElement self)))
- 
-htmlFrameSetElementOnbeforeunload ::
-                                  (IsHTMLFrameSetElement self) =>
-                                    Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnbeforeunload = (connect "beforeunload")
- 
-htmlFrameSetElementOnhashchange ::
-                                (IsHTMLFrameSetElement self) =>
-                                  Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnhashchange = (connect "hashchange")
- 
-htmlFrameSetElementOnmessage ::
-                             (IsHTMLFrameSetElement self) =>
-                               Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnmessage = (connect "message")
- 
-htmlFrameSetElementOnoffline ::
-                             (IsHTMLFrameSetElement self) =>
-                               Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnoffline = (connect "offline")
- 
-htmlFrameSetElementOnonline ::
-                            (IsHTMLFrameSetElement self) =>
-                              Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnonline = (connect "online")
- 
-htmlFrameSetElementOnpopstate ::
-                              (IsHTMLFrameSetElement self) =>
-                                Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnpopstate = (connect "popstate")
- 
-htmlFrameSetElementOnresize ::
-                            (IsHTMLFrameSetElement self) =>
-                              Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnresize = (connect "resize")
- 
-htmlFrameSetElementOnstorage ::
-                             (IsHTMLFrameSetElement self) =>
-                               Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnstorage = (connect "storage")
- 
-htmlFrameSetElementOnunload ::
-                            (IsHTMLFrameSetElement self) =>
-                              Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnunload = (connect "unload")
- 
-htmlFrameSetElementOnorientationchange ::
-                                       (IsHTMLFrameSetElement self) =>
-                                         Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnorientationchange
-  = (connect "orientationchange")
- 
-htmlFrameSetElementOnblur ::
-                          (IsHTMLFrameSetElement self) =>
-                            Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnblur = (connect "blur")
- 
-htmlFrameSetElementOnerror ::
-                           (IsHTMLFrameSetElement self) =>
-                             Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnerror = (connect "error")
- 
-htmlFrameSetElementOnfocus ::
-                           (IsHTMLFrameSetElement self) =>
-                             Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnfocus = (connect "focus")
- 
-htmlFrameSetElementOnload ::
-                          (IsHTMLFrameSetElement self) =>
-                            Signal self (EventM UIEvent self ())
-htmlFrameSetElementOnload = (connect "load")
+  module GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement
 #else
-module GHCJS.DOM.HTMLFrameSetElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLFrameSetElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLFrameSetElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLHRElement.hs b/src/GHCJS/DOM/HTMLHRElement.hs
--- a/src/GHCJS/DOM/HTMLHRElement.hs
+++ b/src/GHCJS/DOM/HTMLHRElement.hs
@@ -1,117 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLHRElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLHRElement
-       (ghcjs_dom_htmlhr_element_set_align, htmlhrElementSetAlign,
-        ghcjs_dom_htmlhr_element_get_align, htmlhrElementGetAlign,
-        ghcjs_dom_htmlhr_element_set_no_shade, htmlhrElementSetNoShade,
-        ghcjs_dom_htmlhr_element_get_no_shade, htmlhrElementGetNoShade,
-        ghcjs_dom_htmlhr_element_set_size, htmlhrElementSetSize,
-        ghcjs_dom_htmlhr_element_get_size, htmlhrElementGetSize,
-        ghcjs_dom_htmlhr_element_set_width, htmlhrElementSetWidth,
-        ghcjs_dom_htmlhr_element_get_width, htmlhrElementGetWidth,
-        HTMLHRElement, IsHTMLHRElement, castToHTMLHRElement,
-        gTypeHTMLHRElement, toHTMLHRElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_htmlhr_element_set_align ::
-        JSRef HTMLHRElement -> JSString -> IO ()
- 
-htmlhrElementSetAlign ::
-                      (IsHTMLHRElement self, ToJSString val) => self -> val -> IO ()
-htmlhrElementSetAlign self val
-  = ghcjs_dom_htmlhr_element_set_align
-      (unHTMLHRElement (toHTMLHRElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_htmlhr_element_get_align ::
-        JSRef HTMLHRElement -> IO JSString
- 
-htmlhrElementGetAlign ::
-                      (IsHTMLHRElement self, FromJSString result) => self -> IO result
-htmlhrElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_htmlhr_element_get_align
-         (unHTMLHRElement (toHTMLHRElement self)))
- 
-foreign import javascript unsafe "$1[\"noShade\"] = $2;"
-        ghcjs_dom_htmlhr_element_set_no_shade ::
-        JSRef HTMLHRElement -> Bool -> IO ()
- 
-htmlhrElementSetNoShade ::
-                        (IsHTMLHRElement self) => self -> Bool -> IO ()
-htmlhrElementSetNoShade self val
-  = ghcjs_dom_htmlhr_element_set_no_shade
-      (unHTMLHRElement (toHTMLHRElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"noShade\"] ? 1 : 0)"
-        ghcjs_dom_htmlhr_element_get_no_shade ::
-        JSRef HTMLHRElement -> IO Bool
- 
-htmlhrElementGetNoShade ::
-                        (IsHTMLHRElement self) => self -> IO Bool
-htmlhrElementGetNoShade self
-  = ghcjs_dom_htmlhr_element_get_no_shade
-      (unHTMLHRElement (toHTMLHRElement self))
- 
-foreign import javascript unsafe "$1[\"size\"] = $2;"
-        ghcjs_dom_htmlhr_element_set_size ::
-        JSRef HTMLHRElement -> JSString -> IO ()
- 
-htmlhrElementSetSize ::
-                     (IsHTMLHRElement self, ToJSString val) => self -> val -> IO ()
-htmlhrElementSetSize self val
-  = ghcjs_dom_htmlhr_element_set_size
-      (unHTMLHRElement (toHTMLHRElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"size\"]"
-        ghcjs_dom_htmlhr_element_get_size ::
-        JSRef HTMLHRElement -> IO JSString
- 
-htmlhrElementGetSize ::
-                     (IsHTMLHRElement self, FromJSString result) => self -> IO result
-htmlhrElementGetSize self
-  = fromJSString <$>
-      (ghcjs_dom_htmlhr_element_get_size
-         (unHTMLHRElement (toHTMLHRElement self)))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_htmlhr_element_set_width ::
-        JSRef HTMLHRElement -> JSString -> IO ()
- 
-htmlhrElementSetWidth ::
-                      (IsHTMLHRElement self, ToJSString val) => self -> val -> IO ()
-htmlhrElementSetWidth self val
-  = ghcjs_dom_htmlhr_element_set_width
-      (unHTMLHRElement (toHTMLHRElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_htmlhr_element_get_width ::
-        JSRef HTMLHRElement -> IO JSString
- 
-htmlhrElementGetWidth ::
-                      (IsHTMLHRElement self, FromJSString result) => self -> IO result
-htmlhrElementGetWidth self
-  = fromJSString <$>
-      (ghcjs_dom_htmlhr_element_get_width
-         (unHTMLHRElement (toHTMLHRElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLHRElement
 #else
-module GHCJS.DOM.HTMLHRElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLHRElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLHRElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLHRElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLHeadElement.hs b/src/GHCJS/DOM/HTMLHeadElement.hs
--- a/src/GHCJS/DOM/HTMLHeadElement.hs
+++ b/src/GHCJS/DOM/HTMLHeadElement.hs
@@ -1,46 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLHeadElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLHeadElement
-       (ghcjs_dom_html_head_element_set_profile,
-        htmlHeadElementSetProfile, ghcjs_dom_html_head_element_get_profile,
-        htmlHeadElementGetProfile, HTMLHeadElement, IsHTMLHeadElement,
-        castToHTMLHeadElement, gTypeHTMLHeadElement, toHTMLHeadElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"profile\"] = $2;"
-        ghcjs_dom_html_head_element_set_profile ::
-        JSRef HTMLHeadElement -> JSString -> IO ()
- 
-htmlHeadElementSetProfile ::
-                          (IsHTMLHeadElement self, ToJSString val) => self -> val -> IO ()
-htmlHeadElementSetProfile self val
-  = ghcjs_dom_html_head_element_set_profile
-      (unHTMLHeadElement (toHTMLHeadElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"profile\"]"
-        ghcjs_dom_html_head_element_get_profile ::
-        JSRef HTMLHeadElement -> IO JSString
- 
-htmlHeadElementGetProfile ::
-                          (IsHTMLHeadElement self, FromJSString result) => self -> IO result
-htmlHeadElementGetProfile self
-  = fromJSString <$>
-      (ghcjs_dom_html_head_element_get_profile
-         (unHTMLHeadElement (toHTMLHeadElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLHeadElement
 #else
-module GHCJS.DOM.HTMLHeadElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLHeadElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLHeadElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLHeadElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLHeadingElement.hs b/src/GHCJS/DOM/HTMLHeadingElement.hs
--- a/src/GHCJS/DOM/HTMLHeadingElement.hs
+++ b/src/GHCJS/DOM/HTMLHeadingElement.hs
@@ -1,49 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLHeadingElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLHeadingElement
-       (ghcjs_dom_html_heading_element_set_align,
-        htmlHeadingElementSetAlign,
-        ghcjs_dom_html_heading_element_get_align,
-        htmlHeadingElementGetAlign, HTMLHeadingElement,
-        IsHTMLHeadingElement, castToHTMLHeadingElement,
-        gTypeHTMLHeadingElement, toHTMLHeadingElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_heading_element_set_align ::
-        JSRef HTMLHeadingElement -> JSString -> IO ()
- 
-htmlHeadingElementSetAlign ::
-                           (IsHTMLHeadingElement self, ToJSString val) => self -> val -> IO ()
-htmlHeadingElementSetAlign self val
-  = ghcjs_dom_html_heading_element_set_align
-      (unHTMLHeadingElement (toHTMLHeadingElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_heading_element_get_align ::
-        JSRef HTMLHeadingElement -> IO JSString
- 
-htmlHeadingElementGetAlign ::
-                           (IsHTMLHeadingElement self, FromJSString result) =>
-                             self -> IO result
-htmlHeadingElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_heading_element_get_align
-         (unHTMLHeadingElement (toHTMLHeadingElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement
 #else
-module GHCJS.DOM.HTMLHeadingElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLHeadingElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLHeadingElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLHtmlElement.hs b/src/GHCJS/DOM/HTMLHtmlElement.hs
--- a/src/GHCJS/DOM/HTMLHtmlElement.hs
+++ b/src/GHCJS/DOM/HTMLHtmlElement.hs
@@ -1,72 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLHtmlElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLHtmlElement
-       (ghcjs_dom_html_html_element_set_version,
-        htmlHtmlElementSetVersion, ghcjs_dom_html_html_element_get_version,
-        htmlHtmlElementGetVersion,
-        ghcjs_dom_html_html_element_set_manifest,
-        htmlHtmlElementSetManifest,
-        ghcjs_dom_html_html_element_get_manifest,
-        htmlHtmlElementGetManifest, HTMLHtmlElement, IsHTMLHtmlElement,
-        castToHTMLHtmlElement, gTypeHTMLHtmlElement, toHTMLHtmlElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"version\"] = $2;"
-        ghcjs_dom_html_html_element_set_version ::
-        JSRef HTMLHtmlElement -> JSString -> IO ()
- 
-htmlHtmlElementSetVersion ::
-                          (IsHTMLHtmlElement self, ToJSString val) => self -> val -> IO ()
-htmlHtmlElementSetVersion self val
-  = ghcjs_dom_html_html_element_set_version
-      (unHTMLHtmlElement (toHTMLHtmlElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"version\"]"
-        ghcjs_dom_html_html_element_get_version ::
-        JSRef HTMLHtmlElement -> IO JSString
- 
-htmlHtmlElementGetVersion ::
-                          (IsHTMLHtmlElement self, FromJSString result) => self -> IO result
-htmlHtmlElementGetVersion self
-  = fromJSString <$>
-      (ghcjs_dom_html_html_element_get_version
-         (unHTMLHtmlElement (toHTMLHtmlElement self)))
- 
-foreign import javascript unsafe "$1[\"manifest\"] = $2;"
-        ghcjs_dom_html_html_element_set_manifest ::
-        JSRef HTMLHtmlElement -> JSString -> IO ()
- 
-htmlHtmlElementSetManifest ::
-                           (IsHTMLHtmlElement self, ToJSString val) => self -> val -> IO ()
-htmlHtmlElementSetManifest self val
-  = ghcjs_dom_html_html_element_set_manifest
-      (unHTMLHtmlElement (toHTMLHtmlElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"manifest\"]"
-        ghcjs_dom_html_html_element_get_manifest ::
-        JSRef HTMLHtmlElement -> IO JSString
- 
-htmlHtmlElementGetManifest ::
-                           (IsHTMLHtmlElement self, FromJSString result) => self -> IO result
-htmlHtmlElementGetManifest self
-  = fromJSString <$>
-      (ghcjs_dom_html_html_element_get_manifest
-         (unHTMLHtmlElement (toHTMLHtmlElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement
 #else
-module GHCJS.DOM.HTMLHtmlElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLHtmlElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLHtmlElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLIFrameElement.hs b/src/GHCJS/DOM/HTMLIFrameElement.hs
--- a/src/GHCJS/DOM/HTMLIFrameElement.hs
+++ b/src/GHCJS/DOM/HTMLIFrameElement.hs
@@ -1,365 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLIFrameElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLIFrameElement
-       (ghcjs_dom_html_iframe_element_set_align,
-        htmliFrameElementSetAlign, ghcjs_dom_html_iframe_element_get_align,
-        htmliFrameElementGetAlign,
-        ghcjs_dom_html_iframe_element_set_frame_border,
-        htmliFrameElementSetFrameBorder,
-        ghcjs_dom_html_iframe_element_get_frame_border,
-        htmliFrameElementGetFrameBorder,
-        ghcjs_dom_html_iframe_element_set_height,
-        htmliFrameElementSetHeight,
-        ghcjs_dom_html_iframe_element_get_height,
-        htmliFrameElementGetHeight,
-        ghcjs_dom_html_iframe_element_set_long_desc,
-        htmliFrameElementSetLongDesc,
-        ghcjs_dom_html_iframe_element_get_long_desc,
-        htmliFrameElementGetLongDesc,
-        ghcjs_dom_html_iframe_element_set_margin_height,
-        htmliFrameElementSetMarginHeight,
-        ghcjs_dom_html_iframe_element_get_margin_height,
-        htmliFrameElementGetMarginHeight,
-        ghcjs_dom_html_iframe_element_set_margin_width,
-        htmliFrameElementSetMarginWidth,
-        ghcjs_dom_html_iframe_element_get_margin_width,
-        htmliFrameElementGetMarginWidth,
-        ghcjs_dom_html_iframe_element_set_name, htmliFrameElementSetName,
-        ghcjs_dom_html_iframe_element_get_name, htmliFrameElementGetName,
-        ghcjs_dom_html_iframe_element_set_sandbox,
-        htmliFrameElementSetSandbox,
-        ghcjs_dom_html_iframe_element_get_sandbox,
-        htmliFrameElementGetSandbox,
-        ghcjs_dom_html_iframe_element_set_scrolling,
-        htmliFrameElementSetScrolling,
-        ghcjs_dom_html_iframe_element_get_scrolling,
-        htmliFrameElementGetScrolling,
-        ghcjs_dom_html_iframe_element_set_src, htmliFrameElementSetSrc,
-        ghcjs_dom_html_iframe_element_get_src, htmliFrameElementGetSrc,
-        ghcjs_dom_html_iframe_element_set_srcdoc,
-        htmliFrameElementSetSrcdoc,
-        ghcjs_dom_html_iframe_element_get_srcdoc,
-        htmliFrameElementGetSrcdoc,
-        ghcjs_dom_html_iframe_element_set_width, htmliFrameElementSetWidth,
-        ghcjs_dom_html_iframe_element_get_width, htmliFrameElementGetWidth,
-        ghcjs_dom_html_iframe_element_get_content_document,
-        htmliFrameElementGetContentDocument,
-        ghcjs_dom_html_iframe_element_get_content_window,
-        htmliFrameElementGetContentWindow, HTMLIFrameElement,
-        IsHTMLIFrameElement, castToHTMLIFrameElement,
-        gTypeHTMLIFrameElement, toHTMLIFrameElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_align ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetAlign ::
-                          (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetAlign self val
-  = ghcjs_dom_html_iframe_element_set_align
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_iframe_element_get_align ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetAlign ::
-                          (IsHTMLIFrameElement self, FromJSString result) =>
-                            self -> IO result
-htmliFrameElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_align
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"frameBorder\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_frame_border ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetFrameBorder ::
-                                (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetFrameBorder self val
-  = ghcjs_dom_html_iframe_element_set_frame_border
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"frameBorder\"]"
-        ghcjs_dom_html_iframe_element_get_frame_border ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetFrameBorder ::
-                                (IsHTMLIFrameElement self, FromJSString result) =>
-                                  self -> IO result
-htmliFrameElementGetFrameBorder self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_frame_border
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_height ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetHeight ::
-                           (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetHeight self val
-  = ghcjs_dom_html_iframe_element_set_height
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_iframe_element_get_height ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetHeight ::
-                           (IsHTMLIFrameElement self, FromJSString result) =>
-                             self -> IO result
-htmliFrameElementGetHeight self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_height
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"longDesc\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_long_desc ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetLongDesc ::
-                             (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetLongDesc self val
-  = ghcjs_dom_html_iframe_element_set_long_desc
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"longDesc\"]"
-        ghcjs_dom_html_iframe_element_get_long_desc ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetLongDesc ::
-                             (IsHTMLIFrameElement self, FromJSString result) =>
-                               self -> IO result
-htmliFrameElementGetLongDesc self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_long_desc
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"marginHeight\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_margin_height ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetMarginHeight ::
-                                 (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetMarginHeight self val
-  = ghcjs_dom_html_iframe_element_set_margin_height
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"marginHeight\"]"
-        ghcjs_dom_html_iframe_element_get_margin_height ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetMarginHeight ::
-                                 (IsHTMLIFrameElement self, FromJSString result) =>
-                                   self -> IO result
-htmliFrameElementGetMarginHeight self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_margin_height
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"marginWidth\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_margin_width ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetMarginWidth ::
-                                (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetMarginWidth self val
-  = ghcjs_dom_html_iframe_element_set_margin_width
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"marginWidth\"]"
-        ghcjs_dom_html_iframe_element_get_margin_width ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetMarginWidth ::
-                                (IsHTMLIFrameElement self, FromJSString result) =>
-                                  self -> IO result
-htmliFrameElementGetMarginWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_margin_width
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_name ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetName ::
-                         (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetName self val
-  = ghcjs_dom_html_iframe_element_set_name
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_iframe_element_get_name ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetName ::
-                         (IsHTMLIFrameElement self, FromJSString result) =>
-                           self -> IO result
-htmliFrameElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_name
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"sandbox\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_sandbox ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetSandbox ::
-                            (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetSandbox self val
-  = ghcjs_dom_html_iframe_element_set_sandbox
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"sandbox\"]"
-        ghcjs_dom_html_iframe_element_get_sandbox ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetSandbox ::
-                            (IsHTMLIFrameElement self, FromJSString result) =>
-                              self -> IO result
-htmliFrameElementGetSandbox self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_sandbox
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"scrolling\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_scrolling ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetScrolling ::
-                              (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetScrolling self val
-  = ghcjs_dom_html_iframe_element_set_scrolling
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"scrolling\"]"
-        ghcjs_dom_html_iframe_element_get_scrolling ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetScrolling ::
-                              (IsHTMLIFrameElement self, FromJSString result) =>
-                                self -> IO result
-htmliFrameElementGetScrolling self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_scrolling
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"src\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_src ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetSrc ::
-                        (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetSrc self val
-  = ghcjs_dom_html_iframe_element_set_src
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"src\"]"
-        ghcjs_dom_html_iframe_element_get_src ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetSrc ::
-                        (IsHTMLIFrameElement self, FromJSString result) =>
-                          self -> IO result
-htmliFrameElementGetSrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_src
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"srcdoc\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_srcdoc ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetSrcdoc ::
-                           (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetSrcdoc self val
-  = ghcjs_dom_html_iframe_element_set_srcdoc
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"srcdoc\"]"
-        ghcjs_dom_html_iframe_element_get_srcdoc ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetSrcdoc ::
-                           (IsHTMLIFrameElement self, FromJSString result) =>
-                             self -> IO result
-htmliFrameElementGetSrcdoc self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_srcdoc
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_iframe_element_set_width ::
-        JSRef HTMLIFrameElement -> JSString -> IO ()
- 
-htmliFrameElementSetWidth ::
-                          (IsHTMLIFrameElement self, ToJSString val) => self -> val -> IO ()
-htmliFrameElementSetWidth self val
-  = ghcjs_dom_html_iframe_element_set_width
-      (unHTMLIFrameElement (toHTMLIFrameElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_iframe_element_get_width ::
-        JSRef HTMLIFrameElement -> IO JSString
- 
-htmliFrameElementGetWidth ::
-                          (IsHTMLIFrameElement self, FromJSString result) =>
-                            self -> IO result
-htmliFrameElementGetWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_iframe_element_get_width
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"contentDocument\"]"
-        ghcjs_dom_html_iframe_element_get_content_document ::
-        JSRef HTMLIFrameElement -> IO (JSRef Document)
- 
-htmliFrameElementGetContentDocument ::
-                                    (IsHTMLIFrameElement self) => self -> IO (Maybe Document)
-htmliFrameElementGetContentDocument self
-  = fmap Document . maybeJSNull <$>
-      (ghcjs_dom_html_iframe_element_get_content_document
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
- 
-foreign import javascript unsafe "$1[\"contentWindow\"]"
-        ghcjs_dom_html_iframe_element_get_content_window ::
-        JSRef HTMLIFrameElement -> IO (JSRef DOMWindow)
- 
-htmliFrameElementGetContentWindow ::
-                                  (IsHTMLIFrameElement self) => self -> IO (Maybe DOMWindow)
-htmliFrameElementGetContentWindow self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_html_iframe_element_get_content_window
-         (unHTMLIFrameElement (toHTMLIFrameElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement
 #else
-module GHCJS.DOM.HTMLIFrameElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLIFrameElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLIFrameElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLImageElement.hs b/src/GHCJS/DOM/HTMLImageElement.hs
--- a/src/GHCJS/DOM/HTMLImageElement.hs
+++ b/src/GHCJS/DOM/HTMLImageElement.hs
@@ -1,439 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLImageElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLImageElement
-       (ghcjs_dom_html_image_element_set_name, htmlImageElementSetName,
-        ghcjs_dom_html_image_element_get_name, htmlImageElementGetName,
-        ghcjs_dom_html_image_element_set_align, htmlImageElementSetAlign,
-        ghcjs_dom_html_image_element_get_align, htmlImageElementGetAlign,
-        ghcjs_dom_html_image_element_set_alt, htmlImageElementSetAlt,
-        ghcjs_dom_html_image_element_get_alt, htmlImageElementGetAlt,
-        ghcjs_dom_html_image_element_set_border, htmlImageElementSetBorder,
-        ghcjs_dom_html_image_element_get_border, htmlImageElementGetBorder,
-        ghcjs_dom_html_image_element_set_cross_origin,
-        htmlImageElementSetCrossOrigin,
-        ghcjs_dom_html_image_element_get_cross_origin,
-        htmlImageElementGetCrossOrigin,
-        ghcjs_dom_html_image_element_set_height, htmlImageElementSetHeight,
-        ghcjs_dom_html_image_element_get_height, htmlImageElementGetHeight,
-        ghcjs_dom_html_image_element_set_hspace, htmlImageElementSetHspace,
-        ghcjs_dom_html_image_element_get_hspace, htmlImageElementGetHspace,
-        ghcjs_dom_html_image_element_set_is_map, htmlImageElementSetIsMap,
-        ghcjs_dom_html_image_element_get_is_map, htmlImageElementGetIsMap,
-        ghcjs_dom_html_image_element_set_long_desc,
-        htmlImageElementSetLongDesc,
-        ghcjs_dom_html_image_element_get_long_desc,
-        htmlImageElementGetLongDesc, ghcjs_dom_html_image_element_set_src,
-        htmlImageElementSetSrc, ghcjs_dom_html_image_element_get_src,
-        htmlImageElementGetSrc, ghcjs_dom_html_image_element_set_srcset,
-        htmlImageElementSetSrcset, ghcjs_dom_html_image_element_get_srcset,
-        htmlImageElementGetSrcset,
-        ghcjs_dom_html_image_element_set_use_map,
-        htmlImageElementSetUseMap,
-        ghcjs_dom_html_image_element_get_use_map,
-        htmlImageElementGetUseMap, ghcjs_dom_html_image_element_set_vspace,
-        htmlImageElementSetVspace, ghcjs_dom_html_image_element_get_vspace,
-        htmlImageElementGetVspace, ghcjs_dom_html_image_element_set_width,
-        htmlImageElementSetWidth, ghcjs_dom_html_image_element_get_width,
-        htmlImageElementGetWidth,
-        ghcjs_dom_html_image_element_get_complete,
-        htmlImageElementGetComplete,
-        ghcjs_dom_html_image_element_set_lowsrc, htmlImageElementSetLowsrc,
-        ghcjs_dom_html_image_element_get_lowsrc, htmlImageElementGetLowsrc,
-        ghcjs_dom_html_image_element_get_natural_height,
-        htmlImageElementGetNaturalHeight,
-        ghcjs_dom_html_image_element_get_natural_width,
-        htmlImageElementGetNaturalWidth,
-        ghcjs_dom_html_image_element_get_x, htmlImageElementGetX,
-        ghcjs_dom_html_image_element_get_y, htmlImageElementGetY,
-        HTMLImageElement, IsHTMLImageElement, castToHTMLImageElement,
-        gTypeHTMLImageElement, toHTMLImageElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_image_element_set_name ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetName ::
-                        (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetName self val
-  = ghcjs_dom_html_image_element_set_name
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_image_element_get_name ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetName ::
-                        (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_name
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_image_element_set_align ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetAlign ::
-                         (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetAlign self val
-  = ghcjs_dom_html_image_element_set_align
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_image_element_get_align ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetAlign ::
-                         (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_align
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"alt\"] = $2;"
-        ghcjs_dom_html_image_element_set_alt ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetAlt ::
-                       (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetAlt self val
-  = ghcjs_dom_html_image_element_set_alt
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"alt\"]"
-        ghcjs_dom_html_image_element_get_alt ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetAlt ::
-                       (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetAlt self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_alt
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"border\"] = $2;"
-        ghcjs_dom_html_image_element_set_border ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetBorder ::
-                          (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetBorder self val
-  = ghcjs_dom_html_image_element_set_border
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"border\"]"
-        ghcjs_dom_html_image_element_get_border ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetBorder ::
-                          (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetBorder self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_border
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"crossOrigin\"] = $2;"
-        ghcjs_dom_html_image_element_set_cross_origin ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetCrossOrigin ::
-                               (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetCrossOrigin self val
-  = ghcjs_dom_html_image_element_set_cross_origin
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"crossOrigin\"]"
-        ghcjs_dom_html_image_element_get_cross_origin ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetCrossOrigin ::
-                               (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetCrossOrigin self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_cross_origin
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_image_element_set_height ::
-        JSRef HTMLImageElement -> Int -> IO ()
- 
-htmlImageElementSetHeight ::
-                          (IsHTMLImageElement self) => self -> Int -> IO ()
-htmlImageElementSetHeight self val
-  = ghcjs_dom_html_image_element_set_height
-      (unHTMLImageElement (toHTMLImageElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_image_element_get_height ::
-        JSRef HTMLImageElement -> IO Int
- 
-htmlImageElementGetHeight ::
-                          (IsHTMLImageElement self) => self -> IO Int
-htmlImageElementGetHeight self
-  = ghcjs_dom_html_image_element_get_height
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "$1[\"hspace\"] = $2;"
-        ghcjs_dom_html_image_element_set_hspace ::
-        JSRef HTMLImageElement -> Int -> IO ()
- 
-htmlImageElementSetHspace ::
-                          (IsHTMLImageElement self) => self -> Int -> IO ()
-htmlImageElementSetHspace self val
-  = ghcjs_dom_html_image_element_set_hspace
-      (unHTMLImageElement (toHTMLImageElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"hspace\"]"
-        ghcjs_dom_html_image_element_get_hspace ::
-        JSRef HTMLImageElement -> IO Int
- 
-htmlImageElementGetHspace ::
-                          (IsHTMLImageElement self) => self -> IO Int
-htmlImageElementGetHspace self
-  = ghcjs_dom_html_image_element_get_hspace
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "$1[\"isMap\"] = $2;"
-        ghcjs_dom_html_image_element_set_is_map ::
-        JSRef HTMLImageElement -> Bool -> IO ()
- 
-htmlImageElementSetIsMap ::
-                         (IsHTMLImageElement self) => self -> Bool -> IO ()
-htmlImageElementSetIsMap self val
-  = ghcjs_dom_html_image_element_set_is_map
-      (unHTMLImageElement (toHTMLImageElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"isMap\"] ? 1 : 0)"
-        ghcjs_dom_html_image_element_get_is_map ::
-        JSRef HTMLImageElement -> IO Bool
- 
-htmlImageElementGetIsMap ::
-                         (IsHTMLImageElement self) => self -> IO Bool
-htmlImageElementGetIsMap self
-  = ghcjs_dom_html_image_element_get_is_map
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "$1[\"longDesc\"] = $2;"
-        ghcjs_dom_html_image_element_set_long_desc ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetLongDesc ::
-                            (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetLongDesc self val
-  = ghcjs_dom_html_image_element_set_long_desc
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"longDesc\"]"
-        ghcjs_dom_html_image_element_get_long_desc ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetLongDesc ::
-                            (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetLongDesc self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_long_desc
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"src\"] = $2;"
-        ghcjs_dom_html_image_element_set_src ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetSrc ::
-                       (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetSrc self val
-  = ghcjs_dom_html_image_element_set_src
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"src\"]"
-        ghcjs_dom_html_image_element_get_src ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetSrc ::
-                       (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetSrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_src
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"srcset\"] = $2;"
-        ghcjs_dom_html_image_element_set_srcset ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetSrcset ::
-                          (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetSrcset self val
-  = ghcjs_dom_html_image_element_set_srcset
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"srcset\"]"
-        ghcjs_dom_html_image_element_get_srcset ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetSrcset ::
-                          (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetSrcset self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_srcset
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"useMap\"] = $2;"
-        ghcjs_dom_html_image_element_set_use_map ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetUseMap ::
-                          (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetUseMap self val
-  = ghcjs_dom_html_image_element_set_use_map
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"useMap\"]"
-        ghcjs_dom_html_image_element_get_use_map ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetUseMap ::
-                          (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetUseMap self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_use_map
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"vspace\"] = $2;"
-        ghcjs_dom_html_image_element_set_vspace ::
-        JSRef HTMLImageElement -> Int -> IO ()
- 
-htmlImageElementSetVspace ::
-                          (IsHTMLImageElement self) => self -> Int -> IO ()
-htmlImageElementSetVspace self val
-  = ghcjs_dom_html_image_element_set_vspace
-      (unHTMLImageElement (toHTMLImageElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"vspace\"]"
-        ghcjs_dom_html_image_element_get_vspace ::
-        JSRef HTMLImageElement -> IO Int
- 
-htmlImageElementGetVspace ::
-                          (IsHTMLImageElement self) => self -> IO Int
-htmlImageElementGetVspace self
-  = ghcjs_dom_html_image_element_get_vspace
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_image_element_set_width ::
-        JSRef HTMLImageElement -> Int -> IO ()
- 
-htmlImageElementSetWidth ::
-                         (IsHTMLImageElement self) => self -> Int -> IO ()
-htmlImageElementSetWidth self val
-  = ghcjs_dom_html_image_element_set_width
-      (unHTMLImageElement (toHTMLImageElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_image_element_get_width ::
-        JSRef HTMLImageElement -> IO Int
- 
-htmlImageElementGetWidth ::
-                         (IsHTMLImageElement self) => self -> IO Int
-htmlImageElementGetWidth self
-  = ghcjs_dom_html_image_element_get_width
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "($1[\"complete\"] ? 1 : 0)"
-        ghcjs_dom_html_image_element_get_complete ::
-        JSRef HTMLImageElement -> IO Bool
- 
-htmlImageElementGetComplete ::
-                            (IsHTMLImageElement self) => self -> IO Bool
-htmlImageElementGetComplete self
-  = ghcjs_dom_html_image_element_get_complete
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "$1[\"lowsrc\"] = $2;"
-        ghcjs_dom_html_image_element_set_lowsrc ::
-        JSRef HTMLImageElement -> JSString -> IO ()
- 
-htmlImageElementSetLowsrc ::
-                          (IsHTMLImageElement self, ToJSString val) => self -> val -> IO ()
-htmlImageElementSetLowsrc self val
-  = ghcjs_dom_html_image_element_set_lowsrc
-      (unHTMLImageElement (toHTMLImageElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"lowsrc\"]"
-        ghcjs_dom_html_image_element_get_lowsrc ::
-        JSRef HTMLImageElement -> IO JSString
- 
-htmlImageElementGetLowsrc ::
-                          (IsHTMLImageElement self, FromJSString result) => self -> IO result
-htmlImageElementGetLowsrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_image_element_get_lowsrc
-         (unHTMLImageElement (toHTMLImageElement self)))
- 
-foreign import javascript unsafe "$1[\"naturalHeight\"]"
-        ghcjs_dom_html_image_element_get_natural_height ::
-        JSRef HTMLImageElement -> IO Int
- 
-htmlImageElementGetNaturalHeight ::
-                                 (IsHTMLImageElement self) => self -> IO Int
-htmlImageElementGetNaturalHeight self
-  = ghcjs_dom_html_image_element_get_natural_height
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "$1[\"naturalWidth\"]"
-        ghcjs_dom_html_image_element_get_natural_width ::
-        JSRef HTMLImageElement -> IO Int
- 
-htmlImageElementGetNaturalWidth ::
-                                (IsHTMLImageElement self) => self -> IO Int
-htmlImageElementGetNaturalWidth self
-  = ghcjs_dom_html_image_element_get_natural_width
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "$1[\"x\"]"
-        ghcjs_dom_html_image_element_get_x ::
-        JSRef HTMLImageElement -> IO Int
- 
-htmlImageElementGetX :: (IsHTMLImageElement self) => self -> IO Int
-htmlImageElementGetX self
-  = ghcjs_dom_html_image_element_get_x
-      (unHTMLImageElement (toHTMLImageElement self))
- 
-foreign import javascript unsafe "$1[\"y\"]"
-        ghcjs_dom_html_image_element_get_y ::
-        JSRef HTMLImageElement -> IO Int
- 
-htmlImageElementGetY :: (IsHTMLImageElement self) => self -> IO Int
-htmlImageElementGetY self
-  = ghcjs_dom_html_image_element_get_y
-      (unHTMLImageElement (toHTMLImageElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLImageElement
 #else
-module GHCJS.DOM.HTMLImageElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLImageElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLImageElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLImageElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLInputElement.hs b/src/GHCJS/DOM/HTMLInputElement.hs
--- a/src/GHCJS/DOM/HTMLInputElement.hs
+++ b/src/GHCJS/DOM/HTMLInputElement.hs
@@ -1,1152 +1,13 @@
 {-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLInputElement
-       (ghcjs_dom_html_input_element_step_up, htmlInputElementStepUp,
-        ghcjs_dom_html_input_element_step_down, htmlInputElementStepDown,
-        ghcjs_dom_html_input_element_check_validity,
-        htmlInputElementCheckValidity,
-        ghcjs_dom_html_input_element_set_custom_validity,
-        htmlInputElementSetCustomValidity,
-        ghcjs_dom_html_input_element_select, htmlInputElementSelect,
-        ghcjs_dom_html_input_element_set_range_text,
-        htmlInputElementSetRangeText,
-        ghcjs_dom_html_input_element_set_range_text4,
-        htmlInputElementSetRangeText4,
-        ghcjs_dom_html_input_element_set_value_for_user,
-        htmlInputElementSetValueForUser,
-        ghcjs_dom_html_input_element_set_accept, htmlInputElementSetAccept,
-        ghcjs_dom_html_input_element_get_accept, htmlInputElementGetAccept,
-        ghcjs_dom_html_input_element_set_alt, htmlInputElementSetAlt,
-        ghcjs_dom_html_input_element_get_alt, htmlInputElementGetAlt,
-        ghcjs_dom_html_input_element_set_autocomplete,
-        htmlInputElementSetAutocomplete,
-        ghcjs_dom_html_input_element_get_autocomplete,
-        htmlInputElementGetAutocomplete,
-        ghcjs_dom_html_input_element_set_autofocus,
-        htmlInputElementSetAutofocus,
-        ghcjs_dom_html_input_element_get_autofocus,
-        htmlInputElementGetAutofocus,
-        ghcjs_dom_html_input_element_set_default_checked,
-        htmlInputElementSetDefaultChecked,
-        ghcjs_dom_html_input_element_get_default_checked,
-        htmlInputElementGetDefaultChecked,
-        ghcjs_dom_html_input_element_set_checked,
-        htmlInputElementSetChecked,
-        ghcjs_dom_html_input_element_get_checked,
-        htmlInputElementGetChecked,
-        ghcjs_dom_html_input_element_set_dir_name,
-        htmlInputElementSetDirName,
-        ghcjs_dom_html_input_element_get_dir_name,
-        htmlInputElementGetDirName,
-        ghcjs_dom_html_input_element_set_disabled,
-        htmlInputElementSetDisabled,
-        ghcjs_dom_html_input_element_get_disabled,
-        htmlInputElementGetDisabled, ghcjs_dom_html_input_element_get_form,
-        htmlInputElementGetForm, ghcjs_dom_html_input_element_set_files,
-        htmlInputElementSetFiles, ghcjs_dom_html_input_element_get_files,
-        htmlInputElementGetFiles,
-        ghcjs_dom_html_input_element_set_form_action,
-        htmlInputElementSetFormAction,
-        ghcjs_dom_html_input_element_get_form_action,
-        htmlInputElementGetFormAction,
-        ghcjs_dom_html_input_element_set_form_enctype,
-        htmlInputElementSetFormEnctype,
-        ghcjs_dom_html_input_element_get_form_enctype,
-        htmlInputElementGetFormEnctype,
-        ghcjs_dom_html_input_element_set_form_method,
-        htmlInputElementSetFormMethod,
-        ghcjs_dom_html_input_element_get_form_method,
-        htmlInputElementGetFormMethod,
-        ghcjs_dom_html_input_element_set_form_no_validate,
-        htmlInputElementSetFormNoValidate,
-        ghcjs_dom_html_input_element_get_form_no_validate,
-        htmlInputElementGetFormNoValidate,
-        ghcjs_dom_html_input_element_set_form_target,
-        htmlInputElementSetFormTarget,
-        ghcjs_dom_html_input_element_get_form_target,
-        htmlInputElementGetFormTarget,
-        ghcjs_dom_html_input_element_set_height, htmlInputElementSetHeight,
-        ghcjs_dom_html_input_element_get_height, htmlInputElementGetHeight,
-        ghcjs_dom_html_input_element_set_indeterminate,
-        htmlInputElementSetIndeterminate,
-        ghcjs_dom_html_input_element_get_indeterminate,
-        htmlInputElementGetIndeterminate,
-        ghcjs_dom_html_input_element_get_list, htmlInputElementGetList,
-        ghcjs_dom_html_input_element_set_max, htmlInputElementSetMax,
-        ghcjs_dom_html_input_element_get_max, htmlInputElementGetMax,
-        ghcjs_dom_html_input_element_set_max_length,
-        htmlInputElementSetMaxLength,
-        ghcjs_dom_html_input_element_get_max_length,
-        htmlInputElementGetMaxLength, ghcjs_dom_html_input_element_set_min,
-        htmlInputElementSetMin, ghcjs_dom_html_input_element_get_min,
-        htmlInputElementGetMin, ghcjs_dom_html_input_element_set_multiple,
-        htmlInputElementSetMultiple,
-        ghcjs_dom_html_input_element_get_multiple,
-        htmlInputElementGetMultiple, ghcjs_dom_html_input_element_set_name,
-        htmlInputElementSetName, ghcjs_dom_html_input_element_get_name,
-        htmlInputElementGetName, ghcjs_dom_html_input_element_set_pattern,
-        htmlInputElementSetPattern,
-        ghcjs_dom_html_input_element_get_pattern,
-        htmlInputElementGetPattern,
-        ghcjs_dom_html_input_element_set_placeholder,
-        htmlInputElementSetPlaceholder,
-        ghcjs_dom_html_input_element_get_placeholder,
-        htmlInputElementGetPlaceholder,
-        ghcjs_dom_html_input_element_set_read_only,
-        htmlInputElementSetReadOnly,
-        ghcjs_dom_html_input_element_get_read_only,
-        htmlInputElementGetReadOnly,
-        ghcjs_dom_html_input_element_set_required,
-        htmlInputElementSetRequired,
-        ghcjs_dom_html_input_element_get_required,
-        htmlInputElementGetRequired, ghcjs_dom_html_input_element_set_size,
-        htmlInputElementSetSize, ghcjs_dom_html_input_element_get_size,
-        htmlInputElementGetSize, ghcjs_dom_html_input_element_set_src,
-        htmlInputElementSetSrc, ghcjs_dom_html_input_element_get_src,
-        htmlInputElementGetSrc, ghcjs_dom_html_input_element_set_step,
-        htmlInputElementSetStep, ghcjs_dom_html_input_element_get_step,
-        htmlInputElementGetStep,
-        ghcjs_dom_html_input_element_set_default_value,
-        htmlInputElementSetDefaultValue,
-        ghcjs_dom_html_input_element_get_default_value,
-        htmlInputElementGetDefaultValue,
-        ghcjs_dom_html_input_element_set_value, htmlInputElementSetValue,
-        ghcjs_dom_html_input_element_get_value, htmlInputElementGetValue,
-        ghcjs_dom_html_input_element_set_value_as_number,
-        htmlInputElementSetValueAsNumber,
-        ghcjs_dom_html_input_element_get_value_as_number,
-        htmlInputElementGetValueAsNumber,
-        ghcjs_dom_html_input_element_set_width, htmlInputElementSetWidth,
-        ghcjs_dom_html_input_element_get_width, htmlInputElementGetWidth,
-        ghcjs_dom_html_input_element_get_will_validate,
-        htmlInputElementGetWillValidate,
-        ghcjs_dom_html_input_element_get_validity,
-        htmlInputElementGetValidity,
-        ghcjs_dom_html_input_element_get_validation_message,
-        htmlInputElementGetValidationMessage,
-        ghcjs_dom_html_input_element_get_labels, htmlInputElementGetLabels,
-        ghcjs_dom_html_input_element_set_align, htmlInputElementSetAlign,
-        ghcjs_dom_html_input_element_get_align, htmlInputElementGetAlign,
-        ghcjs_dom_html_input_element_set_use_map,
-        htmlInputElementSetUseMap,
-        ghcjs_dom_html_input_element_get_use_map,
-        htmlInputElementGetUseMap,
-        ghcjs_dom_html_input_element_set_incremental,
-        htmlInputElementSetIncremental,
-        ghcjs_dom_html_input_element_get_incremental,
-        htmlInputElementGetIncremental,
-        ghcjs_dom_html_input_element_set_autocorrect,
-        htmlInputElementSetAutocorrect,
-        ghcjs_dom_html_input_element_get_autocorrect,
-        htmlInputElementGetAutocorrect,
-        ghcjs_dom_html_input_element_set_autocapitalize,
-        htmlInputElementSetAutocapitalize,
-        ghcjs_dom_html_input_element_get_autocapitalize,
-        htmlInputElementGetAutocapitalize,
-        ghcjs_dom_html_input_element_set_capture,
-        htmlInputElementSetCapture,
-        ghcjs_dom_html_input_element_get_capture,
-        htmlInputElementGetCapture, HTMLInputElement, IsHTMLInputElement,
-        castToHTMLInputElement, gTypeHTMLInputElement, toHTMLInputElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"stepUp\"]($2)"
-        ghcjs_dom_html_input_element_step_up ::
-        JSRef HTMLInputElement -> Int -> IO ()
- 
-htmlInputElementStepUp ::
-                       (IsHTMLInputElement self) => self -> Int -> IO ()
-htmlInputElementStepUp self n
-  = ghcjs_dom_html_input_element_step_up
-      (unHTMLInputElement (toHTMLInputElement self))
-      n
- 
-foreign import javascript unsafe "$1[\"stepDown\"]($2)"
-        ghcjs_dom_html_input_element_step_down ::
-        JSRef HTMLInputElement -> Int -> IO ()
- 
-htmlInputElementStepDown ::
-                         (IsHTMLInputElement self) => self -> Int -> IO ()
-htmlInputElementStepDown self n
-  = ghcjs_dom_html_input_element_step_down
-      (unHTMLInputElement (toHTMLInputElement self))
-      n
- 
-foreign import javascript unsafe
-        "($1[\"checkValidity\"]() ? 1 : 0)"
-        ghcjs_dom_html_input_element_check_validity ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementCheckValidity ::
-                              (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementCheckValidity self
-  = ghcjs_dom_html_input_element_check_validity
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
-        ghcjs_dom_html_input_element_set_custom_validity ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetCustomValidity ::
-                                  (IsHTMLInputElement self, ToJSString error) =>
-                                    self -> error -> IO ()
-htmlInputElementSetCustomValidity self error
-  = ghcjs_dom_html_input_element_set_custom_validity
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString error)
- 
-foreign import javascript unsafe "$1[\"select\"]()"
-        ghcjs_dom_html_input_element_select ::
-        JSRef HTMLInputElement -> IO ()
- 
-htmlInputElementSelect ::
-                       (IsHTMLInputElement self) => self -> IO ()
-htmlInputElementSelect self
-  = ghcjs_dom_html_input_element_select
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"setRangeText\"]($2)"
-        ghcjs_dom_html_input_element_set_range_text ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetRangeText ::
-                             (IsHTMLInputElement self, ToJSString replacement) =>
-                               self -> replacement -> IO ()
-htmlInputElementSetRangeText self replacement
-  = ghcjs_dom_html_input_element_set_range_text
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString replacement)
- 
-foreign import javascript unsafe
-        "$1[\"setRangeText\"]($2, $3, $4,\n$5)"
-        ghcjs_dom_html_input_element_set_range_text4 ::
-        JSRef HTMLInputElement ->
-          JSString -> Word -> Word -> JSString -> IO ()
- 
-htmlInputElementSetRangeText4 ::
-                              (IsHTMLInputElement self, ToJSString replacement,
-                               ToJSString selectionMode) =>
-                                self -> replacement -> Word -> Word -> selectionMode -> IO ()
-htmlInputElementSetRangeText4 self replacement start end
-  selectionMode
-  = ghcjs_dom_html_input_element_set_range_text4
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString replacement)
-      start
-      end
-      (toJSString selectionMode)
- 
-foreign import javascript unsafe "$1[\"setValueForUser\"]($2)"
-        ghcjs_dom_html_input_element_set_value_for_user ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetValueForUser ::
-                                (IsHTMLInputElement self, ToJSString value) =>
-                                  self -> value -> IO ()
-htmlInputElementSetValueForUser self value
-  = ghcjs_dom_html_input_element_set_value_for_user
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString value)
- 
-foreign import javascript unsafe "$1[\"accept\"] = $2;"
-        ghcjs_dom_html_input_element_set_accept ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetAccept ::
-                          (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetAccept self val
-  = ghcjs_dom_html_input_element_set_accept
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"accept\"]"
-        ghcjs_dom_html_input_element_get_accept ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetAccept ::
-                          (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetAccept self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_accept
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"alt\"] = $2;"
-        ghcjs_dom_html_input_element_set_alt ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetAlt ::
-                       (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetAlt self val
-  = ghcjs_dom_html_input_element_set_alt
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"alt\"]"
-        ghcjs_dom_html_input_element_get_alt ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetAlt ::
-                       (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetAlt self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_alt
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"autocomplete\"] = $2;"
-        ghcjs_dom_html_input_element_set_autocomplete ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetAutocomplete ::
-                                (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetAutocomplete self val
-  = ghcjs_dom_html_input_element_set_autocomplete
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"autocomplete\"]"
-        ghcjs_dom_html_input_element_get_autocomplete ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetAutocomplete ::
-                                (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetAutocomplete self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_autocomplete
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
-        ghcjs_dom_html_input_element_set_autofocus ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetAutofocus ::
-                             (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetAutofocus self val
-  = ghcjs_dom_html_input_element_set_autofocus
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_autofocus ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetAutofocus ::
-                             (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetAutofocus self
-  = ghcjs_dom_html_input_element_get_autofocus
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"defaultChecked\"] = $2;"
-        ghcjs_dom_html_input_element_set_default_checked ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetDefaultChecked ::
-                                  (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetDefaultChecked self val
-  = ghcjs_dom_html_input_element_set_default_checked
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"defaultChecked\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_default_checked ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetDefaultChecked ::
-                                  (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetDefaultChecked self
-  = ghcjs_dom_html_input_element_get_default_checked
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"checked\"] = $2;"
-        ghcjs_dom_html_input_element_set_checked ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetChecked ::
-                           (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetChecked self val
-  = ghcjs_dom_html_input_element_set_checked
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"checked\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_checked ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetChecked ::
-                           (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetChecked self
-  = ghcjs_dom_html_input_element_get_checked
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"dirName\"] = $2;"
-        ghcjs_dom_html_input_element_set_dir_name ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetDirName ::
-                           (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetDirName self val
-  = ghcjs_dom_html_input_element_set_dir_name
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"dirName\"]"
-        ghcjs_dom_html_input_element_get_dir_name ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetDirName ::
-                           (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetDirName self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_dir_name
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_input_element_set_disabled ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetDisabled ::
-                            (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetDisabled self val
-  = ghcjs_dom_html_input_element_set_disabled
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_disabled ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetDisabled ::
-                            (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetDisabled self
-  = ghcjs_dom_html_input_element_get_disabled
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_input_element_get_form ::
-        JSRef HTMLInputElement -> IO (JSRef HTMLFormElement)
- 
-htmlInputElementGetForm ::
-                        (IsHTMLInputElement self) => self -> IO (Maybe HTMLFormElement)
-htmlInputElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_input_element_get_form
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"files\"] = $2;"
-        ghcjs_dom_html_input_element_set_files ::
-        JSRef HTMLInputElement -> JSRef FileList -> IO ()
- 
-htmlInputElementSetFiles ::
-                         (IsHTMLInputElement self, IsFileList val) =>
-                           self -> Maybe val -> IO ()
-htmlInputElementSetFiles self val
-  = ghcjs_dom_html_input_element_set_files
-      (unHTMLInputElement (toHTMLInputElement self))
-      (maybe jsNull (unFileList . toFileList) val)
- 
-foreign import javascript unsafe "$1[\"files\"]"
-        ghcjs_dom_html_input_element_get_files ::
-        JSRef HTMLInputElement -> IO (JSRef FileList)
- 
-htmlInputElementGetFiles ::
-                         (IsHTMLInputElement self) => self -> IO (Maybe FileList)
-htmlInputElementGetFiles self
-  = fmap FileList . maybeJSNull <$>
-      (ghcjs_dom_html_input_element_get_files
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"formAction\"] = $2;"
-        ghcjs_dom_html_input_element_set_form_action ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetFormAction ::
-                              (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetFormAction self val
-  = ghcjs_dom_html_input_element_set_form_action
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"formAction\"]"
-        ghcjs_dom_html_input_element_get_form_action ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetFormAction ::
-                              (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetFormAction self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_form_action
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"formEnctype\"] = $2;"
-        ghcjs_dom_html_input_element_set_form_enctype ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetFormEnctype ::
-                               (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetFormEnctype self val
-  = ghcjs_dom_html_input_element_set_form_enctype
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"formEnctype\"]"
-        ghcjs_dom_html_input_element_get_form_enctype ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetFormEnctype ::
-                               (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetFormEnctype self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_form_enctype
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"formMethod\"] = $2;"
-        ghcjs_dom_html_input_element_set_form_method ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetFormMethod ::
-                              (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetFormMethod self val
-  = ghcjs_dom_html_input_element_set_form_method
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"formMethod\"]"
-        ghcjs_dom_html_input_element_get_form_method ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetFormMethod ::
-                              (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetFormMethod self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_form_method
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"formNoValidate\"] = $2;"
-        ghcjs_dom_html_input_element_set_form_no_validate ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetFormNoValidate ::
-                                  (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetFormNoValidate self val
-  = ghcjs_dom_html_input_element_set_form_no_validate
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"formNoValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_form_no_validate ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetFormNoValidate ::
-                                  (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetFormNoValidate self
-  = ghcjs_dom_html_input_element_get_form_no_validate
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"formTarget\"] = $2;"
-        ghcjs_dom_html_input_element_set_form_target ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetFormTarget ::
-                              (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetFormTarget self val
-  = ghcjs_dom_html_input_element_set_form_target
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"formTarget\"]"
-        ghcjs_dom_html_input_element_get_form_target ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetFormTarget ::
-                              (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetFormTarget self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_form_target
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_input_element_set_height ::
-        JSRef HTMLInputElement -> Word -> IO ()
- 
-htmlInputElementSetHeight ::
-                          (IsHTMLInputElement self) => self -> Word -> IO ()
-htmlInputElementSetHeight self val
-  = ghcjs_dom_html_input_element_set_height
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_input_element_get_height ::
-        JSRef HTMLInputElement -> IO Word
- 
-htmlInputElementGetHeight ::
-                          (IsHTMLInputElement self) => self -> IO Word
-htmlInputElementGetHeight self
-  = ghcjs_dom_html_input_element_get_height
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"indeterminate\"] = $2;"
-        ghcjs_dom_html_input_element_set_indeterminate ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetIndeterminate ::
-                                 (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetIndeterminate self val
-  = ghcjs_dom_html_input_element_set_indeterminate
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"indeterminate\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_indeterminate ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetIndeterminate ::
-                                 (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetIndeterminate self
-  = ghcjs_dom_html_input_element_get_indeterminate
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"list\"]"
-        ghcjs_dom_html_input_element_get_list ::
-        JSRef HTMLInputElement -> IO (JSRef HTMLElement)
- 
-htmlInputElementGetList ::
-                        (IsHTMLInputElement self) => self -> IO (Maybe HTMLElement)
-htmlInputElementGetList self
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_input_element_get_list
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"max\"] = $2;"
-        ghcjs_dom_html_input_element_set_max ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetMax ::
-                       (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetMax self val
-  = ghcjs_dom_html_input_element_set_max
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"max\"]"
-        ghcjs_dom_html_input_element_get_max ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetMax ::
-                       (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetMax self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_max
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"maxLength\"] = $2;"
-        ghcjs_dom_html_input_element_set_max_length ::
-        JSRef HTMLInputElement -> Int -> IO ()
- 
-htmlInputElementSetMaxLength ::
-                             (IsHTMLInputElement self) => self -> Int -> IO ()
-htmlInputElementSetMaxLength self val
-  = ghcjs_dom_html_input_element_set_max_length
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"maxLength\"]"
-        ghcjs_dom_html_input_element_get_max_length ::
-        JSRef HTMLInputElement -> IO Int
- 
-htmlInputElementGetMaxLength ::
-                             (IsHTMLInputElement self) => self -> IO Int
-htmlInputElementGetMaxLength self
-  = ghcjs_dom_html_input_element_get_max_length
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"min\"] = $2;"
-        ghcjs_dom_html_input_element_set_min ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetMin ::
-                       (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetMin self val
-  = ghcjs_dom_html_input_element_set_min
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"min\"]"
-        ghcjs_dom_html_input_element_get_min ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetMin ::
-                       (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetMin self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_min
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"multiple\"] = $2;"
-        ghcjs_dom_html_input_element_set_multiple ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetMultiple ::
-                            (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetMultiple self val
-  = ghcjs_dom_html_input_element_set_multiple
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"multiple\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_multiple ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetMultiple ::
-                            (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetMultiple self
-  = ghcjs_dom_html_input_element_get_multiple
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_input_element_set_name ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetName ::
-                        (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetName self val
-  = ghcjs_dom_html_input_element_set_name
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_input_element_get_name ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetName ::
-                        (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_name
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"pattern\"] = $2;"
-        ghcjs_dom_html_input_element_set_pattern ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetPattern ::
-                           (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetPattern self val
-  = ghcjs_dom_html_input_element_set_pattern
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"pattern\"]"
-        ghcjs_dom_html_input_element_get_pattern ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetPattern ::
-                           (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetPattern self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_pattern
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"placeholder\"] = $2;"
-        ghcjs_dom_html_input_element_set_placeholder ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetPlaceholder ::
-                               (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetPlaceholder self val
-  = ghcjs_dom_html_input_element_set_placeholder
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"placeholder\"]"
-        ghcjs_dom_html_input_element_get_placeholder ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetPlaceholder ::
-                               (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetPlaceholder self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_placeholder
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"readOnly\"] = $2;"
-        ghcjs_dom_html_input_element_set_read_only ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetReadOnly ::
-                            (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetReadOnly self val
-  = ghcjs_dom_html_input_element_set_read_only
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"readOnly\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_read_only ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetReadOnly ::
-                            (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetReadOnly self
-  = ghcjs_dom_html_input_element_get_read_only
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"required\"] = $2;"
-        ghcjs_dom_html_input_element_set_required ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetRequired ::
-                            (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetRequired self val
-  = ghcjs_dom_html_input_element_set_required
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"required\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_required ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetRequired ::
-                            (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetRequired self
-  = ghcjs_dom_html_input_element_get_required
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"size\"] = $2;"
-        ghcjs_dom_html_input_element_set_size ::
-        JSRef HTMLInputElement -> Word -> IO ()
- 
-htmlInputElementSetSize ::
-                        (IsHTMLInputElement self) => self -> Word -> IO ()
-htmlInputElementSetSize self val
-  = ghcjs_dom_html_input_element_set_size
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"size\"]"
-        ghcjs_dom_html_input_element_get_size ::
-        JSRef HTMLInputElement -> IO Word
- 
-htmlInputElementGetSize ::
-                        (IsHTMLInputElement self) => self -> IO Word
-htmlInputElementGetSize self
-  = ghcjs_dom_html_input_element_get_size
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"src\"] = $2;"
-        ghcjs_dom_html_input_element_set_src ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetSrc ::
-                       (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetSrc self val
-  = ghcjs_dom_html_input_element_set_src
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"src\"]"
-        ghcjs_dom_html_input_element_get_src ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetSrc ::
-                       (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetSrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_src
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"step\"] = $2;"
-        ghcjs_dom_html_input_element_set_step ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetStep ::
-                        (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetStep self val
-  = ghcjs_dom_html_input_element_set_step
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"step\"]"
-        ghcjs_dom_html_input_element_get_step ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetStep ::
-                        (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetStep self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_step
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"defaultValue\"] = $2;"
-        ghcjs_dom_html_input_element_set_default_value ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetDefaultValue ::
-                                (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetDefaultValue self val
-  = ghcjs_dom_html_input_element_set_default_value
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"defaultValue\"]"
-        ghcjs_dom_html_input_element_get_default_value ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetDefaultValue ::
-                                (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetDefaultValue self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_default_value
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_html_input_element_set_value ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetValue ::
-                         (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetValue self val
-  = ghcjs_dom_html_input_element_set_value
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_html_input_element_get_value ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetValue ::
-                         (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetValue self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_value
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"valueAsNumber\"] = $2;"
-        ghcjs_dom_html_input_element_set_value_as_number ::
-        JSRef HTMLInputElement -> Double -> IO ()
- 
-htmlInputElementSetValueAsNumber ::
-                                 (IsHTMLInputElement self) => self -> Double -> IO ()
-htmlInputElementSetValueAsNumber self val
-  = ghcjs_dom_html_input_element_set_value_as_number
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"valueAsNumber\"]"
-        ghcjs_dom_html_input_element_get_value_as_number ::
-        JSRef HTMLInputElement -> IO Double
- 
-htmlInputElementGetValueAsNumber ::
-                                 (IsHTMLInputElement self) => self -> IO Double
-htmlInputElementGetValueAsNumber self
-  = ghcjs_dom_html_input_element_get_value_as_number
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_input_element_set_width ::
-        JSRef HTMLInputElement -> Word -> IO ()
- 
-htmlInputElementSetWidth ::
-                         (IsHTMLInputElement self) => self -> Word -> IO ()
-htmlInputElementSetWidth self val
-  = ghcjs_dom_html_input_element_set_width
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_input_element_get_width ::
-        JSRef HTMLInputElement -> IO Word
- 
-htmlInputElementGetWidth ::
-                         (IsHTMLInputElement self) => self -> IO Word
-htmlInputElementGetWidth self
-  = ghcjs_dom_html_input_element_get_width
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_will_validate ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetWillValidate ::
-                                (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetWillValidate self
-  = ghcjs_dom_html_input_element_get_will_validate
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"validity\"]"
-        ghcjs_dom_html_input_element_get_validity ::
-        JSRef HTMLInputElement -> IO (JSRef ValidityState)
- 
-htmlInputElementGetValidity ::
-                            (IsHTMLInputElement self) => self -> IO (Maybe ValidityState)
-htmlInputElementGetValidity self
-  = fmap ValidityState . maybeJSNull <$>
-      (ghcjs_dom_html_input_element_get_validity
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"validationMessage\"]"
-        ghcjs_dom_html_input_element_get_validation_message ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetValidationMessage ::
-                                     (IsHTMLInputElement self, FromJSString result) =>
-                                       self -> IO result
-htmlInputElementGetValidationMessage self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_validation_message
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"labels\"]"
-        ghcjs_dom_html_input_element_get_labels ::
-        JSRef HTMLInputElement -> IO (JSRef NodeList)
- 
-htmlInputElementGetLabels ::
-                          (IsHTMLInputElement self) => self -> IO (Maybe NodeList)
-htmlInputElementGetLabels self
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_html_input_element_get_labels
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_input_element_set_align ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetAlign ::
-                         (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetAlign self val
-  = ghcjs_dom_html_input_element_set_align
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_input_element_get_align ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetAlign ::
-                         (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_align
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"useMap\"] = $2;"
-        ghcjs_dom_html_input_element_set_use_map ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetUseMap ::
-                          (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetUseMap self val
-  = ghcjs_dom_html_input_element_set_use_map
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"useMap\"]"
-        ghcjs_dom_html_input_element_get_use_map ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetUseMap ::
-                          (IsHTMLInputElement self, FromJSString result) => self -> IO result
-htmlInputElementGetUseMap self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_use_map
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"incremental\"] = $2;"
-        ghcjs_dom_html_input_element_set_incremental ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetIncremental ::
-                               (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetIncremental self val
-  = ghcjs_dom_html_input_element_set_incremental
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"incremental\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_incremental ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetIncremental ::
-                               (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetIncremental self
-  = ghcjs_dom_html_input_element_get_incremental
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"autocorrect\"] = $2;"
-        ghcjs_dom_html_input_element_set_autocorrect ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetAutocorrect ::
-                               (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetAutocorrect self val
-  = ghcjs_dom_html_input_element_set_autocorrect
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_autocorrect ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetAutocorrect ::
-                               (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetAutocorrect self
-  = ghcjs_dom_html_input_element_get_autocorrect
-      (unHTMLInputElement (toHTMLInputElement self))
- 
-foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
-        ghcjs_dom_html_input_element_set_autocapitalize ::
-        JSRef HTMLInputElement -> JSString -> IO ()
- 
-htmlInputElementSetAutocapitalize ::
-                                  (IsHTMLInputElement self, ToJSString val) => self -> val -> IO ()
-htmlInputElementSetAutocapitalize self val
-  = ghcjs_dom_html_input_element_set_autocapitalize
-      (unHTMLInputElement (toHTMLInputElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"autocapitalize\"]"
-        ghcjs_dom_html_input_element_get_autocapitalize ::
-        JSRef HTMLInputElement -> IO JSString
- 
-htmlInputElementGetAutocapitalize ::
-                                  (IsHTMLInputElement self, FromJSString result) =>
-                                    self -> IO result
-htmlInputElementGetAutocapitalize self
-  = fromJSString <$>
-      (ghcjs_dom_html_input_element_get_autocapitalize
-         (unHTMLInputElement (toHTMLInputElement self)))
- 
-foreign import javascript unsafe "$1[\"capture\"] = $2;"
-        ghcjs_dom_html_input_element_set_capture ::
-        JSRef HTMLInputElement -> Bool -> IO ()
- 
-htmlInputElementSetCapture ::
-                           (IsHTMLInputElement self) => self -> Bool -> IO ()
-htmlInputElementSetCapture self val
-  = ghcjs_dom_html_input_element_set_capture
-      (unHTMLInputElement (toHTMLInputElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"capture\"] ? 1 : 0)"
-        ghcjs_dom_html_input_element_get_capture ::
-        JSRef HTMLInputElement -> IO Bool
- 
-htmlInputElementGetCapture ::
-                           (IsHTMLInputElement self) => self -> IO Bool
-htmlInputElementGetCapture self
-  = ghcjs_dom_html_input_element_get_capture
-      (unHTMLInputElement (toHTMLInputElement self))
-#else
-module GHCJS.DOM.HTMLInputElement (
-  module Graphics.UI.Gtk.WebKit.DOM.HTMLInputElement
-  ) where
+module GHCJS.DOM.HTMLInputElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLInputElement
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.HTMLInputElement
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLInputElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLInputElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLKeygenElement.hs b/src/GHCJS/DOM/HTMLKeygenElement.hs
--- a/src/GHCJS/DOM/HTMLKeygenElement.hs
+++ b/src/GHCJS/DOM/HTMLKeygenElement.hs
@@ -1,242 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLKeygenElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLKeygenElement
-       (ghcjs_dom_html_keygen_element_check_validity,
-        htmlKeygenElementCheckValidity,
-        ghcjs_dom_html_keygen_element_set_custom_validity,
-        htmlKeygenElementSetCustomValidity,
-        ghcjs_dom_html_keygen_element_set_autofocus,
-        htmlKeygenElementSetAutofocus,
-        ghcjs_dom_html_keygen_element_get_autofocus,
-        htmlKeygenElementGetAutofocus,
-        ghcjs_dom_html_keygen_element_set_challenge,
-        htmlKeygenElementSetChallenge,
-        ghcjs_dom_html_keygen_element_get_challenge,
-        htmlKeygenElementGetChallenge,
-        ghcjs_dom_html_keygen_element_set_disabled,
-        htmlKeygenElementSetDisabled,
-        ghcjs_dom_html_keygen_element_get_disabled,
-        htmlKeygenElementGetDisabled,
-        ghcjs_dom_html_keygen_element_get_form, htmlKeygenElementGetForm,
-        ghcjs_dom_html_keygen_element_set_keytype,
-        htmlKeygenElementSetKeytype,
-        ghcjs_dom_html_keygen_element_get_keytype,
-        htmlKeygenElementGetKeytype,
-        ghcjs_dom_html_keygen_element_set_name, htmlKeygenElementSetName,
-        ghcjs_dom_html_keygen_element_get_name, htmlKeygenElementGetName,
-        ghcjs_dom_html_keygen_element_get_will_validate,
-        htmlKeygenElementGetWillValidate,
-        ghcjs_dom_html_keygen_element_get_validity,
-        htmlKeygenElementGetValidity,
-        ghcjs_dom_html_keygen_element_get_validation_message,
-        htmlKeygenElementGetValidationMessage,
-        ghcjs_dom_html_keygen_element_get_labels,
-        htmlKeygenElementGetLabels, HTMLKeygenElement, IsHTMLKeygenElement,
-        castToHTMLKeygenElement, gTypeHTMLKeygenElement,
-        toHTMLKeygenElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"checkValidity\"]() ? 1 : 0)"
-        ghcjs_dom_html_keygen_element_check_validity ::
-        JSRef HTMLKeygenElement -> IO Bool
- 
-htmlKeygenElementCheckValidity ::
-                               (IsHTMLKeygenElement self) => self -> IO Bool
-htmlKeygenElementCheckValidity self
-  = ghcjs_dom_html_keygen_element_check_validity
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
- 
-foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
-        ghcjs_dom_html_keygen_element_set_custom_validity ::
-        JSRef HTMLKeygenElement -> JSString -> IO ()
- 
-htmlKeygenElementSetCustomValidity ::
-                                   (IsHTMLKeygenElement self, ToJSString error) =>
-                                     self -> error -> IO ()
-htmlKeygenElementSetCustomValidity self error
-  = ghcjs_dom_html_keygen_element_set_custom_validity
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
-      (toJSString error)
- 
-foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
-        ghcjs_dom_html_keygen_element_set_autofocus ::
-        JSRef HTMLKeygenElement -> Bool -> IO ()
- 
-htmlKeygenElementSetAutofocus ::
-                              (IsHTMLKeygenElement self) => self -> Bool -> IO ()
-htmlKeygenElementSetAutofocus self val
-  = ghcjs_dom_html_keygen_element_set_autofocus
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
-        ghcjs_dom_html_keygen_element_get_autofocus ::
-        JSRef HTMLKeygenElement -> IO Bool
- 
-htmlKeygenElementGetAutofocus ::
-                              (IsHTMLKeygenElement self) => self -> IO Bool
-htmlKeygenElementGetAutofocus self
-  = ghcjs_dom_html_keygen_element_get_autofocus
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
- 
-foreign import javascript unsafe "$1[\"challenge\"] = $2;"
-        ghcjs_dom_html_keygen_element_set_challenge ::
-        JSRef HTMLKeygenElement -> JSString -> IO ()
- 
-htmlKeygenElementSetChallenge ::
-                              (IsHTMLKeygenElement self, ToJSString val) => self -> val -> IO ()
-htmlKeygenElementSetChallenge self val
-  = ghcjs_dom_html_keygen_element_set_challenge
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"challenge\"]"
-        ghcjs_dom_html_keygen_element_get_challenge ::
-        JSRef HTMLKeygenElement -> IO JSString
- 
-htmlKeygenElementGetChallenge ::
-                              (IsHTMLKeygenElement self, FromJSString result) =>
-                                self -> IO result
-htmlKeygenElementGetChallenge self
-  = fromJSString <$>
-      (ghcjs_dom_html_keygen_element_get_challenge
-         (unHTMLKeygenElement (toHTMLKeygenElement self)))
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_keygen_element_set_disabled ::
-        JSRef HTMLKeygenElement -> Bool -> IO ()
- 
-htmlKeygenElementSetDisabled ::
-                             (IsHTMLKeygenElement self) => self -> Bool -> IO ()
-htmlKeygenElementSetDisabled self val
-  = ghcjs_dom_html_keygen_element_set_disabled
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_keygen_element_get_disabled ::
-        JSRef HTMLKeygenElement -> IO Bool
- 
-htmlKeygenElementGetDisabled ::
-                             (IsHTMLKeygenElement self) => self -> IO Bool
-htmlKeygenElementGetDisabled self
-  = ghcjs_dom_html_keygen_element_get_disabled
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_keygen_element_get_form ::
-        JSRef HTMLKeygenElement -> IO (JSRef HTMLFormElement)
- 
-htmlKeygenElementGetForm ::
-                         (IsHTMLKeygenElement self) => self -> IO (Maybe HTMLFormElement)
-htmlKeygenElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_keygen_element_get_form
-         (unHTMLKeygenElement (toHTMLKeygenElement self)))
- 
-foreign import javascript unsafe "$1[\"keytype\"] = $2;"
-        ghcjs_dom_html_keygen_element_set_keytype ::
-        JSRef HTMLKeygenElement -> JSString -> IO ()
- 
-htmlKeygenElementSetKeytype ::
-                            (IsHTMLKeygenElement self, ToJSString val) => self -> val -> IO ()
-htmlKeygenElementSetKeytype self val
-  = ghcjs_dom_html_keygen_element_set_keytype
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"keytype\"]"
-        ghcjs_dom_html_keygen_element_get_keytype ::
-        JSRef HTMLKeygenElement -> IO JSString
- 
-htmlKeygenElementGetKeytype ::
-                            (IsHTMLKeygenElement self, FromJSString result) =>
-                              self -> IO result
-htmlKeygenElementGetKeytype self
-  = fromJSString <$>
-      (ghcjs_dom_html_keygen_element_get_keytype
-         (unHTMLKeygenElement (toHTMLKeygenElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_keygen_element_set_name ::
-        JSRef HTMLKeygenElement -> JSString -> IO ()
- 
-htmlKeygenElementSetName ::
-                         (IsHTMLKeygenElement self, ToJSString val) => self -> val -> IO ()
-htmlKeygenElementSetName self val
-  = ghcjs_dom_html_keygen_element_set_name
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_keygen_element_get_name ::
-        JSRef HTMLKeygenElement -> IO JSString
- 
-htmlKeygenElementGetName ::
-                         (IsHTMLKeygenElement self, FromJSString result) =>
-                           self -> IO result
-htmlKeygenElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_keygen_element_get_name
-         (unHTMLKeygenElement (toHTMLKeygenElement self)))
- 
-foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_keygen_element_get_will_validate ::
-        JSRef HTMLKeygenElement -> IO Bool
- 
-htmlKeygenElementGetWillValidate ::
-                                 (IsHTMLKeygenElement self) => self -> IO Bool
-htmlKeygenElementGetWillValidate self
-  = ghcjs_dom_html_keygen_element_get_will_validate
-      (unHTMLKeygenElement (toHTMLKeygenElement self))
- 
-foreign import javascript unsafe "$1[\"validity\"]"
-        ghcjs_dom_html_keygen_element_get_validity ::
-        JSRef HTMLKeygenElement -> IO (JSRef ValidityState)
- 
-htmlKeygenElementGetValidity ::
-                             (IsHTMLKeygenElement self) => self -> IO (Maybe ValidityState)
-htmlKeygenElementGetValidity self
-  = fmap ValidityState . maybeJSNull <$>
-      (ghcjs_dom_html_keygen_element_get_validity
-         (unHTMLKeygenElement (toHTMLKeygenElement self)))
- 
-foreign import javascript unsafe "$1[\"validationMessage\"]"
-        ghcjs_dom_html_keygen_element_get_validation_message ::
-        JSRef HTMLKeygenElement -> IO JSString
- 
-htmlKeygenElementGetValidationMessage ::
-                                      (IsHTMLKeygenElement self, FromJSString result) =>
-                                        self -> IO result
-htmlKeygenElementGetValidationMessage self
-  = fromJSString <$>
-      (ghcjs_dom_html_keygen_element_get_validation_message
-         (unHTMLKeygenElement (toHTMLKeygenElement self)))
- 
-foreign import javascript unsafe "$1[\"labels\"]"
-        ghcjs_dom_html_keygen_element_get_labels ::
-        JSRef HTMLKeygenElement -> IO (JSRef NodeList)
- 
-htmlKeygenElementGetLabels ::
-                           (IsHTMLKeygenElement self) => self -> IO (Maybe NodeList)
-htmlKeygenElementGetLabels self
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_html_keygen_element_get_labels
-         (unHTMLKeygenElement (toHTMLKeygenElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement
 #else
-module GHCJS.DOM.HTMLKeygenElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLKeygenElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLKeygenElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLLIElement.hs b/src/GHCJS/DOM/HTMLLIElement.hs
--- a/src/GHCJS/DOM/HTMLLIElement.hs
+++ b/src/GHCJS/DOM/HTMLLIElement.hs
@@ -1,43 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLLIElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLLIElement
-       (ghcjs_dom_htmlli_element_set_value, htmlliElementSetValue,
-        ghcjs_dom_htmlli_element_get_value, htmlliElementGetValue,
-        HTMLLIElement, IsHTMLLIElement, castToHTMLLIElement,
-        gTypeHTMLLIElement, toHTMLLIElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_htmlli_element_set_value ::
-        JSRef HTMLLIElement -> Int -> IO ()
- 
-htmlliElementSetValue ::
-                      (IsHTMLLIElement self) => self -> Int -> IO ()
-htmlliElementSetValue self val
-  = ghcjs_dom_htmlli_element_set_value
-      (unHTMLLIElement (toHTMLLIElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_htmlli_element_get_value :: JSRef HTMLLIElement -> IO Int
- 
-htmlliElementGetValue :: (IsHTMLLIElement self) => self -> IO Int
-htmlliElementGetValue self
-  = ghcjs_dom_htmlli_element_get_value
-      (unHTMLLIElement (toHTMLLIElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLLIElement
 #else
-module GHCJS.DOM.HTMLLIElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLLIElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLLIElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLLIElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLLabelElement.hs b/src/GHCJS/DOM/HTMLLabelElement.hs
--- a/src/GHCJS/DOM/HTMLLabelElement.hs
+++ b/src/GHCJS/DOM/HTMLLabelElement.hs
@@ -1,72 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLLabelElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLLabelElement
-       (ghcjs_dom_html_label_element_get_form, htmlLabelElementGetForm,
-        ghcjs_dom_html_label_element_set_html_for,
-        htmlLabelElementSetHtmlFor,
-        ghcjs_dom_html_label_element_get_html_for,
-        htmlLabelElementGetHtmlFor,
-        ghcjs_dom_html_label_element_get_control,
-        htmlLabelElementGetControl, HTMLLabelElement, IsHTMLLabelElement,
-        castToHTMLLabelElement, gTypeHTMLLabelElement, toHTMLLabelElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_label_element_get_form ::
-        JSRef HTMLLabelElement -> IO (JSRef HTMLFormElement)
- 
-htmlLabelElementGetForm ::
-                        (IsHTMLLabelElement self) => self -> IO (Maybe HTMLFormElement)
-htmlLabelElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_label_element_get_form
-         (unHTMLLabelElement (toHTMLLabelElement self)))
- 
-foreign import javascript unsafe "$1[\"htmlFor\"] = $2;"
-        ghcjs_dom_html_label_element_set_html_for ::
-        JSRef HTMLLabelElement -> JSString -> IO ()
- 
-htmlLabelElementSetHtmlFor ::
-                           (IsHTMLLabelElement self, ToJSString val) => self -> val -> IO ()
-htmlLabelElementSetHtmlFor self val
-  = ghcjs_dom_html_label_element_set_html_for
-      (unHTMLLabelElement (toHTMLLabelElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"htmlFor\"]"
-        ghcjs_dom_html_label_element_get_html_for ::
-        JSRef HTMLLabelElement -> IO JSString
- 
-htmlLabelElementGetHtmlFor ::
-                           (IsHTMLLabelElement self, FromJSString result) => self -> IO result
-htmlLabelElementGetHtmlFor self
-  = fromJSString <$>
-      (ghcjs_dom_html_label_element_get_html_for
-         (unHTMLLabelElement (toHTMLLabelElement self)))
- 
-foreign import javascript unsafe "$1[\"control\"]"
-        ghcjs_dom_html_label_element_get_control ::
-        JSRef HTMLLabelElement -> IO (JSRef HTMLElement)
- 
-htmlLabelElementGetControl ::
-                           (IsHTMLLabelElement self) => self -> IO (Maybe HTMLElement)
-htmlLabelElementGetControl self
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_label_element_get_control
-         (unHTMLLabelElement (toHTMLLabelElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLLabelElement
 #else
-module GHCJS.DOM.HTMLLabelElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLLabelElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLLabelElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLLabelElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLLegendElement.hs b/src/GHCJS/DOM/HTMLLegendElement.hs
--- a/src/GHCJS/DOM/HTMLLegendElement.hs
+++ b/src/GHCJS/DOM/HTMLLegendElement.hs
@@ -1,59 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLLegendElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLLegendElement
-       (ghcjs_dom_html_legend_element_get_form, htmlLegendElementGetForm,
-        ghcjs_dom_html_legend_element_set_align, htmlLegendElementSetAlign,
-        ghcjs_dom_html_legend_element_get_align, htmlLegendElementGetAlign,
-        HTMLLegendElement, IsHTMLLegendElement, castToHTMLLegendElement,
-        gTypeHTMLLegendElement, toHTMLLegendElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_legend_element_get_form ::
-        JSRef HTMLLegendElement -> IO (JSRef HTMLFormElement)
- 
-htmlLegendElementGetForm ::
-                         (IsHTMLLegendElement self) => self -> IO (Maybe HTMLFormElement)
-htmlLegendElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_legend_element_get_form
-         (unHTMLLegendElement (toHTMLLegendElement self)))
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_legend_element_set_align ::
-        JSRef HTMLLegendElement -> JSString -> IO ()
- 
-htmlLegendElementSetAlign ::
-                          (IsHTMLLegendElement self, ToJSString val) => self -> val -> IO ()
-htmlLegendElementSetAlign self val
-  = ghcjs_dom_html_legend_element_set_align
-      (unHTMLLegendElement (toHTMLLegendElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_legend_element_get_align ::
-        JSRef HTMLLegendElement -> IO JSString
- 
-htmlLegendElementGetAlign ::
-                          (IsHTMLLegendElement self, FromJSString result) =>
-                            self -> IO result
-htmlLegendElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_legend_element_get_align
-         (unHTMLLegendElement (toHTMLLegendElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLLegendElement
 #else
-module GHCJS.DOM.HTMLLegendElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLLegendElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLLegendElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLLegendElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLLinkElement.hs b/src/GHCJS/DOM/HTMLLinkElement.hs
--- a/src/GHCJS/DOM/HTMLLinkElement.hs
+++ b/src/GHCJS/DOM/HTMLLinkElement.hs
@@ -1,240 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLLinkElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLLinkElement
-       (ghcjs_dom_html_link_element_set_disabled,
-        htmlLinkElementSetDisabled,
-        ghcjs_dom_html_link_element_get_disabled,
-        htmlLinkElementGetDisabled,
-        ghcjs_dom_html_link_element_set_charset, htmlLinkElementSetCharset,
-        ghcjs_dom_html_link_element_get_charset, htmlLinkElementGetCharset,
-        ghcjs_dom_html_link_element_set_href, htmlLinkElementSetHref,
-        ghcjs_dom_html_link_element_get_href, htmlLinkElementGetHref,
-        ghcjs_dom_html_link_element_set_hreflang,
-        htmlLinkElementSetHreflang,
-        ghcjs_dom_html_link_element_get_hreflang,
-        htmlLinkElementGetHreflang, ghcjs_dom_html_link_element_set_media,
-        htmlLinkElementSetMedia, ghcjs_dom_html_link_element_get_media,
-        htmlLinkElementGetMedia, ghcjs_dom_html_link_element_set_rel,
-        htmlLinkElementSetRel, ghcjs_dom_html_link_element_get_rel,
-        htmlLinkElementGetRel, ghcjs_dom_html_link_element_set_rev,
-        htmlLinkElementSetRev, ghcjs_dom_html_link_element_get_rev,
-        htmlLinkElementGetRev, ghcjs_dom_html_link_element_set_target,
-        htmlLinkElementSetTarget, ghcjs_dom_html_link_element_get_target,
-        htmlLinkElementGetTarget, ghcjs_dom_html_link_element_get_sheet,
-        htmlLinkElementGetSheet, ghcjs_dom_html_link_element_get_rel_list,
-        htmlLinkElementGetRelList, HTMLLinkElement, IsHTMLLinkElement,
-        castToHTMLLinkElement, gTypeHTMLLinkElement, toHTMLLinkElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_link_element_set_disabled ::
-        JSRef HTMLLinkElement -> Bool -> IO ()
- 
-htmlLinkElementSetDisabled ::
-                           (IsHTMLLinkElement self) => self -> Bool -> IO ()
-htmlLinkElementSetDisabled self val
-  = ghcjs_dom_html_link_element_set_disabled
-      (unHTMLLinkElement (toHTMLLinkElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_link_element_get_disabled ::
-        JSRef HTMLLinkElement -> IO Bool
- 
-htmlLinkElementGetDisabled ::
-                           (IsHTMLLinkElement self) => self -> IO Bool
-htmlLinkElementGetDisabled self
-  = ghcjs_dom_html_link_element_get_disabled
-      (unHTMLLinkElement (toHTMLLinkElement self))
- 
-foreign import javascript unsafe "$1[\"charset\"] = $2;"
-        ghcjs_dom_html_link_element_set_charset ::
-        JSRef HTMLLinkElement -> JSString -> IO ()
- 
-htmlLinkElementSetCharset ::
-                          (IsHTMLLinkElement self, ToJSString val) => self -> val -> IO ()
-htmlLinkElementSetCharset self val
-  = ghcjs_dom_html_link_element_set_charset
-      (unHTMLLinkElement (toHTMLLinkElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"charset\"]"
-        ghcjs_dom_html_link_element_get_charset ::
-        JSRef HTMLLinkElement -> IO JSString
- 
-htmlLinkElementGetCharset ::
-                          (IsHTMLLinkElement self, FromJSString result) => self -> IO result
-htmlLinkElementGetCharset self
-  = fromJSString <$>
-      (ghcjs_dom_html_link_element_get_charset
-         (unHTMLLinkElement (toHTMLLinkElement self)))
- 
-foreign import javascript unsafe "$1[\"href\"] = $2;"
-        ghcjs_dom_html_link_element_set_href ::
-        JSRef HTMLLinkElement -> JSString -> IO ()
- 
-htmlLinkElementSetHref ::
-                       (IsHTMLLinkElement self, ToJSString val) => self -> val -> IO ()
-htmlLinkElementSetHref self val
-  = ghcjs_dom_html_link_element_set_href
-      (unHTMLLinkElement (toHTMLLinkElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"href\"]"
-        ghcjs_dom_html_link_element_get_href ::
-        JSRef HTMLLinkElement -> IO JSString
- 
-htmlLinkElementGetHref ::
-                       (IsHTMLLinkElement self, FromJSString result) => self -> IO result
-htmlLinkElementGetHref self
-  = fromJSString <$>
-      (ghcjs_dom_html_link_element_get_href
-         (unHTMLLinkElement (toHTMLLinkElement self)))
- 
-foreign import javascript unsafe "$1[\"hreflang\"] = $2;"
-        ghcjs_dom_html_link_element_set_hreflang ::
-        JSRef HTMLLinkElement -> JSString -> IO ()
- 
-htmlLinkElementSetHreflang ::
-                           (IsHTMLLinkElement self, ToJSString val) => self -> val -> IO ()
-htmlLinkElementSetHreflang self val
-  = ghcjs_dom_html_link_element_set_hreflang
-      (unHTMLLinkElement (toHTMLLinkElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"hreflang\"]"
-        ghcjs_dom_html_link_element_get_hreflang ::
-        JSRef HTMLLinkElement -> IO JSString
- 
-htmlLinkElementGetHreflang ::
-                           (IsHTMLLinkElement self, FromJSString result) => self -> IO result
-htmlLinkElementGetHreflang self
-  = fromJSString <$>
-      (ghcjs_dom_html_link_element_get_hreflang
-         (unHTMLLinkElement (toHTMLLinkElement self)))
- 
-foreign import javascript unsafe "$1[\"media\"] = $2;"
-        ghcjs_dom_html_link_element_set_media ::
-        JSRef HTMLLinkElement -> JSString -> IO ()
- 
-htmlLinkElementSetMedia ::
-                        (IsHTMLLinkElement self, ToJSString val) => self -> val -> IO ()
-htmlLinkElementSetMedia self val
-  = ghcjs_dom_html_link_element_set_media
-      (unHTMLLinkElement (toHTMLLinkElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"media\"]"
-        ghcjs_dom_html_link_element_get_media ::
-        JSRef HTMLLinkElement -> IO JSString
- 
-htmlLinkElementGetMedia ::
-                        (IsHTMLLinkElement self, FromJSString result) => self -> IO result
-htmlLinkElementGetMedia self
-  = fromJSString <$>
-      (ghcjs_dom_html_link_element_get_media
-         (unHTMLLinkElement (toHTMLLinkElement self)))
- 
-foreign import javascript unsafe "$1[\"rel\"] = $2;"
-        ghcjs_dom_html_link_element_set_rel ::
-        JSRef HTMLLinkElement -> JSString -> IO ()
- 
-htmlLinkElementSetRel ::
-                      (IsHTMLLinkElement self, ToJSString val) => self -> val -> IO ()
-htmlLinkElementSetRel self val
-  = ghcjs_dom_html_link_element_set_rel
-      (unHTMLLinkElement (toHTMLLinkElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"rel\"]"
-        ghcjs_dom_html_link_element_get_rel ::
-        JSRef HTMLLinkElement -> IO JSString
- 
-htmlLinkElementGetRel ::
-                      (IsHTMLLinkElement self, FromJSString result) => self -> IO result
-htmlLinkElementGetRel self
-  = fromJSString <$>
-      (ghcjs_dom_html_link_element_get_rel
-         (unHTMLLinkElement (toHTMLLinkElement self)))
- 
-foreign import javascript unsafe "$1[\"rev\"] = $2;"
-        ghcjs_dom_html_link_element_set_rev ::
-        JSRef HTMLLinkElement -> JSString -> IO ()
- 
-htmlLinkElementSetRev ::
-                      (IsHTMLLinkElement self, ToJSString val) => self -> val -> IO ()
-htmlLinkElementSetRev self val
-  = ghcjs_dom_html_link_element_set_rev
-      (unHTMLLinkElement (toHTMLLinkElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"rev\"]"
-        ghcjs_dom_html_link_element_get_rev ::
-        JSRef HTMLLinkElement -> IO JSString
- 
-htmlLinkElementGetRev ::
-                      (IsHTMLLinkElement self, FromJSString result) => self -> IO result
-htmlLinkElementGetRev self
-  = fromJSString <$>
-      (ghcjs_dom_html_link_element_get_rev
-         (unHTMLLinkElement (toHTMLLinkElement self)))
- 
-foreign import javascript unsafe "$1[\"target\"] = $2;"
-        ghcjs_dom_html_link_element_set_target ::
-        JSRef HTMLLinkElement -> JSString -> IO ()
- 
-htmlLinkElementSetTarget ::
-                         (IsHTMLLinkElement self, ToJSString val) => self -> val -> IO ()
-htmlLinkElementSetTarget self val
-  = ghcjs_dom_html_link_element_set_target
-      (unHTMLLinkElement (toHTMLLinkElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"target\"]"
-        ghcjs_dom_html_link_element_get_target ::
-        JSRef HTMLLinkElement -> IO JSString
- 
-htmlLinkElementGetTarget ::
-                         (IsHTMLLinkElement self, FromJSString result) => self -> IO result
-htmlLinkElementGetTarget self
-  = fromJSString <$>
-      (ghcjs_dom_html_link_element_get_target
-         (unHTMLLinkElement (toHTMLLinkElement self)))
- 
-foreign import javascript unsafe "$1[\"sheet\"]"
-        ghcjs_dom_html_link_element_get_sheet ::
-        JSRef HTMLLinkElement -> IO (JSRef StyleSheet)
- 
-htmlLinkElementGetSheet ::
-                        (IsHTMLLinkElement self) => self -> IO (Maybe StyleSheet)
-htmlLinkElementGetSheet self
-  = fmap StyleSheet . maybeJSNull <$>
-      (ghcjs_dom_html_link_element_get_sheet
-         (unHTMLLinkElement (toHTMLLinkElement self)))
- 
-foreign import javascript unsafe "$1[\"relList\"]"
-        ghcjs_dom_html_link_element_get_rel_list ::
-        JSRef HTMLLinkElement -> IO (JSRef DOMTokenList)
- 
-htmlLinkElementGetRelList ::
-                          (IsHTMLLinkElement self) => self -> IO (Maybe DOMTokenList)
-htmlLinkElementGetRelList self
-  = fmap DOMTokenList . maybeJSNull <$>
-      (ghcjs_dom_html_link_element_get_rel_list
-         (unHTMLLinkElement (toHTMLLinkElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLLinkElement
 #else
-module GHCJS.DOM.HTMLLinkElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLLinkElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLLinkElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLLinkElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLMapElement.hs b/src/GHCJS/DOM/HTMLMapElement.hs
--- a/src/GHCJS/DOM/HTMLMapElement.hs
+++ b/src/GHCJS/DOM/HTMLMapElement.hs
@@ -1,58 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLMapElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLMapElement
-       (ghcjs_dom_html_map_element_get_areas, htmlMapElementGetAreas,
-        ghcjs_dom_html_map_element_set_name, htmlMapElementSetName,
-        ghcjs_dom_html_map_element_get_name, htmlMapElementGetName,
-        HTMLMapElement, IsHTMLMapElement, castToHTMLMapElement,
-        gTypeHTMLMapElement, toHTMLMapElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"areas\"]"
-        ghcjs_dom_html_map_element_get_areas ::
-        JSRef HTMLMapElement -> IO (JSRef HTMLCollection)
- 
-htmlMapElementGetAreas ::
-                       (IsHTMLMapElement self) => self -> IO (Maybe HTMLCollection)
-htmlMapElementGetAreas self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_map_element_get_areas
-         (unHTMLMapElement (toHTMLMapElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_map_element_set_name ::
-        JSRef HTMLMapElement -> JSString -> IO ()
- 
-htmlMapElementSetName ::
-                      (IsHTMLMapElement self, ToJSString val) => self -> val -> IO ()
-htmlMapElementSetName self val
-  = ghcjs_dom_html_map_element_set_name
-      (unHTMLMapElement (toHTMLMapElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_map_element_get_name ::
-        JSRef HTMLMapElement -> IO JSString
- 
-htmlMapElementGetName ::
-                      (IsHTMLMapElement self, FromJSString result) => self -> IO result
-htmlMapElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_map_element_get_name
-         (unHTMLMapElement (toHTMLMapElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLMapElement
 #else
-module GHCJS.DOM.HTMLMapElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLMapElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLMapElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLMapElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLMarqueeElement.hs b/src/GHCJS/DOM/HTMLMarqueeElement.hs
--- a/src/GHCJS/DOM/HTMLMarqueeElement.hs
+++ b/src/GHCJS/DOM/HTMLMarqueeElement.hs
@@ -1,327 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLMarqueeElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLMarqueeElement
-       (ghcjs_dom_html_marquee_element_start, htmlMarqueeElementStart,
-        ghcjs_dom_html_marquee_element_stop, htmlMarqueeElementStop,
-        ghcjs_dom_html_marquee_element_set_behavior,
-        htmlMarqueeElementSetBehavior,
-        ghcjs_dom_html_marquee_element_get_behavior,
-        htmlMarqueeElementGetBehavior,
-        ghcjs_dom_html_marquee_element_set_bg_color,
-        htmlMarqueeElementSetBgColor,
-        ghcjs_dom_html_marquee_element_get_bg_color,
-        htmlMarqueeElementGetBgColor,
-        ghcjs_dom_html_marquee_element_set_direction,
-        htmlMarqueeElementSetDirection,
-        ghcjs_dom_html_marquee_element_get_direction,
-        htmlMarqueeElementGetDirection,
-        ghcjs_dom_html_marquee_element_set_height,
-        htmlMarqueeElementSetHeight,
-        ghcjs_dom_html_marquee_element_get_height,
-        htmlMarqueeElementGetHeight,
-        ghcjs_dom_html_marquee_element_set_hspace,
-        htmlMarqueeElementSetHspace,
-        ghcjs_dom_html_marquee_element_get_hspace,
-        htmlMarqueeElementGetHspace,
-        ghcjs_dom_html_marquee_element_set_loop, htmlMarqueeElementSetLoop,
-        ghcjs_dom_html_marquee_element_get_loop, htmlMarqueeElementGetLoop,
-        ghcjs_dom_html_marquee_element_set_scroll_amount,
-        htmlMarqueeElementSetScrollAmount,
-        ghcjs_dom_html_marquee_element_get_scroll_amount,
-        htmlMarqueeElementGetScrollAmount,
-        ghcjs_dom_html_marquee_element_set_scroll_delay,
-        htmlMarqueeElementSetScrollDelay,
-        ghcjs_dom_html_marquee_element_get_scroll_delay,
-        htmlMarqueeElementGetScrollDelay,
-        ghcjs_dom_html_marquee_element_set_true_speed,
-        htmlMarqueeElementSetTrueSpeed,
-        ghcjs_dom_html_marquee_element_get_true_speed,
-        htmlMarqueeElementGetTrueSpeed,
-        ghcjs_dom_html_marquee_element_set_vspace,
-        htmlMarqueeElementSetVspace,
-        ghcjs_dom_html_marquee_element_get_vspace,
-        htmlMarqueeElementGetVspace,
-        ghcjs_dom_html_marquee_element_set_width,
-        htmlMarqueeElementSetWidth,
-        ghcjs_dom_html_marquee_element_get_width,
-        htmlMarqueeElementGetWidth, HTMLMarqueeElement,
-        IsHTMLMarqueeElement, castToHTMLMarqueeElement,
-        gTypeHTMLMarqueeElement, toHTMLMarqueeElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"start\"]()"
-        ghcjs_dom_html_marquee_element_start ::
-        JSRef HTMLMarqueeElement -> IO ()
- 
-htmlMarqueeElementStart ::
-                        (IsHTMLMarqueeElement self) => self -> IO ()
-htmlMarqueeElementStart self
-  = ghcjs_dom_html_marquee_element_start
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
- 
-foreign import javascript unsafe "$1[\"stop\"]()"
-        ghcjs_dom_html_marquee_element_stop ::
-        JSRef HTMLMarqueeElement -> IO ()
- 
-htmlMarqueeElementStop ::
-                       (IsHTMLMarqueeElement self) => self -> IO ()
-htmlMarqueeElementStop self
-  = ghcjs_dom_html_marquee_element_stop
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
- 
-foreign import javascript unsafe "$1[\"behavior\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_behavior ::
-        JSRef HTMLMarqueeElement -> JSString -> IO ()
- 
-htmlMarqueeElementSetBehavior ::
-                              (IsHTMLMarqueeElement self, ToJSString val) => self -> val -> IO ()
-htmlMarqueeElementSetBehavior self val
-  = ghcjs_dom_html_marquee_element_set_behavior
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"behavior\"]"
-        ghcjs_dom_html_marquee_element_get_behavior ::
-        JSRef HTMLMarqueeElement -> IO JSString
- 
-htmlMarqueeElementGetBehavior ::
-                              (IsHTMLMarqueeElement self, FromJSString result) =>
-                                self -> IO result
-htmlMarqueeElementGetBehavior self
-  = fromJSString <$>
-      (ghcjs_dom_html_marquee_element_get_behavior
-         (unHTMLMarqueeElement (toHTMLMarqueeElement self)))
- 
-foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_bg_color ::
-        JSRef HTMLMarqueeElement -> JSString -> IO ()
- 
-htmlMarqueeElementSetBgColor ::
-                             (IsHTMLMarqueeElement self, ToJSString val) => self -> val -> IO ()
-htmlMarqueeElementSetBgColor self val
-  = ghcjs_dom_html_marquee_element_set_bg_color
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"bgColor\"]"
-        ghcjs_dom_html_marquee_element_get_bg_color ::
-        JSRef HTMLMarqueeElement -> IO JSString
- 
-htmlMarqueeElementGetBgColor ::
-                             (IsHTMLMarqueeElement self, FromJSString result) =>
-                               self -> IO result
-htmlMarqueeElementGetBgColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_marquee_element_get_bg_color
-         (unHTMLMarqueeElement (toHTMLMarqueeElement self)))
- 
-foreign import javascript unsafe "$1[\"direction\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_direction ::
-        JSRef HTMLMarqueeElement -> JSString -> IO ()
- 
-htmlMarqueeElementSetDirection ::
-                               (IsHTMLMarqueeElement self, ToJSString val) => self -> val -> IO ()
-htmlMarqueeElementSetDirection self val
-  = ghcjs_dom_html_marquee_element_set_direction
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"direction\"]"
-        ghcjs_dom_html_marquee_element_get_direction ::
-        JSRef HTMLMarqueeElement -> IO JSString
- 
-htmlMarqueeElementGetDirection ::
-                               (IsHTMLMarqueeElement self, FromJSString result) =>
-                                 self -> IO result
-htmlMarqueeElementGetDirection self
-  = fromJSString <$>
-      (ghcjs_dom_html_marquee_element_get_direction
-         (unHTMLMarqueeElement (toHTMLMarqueeElement self)))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_height ::
-        JSRef HTMLMarqueeElement -> JSString -> IO ()
- 
-htmlMarqueeElementSetHeight ::
-                            (IsHTMLMarqueeElement self, ToJSString val) => self -> val -> IO ()
-htmlMarqueeElementSetHeight self val
-  = ghcjs_dom_html_marquee_element_set_height
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_marquee_element_get_height ::
-        JSRef HTMLMarqueeElement -> IO JSString
- 
-htmlMarqueeElementGetHeight ::
-                            (IsHTMLMarqueeElement self, FromJSString result) =>
-                              self -> IO result
-htmlMarqueeElementGetHeight self
-  = fromJSString <$>
-      (ghcjs_dom_html_marquee_element_get_height
-         (unHTMLMarqueeElement (toHTMLMarqueeElement self)))
- 
-foreign import javascript unsafe "$1[\"hspace\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_hspace ::
-        JSRef HTMLMarqueeElement -> Word -> IO ()
- 
-htmlMarqueeElementSetHspace ::
-                            (IsHTMLMarqueeElement self) => self -> Word -> IO ()
-htmlMarqueeElementSetHspace self val
-  = ghcjs_dom_html_marquee_element_set_hspace
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"hspace\"]"
-        ghcjs_dom_html_marquee_element_get_hspace ::
-        JSRef HTMLMarqueeElement -> IO Word
- 
-htmlMarqueeElementGetHspace ::
-                            (IsHTMLMarqueeElement self) => self -> IO Word
-htmlMarqueeElementGetHspace self
-  = ghcjs_dom_html_marquee_element_get_hspace
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
- 
-foreign import javascript unsafe "$1[\"loop\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_loop ::
-        JSRef HTMLMarqueeElement -> Int -> IO ()
- 
-htmlMarqueeElementSetLoop ::
-                          (IsHTMLMarqueeElement self) => self -> Int -> IO ()
-htmlMarqueeElementSetLoop self val
-  = ghcjs_dom_html_marquee_element_set_loop
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"loop\"]"
-        ghcjs_dom_html_marquee_element_get_loop ::
-        JSRef HTMLMarqueeElement -> IO Int
- 
-htmlMarqueeElementGetLoop ::
-                          (IsHTMLMarqueeElement self) => self -> IO Int
-htmlMarqueeElementGetLoop self
-  = ghcjs_dom_html_marquee_element_get_loop
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
- 
-foreign import javascript unsafe "$1[\"scrollAmount\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_scroll_amount ::
-        JSRef HTMLMarqueeElement -> Int -> IO ()
- 
-htmlMarqueeElementSetScrollAmount ::
-                                  (IsHTMLMarqueeElement self) => self -> Int -> IO ()
-htmlMarqueeElementSetScrollAmount self val
-  = ghcjs_dom_html_marquee_element_set_scroll_amount
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"scrollAmount\"]"
-        ghcjs_dom_html_marquee_element_get_scroll_amount ::
-        JSRef HTMLMarqueeElement -> IO Int
- 
-htmlMarqueeElementGetScrollAmount ::
-                                  (IsHTMLMarqueeElement self) => self -> IO Int
-htmlMarqueeElementGetScrollAmount self
-  = ghcjs_dom_html_marquee_element_get_scroll_amount
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
- 
-foreign import javascript unsafe "$1[\"scrollDelay\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_scroll_delay ::
-        JSRef HTMLMarqueeElement -> Int -> IO ()
- 
-htmlMarqueeElementSetScrollDelay ::
-                                 (IsHTMLMarqueeElement self) => self -> Int -> IO ()
-htmlMarqueeElementSetScrollDelay self val
-  = ghcjs_dom_html_marquee_element_set_scroll_delay
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"scrollDelay\"]"
-        ghcjs_dom_html_marquee_element_get_scroll_delay ::
-        JSRef HTMLMarqueeElement -> IO Int
- 
-htmlMarqueeElementGetScrollDelay ::
-                                 (IsHTMLMarqueeElement self) => self -> IO Int
-htmlMarqueeElementGetScrollDelay self
-  = ghcjs_dom_html_marquee_element_get_scroll_delay
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
- 
-foreign import javascript unsafe "$1[\"trueSpeed\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_true_speed ::
-        JSRef HTMLMarqueeElement -> Bool -> IO ()
- 
-htmlMarqueeElementSetTrueSpeed ::
-                               (IsHTMLMarqueeElement self) => self -> Bool -> IO ()
-htmlMarqueeElementSetTrueSpeed self val
-  = ghcjs_dom_html_marquee_element_set_true_speed
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"trueSpeed\"] ? 1 : 0)"
-        ghcjs_dom_html_marquee_element_get_true_speed ::
-        JSRef HTMLMarqueeElement -> IO Bool
- 
-htmlMarqueeElementGetTrueSpeed ::
-                               (IsHTMLMarqueeElement self) => self -> IO Bool
-htmlMarqueeElementGetTrueSpeed self
-  = ghcjs_dom_html_marquee_element_get_true_speed
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
- 
-foreign import javascript unsafe "$1[\"vspace\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_vspace ::
-        JSRef HTMLMarqueeElement -> Word -> IO ()
- 
-htmlMarqueeElementSetVspace ::
-                            (IsHTMLMarqueeElement self) => self -> Word -> IO ()
-htmlMarqueeElementSetVspace self val
-  = ghcjs_dom_html_marquee_element_set_vspace
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"vspace\"]"
-        ghcjs_dom_html_marquee_element_get_vspace ::
-        JSRef HTMLMarqueeElement -> IO Word
- 
-htmlMarqueeElementGetVspace ::
-                            (IsHTMLMarqueeElement self) => self -> IO Word
-htmlMarqueeElementGetVspace self
-  = ghcjs_dom_html_marquee_element_get_vspace
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_marquee_element_set_width ::
-        JSRef HTMLMarqueeElement -> JSString -> IO ()
- 
-htmlMarqueeElementSetWidth ::
-                           (IsHTMLMarqueeElement self, ToJSString val) => self -> val -> IO ()
-htmlMarqueeElementSetWidth self val
-  = ghcjs_dom_html_marquee_element_set_width
-      (unHTMLMarqueeElement (toHTMLMarqueeElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_marquee_element_get_width ::
-        JSRef HTMLMarqueeElement -> IO JSString
- 
-htmlMarqueeElementGetWidth ::
-                           (IsHTMLMarqueeElement self, FromJSString result) =>
-                             self -> IO result
-htmlMarqueeElementGetWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_marquee_element_get_width
-         (unHTMLMarqueeElement (toHTMLMarqueeElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement
 #else
-module GHCJS.DOM.HTMLMarqueeElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLMarqueeElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLMarqueeElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLMediaElement.hs b/src/GHCJS/DOM/HTMLMediaElement.hs
--- a/src/GHCJS/DOM/HTMLMediaElement.hs
+++ b/src/GHCJS/DOM/HTMLMediaElement.hs
@@ -1,722 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLMediaElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLMediaElement
-       (ghcjs_dom_html_media_element_load, htmlMediaElementLoad,
-        ghcjs_dom_html_media_element_can_play_type,
-        htmlMediaElementCanPlayType, ghcjs_dom_html_media_element_play,
-        htmlMediaElementPlay, ghcjs_dom_html_media_element_pause,
-        htmlMediaElementPause, ghcjs_dom_html_media_element_fast_seek,
-        htmlMediaElementFastSeek,
-        ghcjs_dom_html_media_element_webkit_show_playback_target_picker,
-        htmlMediaElementWebkitShowPlaybackTargetPicker, cNETWORK_EMPTY,
-        cNETWORK_IDLE, cNETWORK_LOADING, cNETWORK_NO_SOURCE, cHAVE_NOTHING,
-        cHAVE_METADATA, cHAVE_CURRENT_DATA, cHAVE_FUTURE_DATA,
-        cHAVE_ENOUGH_DATA, ghcjs_dom_html_media_element_get_error,
-        htmlMediaElementGetError, ghcjs_dom_html_media_element_set_src,
-        htmlMediaElementSetSrc, ghcjs_dom_html_media_element_get_src,
-        htmlMediaElementGetSrc,
-        ghcjs_dom_html_media_element_get_current_src,
-        htmlMediaElementGetCurrentSrc,
-        ghcjs_dom_html_media_element_get_network_state,
-        htmlMediaElementGetNetworkState,
-        ghcjs_dom_html_media_element_set_preload,
-        htmlMediaElementSetPreload,
-        ghcjs_dom_html_media_element_get_preload,
-        htmlMediaElementGetPreload,
-        ghcjs_dom_html_media_element_get_buffered,
-        htmlMediaElementGetBuffered,
-        ghcjs_dom_html_media_element_get_ready_state,
-        htmlMediaElementGetReadyState,
-        ghcjs_dom_html_media_element_get_seeking,
-        htmlMediaElementGetSeeking,
-        ghcjs_dom_html_media_element_set_current_time,
-        htmlMediaElementSetCurrentTime,
-        ghcjs_dom_html_media_element_get_current_time,
-        htmlMediaElementGetCurrentTime,
-        ghcjs_dom_html_media_element_get_duration,
-        htmlMediaElementGetDuration,
-        ghcjs_dom_html_media_element_get_paused, htmlMediaElementGetPaused,
-        ghcjs_dom_html_media_element_set_default_playback_rate,
-        htmlMediaElementSetDefaultPlaybackRate,
-        ghcjs_dom_html_media_element_get_default_playback_rate,
-        htmlMediaElementGetDefaultPlaybackRate,
-        ghcjs_dom_html_media_element_set_playback_rate,
-        htmlMediaElementSetPlaybackRate,
-        ghcjs_dom_html_media_element_get_playback_rate,
-        htmlMediaElementGetPlaybackRate,
-        ghcjs_dom_html_media_element_get_played, htmlMediaElementGetPlayed,
-        ghcjs_dom_html_media_element_get_seekable,
-        htmlMediaElementGetSeekable,
-        ghcjs_dom_html_media_element_get_ended, htmlMediaElementGetEnded,
-        ghcjs_dom_html_media_element_set_autoplay,
-        htmlMediaElementSetAutoplay,
-        ghcjs_dom_html_media_element_get_autoplay,
-        htmlMediaElementGetAutoplay, ghcjs_dom_html_media_element_set_loop,
-        htmlMediaElementSetLoop, ghcjs_dom_html_media_element_get_loop,
-        htmlMediaElementGetLoop, ghcjs_dom_html_media_element_set_controls,
-        htmlMediaElementSetControls,
-        ghcjs_dom_html_media_element_get_controls,
-        htmlMediaElementGetControls,
-        ghcjs_dom_html_media_element_set_volume, htmlMediaElementSetVolume,
-        ghcjs_dom_html_media_element_get_volume, htmlMediaElementGetVolume,
-        ghcjs_dom_html_media_element_set_muted, htmlMediaElementSetMuted,
-        ghcjs_dom_html_media_element_get_muted, htmlMediaElementGetMuted,
-        ghcjs_dom_html_media_element_set_default_muted,
-        htmlMediaElementSetDefaultMuted,
-        ghcjs_dom_html_media_element_get_default_muted,
-        htmlMediaElementGetDefaultMuted, htmlMediaElementOnemptied,
-        htmlMediaElementOnloadedmetadata, htmlMediaElementOnloadeddata,
-        htmlMediaElementOncanplay, htmlMediaElementOncanplaythrough,
-        htmlMediaElementOnplaying, htmlMediaElementOnended,
-        htmlMediaElementOnwaiting, htmlMediaElementOndurationchange,
-        htmlMediaElementOntimeupdate, htmlMediaElementOnplay,
-        htmlMediaElementOnpause, htmlMediaElementOnratechange,
-        htmlMediaElementOnvolumechange,
-        ghcjs_dom_html_media_element_set_webkit_preserves_pitch,
-        htmlMediaElementSetWebkitPreservesPitch,
-        ghcjs_dom_html_media_element_get_webkit_preserves_pitch,
-        htmlMediaElementGetWebkitPreservesPitch,
-        ghcjs_dom_html_media_element_get_webkit_has_closed_captions,
-        htmlMediaElementGetWebkitHasClosedCaptions,
-        ghcjs_dom_html_media_element_set_webkit_closed_captions_visible,
-        htmlMediaElementSetWebkitClosedCaptionsVisible,
-        ghcjs_dom_html_media_element_get_webkit_closed_captions_visible,
-        htmlMediaElementGetWebkitClosedCaptionsVisible,
-        ghcjs_dom_html_media_element_get_webkit_audio_decoded_byte_count,
-        htmlMediaElementGetWebkitAudioDecodedByteCount,
-        ghcjs_dom_html_media_element_get_webkit_video_decoded_byte_count,
-        htmlMediaElementGetWebkitVideoDecodedByteCount,
-        htmlMediaElementOnwebkitneedkey,
-        ghcjs_dom_html_media_element_set_media_group,
-        htmlMediaElementSetMediaGroup,
-        ghcjs_dom_html_media_element_get_media_group,
-        htmlMediaElementGetMediaGroup,
-        ghcjs_dom_html_media_element_get_webkit_current_playback_target_is_wireless,
-        htmlMediaElementGetWebkitCurrentPlaybackTargetIsWireless,
-        htmlMediaElementOnwebkitcurrentplaybacktargetiswirelesschanged,
-        htmlMediaElementOnwebkitplaybacktargetavailabilitychanged,
-        HTMLMediaElement, IsHTMLMediaElement, castToHTMLMediaElement,
-        gTypeHTMLMediaElement, toHTMLMediaElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"load\"]()"
-        ghcjs_dom_html_media_element_load ::
-        JSRef HTMLMediaElement -> IO ()
- 
-htmlMediaElementLoad :: (IsHTMLMediaElement self) => self -> IO ()
-htmlMediaElementLoad self
-  = ghcjs_dom_html_media_element_load
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"canPlayType\"]($2)"
-        ghcjs_dom_html_media_element_can_play_type ::
-        JSRef HTMLMediaElement -> JSString -> IO JSString
- 
-htmlMediaElementCanPlayType ::
-                            (IsHTMLMediaElement self, ToJSString type', FromJSString result) =>
-                              self -> type' -> IO result
-htmlMediaElementCanPlayType self type'
-  = fromJSString <$>
-      (ghcjs_dom_html_media_element_can_play_type
-         (unHTMLMediaElement (toHTMLMediaElement self))
-         (toJSString type'))
- 
-foreign import javascript unsafe "$1[\"play\"]()"
-        ghcjs_dom_html_media_element_play ::
-        JSRef HTMLMediaElement -> IO ()
- 
-htmlMediaElementPlay :: (IsHTMLMediaElement self) => self -> IO ()
-htmlMediaElementPlay self
-  = ghcjs_dom_html_media_element_play
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"pause\"]()"
-        ghcjs_dom_html_media_element_pause ::
-        JSRef HTMLMediaElement -> IO ()
- 
-htmlMediaElementPause :: (IsHTMLMediaElement self) => self -> IO ()
-htmlMediaElementPause self
-  = ghcjs_dom_html_media_element_pause
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"fastSeek\"]($2)"
-        ghcjs_dom_html_media_element_fast_seek ::
-        JSRef HTMLMediaElement -> Double -> IO ()
- 
-htmlMediaElementFastSeek ::
-                         (IsHTMLMediaElement self) => self -> Double -> IO ()
-htmlMediaElementFastSeek self time
-  = ghcjs_dom_html_media_element_fast_seek
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      time
- 
-foreign import javascript unsafe
-        "$1[\"webkitShowPlaybackTargetPicker\"]()"
-        ghcjs_dom_html_media_element_webkit_show_playback_target_picker ::
-        JSRef HTMLMediaElement -> IO ()
- 
-htmlMediaElementWebkitShowPlaybackTargetPicker ::
-                                               (IsHTMLMediaElement self) => self -> IO ()
-htmlMediaElementWebkitShowPlaybackTargetPicker self
-  = ghcjs_dom_html_media_element_webkit_show_playback_target_picker
-      (unHTMLMediaElement (toHTMLMediaElement self))
-cNETWORK_EMPTY = 0
-cNETWORK_IDLE = 1
-cNETWORK_LOADING = 2
-cNETWORK_NO_SOURCE = 3
-cHAVE_NOTHING = 0
-cHAVE_METADATA = 1
-cHAVE_CURRENT_DATA = 2
-cHAVE_FUTURE_DATA = 3
-cHAVE_ENOUGH_DATA = 4
- 
-foreign import javascript unsafe "$1[\"error\"]"
-        ghcjs_dom_html_media_element_get_error ::
-        JSRef HTMLMediaElement -> IO (JSRef MediaError)
- 
-htmlMediaElementGetError ::
-                         (IsHTMLMediaElement self) => self -> IO (Maybe MediaError)
-htmlMediaElementGetError self
-  = fmap MediaError . maybeJSNull <$>
-      (ghcjs_dom_html_media_element_get_error
-         (unHTMLMediaElement (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "$1[\"src\"] = $2;"
-        ghcjs_dom_html_media_element_set_src ::
-        JSRef HTMLMediaElement -> JSString -> IO ()
- 
-htmlMediaElementSetSrc ::
-                       (IsHTMLMediaElement self, ToJSString val) => self -> val -> IO ()
-htmlMediaElementSetSrc self val
-  = ghcjs_dom_html_media_element_set_src
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"src\"]"
-        ghcjs_dom_html_media_element_get_src ::
-        JSRef HTMLMediaElement -> IO JSString
- 
-htmlMediaElementGetSrc ::
-                       (IsHTMLMediaElement self, FromJSString result) => self -> IO result
-htmlMediaElementGetSrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_media_element_get_src
-         (unHTMLMediaElement (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "$1[\"currentSrc\"]"
-        ghcjs_dom_html_media_element_get_current_src ::
-        JSRef HTMLMediaElement -> IO JSString
- 
-htmlMediaElementGetCurrentSrc ::
-                              (IsHTMLMediaElement self, FromJSString result) => self -> IO result
-htmlMediaElementGetCurrentSrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_media_element_get_current_src
-         (unHTMLMediaElement (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "$1[\"networkState\"]"
-        ghcjs_dom_html_media_element_get_network_state ::
-        JSRef HTMLMediaElement -> IO Word
- 
-htmlMediaElementGetNetworkState ::
-                                (IsHTMLMediaElement self) => self -> IO Word
-htmlMediaElementGetNetworkState self
-  = ghcjs_dom_html_media_element_get_network_state
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"preload\"] = $2;"
-        ghcjs_dom_html_media_element_set_preload ::
-        JSRef HTMLMediaElement -> JSString -> IO ()
- 
-htmlMediaElementSetPreload ::
-                           (IsHTMLMediaElement self, ToJSString val) => self -> val -> IO ()
-htmlMediaElementSetPreload self val
-  = ghcjs_dom_html_media_element_set_preload
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"preload\"]"
-        ghcjs_dom_html_media_element_get_preload ::
-        JSRef HTMLMediaElement -> IO JSString
- 
-htmlMediaElementGetPreload ::
-                           (IsHTMLMediaElement self, FromJSString result) => self -> IO result
-htmlMediaElementGetPreload self
-  = fromJSString <$>
-      (ghcjs_dom_html_media_element_get_preload
-         (unHTMLMediaElement (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "$1[\"buffered\"]"
-        ghcjs_dom_html_media_element_get_buffered ::
-        JSRef HTMLMediaElement -> IO (JSRef TimeRanges)
- 
-htmlMediaElementGetBuffered ::
-                            (IsHTMLMediaElement self) => self -> IO (Maybe TimeRanges)
-htmlMediaElementGetBuffered self
-  = fmap TimeRanges . maybeJSNull <$>
-      (ghcjs_dom_html_media_element_get_buffered
-         (unHTMLMediaElement (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "$1[\"readyState\"]"
-        ghcjs_dom_html_media_element_get_ready_state ::
-        JSRef HTMLMediaElement -> IO Word
- 
-htmlMediaElementGetReadyState ::
-                              (IsHTMLMediaElement self) => self -> IO Word
-htmlMediaElementGetReadyState self
-  = ghcjs_dom_html_media_element_get_ready_state
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "($1[\"seeking\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_seeking ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetSeeking ::
-                           (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetSeeking self
-  = ghcjs_dom_html_media_element_get_seeking
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"currentTime\"] = $2;"
-        ghcjs_dom_html_media_element_set_current_time ::
-        JSRef HTMLMediaElement -> Double -> IO ()
- 
-htmlMediaElementSetCurrentTime ::
-                               (IsHTMLMediaElement self) => self -> Double -> IO ()
-htmlMediaElementSetCurrentTime self val
-  = ghcjs_dom_html_media_element_set_current_time
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"currentTime\"]"
-        ghcjs_dom_html_media_element_get_current_time ::
-        JSRef HTMLMediaElement -> IO Double
- 
-htmlMediaElementGetCurrentTime ::
-                               (IsHTMLMediaElement self) => self -> IO Double
-htmlMediaElementGetCurrentTime self
-  = ghcjs_dom_html_media_element_get_current_time
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"duration\"]"
-        ghcjs_dom_html_media_element_get_duration ::
-        JSRef HTMLMediaElement -> IO Double
- 
-htmlMediaElementGetDuration ::
-                            (IsHTMLMediaElement self) => self -> IO Double
-htmlMediaElementGetDuration self
-  = ghcjs_dom_html_media_element_get_duration
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "($1[\"paused\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_paused ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetPaused ::
-                          (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetPaused self
-  = ghcjs_dom_html_media_element_get_paused
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "$1[\"defaultPlaybackRate\"] = $2;"
-        ghcjs_dom_html_media_element_set_default_playback_rate ::
-        JSRef HTMLMediaElement -> Double -> IO ()
- 
-htmlMediaElementSetDefaultPlaybackRate ::
-                                       (IsHTMLMediaElement self) => self -> Double -> IO ()
-htmlMediaElementSetDefaultPlaybackRate self val
-  = ghcjs_dom_html_media_element_set_default_playback_rate
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"defaultPlaybackRate\"]"
-        ghcjs_dom_html_media_element_get_default_playback_rate ::
-        JSRef HTMLMediaElement -> IO Double
- 
-htmlMediaElementGetDefaultPlaybackRate ::
-                                       (IsHTMLMediaElement self) => self -> IO Double
-htmlMediaElementGetDefaultPlaybackRate self
-  = ghcjs_dom_html_media_element_get_default_playback_rate
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"playbackRate\"] = $2;"
-        ghcjs_dom_html_media_element_set_playback_rate ::
-        JSRef HTMLMediaElement -> Double -> IO ()
- 
-htmlMediaElementSetPlaybackRate ::
-                                (IsHTMLMediaElement self) => self -> Double -> IO ()
-htmlMediaElementSetPlaybackRate self val
-  = ghcjs_dom_html_media_element_set_playback_rate
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"playbackRate\"]"
-        ghcjs_dom_html_media_element_get_playback_rate ::
-        JSRef HTMLMediaElement -> IO Double
- 
-htmlMediaElementGetPlaybackRate ::
-                                (IsHTMLMediaElement self) => self -> IO Double
-htmlMediaElementGetPlaybackRate self
-  = ghcjs_dom_html_media_element_get_playback_rate
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"played\"]"
-        ghcjs_dom_html_media_element_get_played ::
-        JSRef HTMLMediaElement -> IO (JSRef TimeRanges)
- 
-htmlMediaElementGetPlayed ::
-                          (IsHTMLMediaElement self) => self -> IO (Maybe TimeRanges)
-htmlMediaElementGetPlayed self
-  = fmap TimeRanges . maybeJSNull <$>
-      (ghcjs_dom_html_media_element_get_played
-         (unHTMLMediaElement (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "$1[\"seekable\"]"
-        ghcjs_dom_html_media_element_get_seekable ::
-        JSRef HTMLMediaElement -> IO (JSRef TimeRanges)
- 
-htmlMediaElementGetSeekable ::
-                            (IsHTMLMediaElement self) => self -> IO (Maybe TimeRanges)
-htmlMediaElementGetSeekable self
-  = fmap TimeRanges . maybeJSNull <$>
-      (ghcjs_dom_html_media_element_get_seekable
-         (unHTMLMediaElement (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe "($1[\"ended\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_ended ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetEnded ::
-                         (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetEnded self
-  = ghcjs_dom_html_media_element_get_ended
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"autoplay\"] = $2;"
-        ghcjs_dom_html_media_element_set_autoplay ::
-        JSRef HTMLMediaElement -> Bool -> IO ()
- 
-htmlMediaElementSetAutoplay ::
-                            (IsHTMLMediaElement self) => self -> Bool -> IO ()
-htmlMediaElementSetAutoplay self val
-  = ghcjs_dom_html_media_element_set_autoplay
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autoplay\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_autoplay ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetAutoplay ::
-                            (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetAutoplay self
-  = ghcjs_dom_html_media_element_get_autoplay
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"loop\"] = $2;"
-        ghcjs_dom_html_media_element_set_loop ::
-        JSRef HTMLMediaElement -> Bool -> IO ()
- 
-htmlMediaElementSetLoop ::
-                        (IsHTMLMediaElement self) => self -> Bool -> IO ()
-htmlMediaElementSetLoop self val
-  = ghcjs_dom_html_media_element_set_loop
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"loop\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_loop ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetLoop ::
-                        (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetLoop self
-  = ghcjs_dom_html_media_element_get_loop
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"controls\"] = $2;"
-        ghcjs_dom_html_media_element_set_controls ::
-        JSRef HTMLMediaElement -> Bool -> IO ()
- 
-htmlMediaElementSetControls ::
-                            (IsHTMLMediaElement self) => self -> Bool -> IO ()
-htmlMediaElementSetControls self val
-  = ghcjs_dom_html_media_element_set_controls
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"controls\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_controls ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetControls ::
-                            (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetControls self
-  = ghcjs_dom_html_media_element_get_controls
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"volume\"] = $2;"
-        ghcjs_dom_html_media_element_set_volume ::
-        JSRef HTMLMediaElement -> Double -> IO ()
- 
-htmlMediaElementSetVolume ::
-                          (IsHTMLMediaElement self) => self -> Double -> IO ()
-htmlMediaElementSetVolume self val
-  = ghcjs_dom_html_media_element_set_volume
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"volume\"]"
-        ghcjs_dom_html_media_element_get_volume ::
-        JSRef HTMLMediaElement -> IO Double
- 
-htmlMediaElementGetVolume ::
-                          (IsHTMLMediaElement self) => self -> IO Double
-htmlMediaElementGetVolume self
-  = ghcjs_dom_html_media_element_get_volume
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"muted\"] = $2;"
-        ghcjs_dom_html_media_element_set_muted ::
-        JSRef HTMLMediaElement -> Bool -> IO ()
- 
-htmlMediaElementSetMuted ::
-                         (IsHTMLMediaElement self) => self -> Bool -> IO ()
-htmlMediaElementSetMuted self val
-  = ghcjs_dom_html_media_element_set_muted
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"muted\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_muted ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetMuted ::
-                         (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetMuted self
-  = ghcjs_dom_html_media_element_get_muted
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe "$1[\"defaultMuted\"] = $2;"
-        ghcjs_dom_html_media_element_set_default_muted ::
-        JSRef HTMLMediaElement -> Bool -> IO ()
- 
-htmlMediaElementSetDefaultMuted ::
-                                (IsHTMLMediaElement self) => self -> Bool -> IO ()
-htmlMediaElementSetDefaultMuted self val
-  = ghcjs_dom_html_media_element_set_default_muted
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"defaultMuted\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_default_muted ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetDefaultMuted ::
-                                (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetDefaultMuted self
-  = ghcjs_dom_html_media_element_get_default_muted
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-htmlMediaElementOnemptied ::
-                          (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnemptied = (connect "emptied")
- 
-htmlMediaElementOnloadedmetadata ::
-                                 (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnloadedmetadata = (connect "loadedmetadata")
- 
-htmlMediaElementOnloadeddata ::
-                             (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnloadeddata = (connect "loadeddata")
- 
-htmlMediaElementOncanplay ::
-                          (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOncanplay = (connect "canplay")
- 
-htmlMediaElementOncanplaythrough ::
-                                 (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOncanplaythrough = (connect "canplaythrough")
- 
-htmlMediaElementOnplaying ::
-                          (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnplaying = (connect "playing")
- 
-htmlMediaElementOnended ::
-                        (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnended = (connect "ended")
- 
-htmlMediaElementOnwaiting ::
-                          (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnwaiting = (connect "waiting")
- 
-htmlMediaElementOndurationchange ::
-                                 (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOndurationchange = (connect "durationchange")
- 
-htmlMediaElementOntimeupdate ::
-                             (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOntimeupdate = (connect "timeupdate")
- 
-htmlMediaElementOnplay ::
-                       (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnplay = (connect "play")
- 
-htmlMediaElementOnpause ::
-                        (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnpause = (connect "pause")
- 
-htmlMediaElementOnratechange ::
-                             (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnratechange = (connect "ratechange")
- 
-htmlMediaElementOnvolumechange ::
-                               (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnvolumechange = (connect "volumechange")
- 
-foreign import javascript unsafe
-        "$1[\"webkitPreservesPitch\"] = $2;"
-        ghcjs_dom_html_media_element_set_webkit_preserves_pitch ::
-        JSRef HTMLMediaElement -> Bool -> IO ()
- 
-htmlMediaElementSetWebkitPreservesPitch ::
-                                        (IsHTMLMediaElement self) => self -> Bool -> IO ()
-htmlMediaElementSetWebkitPreservesPitch self val
-  = ghcjs_dom_html_media_element_set_webkit_preserves_pitch
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe
-        "($1[\"webkitPreservesPitch\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_webkit_preserves_pitch ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetWebkitPreservesPitch ::
-                                        (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetWebkitPreservesPitch self
-  = ghcjs_dom_html_media_element_get_webkit_preserves_pitch
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "($1[\"webkitHasClosedCaptions\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_webkit_has_closed_captions ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetWebkitHasClosedCaptions ::
-                                           (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetWebkitHasClosedCaptions self
-  = ghcjs_dom_html_media_element_get_webkit_has_closed_captions
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "$1[\"webkitClosedCaptionsVisible\"] = $2;"
-        ghcjs_dom_html_media_element_set_webkit_closed_captions_visible ::
-        JSRef HTMLMediaElement -> Bool -> IO ()
- 
-htmlMediaElementSetWebkitClosedCaptionsVisible ::
-                                               (IsHTMLMediaElement self) => self -> Bool -> IO ()
-htmlMediaElementSetWebkitClosedCaptionsVisible self val
-  = ghcjs_dom_html_media_element_set_webkit_closed_captions_visible
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      val
- 
-foreign import javascript unsafe
-        "($1[\"webkitClosedCaptionsVisible\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_webkit_closed_captions_visible ::
-        JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetWebkitClosedCaptionsVisible ::
-                                               (IsHTMLMediaElement self) => self -> IO Bool
-htmlMediaElementGetWebkitClosedCaptionsVisible self
-  = ghcjs_dom_html_media_element_get_webkit_closed_captions_visible
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "$1[\"webkitAudioDecodedByteCount\"]"
-        ghcjs_dom_html_media_element_get_webkit_audio_decoded_byte_count ::
-        JSRef HTMLMediaElement -> IO Word
- 
-htmlMediaElementGetWebkitAudioDecodedByteCount ::
-                                               (IsHTMLMediaElement self) => self -> IO Word
-htmlMediaElementGetWebkitAudioDecodedByteCount self
-  = ghcjs_dom_html_media_element_get_webkit_audio_decoded_byte_count
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-foreign import javascript unsafe
-        "$1[\"webkitVideoDecodedByteCount\"]"
-        ghcjs_dom_html_media_element_get_webkit_video_decoded_byte_count ::
-        JSRef HTMLMediaElement -> IO Word
- 
-htmlMediaElementGetWebkitVideoDecodedByteCount ::
-                                               (IsHTMLMediaElement self) => self -> IO Word
-htmlMediaElementGetWebkitVideoDecodedByteCount self
-  = ghcjs_dom_html_media_element_get_webkit_video_decoded_byte_count
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-htmlMediaElementOnwebkitneedkey ::
-                                (IsHTMLMediaElement self) => Signal self (EventM UIEvent self ())
-htmlMediaElementOnwebkitneedkey = (connect "webkitneedkey")
- 
-foreign import javascript unsafe "$1[\"mediaGroup\"] = $2;"
-        ghcjs_dom_html_media_element_set_media_group ::
-        JSRef HTMLMediaElement -> JSString -> IO ()
- 
-htmlMediaElementSetMediaGroup ::
-                              (IsHTMLMediaElement self, ToJSString val) => self -> val -> IO ()
-htmlMediaElementSetMediaGroup self val
-  = ghcjs_dom_html_media_element_set_media_group
-      (unHTMLMediaElement (toHTMLMediaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"mediaGroup\"]"
-        ghcjs_dom_html_media_element_get_media_group ::
-        JSRef HTMLMediaElement -> IO JSString
- 
-htmlMediaElementGetMediaGroup ::
-                              (IsHTMLMediaElement self, FromJSString result) => self -> IO result
-htmlMediaElementGetMediaGroup self
-  = fromJSString <$>
-      (ghcjs_dom_html_media_element_get_media_group
-         (unHTMLMediaElement (toHTMLMediaElement self)))
- 
-foreign import javascript unsafe
-        "($1[\"webkitCurrentPlaybackTargetIsWireless\"] ? 1 : 0)"
-        ghcjs_dom_html_media_element_get_webkit_current_playback_target_is_wireless
-        :: JSRef HTMLMediaElement -> IO Bool
- 
-htmlMediaElementGetWebkitCurrentPlaybackTargetIsWireless ::
-                                                         (IsHTMLMediaElement self) =>
-                                                           self -> IO Bool
-htmlMediaElementGetWebkitCurrentPlaybackTargetIsWireless self
-  = ghcjs_dom_html_media_element_get_webkit_current_playback_target_is_wireless
-      (unHTMLMediaElement (toHTMLMediaElement self))
- 
-htmlMediaElementOnwebkitcurrentplaybacktargetiswirelesschanged ::
-                                                               (IsHTMLMediaElement self) =>
-                                                                 Signal self
-                                                                   (EventM UIEvent self ())
-htmlMediaElementOnwebkitcurrentplaybacktargetiswirelesschanged
-  = (connect "webkitcurrentplaybacktargetiswirelesschanged")
- 
-htmlMediaElementOnwebkitplaybacktargetavailabilitychanged ::
-                                                          (IsHTMLMediaElement self) =>
-                                                            Signal self (EventM UIEvent self ())
-htmlMediaElementOnwebkitplaybacktargetavailabilitychanged
-  = (connect "webkitplaybacktargetavailabilitychanged")
+  module GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
 #else
-module GHCJS.DOM.HTMLMediaElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLMediaElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLMediaElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLMenuElement.hs b/src/GHCJS/DOM/HTMLMenuElement.hs
--- a/src/GHCJS/DOM/HTMLMenuElement.hs
+++ b/src/GHCJS/DOM/HTMLMenuElement.hs
@@ -1,45 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLMenuElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLMenuElement
-       (ghcjs_dom_html_menu_element_set_compact,
-        htmlMenuElementSetCompact, ghcjs_dom_html_menu_element_get_compact,
-        htmlMenuElementGetCompact, HTMLMenuElement, IsHTMLMenuElement,
-        castToHTMLMenuElement, gTypeHTMLMenuElement, toHTMLMenuElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"compact\"] = $2;"
-        ghcjs_dom_html_menu_element_set_compact ::
-        JSRef HTMLMenuElement -> Bool -> IO ()
- 
-htmlMenuElementSetCompact ::
-                          (IsHTMLMenuElement self) => self -> Bool -> IO ()
-htmlMenuElementSetCompact self val
-  = ghcjs_dom_html_menu_element_set_compact
-      (unHTMLMenuElement (toHTMLMenuElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
-        ghcjs_dom_html_menu_element_get_compact ::
-        JSRef HTMLMenuElement -> IO Bool
- 
-htmlMenuElementGetCompact ::
-                          (IsHTMLMenuElement self) => self -> IO Bool
-htmlMenuElementGetCompact self
-  = ghcjs_dom_html_menu_element_get_compact
-      (unHTMLMenuElement (toHTMLMenuElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLMenuElement
 #else
-module GHCJS.DOM.HTMLMenuElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLMenuElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLMenuElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLMenuElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLMetaElement.hs b/src/GHCJS/DOM/HTMLMetaElement.hs
--- a/src/GHCJS/DOM/HTMLMetaElement.hs
+++ b/src/GHCJS/DOM/HTMLMetaElement.hs
@@ -1,120 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLMetaElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLMetaElement
-       (ghcjs_dom_html_meta_element_set_content,
-        htmlMetaElementSetContent, ghcjs_dom_html_meta_element_get_content,
-        htmlMetaElementGetContent,
-        ghcjs_dom_html_meta_element_set_http_equiv,
-        htmlMetaElementSetHttpEquiv,
-        ghcjs_dom_html_meta_element_get_http_equiv,
-        htmlMetaElementGetHttpEquiv, ghcjs_dom_html_meta_element_set_name,
-        htmlMetaElementSetName, ghcjs_dom_html_meta_element_get_name,
-        htmlMetaElementGetName, ghcjs_dom_html_meta_element_set_scheme,
-        htmlMetaElementSetScheme, ghcjs_dom_html_meta_element_get_scheme,
-        htmlMetaElementGetScheme, HTMLMetaElement, IsHTMLMetaElement,
-        castToHTMLMetaElement, gTypeHTMLMetaElement, toHTMLMetaElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"content\"] = $2;"
-        ghcjs_dom_html_meta_element_set_content ::
-        JSRef HTMLMetaElement -> JSString -> IO ()
- 
-htmlMetaElementSetContent ::
-                          (IsHTMLMetaElement self, ToJSString val) => self -> val -> IO ()
-htmlMetaElementSetContent self val
-  = ghcjs_dom_html_meta_element_set_content
-      (unHTMLMetaElement (toHTMLMetaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"content\"]"
-        ghcjs_dom_html_meta_element_get_content ::
-        JSRef HTMLMetaElement -> IO JSString
- 
-htmlMetaElementGetContent ::
-                          (IsHTMLMetaElement self, FromJSString result) => self -> IO result
-htmlMetaElementGetContent self
-  = fromJSString <$>
-      (ghcjs_dom_html_meta_element_get_content
-         (unHTMLMetaElement (toHTMLMetaElement self)))
- 
-foreign import javascript unsafe "$1[\"httpEquiv\"] = $2;"
-        ghcjs_dom_html_meta_element_set_http_equiv ::
-        JSRef HTMLMetaElement -> JSString -> IO ()
- 
-htmlMetaElementSetHttpEquiv ::
-                            (IsHTMLMetaElement self, ToJSString val) => self -> val -> IO ()
-htmlMetaElementSetHttpEquiv self val
-  = ghcjs_dom_html_meta_element_set_http_equiv
-      (unHTMLMetaElement (toHTMLMetaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"httpEquiv\"]"
-        ghcjs_dom_html_meta_element_get_http_equiv ::
-        JSRef HTMLMetaElement -> IO JSString
- 
-htmlMetaElementGetHttpEquiv ::
-                            (IsHTMLMetaElement self, FromJSString result) => self -> IO result
-htmlMetaElementGetHttpEquiv self
-  = fromJSString <$>
-      (ghcjs_dom_html_meta_element_get_http_equiv
-         (unHTMLMetaElement (toHTMLMetaElement self)))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_meta_element_set_name ::
-        JSRef HTMLMetaElement -> JSString -> IO ()
- 
-htmlMetaElementSetName ::
-                       (IsHTMLMetaElement self, ToJSString val) => self -> val -> IO ()
-htmlMetaElementSetName self val
-  = ghcjs_dom_html_meta_element_set_name
-      (unHTMLMetaElement (toHTMLMetaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_meta_element_get_name ::
-        JSRef HTMLMetaElement -> IO JSString
- 
-htmlMetaElementGetName ::
-                       (IsHTMLMetaElement self, FromJSString result) => self -> IO result
-htmlMetaElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_meta_element_get_name
-         (unHTMLMetaElement (toHTMLMetaElement self)))
- 
-foreign import javascript unsafe "$1[\"scheme\"] = $2;"
-        ghcjs_dom_html_meta_element_set_scheme ::
-        JSRef HTMLMetaElement -> JSString -> IO ()
- 
-htmlMetaElementSetScheme ::
-                         (IsHTMLMetaElement self, ToJSString val) => self -> val -> IO ()
-htmlMetaElementSetScheme self val
-  = ghcjs_dom_html_meta_element_set_scheme
-      (unHTMLMetaElement (toHTMLMetaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"scheme\"]"
-        ghcjs_dom_html_meta_element_get_scheme ::
-        JSRef HTMLMetaElement -> IO JSString
- 
-htmlMetaElementGetScheme ::
-                         (IsHTMLMetaElement self, FromJSString result) => self -> IO result
-htmlMetaElementGetScheme self
-  = fromJSString <$>
-      (ghcjs_dom_html_meta_element_get_scheme
-         (unHTMLMetaElement (toHTMLMetaElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLMetaElement
 #else
-module GHCJS.DOM.HTMLMetaElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLMetaElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLMetaElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLMetaElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLMeterElement.hs b/src/GHCJS/DOM/HTMLMeterElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLMeterElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLMeterElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLMeterElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLMeterElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLModElement.hs b/src/GHCJS/DOM/HTMLModElement.hs
--- a/src/GHCJS/DOM/HTMLModElement.hs
+++ b/src/GHCJS/DOM/HTMLModElement.hs
@@ -1,71 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLModElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLModElement
-       (ghcjs_dom_html_mod_element_set_cite, htmlModElementSetCite,
-        ghcjs_dom_html_mod_element_get_cite, htmlModElementGetCite,
-        ghcjs_dom_html_mod_element_set_date_time,
-        htmlModElementSetDateTime,
-        ghcjs_dom_html_mod_element_get_date_time,
-        htmlModElementGetDateTime, HTMLModElement, IsHTMLModElement,
-        castToHTMLModElement, gTypeHTMLModElement, toHTMLModElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"cite\"] = $2;"
-        ghcjs_dom_html_mod_element_set_cite ::
-        JSRef HTMLModElement -> JSString -> IO ()
- 
-htmlModElementSetCite ::
-                      (IsHTMLModElement self, ToJSString val) => self -> val -> IO ()
-htmlModElementSetCite self val
-  = ghcjs_dom_html_mod_element_set_cite
-      (unHTMLModElement (toHTMLModElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cite\"]"
-        ghcjs_dom_html_mod_element_get_cite ::
-        JSRef HTMLModElement -> IO JSString
- 
-htmlModElementGetCite ::
-                      (IsHTMLModElement self, FromJSString result) => self -> IO result
-htmlModElementGetCite self
-  = fromJSString <$>
-      (ghcjs_dom_html_mod_element_get_cite
-         (unHTMLModElement (toHTMLModElement self)))
- 
-foreign import javascript unsafe "$1[\"dateTime\"] = $2;"
-        ghcjs_dom_html_mod_element_set_date_time ::
-        JSRef HTMLModElement -> JSString -> IO ()
- 
-htmlModElementSetDateTime ::
-                          (IsHTMLModElement self, ToJSString val) => self -> val -> IO ()
-htmlModElementSetDateTime self val
-  = ghcjs_dom_html_mod_element_set_date_time
-      (unHTMLModElement (toHTMLModElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"dateTime\"]"
-        ghcjs_dom_html_mod_element_get_date_time ::
-        JSRef HTMLModElement -> IO JSString
- 
-htmlModElementGetDateTime ::
-                          (IsHTMLModElement self, FromJSString result) => self -> IO result
-htmlModElementGetDateTime self
-  = fromJSString <$>
-      (ghcjs_dom_html_mod_element_get_date_time
-         (unHTMLModElement (toHTMLModElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLModElement
 #else
-module GHCJS.DOM.HTMLModElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLModElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLModElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLModElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLOListElement.hs b/src/GHCJS/DOM/HTMLOListElement.hs
--- a/src/GHCJS/DOM/HTMLOListElement.hs
+++ b/src/GHCJS/DOM/HTMLOListElement.hs
@@ -1,94 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLOListElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLOListElement
-       (ghcjs_dom_htmlo_list_element_set_compact,
-        htmloListElementSetCompact,
-        ghcjs_dom_htmlo_list_element_get_compact,
-        htmloListElementGetCompact, ghcjs_dom_htmlo_list_element_set_start,
-        htmloListElementSetStart, ghcjs_dom_htmlo_list_element_get_start,
-        htmloListElementGetStart,
-        ghcjs_dom_htmlo_list_element_set_reversed,
-        htmloListElementSetReversed,
-        ghcjs_dom_htmlo_list_element_get_reversed,
-        htmloListElementGetReversed, HTMLOListElement, IsHTMLOListElement,
-        castToHTMLOListElement, gTypeHTMLOListElement, toHTMLOListElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"compact\"] = $2;"
-        ghcjs_dom_htmlo_list_element_set_compact ::
-        JSRef HTMLOListElement -> Bool -> IO ()
- 
-htmloListElementSetCompact ::
-                           (IsHTMLOListElement self) => self -> Bool -> IO ()
-htmloListElementSetCompact self val
-  = ghcjs_dom_htmlo_list_element_set_compact
-      (unHTMLOListElement (toHTMLOListElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
-        ghcjs_dom_htmlo_list_element_get_compact ::
-        JSRef HTMLOListElement -> IO Bool
- 
-htmloListElementGetCompact ::
-                           (IsHTMLOListElement self) => self -> IO Bool
-htmloListElementGetCompact self
-  = ghcjs_dom_htmlo_list_element_get_compact
-      (unHTMLOListElement (toHTMLOListElement self))
- 
-foreign import javascript unsafe "$1[\"start\"] = $2;"
-        ghcjs_dom_htmlo_list_element_set_start ::
-        JSRef HTMLOListElement -> Int -> IO ()
- 
-htmloListElementSetStart ::
-                         (IsHTMLOListElement self) => self -> Int -> IO ()
-htmloListElementSetStart self val
-  = ghcjs_dom_htmlo_list_element_set_start
-      (unHTMLOListElement (toHTMLOListElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"start\"]"
-        ghcjs_dom_htmlo_list_element_get_start ::
-        JSRef HTMLOListElement -> IO Int
- 
-htmloListElementGetStart ::
-                         (IsHTMLOListElement self) => self -> IO Int
-htmloListElementGetStart self
-  = ghcjs_dom_htmlo_list_element_get_start
-      (unHTMLOListElement (toHTMLOListElement self))
- 
-foreign import javascript unsafe "$1[\"reversed\"] = $2;"
-        ghcjs_dom_htmlo_list_element_set_reversed ::
-        JSRef HTMLOListElement -> Bool -> IO ()
- 
-htmloListElementSetReversed ::
-                            (IsHTMLOListElement self) => self -> Bool -> IO ()
-htmloListElementSetReversed self val
-  = ghcjs_dom_htmlo_list_element_set_reversed
-      (unHTMLOListElement (toHTMLOListElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"reversed\"] ? 1 : 0)"
-        ghcjs_dom_htmlo_list_element_get_reversed ::
-        JSRef HTMLOListElement -> IO Bool
- 
-htmloListElementGetReversed ::
-                            (IsHTMLOListElement self) => self -> IO Bool
-htmloListElementGetReversed self
-  = ghcjs_dom_htmlo_list_element_get_reversed
-      (unHTMLOListElement (toHTMLOListElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLOListElement
 #else
-module GHCJS.DOM.HTMLOListElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLOListElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLOListElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLOListElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLObjectElement.hs b/src/GHCJS/DOM/HTMLObjectElement.hs
--- a/src/GHCJS/DOM/HTMLObjectElement.hs
+++ b/src/GHCJS/DOM/HTMLObjectElement.hs
@@ -1,502 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLObjectElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLObjectElement
-       (ghcjs_dom_html_object_element_check_validity,
-        htmlObjectElementCheckValidity,
-        ghcjs_dom_html_object_element_set_custom_validity,
-        htmlObjectElementSetCustomValidity,
-        ghcjs_dom_html_object_element_get_form, htmlObjectElementGetForm,
-        ghcjs_dom_html_object_element_set_code, htmlObjectElementSetCode,
-        ghcjs_dom_html_object_element_get_code, htmlObjectElementGetCode,
-        ghcjs_dom_html_object_element_set_align, htmlObjectElementSetAlign,
-        ghcjs_dom_html_object_element_get_align, htmlObjectElementGetAlign,
-        ghcjs_dom_html_object_element_set_archive,
-        htmlObjectElementSetArchive,
-        ghcjs_dom_html_object_element_get_archive,
-        htmlObjectElementGetArchive,
-        ghcjs_dom_html_object_element_set_border,
-        htmlObjectElementSetBorder,
-        ghcjs_dom_html_object_element_get_border,
-        htmlObjectElementGetBorder,
-        ghcjs_dom_html_object_element_set_code_base,
-        htmlObjectElementSetCodeBase,
-        ghcjs_dom_html_object_element_get_code_base,
-        htmlObjectElementGetCodeBase,
-        ghcjs_dom_html_object_element_set_code_type,
-        htmlObjectElementSetCodeType,
-        ghcjs_dom_html_object_element_get_code_type,
-        htmlObjectElementGetCodeType,
-        ghcjs_dom_html_object_element_set_data, htmlObjectElementSetData,
-        ghcjs_dom_html_object_element_get_data, htmlObjectElementGetData,
-        ghcjs_dom_html_object_element_set_declare,
-        htmlObjectElementSetDeclare,
-        ghcjs_dom_html_object_element_get_declare,
-        htmlObjectElementGetDeclare,
-        ghcjs_dom_html_object_element_set_height,
-        htmlObjectElementSetHeight,
-        ghcjs_dom_html_object_element_get_height,
-        htmlObjectElementGetHeight,
-        ghcjs_dom_html_object_element_set_hspace,
-        htmlObjectElementSetHspace,
-        ghcjs_dom_html_object_element_get_hspace,
-        htmlObjectElementGetHspace, ghcjs_dom_html_object_element_set_name,
-        htmlObjectElementSetName, ghcjs_dom_html_object_element_get_name,
-        htmlObjectElementGetName,
-        ghcjs_dom_html_object_element_set_standby,
-        htmlObjectElementSetStandby,
-        ghcjs_dom_html_object_element_get_standby,
-        htmlObjectElementGetStandby,
-        ghcjs_dom_html_object_element_set_use_map,
-        htmlObjectElementSetUseMap,
-        ghcjs_dom_html_object_element_get_use_map,
-        htmlObjectElementGetUseMap,
-        ghcjs_dom_html_object_element_set_vspace,
-        htmlObjectElementSetVspace,
-        ghcjs_dom_html_object_element_get_vspace,
-        htmlObjectElementGetVspace,
-        ghcjs_dom_html_object_element_set_width, htmlObjectElementSetWidth,
-        ghcjs_dom_html_object_element_get_width, htmlObjectElementGetWidth,
-        ghcjs_dom_html_object_element_get_will_validate,
-        htmlObjectElementGetWillValidate,
-        ghcjs_dom_html_object_element_get_validity,
-        htmlObjectElementGetValidity,
-        ghcjs_dom_html_object_element_get_validation_message,
-        htmlObjectElementGetValidationMessage,
-        ghcjs_dom_html_object_element_get_content_document,
-        htmlObjectElementGetContentDocument, HTMLObjectElement,
-        IsHTMLObjectElement, castToHTMLObjectElement,
-        gTypeHTMLObjectElement, toHTMLObjectElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"checkValidity\"]() ? 1 : 0)"
-        ghcjs_dom_html_object_element_check_validity ::
-        JSRef HTMLObjectElement -> IO Bool
- 
-htmlObjectElementCheckValidity ::
-                               (IsHTMLObjectElement self) => self -> IO Bool
-htmlObjectElementCheckValidity self
-  = ghcjs_dom_html_object_element_check_validity
-      (unHTMLObjectElement (toHTMLObjectElement self))
- 
-foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
-        ghcjs_dom_html_object_element_set_custom_validity ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetCustomValidity ::
-                                   (IsHTMLObjectElement self, ToJSString error) =>
-                                     self -> error -> IO ()
-htmlObjectElementSetCustomValidity self error
-  = ghcjs_dom_html_object_element_set_custom_validity
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString error)
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_object_element_get_form ::
-        JSRef HTMLObjectElement -> IO (JSRef HTMLFormElement)
- 
-htmlObjectElementGetForm ::
-                         (IsHTMLObjectElement self) => self -> IO (Maybe HTMLFormElement)
-htmlObjectElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_object_element_get_form
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"code\"] = $2;"
-        ghcjs_dom_html_object_element_set_code ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetCode ::
-                         (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetCode self val
-  = ghcjs_dom_html_object_element_set_code
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"code\"]"
-        ghcjs_dom_html_object_element_get_code ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetCode ::
-                         (IsHTMLObjectElement self, FromJSString result) =>
-                           self -> IO result
-htmlObjectElementGetCode self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_code
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_object_element_set_align ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetAlign ::
-                          (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetAlign self val
-  = ghcjs_dom_html_object_element_set_align
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_object_element_get_align ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetAlign ::
-                          (IsHTMLObjectElement self, FromJSString result) =>
-                            self -> IO result
-htmlObjectElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_align
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"archive\"] = $2;"
-        ghcjs_dom_html_object_element_set_archive ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetArchive ::
-                            (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetArchive self val
-  = ghcjs_dom_html_object_element_set_archive
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"archive\"]"
-        ghcjs_dom_html_object_element_get_archive ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetArchive ::
-                            (IsHTMLObjectElement self, FromJSString result) =>
-                              self -> IO result
-htmlObjectElementGetArchive self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_archive
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"border\"] = $2;"
-        ghcjs_dom_html_object_element_set_border ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetBorder ::
-                           (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetBorder self val
-  = ghcjs_dom_html_object_element_set_border
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"border\"]"
-        ghcjs_dom_html_object_element_get_border ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetBorder ::
-                           (IsHTMLObjectElement self, FromJSString result) =>
-                             self -> IO result
-htmlObjectElementGetBorder self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_border
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"codeBase\"] = $2;"
-        ghcjs_dom_html_object_element_set_code_base ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetCodeBase ::
-                             (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetCodeBase self val
-  = ghcjs_dom_html_object_element_set_code_base
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"codeBase\"]"
-        ghcjs_dom_html_object_element_get_code_base ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetCodeBase ::
-                             (IsHTMLObjectElement self, FromJSString result) =>
-                               self -> IO result
-htmlObjectElementGetCodeBase self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_code_base
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"codeType\"] = $2;"
-        ghcjs_dom_html_object_element_set_code_type ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetCodeType ::
-                             (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetCodeType self val
-  = ghcjs_dom_html_object_element_set_code_type
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"codeType\"]"
-        ghcjs_dom_html_object_element_get_code_type ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetCodeType ::
-                             (IsHTMLObjectElement self, FromJSString result) =>
-                               self -> IO result
-htmlObjectElementGetCodeType self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_code_type
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"data\"] = $2;"
-        ghcjs_dom_html_object_element_set_data ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetData ::
-                         (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetData self val
-  = ghcjs_dom_html_object_element_set_data
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"data\"]"
-        ghcjs_dom_html_object_element_get_data ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetData ::
-                         (IsHTMLObjectElement self, FromJSString result) =>
-                           self -> IO result
-htmlObjectElementGetData self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_data
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"declare\"] = $2;"
-        ghcjs_dom_html_object_element_set_declare ::
-        JSRef HTMLObjectElement -> Bool -> IO ()
- 
-htmlObjectElementSetDeclare ::
-                            (IsHTMLObjectElement self) => self -> Bool -> IO ()
-htmlObjectElementSetDeclare self val
-  = ghcjs_dom_html_object_element_set_declare
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"declare\"] ? 1 : 0)"
-        ghcjs_dom_html_object_element_get_declare ::
-        JSRef HTMLObjectElement -> IO Bool
- 
-htmlObjectElementGetDeclare ::
-                            (IsHTMLObjectElement self) => self -> IO Bool
-htmlObjectElementGetDeclare self
-  = ghcjs_dom_html_object_element_get_declare
-      (unHTMLObjectElement (toHTMLObjectElement self))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_object_element_set_height ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetHeight ::
-                           (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetHeight self val
-  = ghcjs_dom_html_object_element_set_height
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_object_element_get_height ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetHeight ::
-                           (IsHTMLObjectElement self, FromJSString result) =>
-                             self -> IO result
-htmlObjectElementGetHeight self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_height
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"hspace\"] = $2;"
-        ghcjs_dom_html_object_element_set_hspace ::
-        JSRef HTMLObjectElement -> Int -> IO ()
- 
-htmlObjectElementSetHspace ::
-                           (IsHTMLObjectElement self) => self -> Int -> IO ()
-htmlObjectElementSetHspace self val
-  = ghcjs_dom_html_object_element_set_hspace
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"hspace\"]"
-        ghcjs_dom_html_object_element_get_hspace ::
-        JSRef HTMLObjectElement -> IO Int
- 
-htmlObjectElementGetHspace ::
-                           (IsHTMLObjectElement self) => self -> IO Int
-htmlObjectElementGetHspace self
-  = ghcjs_dom_html_object_element_get_hspace
-      (unHTMLObjectElement (toHTMLObjectElement self))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_object_element_set_name ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetName ::
-                         (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetName self val
-  = ghcjs_dom_html_object_element_set_name
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_object_element_get_name ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetName ::
-                         (IsHTMLObjectElement self, FromJSString result) =>
-                           self -> IO result
-htmlObjectElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_name
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"standby\"] = $2;"
-        ghcjs_dom_html_object_element_set_standby ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetStandby ::
-                            (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetStandby self val
-  = ghcjs_dom_html_object_element_set_standby
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"standby\"]"
-        ghcjs_dom_html_object_element_get_standby ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetStandby ::
-                            (IsHTMLObjectElement self, FromJSString result) =>
-                              self -> IO result
-htmlObjectElementGetStandby self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_standby
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"useMap\"] = $2;"
-        ghcjs_dom_html_object_element_set_use_map ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetUseMap ::
-                           (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetUseMap self val
-  = ghcjs_dom_html_object_element_set_use_map
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"useMap\"]"
-        ghcjs_dom_html_object_element_get_use_map ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetUseMap ::
-                           (IsHTMLObjectElement self, FromJSString result) =>
-                             self -> IO result
-htmlObjectElementGetUseMap self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_use_map
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"vspace\"] = $2;"
-        ghcjs_dom_html_object_element_set_vspace ::
-        JSRef HTMLObjectElement -> Int -> IO ()
- 
-htmlObjectElementSetVspace ::
-                           (IsHTMLObjectElement self) => self -> Int -> IO ()
-htmlObjectElementSetVspace self val
-  = ghcjs_dom_html_object_element_set_vspace
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"vspace\"]"
-        ghcjs_dom_html_object_element_get_vspace ::
-        JSRef HTMLObjectElement -> IO Int
- 
-htmlObjectElementGetVspace ::
-                           (IsHTMLObjectElement self) => self -> IO Int
-htmlObjectElementGetVspace self
-  = ghcjs_dom_html_object_element_get_vspace
-      (unHTMLObjectElement (toHTMLObjectElement self))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_object_element_set_width ::
-        JSRef HTMLObjectElement -> JSString -> IO ()
- 
-htmlObjectElementSetWidth ::
-                          (IsHTMLObjectElement self, ToJSString val) => self -> val -> IO ()
-htmlObjectElementSetWidth self val
-  = ghcjs_dom_html_object_element_set_width
-      (unHTMLObjectElement (toHTMLObjectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_object_element_get_width ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetWidth ::
-                          (IsHTMLObjectElement self, FromJSString result) =>
-                            self -> IO result
-htmlObjectElementGetWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_width
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_object_element_get_will_validate ::
-        JSRef HTMLObjectElement -> IO Bool
- 
-htmlObjectElementGetWillValidate ::
-                                 (IsHTMLObjectElement self) => self -> IO Bool
-htmlObjectElementGetWillValidate self
-  = ghcjs_dom_html_object_element_get_will_validate
-      (unHTMLObjectElement (toHTMLObjectElement self))
- 
-foreign import javascript unsafe "$1[\"validity\"]"
-        ghcjs_dom_html_object_element_get_validity ::
-        JSRef HTMLObjectElement -> IO (JSRef ValidityState)
- 
-htmlObjectElementGetValidity ::
-                             (IsHTMLObjectElement self) => self -> IO (Maybe ValidityState)
-htmlObjectElementGetValidity self
-  = fmap ValidityState . maybeJSNull <$>
-      (ghcjs_dom_html_object_element_get_validity
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"validationMessage\"]"
-        ghcjs_dom_html_object_element_get_validation_message ::
-        JSRef HTMLObjectElement -> IO JSString
- 
-htmlObjectElementGetValidationMessage ::
-                                      (IsHTMLObjectElement self, FromJSString result) =>
-                                        self -> IO result
-htmlObjectElementGetValidationMessage self
-  = fromJSString <$>
-      (ghcjs_dom_html_object_element_get_validation_message
-         (unHTMLObjectElement (toHTMLObjectElement self)))
- 
-foreign import javascript unsafe "$1[\"contentDocument\"]"
-        ghcjs_dom_html_object_element_get_content_document ::
-        JSRef HTMLObjectElement -> IO (JSRef Document)
- 
-htmlObjectElementGetContentDocument ::
-                                    (IsHTMLObjectElement self) => self -> IO (Maybe Document)
-htmlObjectElementGetContentDocument self
-  = fmap Document . maybeJSNull <$>
-      (ghcjs_dom_html_object_element_get_content_document
-         (unHTMLObjectElement (toHTMLObjectElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLObjectElement
 #else
-module GHCJS.DOM.HTMLObjectElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLObjectElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLObjectElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLObjectElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLOptGroupElement.hs b/src/GHCJS/DOM/HTMLOptGroupElement.hs
--- a/src/GHCJS/DOM/HTMLOptGroupElement.hs
+++ b/src/GHCJS/DOM/HTMLOptGroupElement.hs
@@ -1,75 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLOptGroupElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLOptGroupElement
-       (ghcjs_dom_html_opt_group_element_set_disabled,
-        htmlOptGroupElementSetDisabled,
-        ghcjs_dom_html_opt_group_element_get_disabled,
-        htmlOptGroupElementGetDisabled,
-        ghcjs_dom_html_opt_group_element_set_label,
-        htmlOptGroupElementSetLabel,
-        ghcjs_dom_html_opt_group_element_get_label,
-        htmlOptGroupElementGetLabel, HTMLOptGroupElement,
-        IsHTMLOptGroupElement, castToHTMLOptGroupElement,
-        gTypeHTMLOptGroupElement, toHTMLOptGroupElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_opt_group_element_set_disabled ::
-        JSRef HTMLOptGroupElement -> Bool -> IO ()
- 
-htmlOptGroupElementSetDisabled ::
-                               (IsHTMLOptGroupElement self) => self -> Bool -> IO ()
-htmlOptGroupElementSetDisabled self val
-  = ghcjs_dom_html_opt_group_element_set_disabled
-      (unHTMLOptGroupElement (toHTMLOptGroupElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_opt_group_element_get_disabled ::
-        JSRef HTMLOptGroupElement -> IO Bool
- 
-htmlOptGroupElementGetDisabled ::
-                               (IsHTMLOptGroupElement self) => self -> IO Bool
-htmlOptGroupElementGetDisabled self
-  = ghcjs_dom_html_opt_group_element_get_disabled
-      (unHTMLOptGroupElement (toHTMLOptGroupElement self))
- 
-foreign import javascript unsafe "$1[\"label\"] = $2;"
-        ghcjs_dom_html_opt_group_element_set_label ::
-        JSRef HTMLOptGroupElement -> JSString -> IO ()
- 
-htmlOptGroupElementSetLabel ::
-                            (IsHTMLOptGroupElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlOptGroupElementSetLabel self val
-  = ghcjs_dom_html_opt_group_element_set_label
-      (unHTMLOptGroupElement (toHTMLOptGroupElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"label\"]"
-        ghcjs_dom_html_opt_group_element_get_label ::
-        JSRef HTMLOptGroupElement -> IO JSString
- 
-htmlOptGroupElementGetLabel ::
-                            (IsHTMLOptGroupElement self, FromJSString result) =>
-                              self -> IO result
-htmlOptGroupElementGetLabel self
-  = fromJSString <$>
-      (ghcjs_dom_html_opt_group_element_get_label
-         (unHTMLOptGroupElement (toHTMLOptGroupElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement
 #else
-module GHCJS.DOM.HTMLOptGroupElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLOptGroupElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLOptGroupElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLOptionElement.hs b/src/GHCJS/DOM/HTMLOptionElement.hs
--- a/src/GHCJS/DOM/HTMLOptionElement.hs
+++ b/src/GHCJS/DOM/HTMLOptionElement.hs
@@ -1,184 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLOptionElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLOptionElement
-       (ghcjs_dom_html_option_element_set_disabled,
-        htmlOptionElementSetDisabled,
-        ghcjs_dom_html_option_element_get_disabled,
-        htmlOptionElementGetDisabled,
-        ghcjs_dom_html_option_element_get_form, htmlOptionElementGetForm,
-        ghcjs_dom_html_option_element_set_label, htmlOptionElementSetLabel,
-        ghcjs_dom_html_option_element_get_label, htmlOptionElementGetLabel,
-        ghcjs_dom_html_option_element_set_default_selected,
-        htmlOptionElementSetDefaultSelected,
-        ghcjs_dom_html_option_element_get_default_selected,
-        htmlOptionElementGetDefaultSelected,
-        ghcjs_dom_html_option_element_set_selected,
-        htmlOptionElementSetSelected,
-        ghcjs_dom_html_option_element_get_selected,
-        htmlOptionElementGetSelected,
-        ghcjs_dom_html_option_element_set_value, htmlOptionElementSetValue,
-        ghcjs_dom_html_option_element_get_value, htmlOptionElementGetValue,
-        ghcjs_dom_html_option_element_get_text, htmlOptionElementGetText,
-        ghcjs_dom_html_option_element_get_index, htmlOptionElementGetIndex,
-        HTMLOptionElement, IsHTMLOptionElement, castToHTMLOptionElement,
-        gTypeHTMLOptionElement, toHTMLOptionElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_option_element_set_disabled ::
-        JSRef HTMLOptionElement -> Bool -> IO ()
- 
-htmlOptionElementSetDisabled ::
-                             (IsHTMLOptionElement self) => self -> Bool -> IO ()
-htmlOptionElementSetDisabled self val
-  = ghcjs_dom_html_option_element_set_disabled
-      (unHTMLOptionElement (toHTMLOptionElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_option_element_get_disabled ::
-        JSRef HTMLOptionElement -> IO Bool
- 
-htmlOptionElementGetDisabled ::
-                             (IsHTMLOptionElement self) => self -> IO Bool
-htmlOptionElementGetDisabled self
-  = ghcjs_dom_html_option_element_get_disabled
-      (unHTMLOptionElement (toHTMLOptionElement self))
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_option_element_get_form ::
-        JSRef HTMLOptionElement -> IO (JSRef HTMLFormElement)
- 
-htmlOptionElementGetForm ::
-                         (IsHTMLOptionElement self) => self -> IO (Maybe HTMLFormElement)
-htmlOptionElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_option_element_get_form
-         (unHTMLOptionElement (toHTMLOptionElement self)))
- 
-foreign import javascript unsafe "$1[\"label\"] = $2;"
-        ghcjs_dom_html_option_element_set_label ::
-        JSRef HTMLOptionElement -> JSString -> IO ()
- 
-htmlOptionElementSetLabel ::
-                          (IsHTMLOptionElement self, ToJSString val) => self -> val -> IO ()
-htmlOptionElementSetLabel self val
-  = ghcjs_dom_html_option_element_set_label
-      (unHTMLOptionElement (toHTMLOptionElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"label\"]"
-        ghcjs_dom_html_option_element_get_label ::
-        JSRef HTMLOptionElement -> IO JSString
- 
-htmlOptionElementGetLabel ::
-                          (IsHTMLOptionElement self, FromJSString result) =>
-                            self -> IO result
-htmlOptionElementGetLabel self
-  = fromJSString <$>
-      (ghcjs_dom_html_option_element_get_label
-         (unHTMLOptionElement (toHTMLOptionElement self)))
- 
-foreign import javascript unsafe "$1[\"defaultSelected\"] = $2;"
-        ghcjs_dom_html_option_element_set_default_selected ::
-        JSRef HTMLOptionElement -> Bool -> IO ()
- 
-htmlOptionElementSetDefaultSelected ::
-                                    (IsHTMLOptionElement self) => self -> Bool -> IO ()
-htmlOptionElementSetDefaultSelected self val
-  = ghcjs_dom_html_option_element_set_default_selected
-      (unHTMLOptionElement (toHTMLOptionElement self))
-      val
- 
-foreign import javascript unsafe
-        "($1[\"defaultSelected\"] ? 1 : 0)"
-        ghcjs_dom_html_option_element_get_default_selected ::
-        JSRef HTMLOptionElement -> IO Bool
- 
-htmlOptionElementGetDefaultSelected ::
-                                    (IsHTMLOptionElement self) => self -> IO Bool
-htmlOptionElementGetDefaultSelected self
-  = ghcjs_dom_html_option_element_get_default_selected
-      (unHTMLOptionElement (toHTMLOptionElement self))
- 
-foreign import javascript unsafe "$1[\"selected\"] = $2;"
-        ghcjs_dom_html_option_element_set_selected ::
-        JSRef HTMLOptionElement -> Bool -> IO ()
- 
-htmlOptionElementSetSelected ::
-                             (IsHTMLOptionElement self) => self -> Bool -> IO ()
-htmlOptionElementSetSelected self val
-  = ghcjs_dom_html_option_element_set_selected
-      (unHTMLOptionElement (toHTMLOptionElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"selected\"] ? 1 : 0)"
-        ghcjs_dom_html_option_element_get_selected ::
-        JSRef HTMLOptionElement -> IO Bool
- 
-htmlOptionElementGetSelected ::
-                             (IsHTMLOptionElement self) => self -> IO Bool
-htmlOptionElementGetSelected self
-  = ghcjs_dom_html_option_element_get_selected
-      (unHTMLOptionElement (toHTMLOptionElement self))
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_html_option_element_set_value ::
-        JSRef HTMLOptionElement -> JSString -> IO ()
- 
-htmlOptionElementSetValue ::
-                          (IsHTMLOptionElement self, ToJSString val) => self -> val -> IO ()
-htmlOptionElementSetValue self val
-  = ghcjs_dom_html_option_element_set_value
-      (unHTMLOptionElement (toHTMLOptionElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_html_option_element_get_value ::
-        JSRef HTMLOptionElement -> IO JSString
- 
-htmlOptionElementGetValue ::
-                          (IsHTMLOptionElement self, FromJSString result) =>
-                            self -> IO result
-htmlOptionElementGetValue self
-  = fromJSString <$>
-      (ghcjs_dom_html_option_element_get_value
-         (unHTMLOptionElement (toHTMLOptionElement self)))
- 
-foreign import javascript unsafe "$1[\"text\"]"
-        ghcjs_dom_html_option_element_get_text ::
-        JSRef HTMLOptionElement -> IO JSString
- 
-htmlOptionElementGetText ::
-                         (IsHTMLOptionElement self, FromJSString result) =>
-                           self -> IO result
-htmlOptionElementGetText self
-  = fromJSString <$>
-      (ghcjs_dom_html_option_element_get_text
-         (unHTMLOptionElement (toHTMLOptionElement self)))
- 
-foreign import javascript unsafe "$1[\"index\"]"
-        ghcjs_dom_html_option_element_get_index ::
-        JSRef HTMLOptionElement -> IO Int
- 
-htmlOptionElementGetIndex ::
-                          (IsHTMLOptionElement self) => self -> IO Int
-htmlOptionElementGetIndex self
-  = ghcjs_dom_html_option_element_get_index
-      (unHTMLOptionElement (toHTMLOptionElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLOptionElement
 #else
-module GHCJS.DOM.HTMLOptionElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLOptionElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLOptionElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLOptionElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLOptionsCollection.hs b/src/GHCJS/DOM/HTMLOptionsCollection.hs
--- a/src/GHCJS/DOM/HTMLOptionsCollection.hs
+++ b/src/GHCJS/DOM/HTMLOptionsCollection.hs
@@ -1,62 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLOptionsCollection (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLOptionsCollection
-       (ghcjs_dom_html_options_collection_named_item,
-        htmlOptionsCollectionNamedItem,
-        ghcjs_dom_html_options_collection_set_selected_index,
-        htmlOptionsCollectionSetSelectedIndex,
-        ghcjs_dom_html_options_collection_get_selected_index,
-        htmlOptionsCollectionGetSelectedIndex, HTMLOptionsCollection,
-        IsHTMLOptionsCollection, castToHTMLOptionsCollection,
-        gTypeHTMLOptionsCollection, toHTMLOptionsCollection)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"namedItem\"]($2)"
-        ghcjs_dom_html_options_collection_named_item ::
-        JSRef HTMLOptionsCollection -> JSString -> IO (JSRef Node)
- 
-htmlOptionsCollectionNamedItem ::
-                               (IsHTMLOptionsCollection self, ToJSString name) =>
-                                 self -> name -> IO (Maybe Node)
-htmlOptionsCollectionNamedItem self name
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_html_options_collection_named_item
-         (unHTMLOptionsCollection (toHTMLOptionsCollection self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"selectedIndex\"] = $2;"
-        ghcjs_dom_html_options_collection_set_selected_index ::
-        JSRef HTMLOptionsCollection -> Int -> IO ()
- 
-htmlOptionsCollectionSetSelectedIndex ::
-                                      (IsHTMLOptionsCollection self) => self -> Int -> IO ()
-htmlOptionsCollectionSetSelectedIndex self val
-  = ghcjs_dom_html_options_collection_set_selected_index
-      (unHTMLOptionsCollection (toHTMLOptionsCollection self))
-      val
- 
-foreign import javascript unsafe "$1[\"selectedIndex\"]"
-        ghcjs_dom_html_options_collection_get_selected_index ::
-        JSRef HTMLOptionsCollection -> IO Int
- 
-htmlOptionsCollectionGetSelectedIndex ::
-                                      (IsHTMLOptionsCollection self) => self -> IO Int
-htmlOptionsCollectionGetSelectedIndex self
-  = ghcjs_dom_html_options_collection_get_selected_index
-      (unHTMLOptionsCollection (toHTMLOptionsCollection self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection
 #else
-module GHCJS.DOM.HTMLOptionsCollection (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLOptionsCollection
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLOptionsCollection
 #endif
diff --git a/src/GHCJS/DOM/HTMLOutputElement.hs b/src/GHCJS/DOM/HTMLOutputElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLOutputElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLOutputElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLOutputElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLOutputElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLParagraphElement.hs b/src/GHCJS/DOM/HTMLParagraphElement.hs
--- a/src/GHCJS/DOM/HTMLParagraphElement.hs
+++ b/src/GHCJS/DOM/HTMLParagraphElement.hs
@@ -1,50 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLParagraphElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLParagraphElement
-       (ghcjs_dom_html_paragraph_element_set_align,
-        htmlParagraphElementSetAlign,
-        ghcjs_dom_html_paragraph_element_get_align,
-        htmlParagraphElementGetAlign, HTMLParagraphElement,
-        IsHTMLParagraphElement, castToHTMLParagraphElement,
-        gTypeHTMLParagraphElement, toHTMLParagraphElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_paragraph_element_set_align ::
-        JSRef HTMLParagraphElement -> JSString -> IO ()
- 
-htmlParagraphElementSetAlign ::
-                             (IsHTMLParagraphElement self, ToJSString val) =>
-                               self -> val -> IO ()
-htmlParagraphElementSetAlign self val
-  = ghcjs_dom_html_paragraph_element_set_align
-      (unHTMLParagraphElement (toHTMLParagraphElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_paragraph_element_get_align ::
-        JSRef HTMLParagraphElement -> IO JSString
- 
-htmlParagraphElementGetAlign ::
-                             (IsHTMLParagraphElement self, FromJSString result) =>
-                               self -> IO result
-htmlParagraphElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_paragraph_element_get_align
-         (unHTMLParagraphElement (toHTMLParagraphElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement
 #else
-module GHCJS.DOM.HTMLParagraphElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLParagraphElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLParagraphElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLParamElement.hs b/src/GHCJS/DOM/HTMLParamElement.hs
--- a/src/GHCJS/DOM/HTMLParamElement.hs
+++ b/src/GHCJS/DOM/HTMLParamElement.hs
@@ -1,95 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLParamElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLParamElement
-       (ghcjs_dom_html_param_element_set_name, htmlParamElementSetName,
-        ghcjs_dom_html_param_element_get_name, htmlParamElementGetName,
-        ghcjs_dom_html_param_element_set_value, htmlParamElementSetValue,
-        ghcjs_dom_html_param_element_get_value, htmlParamElementGetValue,
-        ghcjs_dom_html_param_element_set_value_type,
-        htmlParamElementSetValueType,
-        ghcjs_dom_html_param_element_get_value_type,
-        htmlParamElementGetValueType, HTMLParamElement, IsHTMLParamElement,
-        castToHTMLParamElement, gTypeHTMLParamElement, toHTMLParamElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_param_element_set_name ::
-        JSRef HTMLParamElement -> JSString -> IO ()
- 
-htmlParamElementSetName ::
-                        (IsHTMLParamElement self, ToJSString val) => self -> val -> IO ()
-htmlParamElementSetName self val
-  = ghcjs_dom_html_param_element_set_name
-      (unHTMLParamElement (toHTMLParamElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_param_element_get_name ::
-        JSRef HTMLParamElement -> IO JSString
- 
-htmlParamElementGetName ::
-                        (IsHTMLParamElement self, FromJSString result) => self -> IO result
-htmlParamElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_param_element_get_name
-         (unHTMLParamElement (toHTMLParamElement self)))
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_html_param_element_set_value ::
-        JSRef HTMLParamElement -> JSString -> IO ()
- 
-htmlParamElementSetValue ::
-                         (IsHTMLParamElement self, ToJSString val) => self -> val -> IO ()
-htmlParamElementSetValue self val
-  = ghcjs_dom_html_param_element_set_value
-      (unHTMLParamElement (toHTMLParamElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_html_param_element_get_value ::
-        JSRef HTMLParamElement -> IO JSString
- 
-htmlParamElementGetValue ::
-                         (IsHTMLParamElement self, FromJSString result) => self -> IO result
-htmlParamElementGetValue self
-  = fromJSString <$>
-      (ghcjs_dom_html_param_element_get_value
-         (unHTMLParamElement (toHTMLParamElement self)))
- 
-foreign import javascript unsafe "$1[\"valueType\"] = $2;"
-        ghcjs_dom_html_param_element_set_value_type ::
-        JSRef HTMLParamElement -> JSString -> IO ()
- 
-htmlParamElementSetValueType ::
-                             (IsHTMLParamElement self, ToJSString val) => self -> val -> IO ()
-htmlParamElementSetValueType self val
-  = ghcjs_dom_html_param_element_set_value_type
-      (unHTMLParamElement (toHTMLParamElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"valueType\"]"
-        ghcjs_dom_html_param_element_get_value_type ::
-        JSRef HTMLParamElement -> IO JSString
- 
-htmlParamElementGetValueType ::
-                             (IsHTMLParamElement self, FromJSString result) => self -> IO result
-htmlParamElementGetValueType self
-  = fromJSString <$>
-      (ghcjs_dom_html_param_element_get_value_type
-         (unHTMLParamElement (toHTMLParamElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLParamElement
 #else
-module GHCJS.DOM.HTMLParamElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLParamElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLParamElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLParamElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLPreElement.hs b/src/GHCJS/DOM/HTMLPreElement.hs
--- a/src/GHCJS/DOM/HTMLPreElement.hs
+++ b/src/GHCJS/DOM/HTMLPreElement.hs
@@ -1,66 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLPreElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLPreElement
-       (ghcjs_dom_html_pre_element_set_width, htmlPreElementSetWidth,
-        ghcjs_dom_html_pre_element_get_width, htmlPreElementGetWidth,
-        ghcjs_dom_html_pre_element_set_wrap, htmlPreElementSetWrap,
-        ghcjs_dom_html_pre_element_get_wrap, htmlPreElementGetWrap,
-        HTMLPreElement, IsHTMLPreElement, castToHTMLPreElement,
-        gTypeHTMLPreElement, toHTMLPreElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_pre_element_set_width ::
-        JSRef HTMLPreElement -> Int -> IO ()
- 
-htmlPreElementSetWidth ::
-                       (IsHTMLPreElement self) => self -> Int -> IO ()
-htmlPreElementSetWidth self val
-  = ghcjs_dom_html_pre_element_set_width
-      (unHTMLPreElement (toHTMLPreElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_pre_element_get_width ::
-        JSRef HTMLPreElement -> IO Int
- 
-htmlPreElementGetWidth :: (IsHTMLPreElement self) => self -> IO Int
-htmlPreElementGetWidth self
-  = ghcjs_dom_html_pre_element_get_width
-      (unHTMLPreElement (toHTMLPreElement self))
- 
-foreign import javascript unsafe "$1[\"wrap\"] = $2;"
-        ghcjs_dom_html_pre_element_set_wrap ::
-        JSRef HTMLPreElement -> Bool -> IO ()
- 
-htmlPreElementSetWrap ::
-                      (IsHTMLPreElement self) => self -> Bool -> IO ()
-htmlPreElementSetWrap self val
-  = ghcjs_dom_html_pre_element_set_wrap
-      (unHTMLPreElement (toHTMLPreElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"wrap\"] ? 1 : 0)"
-        ghcjs_dom_html_pre_element_get_wrap ::
-        JSRef HTMLPreElement -> IO Bool
- 
-htmlPreElementGetWrap :: (IsHTMLPreElement self) => self -> IO Bool
-htmlPreElementGetWrap self
-  = ghcjs_dom_html_pre_element_get_wrap
-      (unHTMLPreElement (toHTMLPreElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLPreElement
 #else
-module GHCJS.DOM.HTMLPreElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLPreElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLPreElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLPreElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLProgressElement.hs b/src/GHCJS/DOM/HTMLProgressElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLProgressElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLProgressElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLProgressElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLProgressElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLQuoteElement.hs b/src/GHCJS/DOM/HTMLQuoteElement.hs
--- a/src/GHCJS/DOM/HTMLQuoteElement.hs
+++ b/src/GHCJS/DOM/HTMLQuoteElement.hs
@@ -1,46 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLQuoteElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLQuoteElement
-       (ghcjs_dom_html_quote_element_set_cite, htmlQuoteElementSetCite,
-        ghcjs_dom_html_quote_element_get_cite, htmlQuoteElementGetCite,
-        HTMLQuoteElement, IsHTMLQuoteElement, castToHTMLQuoteElement,
-        gTypeHTMLQuoteElement, toHTMLQuoteElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"cite\"] = $2;"
-        ghcjs_dom_html_quote_element_set_cite ::
-        JSRef HTMLQuoteElement -> JSString -> IO ()
- 
-htmlQuoteElementSetCite ::
-                        (IsHTMLQuoteElement self, ToJSString val) => self -> val -> IO ()
-htmlQuoteElementSetCite self val
-  = ghcjs_dom_html_quote_element_set_cite
-      (unHTMLQuoteElement (toHTMLQuoteElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cite\"]"
-        ghcjs_dom_html_quote_element_get_cite ::
-        JSRef HTMLQuoteElement -> IO JSString
- 
-htmlQuoteElementGetCite ::
-                        (IsHTMLQuoteElement self, FromJSString result) => self -> IO result
-htmlQuoteElementGetCite self
-  = fromJSString <$>
-      (ghcjs_dom_html_quote_element_get_cite
-         (unHTMLQuoteElement (toHTMLQuoteElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement
 #else
-module GHCJS.DOM.HTMLQuoteElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLQuoteElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLQuoteElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLScriptElement.hs b/src/GHCJS/DOM/HTMLScriptElement.hs
--- a/src/GHCJS/DOM/HTMLScriptElement.hs
+++ b/src/GHCJS/DOM/HTMLScriptElement.hs
@@ -1,249 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLScriptElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLScriptElement
-       (ghcjs_dom_html_script_element_set_text, htmlScriptElementSetText,
-        ghcjs_dom_html_script_element_get_text, htmlScriptElementGetText,
-        ghcjs_dom_html_script_element_set_html_for,
-        htmlScriptElementSetHtmlFor,
-        ghcjs_dom_html_script_element_get_html_for,
-        htmlScriptElementGetHtmlFor,
-        ghcjs_dom_html_script_element_set_event, htmlScriptElementSetEvent,
-        ghcjs_dom_html_script_element_get_event, htmlScriptElementGetEvent,
-        ghcjs_dom_html_script_element_set_charset,
-        htmlScriptElementSetCharset,
-        ghcjs_dom_html_script_element_get_charset,
-        htmlScriptElementGetCharset,
-        ghcjs_dom_html_script_element_set_async, htmlScriptElementSetAsync,
-        ghcjs_dom_html_script_element_get_async, htmlScriptElementGetAsync,
-        ghcjs_dom_html_script_element_set_defer, htmlScriptElementSetDefer,
-        ghcjs_dom_html_script_element_get_defer, htmlScriptElementGetDefer,
-        ghcjs_dom_html_script_element_set_src, htmlScriptElementSetSrc,
-        ghcjs_dom_html_script_element_get_src, htmlScriptElementGetSrc,
-        ghcjs_dom_html_script_element_set_cross_origin,
-        htmlScriptElementSetCrossOrigin,
-        ghcjs_dom_html_script_element_get_cross_origin,
-        htmlScriptElementGetCrossOrigin,
-        ghcjs_dom_html_script_element_set_nonce, htmlScriptElementSetNonce,
-        ghcjs_dom_html_script_element_get_nonce, htmlScriptElementGetNonce,
-        HTMLScriptElement, IsHTMLScriptElement, castToHTMLScriptElement,
-        gTypeHTMLScriptElement, toHTMLScriptElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"text\"] = $2;"
-        ghcjs_dom_html_script_element_set_text ::
-        JSRef HTMLScriptElement -> JSString -> IO ()
- 
-htmlScriptElementSetText ::
-                         (IsHTMLScriptElement self, ToJSString val) => self -> val -> IO ()
-htmlScriptElementSetText self val
-  = ghcjs_dom_html_script_element_set_text
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"text\"]"
-        ghcjs_dom_html_script_element_get_text ::
-        JSRef HTMLScriptElement -> IO JSString
- 
-htmlScriptElementGetText ::
-                         (IsHTMLScriptElement self, FromJSString result) =>
-                           self -> IO result
-htmlScriptElementGetText self
-  = fromJSString <$>
-      (ghcjs_dom_html_script_element_get_text
-         (unHTMLScriptElement (toHTMLScriptElement self)))
- 
-foreign import javascript unsafe "$1[\"htmlFor\"] = $2;"
-        ghcjs_dom_html_script_element_set_html_for ::
-        JSRef HTMLScriptElement -> JSString -> IO ()
- 
-htmlScriptElementSetHtmlFor ::
-                            (IsHTMLScriptElement self, ToJSString val) => self -> val -> IO ()
-htmlScriptElementSetHtmlFor self val
-  = ghcjs_dom_html_script_element_set_html_for
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"htmlFor\"]"
-        ghcjs_dom_html_script_element_get_html_for ::
-        JSRef HTMLScriptElement -> IO JSString
- 
-htmlScriptElementGetHtmlFor ::
-                            (IsHTMLScriptElement self, FromJSString result) =>
-                              self -> IO result
-htmlScriptElementGetHtmlFor self
-  = fromJSString <$>
-      (ghcjs_dom_html_script_element_get_html_for
-         (unHTMLScriptElement (toHTMLScriptElement self)))
- 
-foreign import javascript unsafe "$1[\"event\"] = $2;"
-        ghcjs_dom_html_script_element_set_event ::
-        JSRef HTMLScriptElement -> JSString -> IO ()
- 
-htmlScriptElementSetEvent ::
-                          (IsHTMLScriptElement self, ToJSString val) => self -> val -> IO ()
-htmlScriptElementSetEvent self val
-  = ghcjs_dom_html_script_element_set_event
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"event\"]"
-        ghcjs_dom_html_script_element_get_event ::
-        JSRef HTMLScriptElement -> IO JSString
- 
-htmlScriptElementGetEvent ::
-                          (IsHTMLScriptElement self, FromJSString result) =>
-                            self -> IO result
-htmlScriptElementGetEvent self
-  = fromJSString <$>
-      (ghcjs_dom_html_script_element_get_event
-         (unHTMLScriptElement (toHTMLScriptElement self)))
- 
-foreign import javascript unsafe "$1[\"charset\"] = $2;"
-        ghcjs_dom_html_script_element_set_charset ::
-        JSRef HTMLScriptElement -> JSString -> IO ()
- 
-htmlScriptElementSetCharset ::
-                            (IsHTMLScriptElement self, ToJSString val) => self -> val -> IO ()
-htmlScriptElementSetCharset self val
-  = ghcjs_dom_html_script_element_set_charset
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"charset\"]"
-        ghcjs_dom_html_script_element_get_charset ::
-        JSRef HTMLScriptElement -> IO JSString
- 
-htmlScriptElementGetCharset ::
-                            (IsHTMLScriptElement self, FromJSString result) =>
-                              self -> IO result
-htmlScriptElementGetCharset self
-  = fromJSString <$>
-      (ghcjs_dom_html_script_element_get_charset
-         (unHTMLScriptElement (toHTMLScriptElement self)))
- 
-foreign import javascript unsafe "$1[\"async\"] = $2;"
-        ghcjs_dom_html_script_element_set_async ::
-        JSRef HTMLScriptElement -> Bool -> IO ()
- 
-htmlScriptElementSetAsync ::
-                          (IsHTMLScriptElement self) => self -> Bool -> IO ()
-htmlScriptElementSetAsync self val
-  = ghcjs_dom_html_script_element_set_async
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"async\"] ? 1 : 0)"
-        ghcjs_dom_html_script_element_get_async ::
-        JSRef HTMLScriptElement -> IO Bool
- 
-htmlScriptElementGetAsync ::
-                          (IsHTMLScriptElement self) => self -> IO Bool
-htmlScriptElementGetAsync self
-  = ghcjs_dom_html_script_element_get_async
-      (unHTMLScriptElement (toHTMLScriptElement self))
- 
-foreign import javascript unsafe "$1[\"defer\"] = $2;"
-        ghcjs_dom_html_script_element_set_defer ::
-        JSRef HTMLScriptElement -> Bool -> IO ()
- 
-htmlScriptElementSetDefer ::
-                          (IsHTMLScriptElement self) => self -> Bool -> IO ()
-htmlScriptElementSetDefer self val
-  = ghcjs_dom_html_script_element_set_defer
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"defer\"] ? 1 : 0)"
-        ghcjs_dom_html_script_element_get_defer ::
-        JSRef HTMLScriptElement -> IO Bool
- 
-htmlScriptElementGetDefer ::
-                          (IsHTMLScriptElement self) => self -> IO Bool
-htmlScriptElementGetDefer self
-  = ghcjs_dom_html_script_element_get_defer
-      (unHTMLScriptElement (toHTMLScriptElement self))
- 
-foreign import javascript unsafe "$1[\"src\"] = $2;"
-        ghcjs_dom_html_script_element_set_src ::
-        JSRef HTMLScriptElement -> JSString -> IO ()
- 
-htmlScriptElementSetSrc ::
-                        (IsHTMLScriptElement self, ToJSString val) => self -> val -> IO ()
-htmlScriptElementSetSrc self val
-  = ghcjs_dom_html_script_element_set_src
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"src\"]"
-        ghcjs_dom_html_script_element_get_src ::
-        JSRef HTMLScriptElement -> IO JSString
- 
-htmlScriptElementGetSrc ::
-                        (IsHTMLScriptElement self, FromJSString result) =>
-                          self -> IO result
-htmlScriptElementGetSrc self
-  = fromJSString <$>
-      (ghcjs_dom_html_script_element_get_src
-         (unHTMLScriptElement (toHTMLScriptElement self)))
- 
-foreign import javascript unsafe "$1[\"crossOrigin\"] = $2;"
-        ghcjs_dom_html_script_element_set_cross_origin ::
-        JSRef HTMLScriptElement -> JSString -> IO ()
- 
-htmlScriptElementSetCrossOrigin ::
-                                (IsHTMLScriptElement self, ToJSString val) => self -> val -> IO ()
-htmlScriptElementSetCrossOrigin self val
-  = ghcjs_dom_html_script_element_set_cross_origin
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"crossOrigin\"]"
-        ghcjs_dom_html_script_element_get_cross_origin ::
-        JSRef HTMLScriptElement -> IO JSString
- 
-htmlScriptElementGetCrossOrigin ::
-                                (IsHTMLScriptElement self, FromJSString result) =>
-                                  self -> IO result
-htmlScriptElementGetCrossOrigin self
-  = fromJSString <$>
-      (ghcjs_dom_html_script_element_get_cross_origin
-         (unHTMLScriptElement (toHTMLScriptElement self)))
- 
-foreign import javascript unsafe "$1[\"nonce\"] = $2;"
-        ghcjs_dom_html_script_element_set_nonce ::
-        JSRef HTMLScriptElement -> JSString -> IO ()
- 
-htmlScriptElementSetNonce ::
-                          (IsHTMLScriptElement self, ToJSString val) => self -> val -> IO ()
-htmlScriptElementSetNonce self val
-  = ghcjs_dom_html_script_element_set_nonce
-      (unHTMLScriptElement (toHTMLScriptElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"nonce\"]"
-        ghcjs_dom_html_script_element_get_nonce ::
-        JSRef HTMLScriptElement -> IO JSString
- 
-htmlScriptElementGetNonce ::
-                          (IsHTMLScriptElement self, FromJSString result) =>
-                            self -> IO result
-htmlScriptElementGetNonce self
-  = fromJSString <$>
-      (ghcjs_dom_html_script_element_get_nonce
-         (unHTMLScriptElement (toHTMLScriptElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLScriptElement
 #else
-module GHCJS.DOM.HTMLScriptElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLScriptElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLScriptElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLScriptElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLSelectElement.hs b/src/GHCJS/DOM/HTMLSelectElement.hs
--- a/src/GHCJS/DOM/HTMLSelectElement.hs
+++ b/src/GHCJS/DOM/HTMLSelectElement.hs
@@ -1,419 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLSelectElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLSelectElement
-       (ghcjs_dom_html_select_element_item, htmlSelectElementItem,
-        ghcjs_dom_html_select_element_named_item,
-        htmlSelectElementNamedItem, ghcjs_dom_html_select_element_add,
-        htmlSelectElementAdd, ghcjs_dom_html_select_element_remove,
-        htmlSelectElementRemove,
-        ghcjs_dom_html_select_element_check_validity,
-        htmlSelectElementCheckValidity,
-        ghcjs_dom_html_select_element_set_custom_validity,
-        htmlSelectElementSetCustomValidity,
-        ghcjs_dom_html_select_element_set_autofocus,
-        htmlSelectElementSetAutofocus,
-        ghcjs_dom_html_select_element_get_autofocus,
-        htmlSelectElementGetAutofocus,
-        ghcjs_dom_html_select_element_set_disabled,
-        htmlSelectElementSetDisabled,
-        ghcjs_dom_html_select_element_get_disabled,
-        htmlSelectElementGetDisabled,
-        ghcjs_dom_html_select_element_get_form, htmlSelectElementGetForm,
-        ghcjs_dom_html_select_element_set_multiple,
-        htmlSelectElementSetMultiple,
-        ghcjs_dom_html_select_element_get_multiple,
-        htmlSelectElementGetMultiple,
-        ghcjs_dom_html_select_element_set_name, htmlSelectElementSetName,
-        ghcjs_dom_html_select_element_get_name, htmlSelectElementGetName,
-        ghcjs_dom_html_select_element_set_required,
-        htmlSelectElementSetRequired,
-        ghcjs_dom_html_select_element_get_required,
-        htmlSelectElementGetRequired,
-        ghcjs_dom_html_select_element_set_size, htmlSelectElementSetSize,
-        ghcjs_dom_html_select_element_get_size, htmlSelectElementGetSize,
-        ghcjs_dom_html_select_element_get_options,
-        htmlSelectElementGetOptions,
-        ghcjs_dom_html_select_element_set_length,
-        htmlSelectElementSetLength,
-        ghcjs_dom_html_select_element_get_length,
-        htmlSelectElementGetLength,
-        ghcjs_dom_html_select_element_get_selected_options,
-        htmlSelectElementGetSelectedOptions,
-        ghcjs_dom_html_select_element_set_selected_index,
-        htmlSelectElementSetSelectedIndex,
-        ghcjs_dom_html_select_element_get_selected_index,
-        htmlSelectElementGetSelectedIndex,
-        ghcjs_dom_html_select_element_set_value, htmlSelectElementSetValue,
-        ghcjs_dom_html_select_element_get_value, htmlSelectElementGetValue,
-        ghcjs_dom_html_select_element_get_will_validate,
-        htmlSelectElementGetWillValidate,
-        ghcjs_dom_html_select_element_get_validity,
-        htmlSelectElementGetValidity,
-        ghcjs_dom_html_select_element_get_validation_message,
-        htmlSelectElementGetValidationMessage,
-        ghcjs_dom_html_select_element_get_labels,
-        htmlSelectElementGetLabels, HTMLSelectElement, IsHTMLSelectElement,
-        castToHTMLSelectElement, gTypeHTMLSelectElement,
-        toHTMLSelectElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_html_select_element_item ::
-        JSRef HTMLSelectElement -> Word -> IO (JSRef Node)
- 
-htmlSelectElementItem ::
-                      (IsHTMLSelectElement self) => self -> Word -> IO (Maybe Node)
-htmlSelectElementItem self index
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_html_select_element_item
-         (unHTMLSelectElement (toHTMLSelectElement self))
-         index)
- 
-foreign import javascript unsafe "$1[\"namedItem\"]($2)"
-        ghcjs_dom_html_select_element_named_item ::
-        JSRef HTMLSelectElement -> JSString -> IO (JSRef Node)
- 
-htmlSelectElementNamedItem ::
-                           (IsHTMLSelectElement self, ToJSString name) =>
-                             self -> name -> IO (Maybe Node)
-htmlSelectElementNamedItem self name
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_html_select_element_named_item
-         (unHTMLSelectElement (toHTMLSelectElement self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"add\"]($2, $3)"
-        ghcjs_dom_html_select_element_add ::
-        JSRef HTMLSelectElement ->
-          JSRef HTMLElement -> JSRef HTMLElement -> IO ()
- 
-htmlSelectElementAdd ::
-                     (IsHTMLSelectElement self, IsHTMLElement element,
-                      IsHTMLElement before) =>
-                       self -> Maybe element -> Maybe before -> IO ()
-htmlSelectElementAdd self element before
-  = ghcjs_dom_html_select_element_add
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      (maybe jsNull (unHTMLElement . toHTMLElement) element)
-      (maybe jsNull (unHTMLElement . toHTMLElement) before)
- 
-foreign import javascript unsafe "$1[\"remove\"]($2)"
-        ghcjs_dom_html_select_element_remove ::
-        JSRef HTMLSelectElement -> Int -> IO ()
- 
-htmlSelectElementRemove ::
-                        (IsHTMLSelectElement self) => self -> Int -> IO ()
-htmlSelectElementRemove self index
-  = ghcjs_dom_html_select_element_remove
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      index
- 
-foreign import javascript unsafe
-        "($1[\"checkValidity\"]() ? 1 : 0)"
-        ghcjs_dom_html_select_element_check_validity ::
-        JSRef HTMLSelectElement -> IO Bool
- 
-htmlSelectElementCheckValidity ::
-                               (IsHTMLSelectElement self) => self -> IO Bool
-htmlSelectElementCheckValidity self
-  = ghcjs_dom_html_select_element_check_validity
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
-        ghcjs_dom_html_select_element_set_custom_validity ::
-        JSRef HTMLSelectElement -> JSString -> IO ()
- 
-htmlSelectElementSetCustomValidity ::
-                                   (IsHTMLSelectElement self, ToJSString error) =>
-                                     self -> error -> IO ()
-htmlSelectElementSetCustomValidity self error
-  = ghcjs_dom_html_select_element_set_custom_validity
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      (toJSString error)
- 
-foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
-        ghcjs_dom_html_select_element_set_autofocus ::
-        JSRef HTMLSelectElement -> Bool -> IO ()
- 
-htmlSelectElementSetAutofocus ::
-                              (IsHTMLSelectElement self) => self -> Bool -> IO ()
-htmlSelectElementSetAutofocus self val
-  = ghcjs_dom_html_select_element_set_autofocus
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
-        ghcjs_dom_html_select_element_get_autofocus ::
-        JSRef HTMLSelectElement -> IO Bool
- 
-htmlSelectElementGetAutofocus ::
-                              (IsHTMLSelectElement self) => self -> IO Bool
-htmlSelectElementGetAutofocus self
-  = ghcjs_dom_html_select_element_get_autofocus
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_select_element_set_disabled ::
-        JSRef HTMLSelectElement -> Bool -> IO ()
- 
-htmlSelectElementSetDisabled ::
-                             (IsHTMLSelectElement self) => self -> Bool -> IO ()
-htmlSelectElementSetDisabled self val
-  = ghcjs_dom_html_select_element_set_disabled
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_select_element_get_disabled ::
-        JSRef HTMLSelectElement -> IO Bool
- 
-htmlSelectElementGetDisabled ::
-                             (IsHTMLSelectElement self) => self -> IO Bool
-htmlSelectElementGetDisabled self
-  = ghcjs_dom_html_select_element_get_disabled
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_select_element_get_form ::
-        JSRef HTMLSelectElement -> IO (JSRef HTMLFormElement)
- 
-htmlSelectElementGetForm ::
-                         (IsHTMLSelectElement self) => self -> IO (Maybe HTMLFormElement)
-htmlSelectElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_select_element_get_form
-         (unHTMLSelectElement (toHTMLSelectElement self)))
- 
-foreign import javascript unsafe "$1[\"multiple\"] = $2;"
-        ghcjs_dom_html_select_element_set_multiple ::
-        JSRef HTMLSelectElement -> Bool -> IO ()
- 
-htmlSelectElementSetMultiple ::
-                             (IsHTMLSelectElement self) => self -> Bool -> IO ()
-htmlSelectElementSetMultiple self val
-  = ghcjs_dom_html_select_element_set_multiple
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"multiple\"] ? 1 : 0)"
-        ghcjs_dom_html_select_element_get_multiple ::
-        JSRef HTMLSelectElement -> IO Bool
- 
-htmlSelectElementGetMultiple ::
-                             (IsHTMLSelectElement self) => self -> IO Bool
-htmlSelectElementGetMultiple self
-  = ghcjs_dom_html_select_element_get_multiple
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_select_element_set_name ::
-        JSRef HTMLSelectElement -> JSString -> IO ()
- 
-htmlSelectElementSetName ::
-                         (IsHTMLSelectElement self, ToJSString val) => self -> val -> IO ()
-htmlSelectElementSetName self val
-  = ghcjs_dom_html_select_element_set_name
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_select_element_get_name ::
-        JSRef HTMLSelectElement -> IO JSString
- 
-htmlSelectElementGetName ::
-                         (IsHTMLSelectElement self, FromJSString result) =>
-                           self -> IO result
-htmlSelectElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_select_element_get_name
-         (unHTMLSelectElement (toHTMLSelectElement self)))
- 
-foreign import javascript unsafe "$1[\"required\"] = $2;"
-        ghcjs_dom_html_select_element_set_required ::
-        JSRef HTMLSelectElement -> Bool -> IO ()
- 
-htmlSelectElementSetRequired ::
-                             (IsHTMLSelectElement self) => self -> Bool -> IO ()
-htmlSelectElementSetRequired self val
-  = ghcjs_dom_html_select_element_set_required
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"required\"] ? 1 : 0)"
-        ghcjs_dom_html_select_element_get_required ::
-        JSRef HTMLSelectElement -> IO Bool
- 
-htmlSelectElementGetRequired ::
-                             (IsHTMLSelectElement self) => self -> IO Bool
-htmlSelectElementGetRequired self
-  = ghcjs_dom_html_select_element_get_required
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"size\"] = $2;"
-        ghcjs_dom_html_select_element_set_size ::
-        JSRef HTMLSelectElement -> Int -> IO ()
- 
-htmlSelectElementSetSize ::
-                         (IsHTMLSelectElement self) => self -> Int -> IO ()
-htmlSelectElementSetSize self val
-  = ghcjs_dom_html_select_element_set_size
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"size\"]"
-        ghcjs_dom_html_select_element_get_size ::
-        JSRef HTMLSelectElement -> IO Int
- 
-htmlSelectElementGetSize ::
-                         (IsHTMLSelectElement self) => self -> IO Int
-htmlSelectElementGetSize self
-  = ghcjs_dom_html_select_element_get_size
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"options\"]"
-        ghcjs_dom_html_select_element_get_options ::
-        JSRef HTMLSelectElement -> IO (JSRef HTMLOptionsCollection)
- 
-htmlSelectElementGetOptions ::
-                            (IsHTMLSelectElement self) =>
-                              self -> IO (Maybe HTMLOptionsCollection)
-htmlSelectElementGetOptions self
-  = fmap HTMLOptionsCollection . maybeJSNull <$>
-      (ghcjs_dom_html_select_element_get_options
-         (unHTMLSelectElement (toHTMLSelectElement self)))
- 
-foreign import javascript unsafe "$1[\"length\"] = $2;"
-        ghcjs_dom_html_select_element_set_length ::
-        JSRef HTMLSelectElement -> Word -> IO ()
- 
-htmlSelectElementSetLength ::
-                           (IsHTMLSelectElement self) => self -> Word -> IO ()
-htmlSelectElementSetLength self val
-  = ghcjs_dom_html_select_element_set_length
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_html_select_element_get_length ::
-        JSRef HTMLSelectElement -> IO Word
- 
-htmlSelectElementGetLength ::
-                           (IsHTMLSelectElement self) => self -> IO Word
-htmlSelectElementGetLength self
-  = ghcjs_dom_html_select_element_get_length
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"selectedOptions\"]"
-        ghcjs_dom_html_select_element_get_selected_options ::
-        JSRef HTMLSelectElement -> IO (JSRef HTMLCollection)
- 
-htmlSelectElementGetSelectedOptions ::
-                                    (IsHTMLSelectElement self) => self -> IO (Maybe HTMLCollection)
-htmlSelectElementGetSelectedOptions self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_select_element_get_selected_options
-         (unHTMLSelectElement (toHTMLSelectElement self)))
- 
-foreign import javascript unsafe "$1[\"selectedIndex\"] = $2;"
-        ghcjs_dom_html_select_element_set_selected_index ::
-        JSRef HTMLSelectElement -> Int -> IO ()
- 
-htmlSelectElementSetSelectedIndex ::
-                                  (IsHTMLSelectElement self) => self -> Int -> IO ()
-htmlSelectElementSetSelectedIndex self val
-  = ghcjs_dom_html_select_element_set_selected_index
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"selectedIndex\"]"
-        ghcjs_dom_html_select_element_get_selected_index ::
-        JSRef HTMLSelectElement -> IO Int
- 
-htmlSelectElementGetSelectedIndex ::
-                                  (IsHTMLSelectElement self) => self -> IO Int
-htmlSelectElementGetSelectedIndex self
-  = ghcjs_dom_html_select_element_get_selected_index
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_html_select_element_set_value ::
-        JSRef HTMLSelectElement -> JSString -> IO ()
- 
-htmlSelectElementSetValue ::
-                          (IsHTMLSelectElement self, ToJSString val) => self -> val -> IO ()
-htmlSelectElementSetValue self val
-  = ghcjs_dom_html_select_element_set_value
-      (unHTMLSelectElement (toHTMLSelectElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_html_select_element_get_value ::
-        JSRef HTMLSelectElement -> IO JSString
- 
-htmlSelectElementGetValue ::
-                          (IsHTMLSelectElement self, FromJSString result) =>
-                            self -> IO result
-htmlSelectElementGetValue self
-  = fromJSString <$>
-      (ghcjs_dom_html_select_element_get_value
-         (unHTMLSelectElement (toHTMLSelectElement self)))
- 
-foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_select_element_get_will_validate ::
-        JSRef HTMLSelectElement -> IO Bool
- 
-htmlSelectElementGetWillValidate ::
-                                 (IsHTMLSelectElement self) => self -> IO Bool
-htmlSelectElementGetWillValidate self
-  = ghcjs_dom_html_select_element_get_will_validate
-      (unHTMLSelectElement (toHTMLSelectElement self))
- 
-foreign import javascript unsafe "$1[\"validity\"]"
-        ghcjs_dom_html_select_element_get_validity ::
-        JSRef HTMLSelectElement -> IO (JSRef ValidityState)
- 
-htmlSelectElementGetValidity ::
-                             (IsHTMLSelectElement self) => self -> IO (Maybe ValidityState)
-htmlSelectElementGetValidity self
-  = fmap ValidityState . maybeJSNull <$>
-      (ghcjs_dom_html_select_element_get_validity
-         (unHTMLSelectElement (toHTMLSelectElement self)))
- 
-foreign import javascript unsafe "$1[\"validationMessage\"]"
-        ghcjs_dom_html_select_element_get_validation_message ::
-        JSRef HTMLSelectElement -> IO JSString
- 
-htmlSelectElementGetValidationMessage ::
-                                      (IsHTMLSelectElement self, FromJSString result) =>
-                                        self -> IO result
-htmlSelectElementGetValidationMessage self
-  = fromJSString <$>
-      (ghcjs_dom_html_select_element_get_validation_message
-         (unHTMLSelectElement (toHTMLSelectElement self)))
- 
-foreign import javascript unsafe "$1[\"labels\"]"
-        ghcjs_dom_html_select_element_get_labels ::
-        JSRef HTMLSelectElement -> IO (JSRef NodeList)
- 
-htmlSelectElementGetLabels ::
-                           (IsHTMLSelectElement self) => self -> IO (Maybe NodeList)
-htmlSelectElementGetLabels self
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_html_select_element_get_labels
-         (unHTMLSelectElement (toHTMLSelectElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLSelectElement
 #else
-module GHCJS.DOM.HTMLSelectElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLSelectElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLSelectElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLSelectElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLSourceElement.hs b/src/GHCJS/DOM/HTMLSourceElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLSourceElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLSourceElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLSourceElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLSourceElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLStyleElement.hs b/src/GHCJS/DOM/HTMLStyleElement.hs
--- a/src/GHCJS/DOM/HTMLStyleElement.hs
+++ b/src/GHCJS/DOM/HTMLStyleElement.hs
@@ -1,83 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLStyleElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLStyleElement
-       (ghcjs_dom_html_style_element_set_disabled,
-        htmlStyleElementSetDisabled,
-        ghcjs_dom_html_style_element_get_disabled,
-        htmlStyleElementGetDisabled,
-        ghcjs_dom_html_style_element_set_media, htmlStyleElementSetMedia,
-        ghcjs_dom_html_style_element_get_media, htmlStyleElementGetMedia,
-        ghcjs_dom_html_style_element_get_sheet, htmlStyleElementGetSheet,
-        HTMLStyleElement, IsHTMLStyleElement, castToHTMLStyleElement,
-        gTypeHTMLStyleElement, toHTMLStyleElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_style_element_set_disabled ::
-        JSRef HTMLStyleElement -> Bool -> IO ()
- 
-htmlStyleElementSetDisabled ::
-                            (IsHTMLStyleElement self) => self -> Bool -> IO ()
-htmlStyleElementSetDisabled self val
-  = ghcjs_dom_html_style_element_set_disabled
-      (unHTMLStyleElement (toHTMLStyleElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_style_element_get_disabled ::
-        JSRef HTMLStyleElement -> IO Bool
- 
-htmlStyleElementGetDisabled ::
-                            (IsHTMLStyleElement self) => self -> IO Bool
-htmlStyleElementGetDisabled self
-  = ghcjs_dom_html_style_element_get_disabled
-      (unHTMLStyleElement (toHTMLStyleElement self))
- 
-foreign import javascript unsafe "$1[\"media\"] = $2;"
-        ghcjs_dom_html_style_element_set_media ::
-        JSRef HTMLStyleElement -> JSString -> IO ()
- 
-htmlStyleElementSetMedia ::
-                         (IsHTMLStyleElement self, ToJSString val) => self -> val -> IO ()
-htmlStyleElementSetMedia self val
-  = ghcjs_dom_html_style_element_set_media
-      (unHTMLStyleElement (toHTMLStyleElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"media\"]"
-        ghcjs_dom_html_style_element_get_media ::
-        JSRef HTMLStyleElement -> IO JSString
- 
-htmlStyleElementGetMedia ::
-                         (IsHTMLStyleElement self, FromJSString result) => self -> IO result
-htmlStyleElementGetMedia self
-  = fromJSString <$>
-      (ghcjs_dom_html_style_element_get_media
-         (unHTMLStyleElement (toHTMLStyleElement self)))
- 
-foreign import javascript unsafe "$1[\"sheet\"]"
-        ghcjs_dom_html_style_element_get_sheet ::
-        JSRef HTMLStyleElement -> IO (JSRef StyleSheet)
- 
-htmlStyleElementGetSheet ::
-                         (IsHTMLStyleElement self) => self -> IO (Maybe StyleSheet)
-htmlStyleElementGetSheet self
-  = fmap StyleSheet . maybeJSNull <$>
-      (ghcjs_dom_html_style_element_get_sheet
-         (unHTMLStyleElement (toHTMLStyleElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLStyleElement
 #else
-module GHCJS.DOM.HTMLStyleElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLStyleElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLStyleElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLStyleElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTableCaptionElement.hs b/src/GHCJS/DOM/HTMLTableCaptionElement.hs
--- a/src/GHCJS/DOM/HTMLTableCaptionElement.hs
+++ b/src/GHCJS/DOM/HTMLTableCaptionElement.hs
@@ -1,50 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTableCaptionElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLTableCaptionElement
-       (ghcjs_dom_html_table_caption_element_set_align,
-        htmlTableCaptionElementSetAlign,
-        ghcjs_dom_html_table_caption_element_get_align,
-        htmlTableCaptionElementGetAlign, HTMLTableCaptionElement,
-        IsHTMLTableCaptionElement, castToHTMLTableCaptionElement,
-        gTypeHTMLTableCaptionElement, toHTMLTableCaptionElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_table_caption_element_set_align ::
-        JSRef HTMLTableCaptionElement -> JSString -> IO ()
- 
-htmlTableCaptionElementSetAlign ::
-                                (IsHTMLTableCaptionElement self, ToJSString val) =>
-                                  self -> val -> IO ()
-htmlTableCaptionElementSetAlign self val
-  = ghcjs_dom_html_table_caption_element_set_align
-      (unHTMLTableCaptionElement (toHTMLTableCaptionElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_table_caption_element_get_align ::
-        JSRef HTMLTableCaptionElement -> IO JSString
- 
-htmlTableCaptionElementGetAlign ::
-                                (IsHTMLTableCaptionElement self, FromJSString result) =>
-                                  self -> IO result
-htmlTableCaptionElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_caption_element_get_align
-         (unHTMLTableCaptionElement (toHTMLTableCaptionElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement
 #else
-module GHCJS.DOM.HTMLTableCaptionElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLTableCaptionElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLTableCaptionElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTableCellElement.hs b/src/GHCJS/DOM/HTMLTableCellElement.hs
--- a/src/GHCJS/DOM/HTMLTableCellElement.hs
+++ b/src/GHCJS/DOM/HTMLTableCellElement.hs
@@ -1,417 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTableCellElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLTableCellElement
-       (ghcjs_dom_html_table_cell_element_get_cell_index,
-        htmlTableCellElementGetCellIndex,
-        ghcjs_dom_html_table_cell_element_set_abbr,
-        htmlTableCellElementSetAbbr,
-        ghcjs_dom_html_table_cell_element_get_abbr,
-        htmlTableCellElementGetAbbr,
-        ghcjs_dom_html_table_cell_element_set_align,
-        htmlTableCellElementSetAlign,
-        ghcjs_dom_html_table_cell_element_get_align,
-        htmlTableCellElementGetAlign,
-        ghcjs_dom_html_table_cell_element_set_axis,
-        htmlTableCellElementSetAxis,
-        ghcjs_dom_html_table_cell_element_get_axis,
-        htmlTableCellElementGetAxis,
-        ghcjs_dom_html_table_cell_element_set_bg_color,
-        htmlTableCellElementSetBgColor,
-        ghcjs_dom_html_table_cell_element_get_bg_color,
-        htmlTableCellElementGetBgColor,
-        ghcjs_dom_html_table_cell_element_set_ch,
-        htmlTableCellElementSetCh,
-        ghcjs_dom_html_table_cell_element_get_ch,
-        htmlTableCellElementGetCh,
-        ghcjs_dom_html_table_cell_element_set_ch_off,
-        htmlTableCellElementSetChOff,
-        ghcjs_dom_html_table_cell_element_get_ch_off,
-        htmlTableCellElementGetChOff,
-        ghcjs_dom_html_table_cell_element_set_col_span,
-        htmlTableCellElementSetColSpan,
-        ghcjs_dom_html_table_cell_element_get_col_span,
-        htmlTableCellElementGetColSpan,
-        ghcjs_dom_html_table_cell_element_set_headers,
-        htmlTableCellElementSetHeaders,
-        ghcjs_dom_html_table_cell_element_get_headers,
-        htmlTableCellElementGetHeaders,
-        ghcjs_dom_html_table_cell_element_set_height,
-        htmlTableCellElementSetHeight,
-        ghcjs_dom_html_table_cell_element_get_height,
-        htmlTableCellElementGetHeight,
-        ghcjs_dom_html_table_cell_element_set_no_wrap,
-        htmlTableCellElementSetNoWrap,
-        ghcjs_dom_html_table_cell_element_get_no_wrap,
-        htmlTableCellElementGetNoWrap,
-        ghcjs_dom_html_table_cell_element_set_row_span,
-        htmlTableCellElementSetRowSpan,
-        ghcjs_dom_html_table_cell_element_get_row_span,
-        htmlTableCellElementGetRowSpan,
-        ghcjs_dom_html_table_cell_element_set_scope,
-        htmlTableCellElementSetScope,
-        ghcjs_dom_html_table_cell_element_get_scope,
-        htmlTableCellElementGetScope,
-        ghcjs_dom_html_table_cell_element_set_v_align,
-        htmlTableCellElementSetVAlign,
-        ghcjs_dom_html_table_cell_element_get_v_align,
-        htmlTableCellElementGetVAlign,
-        ghcjs_dom_html_table_cell_element_set_width,
-        htmlTableCellElementSetWidth,
-        ghcjs_dom_html_table_cell_element_get_width,
-        htmlTableCellElementGetWidth, HTMLTableCellElement,
-        IsHTMLTableCellElement, castToHTMLTableCellElement,
-        gTypeHTMLTableCellElement, toHTMLTableCellElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"cellIndex\"]"
-        ghcjs_dom_html_table_cell_element_get_cell_index ::
-        JSRef HTMLTableCellElement -> IO Int
- 
-htmlTableCellElementGetCellIndex ::
-                                 (IsHTMLTableCellElement self) => self -> IO Int
-htmlTableCellElementGetCellIndex self
-  = ghcjs_dom_html_table_cell_element_get_cell_index
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
- 
-foreign import javascript unsafe "$1[\"abbr\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_abbr ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetAbbr ::
-                            (IsHTMLTableCellElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlTableCellElementSetAbbr self val
-  = ghcjs_dom_html_table_cell_element_set_abbr
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"abbr\"]"
-        ghcjs_dom_html_table_cell_element_get_abbr ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetAbbr ::
-                            (IsHTMLTableCellElement self, FromJSString result) =>
-                              self -> IO result
-htmlTableCellElementGetAbbr self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_abbr
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_align ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetAlign ::
-                             (IsHTMLTableCellElement self, ToJSString val) =>
-                               self -> val -> IO ()
-htmlTableCellElementSetAlign self val
-  = ghcjs_dom_html_table_cell_element_set_align
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_table_cell_element_get_align ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetAlign ::
-                             (IsHTMLTableCellElement self, FromJSString result) =>
-                               self -> IO result
-htmlTableCellElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_align
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"axis\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_axis ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetAxis ::
-                            (IsHTMLTableCellElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlTableCellElementSetAxis self val
-  = ghcjs_dom_html_table_cell_element_set_axis
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"axis\"]"
-        ghcjs_dom_html_table_cell_element_get_axis ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetAxis ::
-                            (IsHTMLTableCellElement self, FromJSString result) =>
-                              self -> IO result
-htmlTableCellElementGetAxis self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_axis
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_bg_color ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetBgColor ::
-                               (IsHTMLTableCellElement self, ToJSString val) =>
-                                 self -> val -> IO ()
-htmlTableCellElementSetBgColor self val
-  = ghcjs_dom_html_table_cell_element_set_bg_color
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"bgColor\"]"
-        ghcjs_dom_html_table_cell_element_get_bg_color ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetBgColor ::
-                               (IsHTMLTableCellElement self, FromJSString result) =>
-                                 self -> IO result
-htmlTableCellElementGetBgColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_bg_color
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"ch\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_ch ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetCh ::
-                          (IsHTMLTableCellElement self, ToJSString val) =>
-                            self -> val -> IO ()
-htmlTableCellElementSetCh self val
-  = ghcjs_dom_html_table_cell_element_set_ch
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"ch\"]"
-        ghcjs_dom_html_table_cell_element_get_ch ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetCh ::
-                          (IsHTMLTableCellElement self, FromJSString result) =>
-                            self -> IO result
-htmlTableCellElementGetCh self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_ch
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"chOff\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_ch_off ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetChOff ::
-                             (IsHTMLTableCellElement self, ToJSString val) =>
-                               self -> val -> IO ()
-htmlTableCellElementSetChOff self val
-  = ghcjs_dom_html_table_cell_element_set_ch_off
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"chOff\"]"
-        ghcjs_dom_html_table_cell_element_get_ch_off ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetChOff ::
-                             (IsHTMLTableCellElement self, FromJSString result) =>
-                               self -> IO result
-htmlTableCellElementGetChOff self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_ch_off
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"colSpan\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_col_span ::
-        JSRef HTMLTableCellElement -> Int -> IO ()
- 
-htmlTableCellElementSetColSpan ::
-                               (IsHTMLTableCellElement self) => self -> Int -> IO ()
-htmlTableCellElementSetColSpan self val
-  = ghcjs_dom_html_table_cell_element_set_col_span
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"colSpan\"]"
-        ghcjs_dom_html_table_cell_element_get_col_span ::
-        JSRef HTMLTableCellElement -> IO Int
- 
-htmlTableCellElementGetColSpan ::
-                               (IsHTMLTableCellElement self) => self -> IO Int
-htmlTableCellElementGetColSpan self
-  = ghcjs_dom_html_table_cell_element_get_col_span
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
- 
-foreign import javascript unsafe "$1[\"headers\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_headers ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetHeaders ::
-                               (IsHTMLTableCellElement self, ToJSString val) =>
-                                 self -> val -> IO ()
-htmlTableCellElementSetHeaders self val
-  = ghcjs_dom_html_table_cell_element_set_headers
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"headers\"]"
-        ghcjs_dom_html_table_cell_element_get_headers ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetHeaders ::
-                               (IsHTMLTableCellElement self, FromJSString result) =>
-                                 self -> IO result
-htmlTableCellElementGetHeaders self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_headers
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_height ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetHeight ::
-                              (IsHTMLTableCellElement self, ToJSString val) =>
-                                self -> val -> IO ()
-htmlTableCellElementSetHeight self val
-  = ghcjs_dom_html_table_cell_element_set_height
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_table_cell_element_get_height ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetHeight ::
-                              (IsHTMLTableCellElement self, FromJSString result) =>
-                                self -> IO result
-htmlTableCellElementGetHeight self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_height
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"noWrap\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_no_wrap ::
-        JSRef HTMLTableCellElement -> Bool -> IO ()
- 
-htmlTableCellElementSetNoWrap ::
-                              (IsHTMLTableCellElement self) => self -> Bool -> IO ()
-htmlTableCellElementSetNoWrap self val
-  = ghcjs_dom_html_table_cell_element_set_no_wrap
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"noWrap\"] ? 1 : 0)"
-        ghcjs_dom_html_table_cell_element_get_no_wrap ::
-        JSRef HTMLTableCellElement -> IO Bool
- 
-htmlTableCellElementGetNoWrap ::
-                              (IsHTMLTableCellElement self) => self -> IO Bool
-htmlTableCellElementGetNoWrap self
-  = ghcjs_dom_html_table_cell_element_get_no_wrap
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
- 
-foreign import javascript unsafe "$1[\"rowSpan\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_row_span ::
-        JSRef HTMLTableCellElement -> Int -> IO ()
- 
-htmlTableCellElementSetRowSpan ::
-                               (IsHTMLTableCellElement self) => self -> Int -> IO ()
-htmlTableCellElementSetRowSpan self val
-  = ghcjs_dom_html_table_cell_element_set_row_span
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"rowSpan\"]"
-        ghcjs_dom_html_table_cell_element_get_row_span ::
-        JSRef HTMLTableCellElement -> IO Int
- 
-htmlTableCellElementGetRowSpan ::
-                               (IsHTMLTableCellElement self) => self -> IO Int
-htmlTableCellElementGetRowSpan self
-  = ghcjs_dom_html_table_cell_element_get_row_span
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
- 
-foreign import javascript unsafe "$1[\"scope\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_scope ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetScope ::
-                             (IsHTMLTableCellElement self, ToJSString val) =>
-                               self -> val -> IO ()
-htmlTableCellElementSetScope self val
-  = ghcjs_dom_html_table_cell_element_set_scope
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"scope\"]"
-        ghcjs_dom_html_table_cell_element_get_scope ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetScope ::
-                             (IsHTMLTableCellElement self, FromJSString result) =>
-                               self -> IO result
-htmlTableCellElementGetScope self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_scope
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"vAlign\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_v_align ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetVAlign ::
-                              (IsHTMLTableCellElement self, ToJSString val) =>
-                                self -> val -> IO ()
-htmlTableCellElementSetVAlign self val
-  = ghcjs_dom_html_table_cell_element_set_v_align
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"vAlign\"]"
-        ghcjs_dom_html_table_cell_element_get_v_align ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetVAlign ::
-                              (IsHTMLTableCellElement self, FromJSString result) =>
-                                self -> IO result
-htmlTableCellElementGetVAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_v_align
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_table_cell_element_set_width ::
-        JSRef HTMLTableCellElement -> JSString -> IO ()
- 
-htmlTableCellElementSetWidth ::
-                             (IsHTMLTableCellElement self, ToJSString val) =>
-                               self -> val -> IO ()
-htmlTableCellElementSetWidth self val
-  = ghcjs_dom_html_table_cell_element_set_width
-      (unHTMLTableCellElement (toHTMLTableCellElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_table_cell_element_get_width ::
-        JSRef HTMLTableCellElement -> IO JSString
- 
-htmlTableCellElementGetWidth ::
-                             (IsHTMLTableCellElement self, FromJSString result) =>
-                               self -> IO result
-htmlTableCellElementGetWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_cell_element_get_width
-         (unHTMLTableCellElement (toHTMLTableCellElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement
 #else
-module GHCJS.DOM.HTMLTableCellElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLTableCellElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLTableCellElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTableColElement.hs b/src/GHCJS/DOM/HTMLTableColElement.hs
--- a/src/GHCJS/DOM/HTMLTableColElement.hs
+++ b/src/GHCJS/DOM/HTMLTableColElement.hs
@@ -1,185 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTableColElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLTableColElement
-       (ghcjs_dom_html_table_col_element_set_align,
-        htmlTableColElementSetAlign,
-        ghcjs_dom_html_table_col_element_get_align,
-        htmlTableColElementGetAlign,
-        ghcjs_dom_html_table_col_element_set_ch, htmlTableColElementSetCh,
-        ghcjs_dom_html_table_col_element_get_ch, htmlTableColElementGetCh,
-        ghcjs_dom_html_table_col_element_set_ch_off,
-        htmlTableColElementSetChOff,
-        ghcjs_dom_html_table_col_element_get_ch_off,
-        htmlTableColElementGetChOff,
-        ghcjs_dom_html_table_col_element_set_span,
-        htmlTableColElementSetSpan,
-        ghcjs_dom_html_table_col_element_get_span,
-        htmlTableColElementGetSpan,
-        ghcjs_dom_html_table_col_element_set_v_align,
-        htmlTableColElementSetVAlign,
-        ghcjs_dom_html_table_col_element_get_v_align,
-        htmlTableColElementGetVAlign,
-        ghcjs_dom_html_table_col_element_set_width,
-        htmlTableColElementSetWidth,
-        ghcjs_dom_html_table_col_element_get_width,
-        htmlTableColElementGetWidth, HTMLTableColElement,
-        IsHTMLTableColElement, castToHTMLTableColElement,
-        gTypeHTMLTableColElement, toHTMLTableColElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_table_col_element_set_align ::
-        JSRef HTMLTableColElement -> JSString -> IO ()
- 
-htmlTableColElementSetAlign ::
-                            (IsHTMLTableColElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlTableColElementSetAlign self val
-  = ghcjs_dom_html_table_col_element_set_align
-      (unHTMLTableColElement (toHTMLTableColElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_table_col_element_get_align ::
-        JSRef HTMLTableColElement -> IO JSString
- 
-htmlTableColElementGetAlign ::
-                            (IsHTMLTableColElement self, FromJSString result) =>
-                              self -> IO result
-htmlTableColElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_col_element_get_align
-         (unHTMLTableColElement (toHTMLTableColElement self)))
- 
-foreign import javascript unsafe "$1[\"ch\"] = $2;"
-        ghcjs_dom_html_table_col_element_set_ch ::
-        JSRef HTMLTableColElement -> JSString -> IO ()
- 
-htmlTableColElementSetCh ::
-                         (IsHTMLTableColElement self, ToJSString val) =>
-                           self -> val -> IO ()
-htmlTableColElementSetCh self val
-  = ghcjs_dom_html_table_col_element_set_ch
-      (unHTMLTableColElement (toHTMLTableColElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"ch\"]"
-        ghcjs_dom_html_table_col_element_get_ch ::
-        JSRef HTMLTableColElement -> IO JSString
- 
-htmlTableColElementGetCh ::
-                         (IsHTMLTableColElement self, FromJSString result) =>
-                           self -> IO result
-htmlTableColElementGetCh self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_col_element_get_ch
-         (unHTMLTableColElement (toHTMLTableColElement self)))
- 
-foreign import javascript unsafe "$1[\"chOff\"] = $2;"
-        ghcjs_dom_html_table_col_element_set_ch_off ::
-        JSRef HTMLTableColElement -> JSString -> IO ()
- 
-htmlTableColElementSetChOff ::
-                            (IsHTMLTableColElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlTableColElementSetChOff self val
-  = ghcjs_dom_html_table_col_element_set_ch_off
-      (unHTMLTableColElement (toHTMLTableColElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"chOff\"]"
-        ghcjs_dom_html_table_col_element_get_ch_off ::
-        JSRef HTMLTableColElement -> IO JSString
- 
-htmlTableColElementGetChOff ::
-                            (IsHTMLTableColElement self, FromJSString result) =>
-                              self -> IO result
-htmlTableColElementGetChOff self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_col_element_get_ch_off
-         (unHTMLTableColElement (toHTMLTableColElement self)))
- 
-foreign import javascript unsafe "$1[\"span\"] = $2;"
-        ghcjs_dom_html_table_col_element_set_span ::
-        JSRef HTMLTableColElement -> Int -> IO ()
- 
-htmlTableColElementSetSpan ::
-                           (IsHTMLTableColElement self) => self -> Int -> IO ()
-htmlTableColElementSetSpan self val
-  = ghcjs_dom_html_table_col_element_set_span
-      (unHTMLTableColElement (toHTMLTableColElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"span\"]"
-        ghcjs_dom_html_table_col_element_get_span ::
-        JSRef HTMLTableColElement -> IO Int
- 
-htmlTableColElementGetSpan ::
-                           (IsHTMLTableColElement self) => self -> IO Int
-htmlTableColElementGetSpan self
-  = ghcjs_dom_html_table_col_element_get_span
-      (unHTMLTableColElement (toHTMLTableColElement self))
- 
-foreign import javascript unsafe "$1[\"vAlign\"] = $2;"
-        ghcjs_dom_html_table_col_element_set_v_align ::
-        JSRef HTMLTableColElement -> JSString -> IO ()
- 
-htmlTableColElementSetVAlign ::
-                             (IsHTMLTableColElement self, ToJSString val) =>
-                               self -> val -> IO ()
-htmlTableColElementSetVAlign self val
-  = ghcjs_dom_html_table_col_element_set_v_align
-      (unHTMLTableColElement (toHTMLTableColElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"vAlign\"]"
-        ghcjs_dom_html_table_col_element_get_v_align ::
-        JSRef HTMLTableColElement -> IO JSString
- 
-htmlTableColElementGetVAlign ::
-                             (IsHTMLTableColElement self, FromJSString result) =>
-                               self -> IO result
-htmlTableColElementGetVAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_col_element_get_v_align
-         (unHTMLTableColElement (toHTMLTableColElement self)))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_table_col_element_set_width ::
-        JSRef HTMLTableColElement -> JSString -> IO ()
- 
-htmlTableColElementSetWidth ::
-                            (IsHTMLTableColElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlTableColElementSetWidth self val
-  = ghcjs_dom_html_table_col_element_set_width
-      (unHTMLTableColElement (toHTMLTableColElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_table_col_element_get_width ::
-        JSRef HTMLTableColElement -> IO JSString
- 
-htmlTableColElementGetWidth ::
-                            (IsHTMLTableColElement self, FromJSString result) =>
-                              self -> IO result
-htmlTableColElementGetWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_col_element_get_width
-         (unHTMLTableColElement (toHTMLTableColElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLTableColElement
 #else
-module GHCJS.DOM.HTMLTableColElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLTableColElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTableColElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLTableColElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTableElement.hs b/src/GHCJS/DOM/HTMLTableElement.hs
--- a/src/GHCJS/DOM/HTMLTableElement.hs
+++ b/src/GHCJS/DOM/HTMLTableElement.hs
@@ -1,469 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTableElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLTableElement
-       (ghcjs_dom_html_table_element_create_t_head,
-        htmlTableElementCreateTHead,
-        ghcjs_dom_html_table_element_delete_t_head,
-        htmlTableElementDeleteTHead,
-        ghcjs_dom_html_table_element_create_t_foot,
-        htmlTableElementCreateTFoot,
-        ghcjs_dom_html_table_element_delete_t_foot,
-        htmlTableElementDeleteTFoot,
-        ghcjs_dom_html_table_element_create_t_body,
-        htmlTableElementCreateTBody,
-        ghcjs_dom_html_table_element_create_caption,
-        htmlTableElementCreateCaption,
-        ghcjs_dom_html_table_element_delete_caption,
-        htmlTableElementDeleteCaption,
-        ghcjs_dom_html_table_element_insert_row, htmlTableElementInsertRow,
-        ghcjs_dom_html_table_element_delete_row, htmlTableElementDeleteRow,
-        ghcjs_dom_html_table_element_set_caption,
-        htmlTableElementSetCaption,
-        ghcjs_dom_html_table_element_get_caption,
-        htmlTableElementGetCaption,
-        ghcjs_dom_html_table_element_set_t_head, htmlTableElementSetTHead,
-        ghcjs_dom_html_table_element_get_t_head, htmlTableElementGetTHead,
-        ghcjs_dom_html_table_element_set_t_foot, htmlTableElementSetTFoot,
-        ghcjs_dom_html_table_element_get_t_foot, htmlTableElementGetTFoot,
-        ghcjs_dom_html_table_element_get_rows, htmlTableElementGetRows,
-        ghcjs_dom_html_table_element_get_t_bodies,
-        htmlTableElementGetTBodies, ghcjs_dom_html_table_element_set_align,
-        htmlTableElementSetAlign, ghcjs_dom_html_table_element_get_align,
-        htmlTableElementGetAlign,
-        ghcjs_dom_html_table_element_set_bg_color,
-        htmlTableElementSetBgColor,
-        ghcjs_dom_html_table_element_get_bg_color,
-        htmlTableElementGetBgColor,
-        ghcjs_dom_html_table_element_set_border, htmlTableElementSetBorder,
-        ghcjs_dom_html_table_element_get_border, htmlTableElementGetBorder,
-        ghcjs_dom_html_table_element_set_cell_padding,
-        htmlTableElementSetCellPadding,
-        ghcjs_dom_html_table_element_get_cell_padding,
-        htmlTableElementGetCellPadding,
-        ghcjs_dom_html_table_element_set_cell_spacing,
-        htmlTableElementSetCellSpacing,
-        ghcjs_dom_html_table_element_get_cell_spacing,
-        htmlTableElementGetCellSpacing,
-        ghcjs_dom_html_table_element_set_frame, htmlTableElementSetFrame,
-        ghcjs_dom_html_table_element_get_frame, htmlTableElementGetFrame,
-        ghcjs_dom_html_table_element_set_rules, htmlTableElementSetRules,
-        ghcjs_dom_html_table_element_get_rules, htmlTableElementGetRules,
-        ghcjs_dom_html_table_element_set_summary,
-        htmlTableElementSetSummary,
-        ghcjs_dom_html_table_element_get_summary,
-        htmlTableElementGetSummary, ghcjs_dom_html_table_element_set_width,
-        htmlTableElementSetWidth, ghcjs_dom_html_table_element_get_width,
-        htmlTableElementGetWidth, HTMLTableElement, IsHTMLTableElement,
-        castToHTMLTableElement, gTypeHTMLTableElement, toHTMLTableElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"createTHead\"]()"
-        ghcjs_dom_html_table_element_create_t_head ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLElement)
- 
-htmlTableElementCreateTHead ::
-                            (IsHTMLTableElement self) => self -> IO (Maybe HTMLElement)
-htmlTableElementCreateTHead self
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_create_t_head
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"deleteTHead\"]()"
-        ghcjs_dom_html_table_element_delete_t_head ::
-        JSRef HTMLTableElement -> IO ()
- 
-htmlTableElementDeleteTHead ::
-                            (IsHTMLTableElement self) => self -> IO ()
-htmlTableElementDeleteTHead self
-  = ghcjs_dom_html_table_element_delete_t_head
-      (unHTMLTableElement (toHTMLTableElement self))
- 
-foreign import javascript unsafe "$1[\"createTFoot\"]()"
-        ghcjs_dom_html_table_element_create_t_foot ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLElement)
- 
-htmlTableElementCreateTFoot ::
-                            (IsHTMLTableElement self) => self -> IO (Maybe HTMLElement)
-htmlTableElementCreateTFoot self
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_create_t_foot
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"deleteTFoot\"]()"
-        ghcjs_dom_html_table_element_delete_t_foot ::
-        JSRef HTMLTableElement -> IO ()
- 
-htmlTableElementDeleteTFoot ::
-                            (IsHTMLTableElement self) => self -> IO ()
-htmlTableElementDeleteTFoot self
-  = ghcjs_dom_html_table_element_delete_t_foot
-      (unHTMLTableElement (toHTMLTableElement self))
- 
-foreign import javascript unsafe "$1[\"createTBody\"]()"
-        ghcjs_dom_html_table_element_create_t_body ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLElement)
- 
-htmlTableElementCreateTBody ::
-                            (IsHTMLTableElement self) => self -> IO (Maybe HTMLElement)
-htmlTableElementCreateTBody self
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_create_t_body
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"createCaption\"]()"
-        ghcjs_dom_html_table_element_create_caption ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLElement)
- 
-htmlTableElementCreateCaption ::
-                              (IsHTMLTableElement self) => self -> IO (Maybe HTMLElement)
-htmlTableElementCreateCaption self
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_create_caption
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"deleteCaption\"]()"
-        ghcjs_dom_html_table_element_delete_caption ::
-        JSRef HTMLTableElement -> IO ()
- 
-htmlTableElementDeleteCaption ::
-                              (IsHTMLTableElement self) => self -> IO ()
-htmlTableElementDeleteCaption self
-  = ghcjs_dom_html_table_element_delete_caption
-      (unHTMLTableElement (toHTMLTableElement self))
- 
-foreign import javascript unsafe "$1[\"insertRow\"]($2)"
-        ghcjs_dom_html_table_element_insert_row ::
-        JSRef HTMLTableElement -> Int -> IO (JSRef HTMLElement)
- 
-htmlTableElementInsertRow ::
-                          (IsHTMLTableElement self) => self -> Int -> IO (Maybe HTMLElement)
-htmlTableElementInsertRow self index
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_insert_row
-         (unHTMLTableElement (toHTMLTableElement self))
-         index)
- 
-foreign import javascript unsafe "$1[\"deleteRow\"]($2)"
-        ghcjs_dom_html_table_element_delete_row ::
-        JSRef HTMLTableElement -> Int -> IO ()
- 
-htmlTableElementDeleteRow ::
-                          (IsHTMLTableElement self) => self -> Int -> IO ()
-htmlTableElementDeleteRow self index
-  = ghcjs_dom_html_table_element_delete_row
-      (unHTMLTableElement (toHTMLTableElement self))
-      index
- 
-foreign import javascript unsafe "$1[\"caption\"] = $2;"
-        ghcjs_dom_html_table_element_set_caption ::
-        JSRef HTMLTableElement -> JSRef HTMLTableCaptionElement -> IO ()
- 
-htmlTableElementSetCaption ::
-                           (IsHTMLTableElement self, IsHTMLTableCaptionElement val) =>
-                             self -> Maybe val -> IO ()
-htmlTableElementSetCaption self val
-  = ghcjs_dom_html_table_element_set_caption
-      (unHTMLTableElement (toHTMLTableElement self))
-      (maybe jsNull
-         (unHTMLTableCaptionElement . toHTMLTableCaptionElement)
-         val)
- 
-foreign import javascript unsafe "$1[\"caption\"]"
-        ghcjs_dom_html_table_element_get_caption ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLTableCaptionElement)
- 
-htmlTableElementGetCaption ::
-                           (IsHTMLTableElement self) =>
-                             self -> IO (Maybe HTMLTableCaptionElement)
-htmlTableElementGetCaption self
-  = fmap HTMLTableCaptionElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_get_caption
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"tHead\"] = $2;"
-        ghcjs_dom_html_table_element_set_t_head ::
-        JSRef HTMLTableElement -> JSRef HTMLTableSectionElement -> IO ()
- 
-htmlTableElementSetTHead ::
-                         (IsHTMLTableElement self, IsHTMLTableSectionElement val) =>
-                           self -> Maybe val -> IO ()
-htmlTableElementSetTHead self val
-  = ghcjs_dom_html_table_element_set_t_head
-      (unHTMLTableElement (toHTMLTableElement self))
-      (maybe jsNull
-         (unHTMLTableSectionElement . toHTMLTableSectionElement)
-         val)
- 
-foreign import javascript unsafe "$1[\"tHead\"]"
-        ghcjs_dom_html_table_element_get_t_head ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLTableSectionElement)
- 
-htmlTableElementGetTHead ::
-                         (IsHTMLTableElement self) =>
-                           self -> IO (Maybe HTMLTableSectionElement)
-htmlTableElementGetTHead self
-  = fmap HTMLTableSectionElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_get_t_head
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"tFoot\"] = $2;"
-        ghcjs_dom_html_table_element_set_t_foot ::
-        JSRef HTMLTableElement -> JSRef HTMLTableSectionElement -> IO ()
- 
-htmlTableElementSetTFoot ::
-                         (IsHTMLTableElement self, IsHTMLTableSectionElement val) =>
-                           self -> Maybe val -> IO ()
-htmlTableElementSetTFoot self val
-  = ghcjs_dom_html_table_element_set_t_foot
-      (unHTMLTableElement (toHTMLTableElement self))
-      (maybe jsNull
-         (unHTMLTableSectionElement . toHTMLTableSectionElement)
-         val)
- 
-foreign import javascript unsafe "$1[\"tFoot\"]"
-        ghcjs_dom_html_table_element_get_t_foot ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLTableSectionElement)
- 
-htmlTableElementGetTFoot ::
-                         (IsHTMLTableElement self) =>
-                           self -> IO (Maybe HTMLTableSectionElement)
-htmlTableElementGetTFoot self
-  = fmap HTMLTableSectionElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_get_t_foot
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"rows\"]"
-        ghcjs_dom_html_table_element_get_rows ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLCollection)
- 
-htmlTableElementGetRows ::
-                        (IsHTMLTableElement self) => self -> IO (Maybe HTMLCollection)
-htmlTableElementGetRows self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_get_rows
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"tBodies\"]"
-        ghcjs_dom_html_table_element_get_t_bodies ::
-        JSRef HTMLTableElement -> IO (JSRef HTMLCollection)
- 
-htmlTableElementGetTBodies ::
-                           (IsHTMLTableElement self) => self -> IO (Maybe HTMLCollection)
-htmlTableElementGetTBodies self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_table_element_get_t_bodies
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_table_element_set_align ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetAlign ::
-                         (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetAlign self val
-  = ghcjs_dom_html_table_element_set_align
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_table_element_get_align ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetAlign ::
-                         (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_align
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
-        ghcjs_dom_html_table_element_set_bg_color ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetBgColor ::
-                           (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetBgColor self val
-  = ghcjs_dom_html_table_element_set_bg_color
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"bgColor\"]"
-        ghcjs_dom_html_table_element_get_bg_color ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetBgColor ::
-                           (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetBgColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_bg_color
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"border\"] = $2;"
-        ghcjs_dom_html_table_element_set_border ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetBorder ::
-                          (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetBorder self val
-  = ghcjs_dom_html_table_element_set_border
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"border\"]"
-        ghcjs_dom_html_table_element_get_border ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetBorder ::
-                          (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetBorder self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_border
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"cellPadding\"] = $2;"
-        ghcjs_dom_html_table_element_set_cell_padding ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetCellPadding ::
-                               (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetCellPadding self val
-  = ghcjs_dom_html_table_element_set_cell_padding
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cellPadding\"]"
-        ghcjs_dom_html_table_element_get_cell_padding ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetCellPadding ::
-                               (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetCellPadding self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_cell_padding
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"cellSpacing\"] = $2;"
-        ghcjs_dom_html_table_element_set_cell_spacing ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetCellSpacing ::
-                               (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetCellSpacing self val
-  = ghcjs_dom_html_table_element_set_cell_spacing
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"cellSpacing\"]"
-        ghcjs_dom_html_table_element_get_cell_spacing ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetCellSpacing ::
-                               (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetCellSpacing self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_cell_spacing
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"frame\"] = $2;"
-        ghcjs_dom_html_table_element_set_frame ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetFrame ::
-                         (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetFrame self val
-  = ghcjs_dom_html_table_element_set_frame
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"frame\"]"
-        ghcjs_dom_html_table_element_get_frame ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetFrame ::
-                         (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetFrame self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_frame
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"rules\"] = $2;"
-        ghcjs_dom_html_table_element_set_rules ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetRules ::
-                         (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetRules self val
-  = ghcjs_dom_html_table_element_set_rules
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"rules\"]"
-        ghcjs_dom_html_table_element_get_rules ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetRules ::
-                         (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetRules self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_rules
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"summary\"] = $2;"
-        ghcjs_dom_html_table_element_set_summary ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetSummary ::
-                           (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetSummary self val
-  = ghcjs_dom_html_table_element_set_summary
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"summary\"]"
-        ghcjs_dom_html_table_element_get_summary ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetSummary ::
-                           (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetSummary self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_summary
-         (unHTMLTableElement (toHTMLTableElement self)))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_table_element_set_width ::
-        JSRef HTMLTableElement -> JSString -> IO ()
- 
-htmlTableElementSetWidth ::
-                         (IsHTMLTableElement self, ToJSString val) => self -> val -> IO ()
-htmlTableElementSetWidth self val
-  = ghcjs_dom_html_table_element_set_width
-      (unHTMLTableElement (toHTMLTableElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_table_element_get_width ::
-        JSRef HTMLTableElement -> IO JSString
- 
-htmlTableElementGetWidth ::
-                         (IsHTMLTableElement self, FromJSString result) => self -> IO result
-htmlTableElementGetWidth self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_element_get_width
-         (unHTMLTableElement (toHTMLTableElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLTableElement
 #else
-module GHCJS.DOM.HTMLTableElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLTableElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTableElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLTableElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTableRowElement.hs b/src/GHCJS/DOM/HTMLTableRowElement.hs
--- a/src/GHCJS/DOM/HTMLTableRowElement.hs
+++ b/src/GHCJS/DOM/HTMLTableRowElement.hs
@@ -1,225 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTableRowElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLTableRowElement
-       (ghcjs_dom_html_table_row_element_insert_cell,
-        htmlTableRowElementInsertCell,
-        ghcjs_dom_html_table_row_element_delete_cell,
-        htmlTableRowElementDeleteCell,
-        ghcjs_dom_html_table_row_element_get_row_index,
-        htmlTableRowElementGetRowIndex,
-        ghcjs_dom_html_table_row_element_get_section_row_index,
-        htmlTableRowElementGetSectionRowIndex,
-        ghcjs_dom_html_table_row_element_get_cells,
-        htmlTableRowElementGetCells,
-        ghcjs_dom_html_table_row_element_set_align,
-        htmlTableRowElementSetAlign,
-        ghcjs_dom_html_table_row_element_get_align,
-        htmlTableRowElementGetAlign,
-        ghcjs_dom_html_table_row_element_set_bg_color,
-        htmlTableRowElementSetBgColor,
-        ghcjs_dom_html_table_row_element_get_bg_color,
-        htmlTableRowElementGetBgColor,
-        ghcjs_dom_html_table_row_element_set_ch, htmlTableRowElementSetCh,
-        ghcjs_dom_html_table_row_element_get_ch, htmlTableRowElementGetCh,
-        ghcjs_dom_html_table_row_element_set_ch_off,
-        htmlTableRowElementSetChOff,
-        ghcjs_dom_html_table_row_element_get_ch_off,
-        htmlTableRowElementGetChOff,
-        ghcjs_dom_html_table_row_element_set_v_align,
-        htmlTableRowElementSetVAlign,
-        ghcjs_dom_html_table_row_element_get_v_align,
-        htmlTableRowElementGetVAlign, HTMLTableRowElement,
-        IsHTMLTableRowElement, castToHTMLTableRowElement,
-        gTypeHTMLTableRowElement, toHTMLTableRowElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"insertCell\"]($2)"
-        ghcjs_dom_html_table_row_element_insert_cell ::
-        JSRef HTMLTableRowElement -> Int -> IO (JSRef HTMLElement)
- 
-htmlTableRowElementInsertCell ::
-                              (IsHTMLTableRowElement self) =>
-                                self -> Int -> IO (Maybe HTMLElement)
-htmlTableRowElementInsertCell self index
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_row_element_insert_cell
-         (unHTMLTableRowElement (toHTMLTableRowElement self))
-         index)
- 
-foreign import javascript unsafe "$1[\"deleteCell\"]($2)"
-        ghcjs_dom_html_table_row_element_delete_cell ::
-        JSRef HTMLTableRowElement -> Int -> IO ()
- 
-htmlTableRowElementDeleteCell ::
-                              (IsHTMLTableRowElement self) => self -> Int -> IO ()
-htmlTableRowElementDeleteCell self index
-  = ghcjs_dom_html_table_row_element_delete_cell
-      (unHTMLTableRowElement (toHTMLTableRowElement self))
-      index
- 
-foreign import javascript unsafe "$1[\"rowIndex\"]"
-        ghcjs_dom_html_table_row_element_get_row_index ::
-        JSRef HTMLTableRowElement -> IO Int
- 
-htmlTableRowElementGetRowIndex ::
-                               (IsHTMLTableRowElement self) => self -> IO Int
-htmlTableRowElementGetRowIndex self
-  = ghcjs_dom_html_table_row_element_get_row_index
-      (unHTMLTableRowElement (toHTMLTableRowElement self))
- 
-foreign import javascript unsafe "$1[\"sectionRowIndex\"]"
-        ghcjs_dom_html_table_row_element_get_section_row_index ::
-        JSRef HTMLTableRowElement -> IO Int
- 
-htmlTableRowElementGetSectionRowIndex ::
-                                      (IsHTMLTableRowElement self) => self -> IO Int
-htmlTableRowElementGetSectionRowIndex self
-  = ghcjs_dom_html_table_row_element_get_section_row_index
-      (unHTMLTableRowElement (toHTMLTableRowElement self))
- 
-foreign import javascript unsafe "$1[\"cells\"]"
-        ghcjs_dom_html_table_row_element_get_cells ::
-        JSRef HTMLTableRowElement -> IO (JSRef HTMLCollection)
- 
-htmlTableRowElementGetCells ::
-                            (IsHTMLTableRowElement self) => self -> IO (Maybe HTMLCollection)
-htmlTableRowElementGetCells self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_table_row_element_get_cells
-         (unHTMLTableRowElement (toHTMLTableRowElement self)))
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_table_row_element_set_align ::
-        JSRef HTMLTableRowElement -> JSString -> IO ()
- 
-htmlTableRowElementSetAlign ::
-                            (IsHTMLTableRowElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlTableRowElementSetAlign self val
-  = ghcjs_dom_html_table_row_element_set_align
-      (unHTMLTableRowElement (toHTMLTableRowElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_table_row_element_get_align ::
-        JSRef HTMLTableRowElement -> IO JSString
- 
-htmlTableRowElementGetAlign ::
-                            (IsHTMLTableRowElement self, FromJSString result) =>
-                              self -> IO result
-htmlTableRowElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_row_element_get_align
-         (unHTMLTableRowElement (toHTMLTableRowElement self)))
- 
-foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
-        ghcjs_dom_html_table_row_element_set_bg_color ::
-        JSRef HTMLTableRowElement -> JSString -> IO ()
- 
-htmlTableRowElementSetBgColor ::
-                              (IsHTMLTableRowElement self, ToJSString val) =>
-                                self -> val -> IO ()
-htmlTableRowElementSetBgColor self val
-  = ghcjs_dom_html_table_row_element_set_bg_color
-      (unHTMLTableRowElement (toHTMLTableRowElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"bgColor\"]"
-        ghcjs_dom_html_table_row_element_get_bg_color ::
-        JSRef HTMLTableRowElement -> IO JSString
- 
-htmlTableRowElementGetBgColor ::
-                              (IsHTMLTableRowElement self, FromJSString result) =>
-                                self -> IO result
-htmlTableRowElementGetBgColor self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_row_element_get_bg_color
-         (unHTMLTableRowElement (toHTMLTableRowElement self)))
- 
-foreign import javascript unsafe "$1[\"ch\"] = $2;"
-        ghcjs_dom_html_table_row_element_set_ch ::
-        JSRef HTMLTableRowElement -> JSString -> IO ()
- 
-htmlTableRowElementSetCh ::
-                         (IsHTMLTableRowElement self, ToJSString val) =>
-                           self -> val -> IO ()
-htmlTableRowElementSetCh self val
-  = ghcjs_dom_html_table_row_element_set_ch
-      (unHTMLTableRowElement (toHTMLTableRowElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"ch\"]"
-        ghcjs_dom_html_table_row_element_get_ch ::
-        JSRef HTMLTableRowElement -> IO JSString
- 
-htmlTableRowElementGetCh ::
-                         (IsHTMLTableRowElement self, FromJSString result) =>
-                           self -> IO result
-htmlTableRowElementGetCh self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_row_element_get_ch
-         (unHTMLTableRowElement (toHTMLTableRowElement self)))
- 
-foreign import javascript unsafe "$1[\"chOff\"] = $2;"
-        ghcjs_dom_html_table_row_element_set_ch_off ::
-        JSRef HTMLTableRowElement -> JSString -> IO ()
- 
-htmlTableRowElementSetChOff ::
-                            (IsHTMLTableRowElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlTableRowElementSetChOff self val
-  = ghcjs_dom_html_table_row_element_set_ch_off
-      (unHTMLTableRowElement (toHTMLTableRowElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"chOff\"]"
-        ghcjs_dom_html_table_row_element_get_ch_off ::
-        JSRef HTMLTableRowElement -> IO JSString
- 
-htmlTableRowElementGetChOff ::
-                            (IsHTMLTableRowElement self, FromJSString result) =>
-                              self -> IO result
-htmlTableRowElementGetChOff self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_row_element_get_ch_off
-         (unHTMLTableRowElement (toHTMLTableRowElement self)))
- 
-foreign import javascript unsafe "$1[\"vAlign\"] = $2;"
-        ghcjs_dom_html_table_row_element_set_v_align ::
-        JSRef HTMLTableRowElement -> JSString -> IO ()
- 
-htmlTableRowElementSetVAlign ::
-                             (IsHTMLTableRowElement self, ToJSString val) =>
-                               self -> val -> IO ()
-htmlTableRowElementSetVAlign self val
-  = ghcjs_dom_html_table_row_element_set_v_align
-      (unHTMLTableRowElement (toHTMLTableRowElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"vAlign\"]"
-        ghcjs_dom_html_table_row_element_get_v_align ::
-        JSRef HTMLTableRowElement -> IO JSString
- 
-htmlTableRowElementGetVAlign ::
-                             (IsHTMLTableRowElement self, FromJSString result) =>
-                               self -> IO result
-htmlTableRowElementGetVAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_row_element_get_v_align
-         (unHTMLTableRowElement (toHTMLTableRowElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement
 #else
-module GHCJS.DOM.HTMLTableRowElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLTableRowElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLTableRowElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTableSectionElement.hs b/src/GHCJS/DOM/HTMLTableSectionElement.hs
--- a/src/GHCJS/DOM/HTMLTableSectionElement.hs
+++ b/src/GHCJS/DOM/HTMLTableSectionElement.hs
@@ -1,176 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTableSectionElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLTableSectionElement
-       (ghcjs_dom_html_table_section_element_insert_row,
-        htmlTableSectionElementInsertRow,
-        ghcjs_dom_html_table_section_element_delete_row,
-        htmlTableSectionElementDeleteRow,
-        ghcjs_dom_html_table_section_element_set_align,
-        htmlTableSectionElementSetAlign,
-        ghcjs_dom_html_table_section_element_get_align,
-        htmlTableSectionElementGetAlign,
-        ghcjs_dom_html_table_section_element_set_ch,
-        htmlTableSectionElementSetCh,
-        ghcjs_dom_html_table_section_element_get_ch,
-        htmlTableSectionElementGetCh,
-        ghcjs_dom_html_table_section_element_set_ch_off,
-        htmlTableSectionElementSetChOff,
-        ghcjs_dom_html_table_section_element_get_ch_off,
-        htmlTableSectionElementGetChOff,
-        ghcjs_dom_html_table_section_element_set_v_align,
-        htmlTableSectionElementSetVAlign,
-        ghcjs_dom_html_table_section_element_get_v_align,
-        htmlTableSectionElementGetVAlign,
-        ghcjs_dom_html_table_section_element_get_rows,
-        htmlTableSectionElementGetRows, HTMLTableSectionElement,
-        IsHTMLTableSectionElement, castToHTMLTableSectionElement,
-        gTypeHTMLTableSectionElement, toHTMLTableSectionElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"insertRow\"]($2)"
-        ghcjs_dom_html_table_section_element_insert_row ::
-        JSRef HTMLTableSectionElement -> Int -> IO (JSRef HTMLElement)
- 
-htmlTableSectionElementInsertRow ::
-                                 (IsHTMLTableSectionElement self) =>
-                                   self -> Int -> IO (Maybe HTMLElement)
-htmlTableSectionElementInsertRow self index
-  = fmap HTMLElement . maybeJSNull <$>
-      (ghcjs_dom_html_table_section_element_insert_row
-         (unHTMLTableSectionElement (toHTMLTableSectionElement self))
-         index)
- 
-foreign import javascript unsafe "$1[\"deleteRow\"]($2)"
-        ghcjs_dom_html_table_section_element_delete_row ::
-        JSRef HTMLTableSectionElement -> Int -> IO ()
- 
-htmlTableSectionElementDeleteRow ::
-                                 (IsHTMLTableSectionElement self) => self -> Int -> IO ()
-htmlTableSectionElementDeleteRow self index
-  = ghcjs_dom_html_table_section_element_delete_row
-      (unHTMLTableSectionElement (toHTMLTableSectionElement self))
-      index
- 
-foreign import javascript unsafe "$1[\"align\"] = $2;"
-        ghcjs_dom_html_table_section_element_set_align ::
-        JSRef HTMLTableSectionElement -> JSString -> IO ()
- 
-htmlTableSectionElementSetAlign ::
-                                (IsHTMLTableSectionElement self, ToJSString val) =>
-                                  self -> val -> IO ()
-htmlTableSectionElementSetAlign self val
-  = ghcjs_dom_html_table_section_element_set_align
-      (unHTMLTableSectionElement (toHTMLTableSectionElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"align\"]"
-        ghcjs_dom_html_table_section_element_get_align ::
-        JSRef HTMLTableSectionElement -> IO JSString
- 
-htmlTableSectionElementGetAlign ::
-                                (IsHTMLTableSectionElement self, FromJSString result) =>
-                                  self -> IO result
-htmlTableSectionElementGetAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_section_element_get_align
-         (unHTMLTableSectionElement (toHTMLTableSectionElement self)))
- 
-foreign import javascript unsafe "$1[\"ch\"] = $2;"
-        ghcjs_dom_html_table_section_element_set_ch ::
-        JSRef HTMLTableSectionElement -> JSString -> IO ()
- 
-htmlTableSectionElementSetCh ::
-                             (IsHTMLTableSectionElement self, ToJSString val) =>
-                               self -> val -> IO ()
-htmlTableSectionElementSetCh self val
-  = ghcjs_dom_html_table_section_element_set_ch
-      (unHTMLTableSectionElement (toHTMLTableSectionElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"ch\"]"
-        ghcjs_dom_html_table_section_element_get_ch ::
-        JSRef HTMLTableSectionElement -> IO JSString
- 
-htmlTableSectionElementGetCh ::
-                             (IsHTMLTableSectionElement self, FromJSString result) =>
-                               self -> IO result
-htmlTableSectionElementGetCh self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_section_element_get_ch
-         (unHTMLTableSectionElement (toHTMLTableSectionElement self)))
- 
-foreign import javascript unsafe "$1[\"chOff\"] = $2;"
-        ghcjs_dom_html_table_section_element_set_ch_off ::
-        JSRef HTMLTableSectionElement -> JSString -> IO ()
- 
-htmlTableSectionElementSetChOff ::
-                                (IsHTMLTableSectionElement self, ToJSString val) =>
-                                  self -> val -> IO ()
-htmlTableSectionElementSetChOff self val
-  = ghcjs_dom_html_table_section_element_set_ch_off
-      (unHTMLTableSectionElement (toHTMLTableSectionElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"chOff\"]"
-        ghcjs_dom_html_table_section_element_get_ch_off ::
-        JSRef HTMLTableSectionElement -> IO JSString
- 
-htmlTableSectionElementGetChOff ::
-                                (IsHTMLTableSectionElement self, FromJSString result) =>
-                                  self -> IO result
-htmlTableSectionElementGetChOff self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_section_element_get_ch_off
-         (unHTMLTableSectionElement (toHTMLTableSectionElement self)))
- 
-foreign import javascript unsafe "$1[\"vAlign\"] = $2;"
-        ghcjs_dom_html_table_section_element_set_v_align ::
-        JSRef HTMLTableSectionElement -> JSString -> IO ()
- 
-htmlTableSectionElementSetVAlign ::
-                                 (IsHTMLTableSectionElement self, ToJSString val) =>
-                                   self -> val -> IO ()
-htmlTableSectionElementSetVAlign self val
-  = ghcjs_dom_html_table_section_element_set_v_align
-      (unHTMLTableSectionElement (toHTMLTableSectionElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"vAlign\"]"
-        ghcjs_dom_html_table_section_element_get_v_align ::
-        JSRef HTMLTableSectionElement -> IO JSString
- 
-htmlTableSectionElementGetVAlign ::
-                                 (IsHTMLTableSectionElement self, FromJSString result) =>
-                                   self -> IO result
-htmlTableSectionElementGetVAlign self
-  = fromJSString <$>
-      (ghcjs_dom_html_table_section_element_get_v_align
-         (unHTMLTableSectionElement (toHTMLTableSectionElement self)))
- 
-foreign import javascript unsafe "$1[\"rows\"]"
-        ghcjs_dom_html_table_section_element_get_rows ::
-        JSRef HTMLTableSectionElement -> IO (JSRef HTMLCollection)
- 
-htmlTableSectionElementGetRows ::
-                               (IsHTMLTableSectionElement self) =>
-                                 self -> IO (Maybe HTMLCollection)
-htmlTableSectionElementGetRows self
-  = fmap HTMLCollection . maybeJSNull <$>
-      (ghcjs_dom_html_table_section_element_get_rows
-         (unHTMLTableSectionElement (toHTMLTableSectionElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement
 #else
-module GHCJS.DOM.HTMLTableSectionElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLTableSectionElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLTableSectionElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTemplateElement.hs b/src/GHCJS/DOM/HTMLTemplateElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLTemplateElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTemplateElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLTextAreaElement.hs b/src/GHCJS/DOM/HTMLTextAreaElement.hs
--- a/src/GHCJS/DOM/HTMLTextAreaElement.hs
+++ b/src/GHCJS/DOM/HTMLTextAreaElement.hs
@@ -1,663 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTextAreaElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLTextAreaElement
-       (ghcjs_dom_html_text_area_element_check_validity,
-        htmlTextAreaElementCheckValidity,
-        ghcjs_dom_html_text_area_element_set_custom_validity,
-        htmlTextAreaElementSetCustomValidity,
-        ghcjs_dom_html_text_area_element_select, htmlTextAreaElementSelect,
-        ghcjs_dom_html_text_area_element_set_range_text,
-        htmlTextAreaElementSetRangeText,
-        ghcjs_dom_html_text_area_element_set_range_text4,
-        htmlTextAreaElementSetRangeText4,
-        ghcjs_dom_html_text_area_element_set_selection_range,
-        htmlTextAreaElementSetSelectionRange,
-        ghcjs_dom_html_text_area_element_set_autofocus,
-        htmlTextAreaElementSetAutofocus,
-        ghcjs_dom_html_text_area_element_get_autofocus,
-        htmlTextAreaElementGetAutofocus,
-        ghcjs_dom_html_text_area_element_set_cols,
-        htmlTextAreaElementSetCols,
-        ghcjs_dom_html_text_area_element_get_cols,
-        htmlTextAreaElementGetCols,
-        ghcjs_dom_html_text_area_element_set_dir_name,
-        htmlTextAreaElementSetDirName,
-        ghcjs_dom_html_text_area_element_get_dir_name,
-        htmlTextAreaElementGetDirName,
-        ghcjs_dom_html_text_area_element_set_disabled,
-        htmlTextAreaElementSetDisabled,
-        ghcjs_dom_html_text_area_element_get_disabled,
-        htmlTextAreaElementGetDisabled,
-        ghcjs_dom_html_text_area_element_get_form,
-        htmlTextAreaElementGetForm,
-        ghcjs_dom_html_text_area_element_set_max_length,
-        htmlTextAreaElementSetMaxLength,
-        ghcjs_dom_html_text_area_element_get_max_length,
-        htmlTextAreaElementGetMaxLength,
-        ghcjs_dom_html_text_area_element_set_name,
-        htmlTextAreaElementSetName,
-        ghcjs_dom_html_text_area_element_get_name,
-        htmlTextAreaElementGetName,
-        ghcjs_dom_html_text_area_element_set_placeholder,
-        htmlTextAreaElementSetPlaceholder,
-        ghcjs_dom_html_text_area_element_get_placeholder,
-        htmlTextAreaElementGetPlaceholder,
-        ghcjs_dom_html_text_area_element_set_read_only,
-        htmlTextAreaElementSetReadOnly,
-        ghcjs_dom_html_text_area_element_get_read_only,
-        htmlTextAreaElementGetReadOnly,
-        ghcjs_dom_html_text_area_element_set_required,
-        htmlTextAreaElementSetRequired,
-        ghcjs_dom_html_text_area_element_get_required,
-        htmlTextAreaElementGetRequired,
-        ghcjs_dom_html_text_area_element_set_rows,
-        htmlTextAreaElementSetRows,
-        ghcjs_dom_html_text_area_element_get_rows,
-        htmlTextAreaElementGetRows,
-        ghcjs_dom_html_text_area_element_set_wrap,
-        htmlTextAreaElementSetWrap,
-        ghcjs_dom_html_text_area_element_get_wrap,
-        htmlTextAreaElementGetWrap,
-        ghcjs_dom_html_text_area_element_set_default_value,
-        htmlTextAreaElementSetDefaultValue,
-        ghcjs_dom_html_text_area_element_get_default_value,
-        htmlTextAreaElementGetDefaultValue,
-        ghcjs_dom_html_text_area_element_set_value,
-        htmlTextAreaElementSetValue,
-        ghcjs_dom_html_text_area_element_get_value,
-        htmlTextAreaElementGetValue,
-        ghcjs_dom_html_text_area_element_get_text_length,
-        htmlTextAreaElementGetTextLength,
-        ghcjs_dom_html_text_area_element_get_will_validate,
-        htmlTextAreaElementGetWillValidate,
-        ghcjs_dom_html_text_area_element_get_validity,
-        htmlTextAreaElementGetValidity,
-        ghcjs_dom_html_text_area_element_get_validation_message,
-        htmlTextAreaElementGetValidationMessage,
-        ghcjs_dom_html_text_area_element_get_labels,
-        htmlTextAreaElementGetLabels,
-        ghcjs_dom_html_text_area_element_set_selection_start,
-        htmlTextAreaElementSetSelectionStart,
-        ghcjs_dom_html_text_area_element_get_selection_start,
-        htmlTextAreaElementGetSelectionStart,
-        ghcjs_dom_html_text_area_element_set_selection_end,
-        htmlTextAreaElementSetSelectionEnd,
-        ghcjs_dom_html_text_area_element_get_selection_end,
-        htmlTextAreaElementGetSelectionEnd,
-        ghcjs_dom_html_text_area_element_set_selection_direction,
-        htmlTextAreaElementSetSelectionDirection,
-        ghcjs_dom_html_text_area_element_get_selection_direction,
-        htmlTextAreaElementGetSelectionDirection,
-        ghcjs_dom_html_text_area_element_set_autocorrect,
-        htmlTextAreaElementSetAutocorrect,
-        ghcjs_dom_html_text_area_element_get_autocorrect,
-        htmlTextAreaElementGetAutocorrect,
-        ghcjs_dom_html_text_area_element_set_autocapitalize,
-        htmlTextAreaElementSetAutocapitalize,
-        ghcjs_dom_html_text_area_element_get_autocapitalize,
-        htmlTextAreaElementGetAutocapitalize, HTMLTextAreaElement,
-        IsHTMLTextAreaElement, castToHTMLTextAreaElement,
-        gTypeHTMLTextAreaElement, toHTMLTextAreaElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"checkValidity\"]() ? 1 : 0)"
-        ghcjs_dom_html_text_area_element_check_validity ::
-        JSRef HTMLTextAreaElement -> IO Bool
- 
-htmlTextAreaElementCheckValidity ::
-                                 (IsHTMLTextAreaElement self) => self -> IO Bool
-htmlTextAreaElementCheckValidity self
-  = ghcjs_dom_html_text_area_element_check_validity
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
-        ghcjs_dom_html_text_area_element_set_custom_validity ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetCustomValidity ::
-                                     (IsHTMLTextAreaElement self, ToJSString error) =>
-                                       self -> error -> IO ()
-htmlTextAreaElementSetCustomValidity self error
-  = ghcjs_dom_html_text_area_element_set_custom_validity
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString error)
- 
-foreign import javascript unsafe "$1[\"select\"]()"
-        ghcjs_dom_html_text_area_element_select ::
-        JSRef HTMLTextAreaElement -> IO ()
- 
-htmlTextAreaElementSelect ::
-                          (IsHTMLTextAreaElement self) => self -> IO ()
-htmlTextAreaElementSelect self
-  = ghcjs_dom_html_text_area_element_select
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"setRangeText\"]($2)"
-        ghcjs_dom_html_text_area_element_set_range_text ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetRangeText ::
-                                (IsHTMLTextAreaElement self, ToJSString replacement) =>
-                                  self -> replacement -> IO ()
-htmlTextAreaElementSetRangeText self replacement
-  = ghcjs_dom_html_text_area_element_set_range_text
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString replacement)
- 
-foreign import javascript unsafe
-        "$1[\"setRangeText\"]($2, $3, $4,\n$5)"
-        ghcjs_dom_html_text_area_element_set_range_text4 ::
-        JSRef HTMLTextAreaElement ->
-          JSString -> Word -> Word -> JSString -> IO ()
- 
-htmlTextAreaElementSetRangeText4 ::
-                                 (IsHTMLTextAreaElement self, ToJSString replacement,
-                                  ToJSString selectionMode) =>
-                                   self -> replacement -> Word -> Word -> selectionMode -> IO ()
-htmlTextAreaElementSetRangeText4 self replacement start end
-  selectionMode
-  = ghcjs_dom_html_text_area_element_set_range_text4
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString replacement)
-      start
-      end
-      (toJSString selectionMode)
- 
-foreign import javascript unsafe
-        "$1[\"setSelectionRange\"]($2, $3,\n$4)"
-        ghcjs_dom_html_text_area_element_set_selection_range ::
-        JSRef HTMLTextAreaElement -> Int -> Int -> JSString -> IO ()
- 
-htmlTextAreaElementSetSelectionRange ::
-                                     (IsHTMLTextAreaElement self, ToJSString direction) =>
-                                       self -> Int -> Int -> direction -> IO ()
-htmlTextAreaElementSetSelectionRange self start end direction
-  = ghcjs_dom_html_text_area_element_set_selection_range
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      start
-      end
-      (toJSString direction)
- 
-foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_autofocus ::
-        JSRef HTMLTextAreaElement -> Bool -> IO ()
- 
-htmlTextAreaElementSetAutofocus ::
-                                (IsHTMLTextAreaElement self) => self -> Bool -> IO ()
-htmlTextAreaElementSetAutofocus self val
-  = ghcjs_dom_html_text_area_element_set_autofocus
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
-        ghcjs_dom_html_text_area_element_get_autofocus ::
-        JSRef HTMLTextAreaElement -> IO Bool
- 
-htmlTextAreaElementGetAutofocus ::
-                                (IsHTMLTextAreaElement self) => self -> IO Bool
-htmlTextAreaElementGetAutofocus self
-  = ghcjs_dom_html_text_area_element_get_autofocus
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"cols\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_cols ::
-        JSRef HTMLTextAreaElement -> Int -> IO ()
- 
-htmlTextAreaElementSetCols ::
-                           (IsHTMLTextAreaElement self) => self -> Int -> IO ()
-htmlTextAreaElementSetCols self val
-  = ghcjs_dom_html_text_area_element_set_cols
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"cols\"]"
-        ghcjs_dom_html_text_area_element_get_cols ::
-        JSRef HTMLTextAreaElement -> IO Int
- 
-htmlTextAreaElementGetCols ::
-                           (IsHTMLTextAreaElement self) => self -> IO Int
-htmlTextAreaElementGetCols self
-  = ghcjs_dom_html_text_area_element_get_cols
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"dirName\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_dir_name ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetDirName ::
-                              (IsHTMLTextAreaElement self, ToJSString val) =>
-                                self -> val -> IO ()
-htmlTextAreaElementSetDirName self val
-  = ghcjs_dom_html_text_area_element_set_dir_name
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"dirName\"]"
-        ghcjs_dom_html_text_area_element_get_dir_name ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetDirName ::
-                              (IsHTMLTextAreaElement self, FromJSString result) =>
-                                self -> IO result
-htmlTextAreaElementGetDirName self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_dir_name
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_disabled ::
-        JSRef HTMLTextAreaElement -> Bool -> IO ()
- 
-htmlTextAreaElementSetDisabled ::
-                               (IsHTMLTextAreaElement self) => self -> Bool -> IO ()
-htmlTextAreaElementSetDisabled self val
-  = ghcjs_dom_html_text_area_element_set_disabled
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_html_text_area_element_get_disabled ::
-        JSRef HTMLTextAreaElement -> IO Bool
- 
-htmlTextAreaElementGetDisabled ::
-                               (IsHTMLTextAreaElement self) => self -> IO Bool
-htmlTextAreaElementGetDisabled self
-  = ghcjs_dom_html_text_area_element_get_disabled
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"form\"]"
-        ghcjs_dom_html_text_area_element_get_form ::
-        JSRef HTMLTextAreaElement -> IO (JSRef HTMLFormElement)
- 
-htmlTextAreaElementGetForm ::
-                           (IsHTMLTextAreaElement self) => self -> IO (Maybe HTMLFormElement)
-htmlTextAreaElementGetForm self
-  = fmap HTMLFormElement . maybeJSNull <$>
-      (ghcjs_dom_html_text_area_element_get_form
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"maxLength\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_max_length ::
-        JSRef HTMLTextAreaElement -> Int -> IO ()
- 
-htmlTextAreaElementSetMaxLength ::
-                                (IsHTMLTextAreaElement self) => self -> Int -> IO ()
-htmlTextAreaElementSetMaxLength self val
-  = ghcjs_dom_html_text_area_element_set_max_length
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"maxLength\"]"
-        ghcjs_dom_html_text_area_element_get_max_length ::
-        JSRef HTMLTextAreaElement -> IO Int
- 
-htmlTextAreaElementGetMaxLength ::
-                                (IsHTMLTextAreaElement self) => self -> IO Int
-htmlTextAreaElementGetMaxLength self
-  = ghcjs_dom_html_text_area_element_get_max_length
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"name\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_name ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetName ::
-                           (IsHTMLTextAreaElement self, ToJSString val) =>
-                             self -> val -> IO ()
-htmlTextAreaElementSetName self val
-  = ghcjs_dom_html_text_area_element_set_name
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_html_text_area_element_get_name ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetName ::
-                           (IsHTMLTextAreaElement self, FromJSString result) =>
-                             self -> IO result
-htmlTextAreaElementGetName self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_name
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"placeholder\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_placeholder ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetPlaceholder ::
-                                  (IsHTMLTextAreaElement self, ToJSString val) =>
-                                    self -> val -> IO ()
-htmlTextAreaElementSetPlaceholder self val
-  = ghcjs_dom_html_text_area_element_set_placeholder
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"placeholder\"]"
-        ghcjs_dom_html_text_area_element_get_placeholder ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetPlaceholder ::
-                                  (IsHTMLTextAreaElement self, FromJSString result) =>
-                                    self -> IO result
-htmlTextAreaElementGetPlaceholder self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_placeholder
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"readOnly\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_read_only ::
-        JSRef HTMLTextAreaElement -> Bool -> IO ()
- 
-htmlTextAreaElementSetReadOnly ::
-                               (IsHTMLTextAreaElement self) => self -> Bool -> IO ()
-htmlTextAreaElementSetReadOnly self val
-  = ghcjs_dom_html_text_area_element_set_read_only
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"readOnly\"] ? 1 : 0)"
-        ghcjs_dom_html_text_area_element_get_read_only ::
-        JSRef HTMLTextAreaElement -> IO Bool
- 
-htmlTextAreaElementGetReadOnly ::
-                               (IsHTMLTextAreaElement self) => self -> IO Bool
-htmlTextAreaElementGetReadOnly self
-  = ghcjs_dom_html_text_area_element_get_read_only
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"required\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_required ::
-        JSRef HTMLTextAreaElement -> Bool -> IO ()
- 
-htmlTextAreaElementSetRequired ::
-                               (IsHTMLTextAreaElement self) => self -> Bool -> IO ()
-htmlTextAreaElementSetRequired self val
-  = ghcjs_dom_html_text_area_element_set_required
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"required\"] ? 1 : 0)"
-        ghcjs_dom_html_text_area_element_get_required ::
-        JSRef HTMLTextAreaElement -> IO Bool
- 
-htmlTextAreaElementGetRequired ::
-                               (IsHTMLTextAreaElement self) => self -> IO Bool
-htmlTextAreaElementGetRequired self
-  = ghcjs_dom_html_text_area_element_get_required
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"rows\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_rows ::
-        JSRef HTMLTextAreaElement -> Int -> IO ()
- 
-htmlTextAreaElementSetRows ::
-                           (IsHTMLTextAreaElement self) => self -> Int -> IO ()
-htmlTextAreaElementSetRows self val
-  = ghcjs_dom_html_text_area_element_set_rows
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"rows\"]"
-        ghcjs_dom_html_text_area_element_get_rows ::
-        JSRef HTMLTextAreaElement -> IO Int
- 
-htmlTextAreaElementGetRows ::
-                           (IsHTMLTextAreaElement self) => self -> IO Int
-htmlTextAreaElementGetRows self
-  = ghcjs_dom_html_text_area_element_get_rows
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"wrap\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_wrap ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetWrap ::
-                           (IsHTMLTextAreaElement self, ToJSString val) =>
-                             self -> val -> IO ()
-htmlTextAreaElementSetWrap self val
-  = ghcjs_dom_html_text_area_element_set_wrap
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"wrap\"]"
-        ghcjs_dom_html_text_area_element_get_wrap ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetWrap ::
-                           (IsHTMLTextAreaElement self, FromJSString result) =>
-                             self -> IO result
-htmlTextAreaElementGetWrap self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_wrap
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"defaultValue\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_default_value ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetDefaultValue ::
-                                   (IsHTMLTextAreaElement self, ToJSString val) =>
-                                     self -> val -> IO ()
-htmlTextAreaElementSetDefaultValue self val
-  = ghcjs_dom_html_text_area_element_set_default_value
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"defaultValue\"]"
-        ghcjs_dom_html_text_area_element_get_default_value ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetDefaultValue ::
-                                   (IsHTMLTextAreaElement self, FromJSString result) =>
-                                     self -> IO result
-htmlTextAreaElementGetDefaultValue self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_default_value
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"value\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_value ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetValue ::
-                            (IsHTMLTextAreaElement self, ToJSString val) =>
-                              self -> val -> IO ()
-htmlTextAreaElementSetValue self val
-  = ghcjs_dom_html_text_area_element_set_value
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"value\"]"
-        ghcjs_dom_html_text_area_element_get_value ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetValue ::
-                            (IsHTMLTextAreaElement self, FromJSString result) =>
-                              self -> IO result
-htmlTextAreaElementGetValue self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_value
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"textLength\"]"
-        ghcjs_dom_html_text_area_element_get_text_length ::
-        JSRef HTMLTextAreaElement -> IO Word
- 
-htmlTextAreaElementGetTextLength ::
-                                 (IsHTMLTextAreaElement self) => self -> IO Word
-htmlTextAreaElementGetTextLength self
-  = ghcjs_dom_html_text_area_element_get_text_length
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
-        ghcjs_dom_html_text_area_element_get_will_validate ::
-        JSRef HTMLTextAreaElement -> IO Bool
- 
-htmlTextAreaElementGetWillValidate ::
-                                   (IsHTMLTextAreaElement self) => self -> IO Bool
-htmlTextAreaElementGetWillValidate self
-  = ghcjs_dom_html_text_area_element_get_will_validate
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"validity\"]"
-        ghcjs_dom_html_text_area_element_get_validity ::
-        JSRef HTMLTextAreaElement -> IO (JSRef ValidityState)
- 
-htmlTextAreaElementGetValidity ::
-                               (IsHTMLTextAreaElement self) => self -> IO (Maybe ValidityState)
-htmlTextAreaElementGetValidity self
-  = fmap ValidityState . maybeJSNull <$>
-      (ghcjs_dom_html_text_area_element_get_validity
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"validationMessage\"]"
-        ghcjs_dom_html_text_area_element_get_validation_message ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetValidationMessage ::
-                                        (IsHTMLTextAreaElement self, FromJSString result) =>
-                                          self -> IO result
-htmlTextAreaElementGetValidationMessage self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_validation_message
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"labels\"]"
-        ghcjs_dom_html_text_area_element_get_labels ::
-        JSRef HTMLTextAreaElement -> IO (JSRef NodeList)
- 
-htmlTextAreaElementGetLabels ::
-                             (IsHTMLTextAreaElement self) => self -> IO (Maybe NodeList)
-htmlTextAreaElementGetLabels self
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_html_text_area_element_get_labels
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"selectionStart\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_selection_start ::
-        JSRef HTMLTextAreaElement -> Int -> IO ()
- 
-htmlTextAreaElementSetSelectionStart ::
-                                     (IsHTMLTextAreaElement self) => self -> Int -> IO ()
-htmlTextAreaElementSetSelectionStart self val
-  = ghcjs_dom_html_text_area_element_set_selection_start
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"selectionStart\"]"
-        ghcjs_dom_html_text_area_element_get_selection_start ::
-        JSRef HTMLTextAreaElement -> IO Int
- 
-htmlTextAreaElementGetSelectionStart ::
-                                     (IsHTMLTextAreaElement self) => self -> IO Int
-htmlTextAreaElementGetSelectionStart self
-  = ghcjs_dom_html_text_area_element_get_selection_start
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"selectionEnd\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_selection_end ::
-        JSRef HTMLTextAreaElement -> Int -> IO ()
- 
-htmlTextAreaElementSetSelectionEnd ::
-                                   (IsHTMLTextAreaElement self) => self -> Int -> IO ()
-htmlTextAreaElementSetSelectionEnd self val
-  = ghcjs_dom_html_text_area_element_set_selection_end
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"selectionEnd\"]"
-        ghcjs_dom_html_text_area_element_get_selection_end ::
-        JSRef HTMLTextAreaElement -> IO Int
- 
-htmlTextAreaElementGetSelectionEnd ::
-                                   (IsHTMLTextAreaElement self) => self -> IO Int
-htmlTextAreaElementGetSelectionEnd self
-  = ghcjs_dom_html_text_area_element_get_selection_end
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"selectionDirection\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_selection_direction ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetSelectionDirection ::
-                                         (IsHTMLTextAreaElement self, ToJSString val) =>
-                                           self -> val -> IO ()
-htmlTextAreaElementSetSelectionDirection self val
-  = ghcjs_dom_html_text_area_element_set_selection_direction
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"selectionDirection\"]"
-        ghcjs_dom_html_text_area_element_get_selection_direction ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetSelectionDirection ::
-                                         (IsHTMLTextAreaElement self, FromJSString result) =>
-                                           self -> IO result
-htmlTextAreaElementGetSelectionDirection self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_selection_direction
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
- 
-foreign import javascript unsafe "$1[\"autocorrect\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_autocorrect ::
-        JSRef HTMLTextAreaElement -> Bool -> IO ()
- 
-htmlTextAreaElementSetAutocorrect ::
-                                  (IsHTMLTextAreaElement self) => self -> Bool -> IO ()
-htmlTextAreaElementSetAutocorrect self val
-  = ghcjs_dom_html_text_area_element_set_autocorrect
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
-        ghcjs_dom_html_text_area_element_get_autocorrect ::
-        JSRef HTMLTextAreaElement -> IO Bool
- 
-htmlTextAreaElementGetAutocorrect ::
-                                  (IsHTMLTextAreaElement self) => self -> IO Bool
-htmlTextAreaElementGetAutocorrect self
-  = ghcjs_dom_html_text_area_element_get_autocorrect
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
- 
-foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
-        ghcjs_dom_html_text_area_element_set_autocapitalize ::
-        JSRef HTMLTextAreaElement -> JSString -> IO ()
- 
-htmlTextAreaElementSetAutocapitalize ::
-                                     (IsHTMLTextAreaElement self, ToJSString val) =>
-                                       self -> val -> IO ()
-htmlTextAreaElementSetAutocapitalize self val
-  = ghcjs_dom_html_text_area_element_set_autocapitalize
-      (unHTMLTextAreaElement (toHTMLTextAreaElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"autocapitalize\"]"
-        ghcjs_dom_html_text_area_element_get_autocapitalize ::
-        JSRef HTMLTextAreaElement -> IO JSString
- 
-htmlTextAreaElementGetAutocapitalize ::
-                                     (IsHTMLTextAreaElement self, FromJSString result) =>
-                                       self -> IO result
-htmlTextAreaElementGetAutocapitalize self
-  = fromJSString <$>
-      (ghcjs_dom_html_text_area_element_get_autocapitalize
-         (unHTMLTextAreaElement (toHTMLTextAreaElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement
 #else
-module GHCJS.DOM.HTMLTextAreaElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLTextAreaElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLTextAreaElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTitleElement.hs b/src/GHCJS/DOM/HTMLTitleElement.hs
--- a/src/GHCJS/DOM/HTMLTitleElement.hs
+++ b/src/GHCJS/DOM/HTMLTitleElement.hs
@@ -1,46 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTitleElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLTitleElement
-       (ghcjs_dom_html_title_element_set_text, htmlTitleElementSetText,
-        ghcjs_dom_html_title_element_get_text, htmlTitleElementGetText,
-        HTMLTitleElement, IsHTMLTitleElement, castToHTMLTitleElement,
-        gTypeHTMLTitleElement, toHTMLTitleElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"text\"] = $2;"
-        ghcjs_dom_html_title_element_set_text ::
-        JSRef HTMLTitleElement -> JSString -> IO ()
- 
-htmlTitleElementSetText ::
-                        (IsHTMLTitleElement self, ToJSString val) => self -> val -> IO ()
-htmlTitleElementSetText self val
-  = ghcjs_dom_html_title_element_set_text
-      (unHTMLTitleElement (toHTMLTitleElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"text\"]"
-        ghcjs_dom_html_title_element_get_text ::
-        JSRef HTMLTitleElement -> IO JSString
- 
-htmlTitleElementGetText ::
-                        (IsHTMLTitleElement self, FromJSString result) => self -> IO result
-htmlTitleElementGetText self
-  = fromJSString <$>
-      (ghcjs_dom_html_title_element_get_text
-         (unHTMLTitleElement (toHTMLTitleElement self)))
+  module GHCJS.DOM.JSFFI.Generated.HTMLTitleElement
 #else
-module GHCJS.DOM.HTMLTitleElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLTitleElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTitleElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLTitleElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLTrackElement.hs b/src/GHCJS/DOM/HTMLTrackElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HTMLTrackElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLTrackElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HTMLTrackElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLTrackElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/HTMLUListElement.hs b/src/GHCJS/DOM/HTMLUListElement.hs
--- a/src/GHCJS/DOM/HTMLUListElement.hs
+++ b/src/GHCJS/DOM/HTMLUListElement.hs
@@ -1,46 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLUListElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLUListElement
-       (ghcjs_dom_htmlu_list_element_set_compact,
-        htmluListElementSetCompact,
-        ghcjs_dom_htmlu_list_element_get_compact,
-        htmluListElementGetCompact, HTMLUListElement, IsHTMLUListElement,
-        castToHTMLUListElement, gTypeHTMLUListElement, toHTMLUListElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"compact\"] = $2;"
-        ghcjs_dom_htmlu_list_element_set_compact ::
-        JSRef HTMLUListElement -> Bool -> IO ()
- 
-htmluListElementSetCompact ::
-                           (IsHTMLUListElement self) => self -> Bool -> IO ()
-htmluListElementSetCompact self val
-  = ghcjs_dom_htmlu_list_element_set_compact
-      (unHTMLUListElement (toHTMLUListElement self))
-      val
- 
-foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
-        ghcjs_dom_htmlu_list_element_get_compact ::
-        JSRef HTMLUListElement -> IO Bool
- 
-htmluListElementGetCompact ::
-                           (IsHTMLUListElement self) => self -> IO Bool
-htmluListElementGetCompact self
-  = ghcjs_dom_htmlu_list_element_get_compact
-      (unHTMLUListElement (toHTMLUListElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLUListElement
 #else
-module GHCJS.DOM.HTMLUListElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLUListElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLUListElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLUListElement
 #endif
diff --git a/src/GHCJS/DOM/HTMLVideoElement.hs b/src/GHCJS/DOM/HTMLVideoElement.hs
--- a/src/GHCJS/DOM/HTMLVideoElement.hs
+++ b/src/GHCJS/DOM/HTMLVideoElement.hs
@@ -1,242 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.HTMLVideoElement (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.HTMLVideoElement
-       (ghcjs_dom_html_video_element_webkit_enter_fullscreen,
-        htmlVideoElementWebkitEnterFullscreen,
-        ghcjs_dom_html_video_element_webkit_exit_fullscreen,
-        htmlVideoElementWebkitExitFullscreen,
-        ghcjs_dom_html_video_element_webkit_enter_full_screen,
-        htmlVideoElementWebkitEnterFullScreen,
-        ghcjs_dom_html_video_element_webkit_exit_full_screen,
-        htmlVideoElementWebkitExitFullScreen,
-        ghcjs_dom_html_video_element_set_width, htmlVideoElementSetWidth,
-        ghcjs_dom_html_video_element_get_width, htmlVideoElementGetWidth,
-        ghcjs_dom_html_video_element_set_height, htmlVideoElementSetHeight,
-        ghcjs_dom_html_video_element_get_height, htmlVideoElementGetHeight,
-        ghcjs_dom_html_video_element_get_video_width,
-        htmlVideoElementGetVideoWidth,
-        ghcjs_dom_html_video_element_get_video_height,
-        htmlVideoElementGetVideoHeight,
-        ghcjs_dom_html_video_element_set_poster, htmlVideoElementSetPoster,
-        ghcjs_dom_html_video_element_get_poster, htmlVideoElementGetPoster,
-        ghcjs_dom_html_video_element_get_webkit_supports_fullscreen,
-        htmlVideoElementGetWebkitSupportsFullscreen,
-        ghcjs_dom_html_video_element_get_webkit_displaying_fullscreen,
-        htmlVideoElementGetWebkitDisplayingFullscreen,
-        ghcjs_dom_html_video_element_set_webkit_wireless_video_playback_disabled,
-        htmlVideoElementSetWebkitWirelessVideoPlaybackDisabled,
-        ghcjs_dom_html_video_element_get_webkit_wireless_video_playback_disabled,
-        htmlVideoElementGetWebkitWirelessVideoPlaybackDisabled,
-        ghcjs_dom_html_video_element_get_webkit_decoded_frame_count,
-        htmlVideoElementGetWebkitDecodedFrameCount,
-        ghcjs_dom_html_video_element_get_webkit_dropped_frame_count,
-        htmlVideoElementGetWebkitDroppedFrameCount, HTMLVideoElement,
-        IsHTMLVideoElement, castToHTMLVideoElement, gTypeHTMLVideoElement,
-        toHTMLVideoElement)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"webkitEnterFullscreen\"]()"
-        ghcjs_dom_html_video_element_webkit_enter_fullscreen ::
-        JSRef HTMLVideoElement -> IO ()
- 
-htmlVideoElementWebkitEnterFullscreen ::
-                                      (IsHTMLVideoElement self) => self -> IO ()
-htmlVideoElementWebkitEnterFullscreen self
-  = ghcjs_dom_html_video_element_webkit_enter_fullscreen
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"webkitExitFullscreen\"]()"
-        ghcjs_dom_html_video_element_webkit_exit_fullscreen ::
-        JSRef HTMLVideoElement -> IO ()
- 
-htmlVideoElementWebkitExitFullscreen ::
-                                     (IsHTMLVideoElement self) => self -> IO ()
-htmlVideoElementWebkitExitFullscreen self
-  = ghcjs_dom_html_video_element_webkit_exit_fullscreen
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"webkitEnterFullScreen\"]()"
-        ghcjs_dom_html_video_element_webkit_enter_full_screen ::
-        JSRef HTMLVideoElement -> IO ()
- 
-htmlVideoElementWebkitEnterFullScreen ::
-                                      (IsHTMLVideoElement self) => self -> IO ()
-htmlVideoElementWebkitEnterFullScreen self
-  = ghcjs_dom_html_video_element_webkit_enter_full_screen
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"webkitExitFullScreen\"]()"
-        ghcjs_dom_html_video_element_webkit_exit_full_screen ::
-        JSRef HTMLVideoElement -> IO ()
- 
-htmlVideoElementWebkitExitFullScreen ::
-                                     (IsHTMLVideoElement self) => self -> IO ()
-htmlVideoElementWebkitExitFullScreen self
-  = ghcjs_dom_html_video_element_webkit_exit_full_screen
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"width\"] = $2;"
-        ghcjs_dom_html_video_element_set_width ::
-        JSRef HTMLVideoElement -> Word -> IO ()
- 
-htmlVideoElementSetWidth ::
-                         (IsHTMLVideoElement self) => self -> Word -> IO ()
-htmlVideoElementSetWidth self val
-  = ghcjs_dom_html_video_element_set_width
-      (unHTMLVideoElement (toHTMLVideoElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_html_video_element_get_width ::
-        JSRef HTMLVideoElement -> IO Word
- 
-htmlVideoElementGetWidth ::
-                         (IsHTMLVideoElement self) => self -> IO Word
-htmlVideoElementGetWidth self
-  = ghcjs_dom_html_video_element_get_width
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"height\"] = $2;"
-        ghcjs_dom_html_video_element_set_height ::
-        JSRef HTMLVideoElement -> Word -> IO ()
- 
-htmlVideoElementSetHeight ::
-                          (IsHTMLVideoElement self) => self -> Word -> IO ()
-htmlVideoElementSetHeight self val
-  = ghcjs_dom_html_video_element_set_height
-      (unHTMLVideoElement (toHTMLVideoElement self))
-      val
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_html_video_element_get_height ::
-        JSRef HTMLVideoElement -> IO Word
- 
-htmlVideoElementGetHeight ::
-                          (IsHTMLVideoElement self) => self -> IO Word
-htmlVideoElementGetHeight self
-  = ghcjs_dom_html_video_element_get_height
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"videoWidth\"]"
-        ghcjs_dom_html_video_element_get_video_width ::
-        JSRef HTMLVideoElement -> IO Word
- 
-htmlVideoElementGetVideoWidth ::
-                              (IsHTMLVideoElement self) => self -> IO Word
-htmlVideoElementGetVideoWidth self
-  = ghcjs_dom_html_video_element_get_video_width
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"videoHeight\"]"
-        ghcjs_dom_html_video_element_get_video_height ::
-        JSRef HTMLVideoElement -> IO Word
- 
-htmlVideoElementGetVideoHeight ::
-                               (IsHTMLVideoElement self) => self -> IO Word
-htmlVideoElementGetVideoHeight self
-  = ghcjs_dom_html_video_element_get_video_height
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"poster\"] = $2;"
-        ghcjs_dom_html_video_element_set_poster ::
-        JSRef HTMLVideoElement -> JSString -> IO ()
- 
-htmlVideoElementSetPoster ::
-                          (IsHTMLVideoElement self, ToJSString val) => self -> val -> IO ()
-htmlVideoElementSetPoster self val
-  = ghcjs_dom_html_video_element_set_poster
-      (unHTMLVideoElement (toHTMLVideoElement self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"poster\"]"
-        ghcjs_dom_html_video_element_get_poster ::
-        JSRef HTMLVideoElement -> IO JSString
- 
-htmlVideoElementGetPoster ::
-                          (IsHTMLVideoElement self, FromJSString result) => self -> IO result
-htmlVideoElementGetPoster self
-  = fromJSString <$>
-      (ghcjs_dom_html_video_element_get_poster
-         (unHTMLVideoElement (toHTMLVideoElement self)))
- 
-foreign import javascript unsafe
-        "($1[\"webkitSupportsFullscreen\"] ? 1 : 0)"
-        ghcjs_dom_html_video_element_get_webkit_supports_fullscreen ::
-        JSRef HTMLVideoElement -> IO Bool
- 
-htmlVideoElementGetWebkitSupportsFullscreen ::
-                                            (IsHTMLVideoElement self) => self -> IO Bool
-htmlVideoElementGetWebkitSupportsFullscreen self
-  = ghcjs_dom_html_video_element_get_webkit_supports_fullscreen
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe
-        "($1[\"webkitDisplayingFullscreen\"] ? 1 : 0)"
-        ghcjs_dom_html_video_element_get_webkit_displaying_fullscreen ::
-        JSRef HTMLVideoElement -> IO Bool
- 
-htmlVideoElementGetWebkitDisplayingFullscreen ::
-                                              (IsHTMLVideoElement self) => self -> IO Bool
-htmlVideoElementGetWebkitDisplayingFullscreen self
-  = ghcjs_dom_html_video_element_get_webkit_displaying_fullscreen
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe
-        "$1[\"webkitWirelessVideoPlaybackDisabled\"] = $2;"
-        ghcjs_dom_html_video_element_set_webkit_wireless_video_playback_disabled
-        :: JSRef HTMLVideoElement -> Bool -> IO ()
- 
-htmlVideoElementSetWebkitWirelessVideoPlaybackDisabled ::
-                                                       (IsHTMLVideoElement self) =>
-                                                         self -> Bool -> IO ()
-htmlVideoElementSetWebkitWirelessVideoPlaybackDisabled self val
-  = ghcjs_dom_html_video_element_set_webkit_wireless_video_playback_disabled
-      (unHTMLVideoElement (toHTMLVideoElement self))
-      val
- 
-foreign import javascript unsafe
-        "($1[\"webkitWirelessVideoPlaybackDisabled\"] ? 1 : 0)"
-        ghcjs_dom_html_video_element_get_webkit_wireless_video_playback_disabled
-        :: JSRef HTMLVideoElement -> IO Bool
- 
-htmlVideoElementGetWebkitWirelessVideoPlaybackDisabled ::
-                                                       (IsHTMLVideoElement self) => self -> IO Bool
-htmlVideoElementGetWebkitWirelessVideoPlaybackDisabled self
-  = ghcjs_dom_html_video_element_get_webkit_wireless_video_playback_disabled
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"webkitDecodedFrameCount\"]"
-        ghcjs_dom_html_video_element_get_webkit_decoded_frame_count ::
-        JSRef HTMLVideoElement -> IO Word
- 
-htmlVideoElementGetWebkitDecodedFrameCount ::
-                                           (IsHTMLVideoElement self) => self -> IO Word
-htmlVideoElementGetWebkitDecodedFrameCount self
-  = ghcjs_dom_html_video_element_get_webkit_decoded_frame_count
-      (unHTMLVideoElement (toHTMLVideoElement self))
- 
-foreign import javascript unsafe "$1[\"webkitDroppedFrameCount\"]"
-        ghcjs_dom_html_video_element_get_webkit_dropped_frame_count ::
-        JSRef HTMLVideoElement -> IO Word
- 
-htmlVideoElementGetWebkitDroppedFrameCount ::
-                                           (IsHTMLVideoElement self) => self -> IO Word
-htmlVideoElementGetWebkitDroppedFrameCount self
-  = ghcjs_dom_html_video_element_get_webkit_dropped_frame_count
-      (unHTMLVideoElement (toHTMLVideoElement self))
+  module GHCJS.DOM.JSFFI.Generated.HTMLVideoElement
 #else
-module GHCJS.DOM.HTMLVideoElement (
   module Graphics.UI.Gtk.WebKit.DOM.HTMLVideoElement
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HTMLVideoElement
+#else
 import Graphics.UI.Gtk.WebKit.DOM.HTMLVideoElement
 #endif
diff --git a/src/GHCJS/DOM/HashChangeEvent.hs b/src/GHCJS/DOM/HashChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/HashChangeEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.HashChangeEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.HashChangeEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.HashChangeEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/History.hs b/src/GHCJS/DOM/History.hs
--- a/src/GHCJS/DOM/History.hs
+++ b/src/GHCJS/DOM/History.hs
@@ -1,29 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.History (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.History
-       (ghcjs_dom_history_get_length, historyGetLength, History,
-        IsHistory, castToHistory, gTypeHistory, toHistory)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_history_get_length :: JSRef History -> IO Word
- 
-historyGetLength :: (IsHistory self) => self -> IO Word
-historyGetLength self
-  = ghcjs_dom_history_get_length (unHistory (toHistory self))
+  module GHCJS.DOM.JSFFI.Generated.History
 #else
-module GHCJS.DOM.History (
   module Graphics.UI.Gtk.WebKit.DOM.History
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.History
+#else
 import Graphics.UI.Gtk.WebKit.DOM.History
 #endif
diff --git a/src/GHCJS/DOM/IDBCursor.hs b/src/GHCJS/DOM/IDBCursor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBCursor.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBCursor (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBCursor
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBCursor
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBCursorWithValue.hs b/src/GHCJS/DOM/IDBCursorWithValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBCursorWithValue.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBCursorWithValue (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBDatabase.hs b/src/GHCJS/DOM/IDBDatabase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBDatabase.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBDatabase (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBDatabase
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBDatabase
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBFactory.hs b/src/GHCJS/DOM/IDBFactory.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBFactory.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBFactory (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBFactory
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBFactory
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBIndex.hs b/src/GHCJS/DOM/IDBIndex.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBIndex.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBIndex (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBIndex
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBIndex
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBKeyRange.hs b/src/GHCJS/DOM/IDBKeyRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBKeyRange.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBKeyRange (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBKeyRange
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBKeyRange
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBObjectStore.hs b/src/GHCJS/DOM/IDBObjectStore.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBObjectStore.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBObjectStore (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBObjectStore
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBObjectStore
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBOpenDBRequest.hs b/src/GHCJS/DOM/IDBOpenDBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBOpenDBRequest.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBOpenDBRequest (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBRequest.hs b/src/GHCJS/DOM/IDBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBRequest.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBRequest (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBRequest
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBRequest
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBTransaction.hs b/src/GHCJS/DOM/IDBTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBTransaction.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBTransaction (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBTransaction
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBTransaction
+#else
+#endif
diff --git a/src/GHCJS/DOM/IDBVersionChangeEvent.hs b/src/GHCJS/DOM/IDBVersionChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/IDBVersionChangeEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.IDBVersionChangeEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/ImageData.hs b/src/GHCJS/DOM/ImageData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ImageData.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ImageData (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ImageData
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ImageData
+#else
+#endif
diff --git a/src/GHCJS/DOM/InspectorFrontendHost.hs b/src/GHCJS/DOM/InspectorFrontendHost.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/InspectorFrontendHost.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.InspectorFrontendHost (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost
+#else
+#endif
diff --git a/src/GHCJS/DOM/InternalSettings.hs b/src/GHCJS/DOM/InternalSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/InternalSettings.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.InternalSettings (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.InternalSettings
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.InternalSettings
+#else
+#endif
diff --git a/src/GHCJS/DOM/Internals.hs b/src/GHCJS/DOM/Internals.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Internals.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Internals (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Internals
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Internals
+#else
+#endif
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 (JSRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Marshal (fromJSRef, fromJSRefUnchecked)
+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 ::
+        JSRef AudioContext -> JSRef ArrayBuffer -> IO (JSRef 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 $ js_decodeAudioData
+        (unAudioContext (toAudioContext self))
+        (unArrayBuffer  (toArrayBuffer audioData))
+            >>= fromJSRef >>= 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,73 @@
+{-# 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 (JSRef, JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (OnBlocked(..))
+import GHCJS.Marshal (fromJSRef)
+import GHCJS.Marshal.Pure (pToJSRef)
+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)) releaseCallback
+
+foreign import javascript interruptible
+        "$1[\"changeVersion\"]($2, $3, $4, $c, function() { $c(null); });"
+        js_changeVersion :: JSRef Database -> JSString -> JSString -> JSRef SQLTransactionCallback -> IO (JSRef 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 $
+    js_changeVersion (unDatabase self) (toJSString oldVersion) (toJSString newVersion) jsNull >>= fromJSRef
+changeVersion' self oldVersion newVersion (Just callback) = liftIO $ withSQLTransactionCallback callback
+    (js_changeVersion (unDatabase self) (toJSString oldVersion) (toJSString newVersion) . pToJSRef) >>= fromJSRef
+
+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 :: JSRef Database -> JSRef SQLTransactionCallback -> IO (JSRef 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 $ withSQLTransactionCallback callback
+    (js_transaction (unDatabase self) . pToJSRef) >>= fromJSRef
+
+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 :: JSRef Database -> JSRef SQLTransactionCallback -> IO (JSRef 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 $
+      withSQLTransactionCallback callback (js_readTransaction (unDatabase self) . pToJSRef) >>= fromJSRef
+
+readTransaction :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m ()
+readTransaction self callback = readTransaction' self callback >>= maybe (return ()) throwSQLException
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs b/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
@@ -0,0 +1,70 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"drawArraysInstancedANGLE\"]($2,\n$3, $4, $5)"
+        js_drawArraysInstancedANGLE ::
+        JSRef 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 (unANGLEInstancedArrays self) mode
+         first
+         count
+         primcount)
+ 
+foreign import javascript unsafe
+        "$1[\"drawElementsInstancedANGLE\"]($2,\n$3, $4, $5, $6)"
+        js_drawElementsInstancedANGLE ::
+        JSRef 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 (unANGLEInstancedArrays self) mode
+         count
+         type'
+         (fromIntegral offset)
+         primcount)
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttribDivisorANGLE\"]($2,\n$3)"
+        js_vertexAttribDivisorANGLE ::
+        JSRef 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 (unANGLEInstancedArrays 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"document\"]" js_getDocument
+        :: JSRef AbstractView -> IO (JSRef 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 ((js_getDocument (unAbstractView self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"styleMedia\"]"
+        js_getStyleMedia :: JSRef AbstractView -> IO (JSRef 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 ((js_getStyleMedia (unAbstractView self)) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"sourceId\"]" js_getSourceId
+        :: JSRef AllAudioCapabilities -> IO (JSRef [result])
+
+-- | <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 (unAllAudioCapabilities self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"volume\"]" js_getVolume ::
+        JSRef AllAudioCapabilities -> IO (JSRef 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
+      ((js_getVolume (unAllAudioCapabilities self)) >>= fromJSRef)
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,102 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"sourceType\"]"
+        js_getSourceType ::
+        JSRef AllVideoCapabilities -> IO (JSRef [result])
+
+-- | <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 (unAllVideoCapabilities self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"sourceId\"]" js_getSourceId
+        :: JSRef AllVideoCapabilities -> IO (JSRef [result])
+
+-- | <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 (unAllVideoCapabilities self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef AllVideoCapabilities -> IO (JSRef 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
+      ((js_getWidth (unAllVideoCapabilities self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef AllVideoCapabilities -> IO (JSRef 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
+      ((js_getHeight (unAllVideoCapabilities self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"frameRate\"]"
+        js_getFrameRate ::
+        JSRef AllVideoCapabilities -> IO (JSRef 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
+      ((js_getFrameRate (unAllVideoCapabilities self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"aspectRatio\"]"
+        js_getAspectRatio ::
+        JSRef AllVideoCapabilities -> IO (JSRef 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
+      ((js_getAspectRatio (unAllVideoCapabilities self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"facingMode\"]"
+        js_getFacingMode ::
+        JSRef AllVideoCapabilities -> IO (JSRef [result])
+
+-- | <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 (unAllVideoCapabilities self)) >>=
+         fromJSRefUnchecked)
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,139 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getFloatFrequencyData\"]($2)" js_getFloatFrequencyData ::
+        JSRef AnalyserNode -> JSRef 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 (unAnalyserNode self)
+         (maybe jsNull (unFloat32Array . toFloat32Array) array))
+ 
+foreign import javascript unsafe "$1[\"getByteFrequencyData\"]($2)"
+        js_getByteFrequencyData ::
+        JSRef AnalyserNode -> JSRef 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 (unAnalyserNode self)
+         (maybe jsNull (unUint8Array . toUint8Array) array))
+ 
+foreign import javascript unsafe
+        "$1[\"getByteTimeDomainData\"]($2)" js_getByteTimeDomainData ::
+        JSRef AnalyserNode -> JSRef 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 (unAnalyserNode self)
+         (maybe jsNull (unUint8Array . toUint8Array) array))
+ 
+foreign import javascript unsafe "$1[\"fftSize\"] = $2;"
+        js_setFftSize :: JSRef 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 (unAnalyserNode self) val)
+ 
+foreign import javascript unsafe "$1[\"fftSize\"]" js_getFftSize ::
+        JSRef 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 (unAnalyserNode self))
+ 
+foreign import javascript unsafe "$1[\"frequencyBinCount\"]"
+        js_getFrequencyBinCount :: JSRef 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 (unAnalyserNode self))
+ 
+foreign import javascript unsafe "$1[\"minDecibels\"] = $2;"
+        js_setMinDecibels :: JSRef 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 (unAnalyserNode self) val)
+ 
+foreign import javascript unsafe "$1[\"minDecibels\"]"
+        js_getMinDecibels :: JSRef 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 (unAnalyserNode self))
+ 
+foreign import javascript unsafe "$1[\"maxDecibels\"] = $2;"
+        js_setMaxDecibels :: JSRef 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 (unAnalyserNode self) val)
+ 
+foreign import javascript unsafe "$1[\"maxDecibels\"]"
+        js_getMaxDecibels :: JSRef 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 (unAnalyserNode self))
+ 
+foreign import javascript unsafe
+        "$1[\"smoothingTimeConstant\"] = $2;" js_setSmoothingTimeConstant
+        :: JSRef 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 (unAnalyserNode self) val)
+ 
+foreign import javascript unsafe "$1[\"smoothingTimeConstant\"]"
+        js_getSmoothingTimeConstant :: JSRef 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 (unAnalyserNode 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,38 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"animationName\"]"
+        js_getAnimationName :: JSRef 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 (unAnimationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"elapsedTime\"]"
+        js_getElapsedTime :: JSRef 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 (unAnimationEvent 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"update\"]()" js_update ::
+        JSRef 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 (unApplicationCache self))
+ 
+foreign import javascript unsafe "$1[\"swapCache\"]()" js_swapCache
+        :: JSRef 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 (unApplicationCache self))
+ 
+foreign import javascript unsafe "$1[\"abort\"]()" js_abort ::
+        JSRef 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 (unApplicationCache 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 ::
+        JSRef 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 (unApplicationCache 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,69 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef Attr -> IO (JSRef (Maybe 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 (unAttr self)))
+ 
+foreign import javascript unsafe "($1[\"specified\"] ? 1 : 0)"
+        js_getSpecified :: JSRef 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 (unAttr self))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef Attr -> JSRef (Maybe 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 (unAttr self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef Attr -> IO (JSRef (Maybe 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 (unAttr self)))
+ 
+foreign import javascript unsafe "$1[\"ownerElement\"]"
+        js_getOwnerElement :: JSRef Attr -> IO (JSRef 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 ((js_getOwnerElement (unAttr self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "($1[\"isId\"] ? 1 : 0)"
+        js_getIsId :: JSRef 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 (unAttr 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,77 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getChannelData\"]($2)"
+        js_getChannelData ::
+        JSRef AudioBuffer -> Word -> IO (JSRef 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
+      ((js_getChannelData (unAudioBuffer self) channelIndex) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unAudioBuffer self))
+ 
+foreign import javascript unsafe "$1[\"duration\"]" js_getDuration
+        :: JSRef 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 (unAudioBuffer self))
+ 
+foreign import javascript unsafe "$1[\"sampleRate\"]"
+        js_getSampleRate :: JSRef 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 (unAudioBuffer self))
+ 
+foreign import javascript unsafe "$1[\"gain\"] = $2;" js_setGain ::
+        JSRef 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 (unAudioBuffer self) val)
+ 
+foreign import javascript unsafe "$1[\"gain\"]" js_getGain ::
+        JSRef 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 (unAudioBuffer self))
+ 
+foreign import javascript unsafe "$1[\"numberOfChannels\"]"
+        js_getNumberOfChannels :: JSRef 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 (unAudioBuffer 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,52 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ audioBuffer ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ audioBuffer ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ audioBuffer ->
+            fromJSRefUnchecked 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,202 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"start\"]($2, $3, $4)"
+        js_start ::
+        JSRef 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 (unAudioBufferSourceNode self) when grainOffset
+         grainDuration)
+ 
+foreign import javascript unsafe "$1[\"stop\"]($2)" js_stop ::
+        JSRef 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 (unAudioBufferSourceNode self) when)
+ 
+foreign import javascript unsafe "$1[\"noteOn\"]($2)" js_noteOn ::
+        JSRef 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 (unAudioBufferSourceNode self) when)
+ 
+foreign import javascript unsafe "$1[\"noteGrainOn\"]($2, $3, $4)"
+        js_noteGrainOn ::
+        JSRef 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 (unAudioBufferSourceNode self) when grainOffset
+         grainDuration)
+ 
+foreign import javascript unsafe "$1[\"noteOff\"]($2)" js_noteOff
+        :: JSRef 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 (unAudioBufferSourceNode 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 ::
+        JSRef AudioBufferSourceNode -> JSRef 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 (unAudioBufferSourceNode self)
+         (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"buffer\"]" js_getBuffer ::
+        JSRef AudioBufferSourceNode -> IO (JSRef 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
+      ((js_getBuffer (unAudioBufferSourceNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"playbackState\"]"
+        js_getPlaybackState :: JSRef 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 (unAudioBufferSourceNode self))
+ 
+foreign import javascript unsafe "$1[\"gain\"]" js_getGain ::
+        JSRef AudioBufferSourceNode -> IO (JSRef 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
+      ((js_getGain (unAudioBufferSourceNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"playbackRate\"]"
+        js_getPlaybackRate ::
+        JSRef AudioBufferSourceNode -> IO (JSRef 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
+      ((js_getPlaybackRate (unAudioBufferSourceNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"loop\"] = $2;" js_setLoop ::
+        JSRef 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 (unAudioBufferSourceNode self) val)
+ 
+foreign import javascript unsafe "($1[\"loop\"] ? 1 : 0)"
+        js_getLoop :: JSRef 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 (unAudioBufferSourceNode self))
+ 
+foreign import javascript unsafe "$1[\"loopStart\"] = $2;"
+        js_setLoopStart :: JSRef 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 (unAudioBufferSourceNode self) val)
+ 
+foreign import javascript unsafe "$1[\"loopStart\"]"
+        js_getLoopStart :: JSRef 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 (unAudioBufferSourceNode self))
+ 
+foreign import javascript unsafe "$1[\"loopEnd\"] = $2;"
+        js_setLoopEnd :: JSRef 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 (unAudioBufferSourceNode self) val)
+ 
+foreign import javascript unsafe "$1[\"loopEnd\"]" js_getLoopEnd ::
+        JSRef 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 (unAudioBufferSourceNode self))
+ 
+foreign import javascript unsafe "$1[\"looping\"] = $2;"
+        js_setLooping :: JSRef 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 (unAudioBufferSourceNode self) val)
+ 
+foreign import javascript unsafe "($1[\"looping\"] ? 1 : 0)"
+        js_getLooping :: JSRef 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 (unAudioBufferSourceNode 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,451 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new (window[\"AudioContext\"]\n||\nwindow[\"webkitAudioContext\"])()"
+        js_newAudioContext :: IO (JSRef AudioContext)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation> 
+newAudioContext :: (MonadIO m) => m AudioContext
+newAudioContext
+  = liftIO (js_newAudioContext >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"createBuffer\"]($2, $3, $4)"
+        js_createBuffer ::
+        JSRef AudioContext ->
+          Word -> Word -> Float -> IO (JSRef 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
+      ((js_createBuffer (unAudioContext (toAudioContext self))
+          numberOfChannels
+          numberOfFrames
+          sampleRate)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createBuffer\"]($2, $3)"
+        js_createBufferFromArrayBuffer ::
+        JSRef AudioContext ->
+          JSRef ArrayBuffer -> Bool -> IO (JSRef 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
+      ((js_createBufferFromArrayBuffer
+          (unAudioContext (toAudioContext self))
+          (maybe jsNull (unArrayBuffer . toArrayBuffer) buffer)
+          mixToMono)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"decodeAudioData\"]($2, $3,\n$4)" js_decodeAudioData ::
+        JSRef AudioContext ->
+          JSRef ArrayBuffer ->
+            JSRef AudioBufferCallback -> JSRef 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 (unAudioContext (toAudioContext self))
+         (maybe jsNull (unArrayBuffer . toArrayBuffer) audioData)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef errorCallback))
+ 
+foreign import javascript unsafe "$1[\"createBufferSource\"]()"
+        js_createBufferSource ::
+        JSRef AudioContext -> IO (JSRef 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
+      ((js_createBufferSource (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createMediaElementSource\"]($2)" js_createMediaElementSource
+        ::
+        JSRef AudioContext ->
+          JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_createMediaElementSource
+          (unAudioContext (toAudioContext self))
+          (maybe jsNull (unHTMLMediaElement . toHTMLMediaElement)
+             mediaElement))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createMediaStreamSource\"]($2)" js_createMediaStreamSource ::
+        JSRef AudioContext ->
+          JSRef MediaStream -> IO (JSRef 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
+      ((js_createMediaStreamSource (unAudioContext (toAudioContext self))
+          (maybe jsNull pToJSRef mediaStream))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createMediaStreamDestination\"]()"
+        js_createMediaStreamDestination ::
+        JSRef AudioContext -> IO (JSRef 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
+      ((js_createMediaStreamDestination
+          (unAudioContext (toAudioContext self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createGain\"]()"
+        js_createGain :: JSRef AudioContext -> IO (JSRef 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
+      ((js_createGain (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createDelay\"]($2)"
+        js_createDelay ::
+        JSRef AudioContext -> Double -> IO (JSRef 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
+      ((js_createDelay (unAudioContext (toAudioContext self))
+          maxDelayTime)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createBiquadFilter\"]()"
+        js_createBiquadFilter ::
+        JSRef AudioContext -> IO (JSRef 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
+      ((js_createBiquadFilter (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createWaveShaper\"]()"
+        js_createWaveShaper ::
+        JSRef AudioContext -> IO (JSRef 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
+      ((js_createWaveShaper (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createPanner\"]()"
+        js_createPanner :: JSRef AudioContext -> IO (JSRef 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
+      ((js_createPanner (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createConvolver\"]()"
+        js_createConvolver ::
+        JSRef AudioContext -> IO (JSRef 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
+      ((js_createConvolver (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createDynamicsCompressor\"]()" js_createDynamicsCompressor ::
+        JSRef AudioContext -> IO (JSRef 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
+      ((js_createDynamicsCompressor
+          (unAudioContext (toAudioContext self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createAnalyser\"]()"
+        js_createAnalyser :: JSRef AudioContext -> IO (JSRef 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
+      ((js_createAnalyser (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createScriptProcessor\"]($2,\n$3, $4)"
+        js_createScriptProcessor ::
+        JSRef AudioContext ->
+          Word -> Word -> Word -> IO (JSRef 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
+      ((js_createScriptProcessor (unAudioContext (toAudioContext self))
+          bufferSize
+          numberOfInputChannels
+          numberOfOutputChannels)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createOscillator\"]()"
+        js_createOscillator ::
+        JSRef AudioContext -> IO (JSRef 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
+      ((js_createOscillator (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createPeriodicWave\"]($2, $3)" js_createPeriodicWave ::
+        JSRef AudioContext ->
+          JSRef Float32Array -> JSRef Float32Array -> IO (JSRef 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
+      ((js_createPeriodicWave (unAudioContext (toAudioContext self))
+          (maybe jsNull (unFloat32Array . toFloat32Array) real)
+          (maybe jsNull (unFloat32Array . toFloat32Array) imag))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createChannelSplitter\"]($2)" js_createChannelSplitter ::
+        JSRef AudioContext -> Word -> IO (JSRef 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
+      ((js_createChannelSplitter (unAudioContext (toAudioContext self))
+          numberOfOutputs)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createChannelMerger\"]($2)"
+        js_createChannelMerger ::
+        JSRef AudioContext -> Word -> IO (JSRef 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
+      ((js_createChannelMerger (unAudioContext (toAudioContext self))
+          numberOfInputs)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"startRendering\"]()"
+        js_startRendering :: JSRef 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 (unAudioContext (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"createGainNode\"]()"
+        js_createGainNode :: JSRef AudioContext -> IO (JSRef 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
+      ((js_createGainNode (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createDelayNode\"]($2)"
+        js_createDelayNode ::
+        JSRef AudioContext -> Double -> IO (JSRef 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
+      ((js_createDelayNode (unAudioContext (toAudioContext self))
+          maxDelayTime)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createJavaScriptNode\"]($2,\n$3, $4)" js_createJavaScriptNode
+        ::
+        JSRef AudioContext ->
+          Word -> Word -> Word -> IO (JSRef 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
+      ((js_createJavaScriptNode (unAudioContext (toAudioContext self))
+          bufferSize
+          numberOfInputChannels
+          numberOfOutputChannels)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"destination\"]"
+        js_getDestination ::
+        JSRef AudioContext -> IO (JSRef 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
+      ((js_getDestination (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"currentTime\"]"
+        js_getCurrentTime :: JSRef 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 (unAudioContext (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"sampleRate\"]"
+        js_getSampleRate :: JSRef 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 (unAudioContext (toAudioContext self)))
+ 
+foreign import javascript unsafe "$1[\"listener\"]" js_getListener
+        :: JSRef AudioContext -> IO (JSRef 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
+      ((js_getListener (unAudioContext (toAudioContext self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"activeSourceCount\"]"
+        js_getActiveSourceCount :: JSRef 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 (unAudioContext (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,27 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"maxChannelCount\"]"
+        js_getMaxChannelCount :: JSRef 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 (unAudioDestinationNode 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,89 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setPosition\"]($2, $3, $4)"
+        js_setPosition ::
+        JSRef 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 (unAudioListener self) x y z)
+ 
+foreign import javascript unsafe
+        "$1[\"setOrientation\"]($2, $3, $4,\n$5, $6, $7)" js_setOrientation
+        ::
+        JSRef 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 (unAudioListener self) x y z xUp yUp zUp)
+ 
+foreign import javascript unsafe "$1[\"setVelocity\"]($2, $3, $4)"
+        js_setVelocity ::
+        JSRef 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 (unAudioListener self) x y z)
+ 
+foreign import javascript unsafe "$1[\"dopplerFactor\"] = $2;"
+        js_setDopplerFactor :: JSRef 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 (unAudioListener self) val)
+ 
+foreign import javascript unsafe "$1[\"dopplerFactor\"]"
+        js_getDopplerFactor :: JSRef 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 (unAudioListener self))
+ 
+foreign import javascript unsafe "$1[\"speedOfSound\"] = $2;"
+        js_setSpeedOfSound :: JSRef 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 (unAudioListener self) val)
+ 
+foreign import javascript unsafe "$1[\"speedOfSound\"]"
+        js_getSpeedOfSound :: JSRef 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 (unAudioListener 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,157 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"connect\"]($2, $3, $4)"
+        js_connect ::
+        JSRef AudioNode -> JSRef 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 (unAudioNode (toAudioNode self))
+         (maybe jsNull (unAudioNode . toAudioNode) destination)
+         output
+         input)
+ 
+foreign import javascript unsafe "$1[\"connect\"]($2, $3)"
+        js_connectParam ::
+        JSRef AudioNode -> JSRef 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 (unAudioNode (toAudioNode self))
+         (maybe jsNull pToJSRef destination)
+         output)
+ 
+foreign import javascript unsafe "$1[\"disconnect\"]($2)"
+        js_disconnect :: JSRef 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 (unAudioNode (toAudioNode self)) output)
+ 
+foreign import javascript unsafe "$1[\"context\"]" js_getContext ::
+        JSRef AudioNode -> IO (JSRef 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
+      ((js_getContext (unAudioNode (toAudioNode self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"numberOfInputs\"]"
+        js_getNumberOfInputs :: JSRef 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 (unAudioNode (toAudioNode self)))
+ 
+foreign import javascript unsafe "$1[\"numberOfOutputs\"]"
+        js_getNumberOfOutputs :: JSRef 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 (unAudioNode (toAudioNode self)))
+ 
+foreign import javascript unsafe "$1[\"channelCount\"] = $2;"
+        js_setChannelCount :: JSRef 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 (unAudioNode (toAudioNode self)) val)
+ 
+foreign import javascript unsafe "$1[\"channelCount\"]"
+        js_getChannelCount :: JSRef 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 (unAudioNode (toAudioNode self)))
+ 
+foreign import javascript unsafe "$1[\"channelCountMode\"] = $2;"
+        js_setChannelCountMode :: JSRef 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 (unAudioNode (toAudioNode self))
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"channelCountMode\"]"
+        js_getChannelCountMode :: JSRef 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 (unAudioNode (toAudioNode self))))
+ 
+foreign import javascript unsafe
+        "$1[\"channelInterpretation\"] = $2;" js_setChannelInterpretation
+        :: JSRef 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 (unAudioNode (toAudioNode self))
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"channelInterpretation\"]"
+        js_getChannelInterpretation :: JSRef 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 (unAudioNode (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,160 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setValueAtTime\"]($2, $3)"
+        js_setValueAtTime :: JSRef 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 (unAudioParam self) value time)
+ 
+foreign import javascript unsafe
+        "$1[\"linearRampToValueAtTime\"]($2,\n$3)"
+        js_linearRampToValueAtTime ::
+        JSRef 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 (unAudioParam self) value time)
+ 
+foreign import javascript unsafe
+        "$1[\"exponentialRampToValueAtTime\"]($2,\n$3)"
+        js_exponentialRampToValueAtTime ::
+        JSRef 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 (unAudioParam self) value time)
+ 
+foreign import javascript unsafe
+        "$1[\"setTargetAtTime\"]($2, $3,\n$4)" js_setTargetAtTime ::
+        JSRef 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 (unAudioParam self) target time timeConstant)
+ 
+foreign import javascript unsafe
+        "$1[\"setValueCurveAtTime\"]($2,\n$3, $4)" js_setValueCurveAtTime
+        ::
+        JSRef AudioParam -> JSRef 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 (unAudioParam self)
+         (maybe jsNull (unFloat32Array . toFloat32Array) values)
+         time
+         duration)
+ 
+foreign import javascript unsafe
+        "$1[\"cancelScheduledValues\"]($2)" js_cancelScheduledValues ::
+        JSRef 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 (unAudioParam self) startTime)
+ 
+foreign import javascript unsafe
+        "$1[\"setTargetValueAtTime\"]($2,\n$3, $4)" js_setTargetValueAtTime
+        :: JSRef 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 (unAudioParam self) targetValue time
+         timeConstant)
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unAudioParam self) val)
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unAudioParam self))
+ 
+foreign import javascript unsafe "$1[\"minValue\"]" js_getMinValue
+        :: JSRef 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 (unAudioParam self))
+ 
+foreign import javascript unsafe "$1[\"maxValue\"]" js_getMaxValue
+        :: JSRef 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 (unAudioParam self))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"]"
+        js_getDefaultValue :: JSRef 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 (unAudioParam self))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unAudioParam self)))
+ 
+foreign import javascript unsafe "$1[\"units\"]" js_getUnits ::
+        JSRef 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 (unAudioParam self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"playbackTime\"]"
+        js_getPlaybackTime :: JSRef 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 (unAudioProcessingEvent self))
+ 
+foreign import javascript unsafe "$1[\"inputBuffer\"]"
+        js_getInputBuffer ::
+        JSRef AudioProcessingEvent -> IO (JSRef 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
+      ((js_getInputBuffer (unAudioProcessingEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"outputBuffer\"]"
+        js_getOutputBuffer ::
+        JSRef AudioProcessingEvent -> IO (JSRef 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
+      ((js_getOutputBuffer (unAudioProcessingEvent self)) >>= fromJSRef)
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,33 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"AudioStreamTrack\"]($1)" js_newAudioStreamTrack ::
+        JSRef Dictionary -> IO (JSRef 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
+         (maybe jsNull (unDictionary . toDictionary) audioConstraints)
+         >>= fromJSRefUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unAudioTrack self)))
+ 
+foreign import javascript unsafe "$1[\"kind\"] = $2;" js_setKind ::
+        JSRef 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 (unAudioTrack self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"kind\"]" js_getKind ::
+        JSRef 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 (unAudioTrack self)))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unAudioTrack self)))
+ 
+foreign import javascript unsafe "$1[\"language\"] = $2;"
+        js_setLanguage :: JSRef 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 (unAudioTrack self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"language\"]" js_getLanguage
+        :: JSRef 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 (unAudioTrack self)))
+ 
+foreign import javascript unsafe "$1[\"enabled\"] = $2;"
+        js_setEnabled :: JSRef 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 (unAudioTrack self) val)
+ 
+foreign import javascript unsafe "($1[\"enabled\"] ? 1 : 0)"
+        js_getEnabled :: JSRef 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 (unAudioTrack self))
+ 
+foreign import javascript unsafe "$1[\"sourceBuffer\"]"
+        js_getSourceBuffer :: JSRef AudioTrack -> IO (JSRef 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 ((js_getSourceBuffer (unAudioTrack self)) >>= fromJSRef)
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,61 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef AudioTrackList -> Word -> IO (JSRef 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 ((js_item (unAudioTrackList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getTrackById\"]($2)"
+        js_getTrackById ::
+        JSRef AudioTrackList -> JSString -> IO (JSRef 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
+      ((js_getTrackById (unAudioTrackList self) (toJSString id)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unAudioTrackList 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,30 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"reason\"]" js_getReason ::
+        JSRef 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 (unAutocompleteErrorEvent 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "($1[\"visible\"] ? 1 : 0)"
+        js_getVisible :: JSRef 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 (unBarProp 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,70 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "($1[\"charging\"] ? 1 : 0)"
+        js_getCharging :: JSRef 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 (unBatteryManager self))
+ 
+foreign import javascript unsafe "$1[\"chargingTime\"]"
+        js_getChargingTime :: JSRef 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 (unBatteryManager self))
+ 
+foreign import javascript unsafe "$1[\"dischargingTime\"]"
+        js_getDischargingTime :: JSRef 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 (unBatteryManager self))
+ 
+foreign import javascript unsafe "$1[\"level\"]" js_getLevel ::
+        JSRef 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 (unBatteryManager 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,28 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"url\"]" js_getUrl ::
+        JSRef 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 (unBeforeLoadEvent 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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"returnValue\"] = $2;"
+        js_setReturnValue :: JSRef 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 (unBeforeUnloadEvent self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"returnValue\"]"
+        js_getReturnValue :: JSRef 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 (unBeforeUnloadEvent 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,106 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getFrequencyResponse\"]($2,\n$3, $4)" js_getFrequencyResponse
+        ::
+        JSRef BiquadFilterNode ->
+          JSRef Float32Array ->
+            JSRef Float32Array -> JSRef 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 (unBiquadFilterNode self)
+         (maybe jsNull (unFloat32Array . toFloat32Array) frequencyHz)
+         (maybe jsNull (unFloat32Array . toFloat32Array) magResponse)
+         (maybe jsNull (unFloat32Array . 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 ::
+        JSRef 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 (unBiquadFilterNode self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unBiquadFilterNode self)))
+ 
+foreign import javascript unsafe "$1[\"frequency\"]"
+        js_getFrequency :: JSRef BiquadFilterNode -> IO (JSRef 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
+      ((js_getFrequency (unBiquadFilterNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"detune\"]" js_getDetune ::
+        JSRef BiquadFilterNode -> IO (JSRef 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 ((js_getDetune (unBiquadFilterNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"Q\"]" js_getQ ::
+        JSRef BiquadFilterNode -> IO (JSRef 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 ((js_getQ (unBiquadFilterNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"gain\"]" js_getGain ::
+        JSRef BiquadFilterNode -> IO (JSRef 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 ((js_getGain (unBiquadFilterNode self)) >>= fromJSRef)
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,74 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"Blob\"]()"
+        js_newBlob :: IO (JSRef Blob)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
+newBlob :: (MonadIO m) => m Blob
+newBlob = liftIO (js_newBlob >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "new window[\"Blob\"]($1, $2)"
+        js_newBlob' ::
+        JSRef [JSRef a] -> JSRef BlobPropertyBag -> IO (JSRef Blob)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
+newBlob' ::
+         (MonadIO m, IsBlobPropertyBag options) =>
+           [JSRef a] -> Maybe options -> m Blob
+newBlob' blobParts options
+  = liftIO
+      (toJSRef blobParts >>= \ blobParts' -> js_newBlob' blobParts'
+         (maybe jsNull (unBlobPropertyBag . toBlobPropertyBag) options)
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"slice\"]($2, $3, $4)"
+        js_slice ::
+        JSRef Blob ->
+          Double -> Double -> JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_slice (unBlob (toBlob self)) (fromIntegral start)
+          (fromIntegral end)
+          (toMaybeJSString contentType))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        JSRef 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 (unBlob (toBlob self))))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unBlob (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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"supports\"]($2, $3) ? 1 : 0)" js_supports2 ::
+        JSRef 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 (unCSS self) (toJSString property)
+         (toJSString value))
+ 
+foreign import javascript unsafe "($1[\"supports\"]($2) ? 1 : 0)"
+        js_supports :: JSRef 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 (unCSS 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,41 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"encoding\"] = $2;"
+        js_setEncoding ::
+        JSRef CSSCharsetRule -> JSRef (Maybe 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 (unCSSCharsetRule self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"encoding\"]" js_getEncoding
+        :: JSRef CSSCharsetRule -> IO (JSRef (Maybe 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 (unCSSCharsetRule 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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"fontface\"]" js_getFontface
+        :: JSRef CSSFontFaceLoadEvent -> IO (JSRef 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
+      ((js_getFontface (unCSSFontFaceLoadEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+        JSRef CSSFontFaceLoadEvent -> IO (JSRef 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
+      ((js_getError (unCSSFontFaceLoadEvent self)) >>= fromJSRef)
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,28 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        JSRef CSSFontFaceRule -> IO (JSRef 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 ((js_getStyle (unCSSFontFaceRule self)) >>= fromJSRef)
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,48 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef CSSImportRule -> IO (JSRef (Maybe 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 (unCSSImportRule self)))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        JSRef CSSImportRule -> IO (JSRef 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 ((js_getMedia (unCSSImportRule self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"styleSheet\"]"
+        js_getStyleSheet :: JSRef CSSImportRule -> IO (JSRef 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 ((js_getStyleSheet (unCSSImportRule self)) >>= fromJSRef)
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,48 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"keyText\"] = $2;"
+        js_setKeyText :: JSRef 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 (unCSSKeyframeRule self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"keyText\"]" js_getKeyText ::
+        JSRef 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 (unCSSKeyframeRule self)))
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        JSRef CSSKeyframeRule -> IO (JSRef 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 ((js_getStyle (unCSSKeyframeRule self)) >>= fromJSRef)
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,104 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"insertRule\"]($2)"
+        js_insertRule :: JSRef 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 (unCSSKeyframesRule self) (toJSString rule))
+ 
+foreign import javascript unsafe "$1[\"appendRule\"]($2)"
+        js_appendRule :: JSRef 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 (unCSSKeyframesRule self) (toJSString rule))
+ 
+foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
+        js_deleteRule :: JSRef 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 (unCSSKeyframesRule self) (toJSString key))
+ 
+foreign import javascript unsafe "$1[\"findRule\"]($2)" js_findRule
+        :: JSRef CSSKeyframesRule -> JSString -> IO (JSRef 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
+      ((js_findRule (unCSSKeyframesRule self) (toJSString key)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        JSRef CSSKeyframesRule -> Word -> IO (JSRef 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 ((js__get (unCSSKeyframesRule self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef CSSKeyframesRule -> JSRef (Maybe 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 (unCSSKeyframesRule self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef CSSKeyframesRule -> IO (JSRef (Maybe 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 (unCSSKeyframesRule self)))
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: JSRef CSSKeyframesRule -> IO (JSRef 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 ((js_getCssRules (unCSSKeyframesRule self)) >>= fromJSRef)
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,55 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
+        js_insertRule :: JSRef 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 (unCSSMediaRule self) (toJSString rule) index)
+ 
+foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
+        js_deleteRule :: JSRef 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 (unCSSMediaRule self) index)
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        JSRef CSSMediaRule -> IO (JSRef 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 ((js_getMedia (unCSSMediaRule self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: JSRef CSSMediaRule -> IO (JSRef 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 ((js_getCssRules (unCSSMediaRule self)) >>= fromJSRef)
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,51 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"selectorText\"] = $2;"
+        js_setSelectorText ::
+        JSRef CSSPageRule -> JSRef (Maybe 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 (unCSSPageRule self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"selectorText\"]"
+        js_getSelectorText ::
+        JSRef CSSPageRule -> IO (JSRef (Maybe 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 (unCSSPageRule self)))
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        JSRef CSSPageRule -> IO (JSRef 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 ((js_getStyle (unCSSPageRule self)) >>= fromJSRef)
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,143 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setFloatValue\"]($2, $3)"
+        js_setFloatValue ::
+        JSRef 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 (unCSSPrimitiveValue self) unitType floatValue)
+ 
+foreign import javascript unsafe "$1[\"getFloatValue\"]($2)"
+        js_getFloatValue :: JSRef 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 (unCSSPrimitiveValue self) unitType)
+ 
+foreign import javascript unsafe "$1[\"setStringValue\"]($2, $3)"
+        js_setStringValue ::
+        JSRef 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 (unCSSPrimitiveValue self) stringType
+         (toJSString stringValue))
+ 
+foreign import javascript unsafe "$1[\"getStringValue\"]()"
+        js_getStringValue :: JSRef 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 (unCSSPrimitiveValue self)))
+ 
+foreign import javascript unsafe "$1[\"getCounterValue\"]()"
+        js_getCounterValue :: JSRef CSSPrimitiveValue -> IO (JSRef 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
+      ((js_getCounterValue (unCSSPrimitiveValue self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getRectValue\"]()"
+        js_getRectValue :: JSRef CSSPrimitiveValue -> IO (JSRef 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
+      ((js_getRectValue (unCSSPrimitiveValue self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getRGBColorValue\"]()"
+        js_getRGBColorValue ::
+        JSRef CSSPrimitiveValue -> IO (JSRef 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
+      ((js_getRGBColorValue (unCSSPrimitiveValue self)) >>= fromJSRef)
+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 :: JSRef 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 (unCSSPrimitiveValue 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,91 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef 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 (unCSSRule (toCSSRule self)))
+ 
+foreign import javascript unsafe "$1[\"cssText\"] = $2;"
+        js_setCssText :: JSRef CSSRule -> JSRef (Maybe 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 (unCSSRule (toCSSRule self)) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"cssText\"]" js_getCssText ::
+        JSRef CSSRule -> IO (JSRef (Maybe 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 (unCSSRule (toCSSRule self))))
+ 
+foreign import javascript unsafe "$1[\"parentStyleSheet\"]"
+        js_getParentStyleSheet :: JSRef CSSRule -> IO (JSRef 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
+      ((js_getParentStyleSheet (unCSSRule (toCSSRule self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"parentRule\"]"
+        js_getParentRule :: JSRef CSSRule -> IO (JSRef 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
+      ((js_getParentRule (unCSSRule (toCSSRule self))) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef CSSRuleList -> Word -> IO (JSRef 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 ((js_item (unCSSRuleList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unCSSRuleList 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,182 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getPropertyValue\"]($2)"
+        js_getPropertyValue ::
+        JSRef CSSStyleDeclaration ->
+          JSString -> IO (JSRef (Maybe 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 (unCSSStyleDeclaration self)
+            (toJSString propertyName)))
+ 
+foreign import javascript unsafe "$1[\"getPropertyCSSValue\"]($2)"
+        js_getPropertyCSSValue ::
+        JSRef CSSStyleDeclaration -> JSString -> IO (JSRef 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
+      ((js_getPropertyCSSValue (unCSSStyleDeclaration self)
+          (toJSString propertyName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeProperty\"]($2)"
+        js_removeProperty ::
+        JSRef CSSStyleDeclaration ->
+          JSString -> IO (JSRef (Maybe 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 (unCSSStyleDeclaration self)
+            (toJSString propertyName)))
+ 
+foreign import javascript unsafe "$1[\"getPropertyPriority\"]($2)"
+        js_getPropertyPriority ::
+        JSRef CSSStyleDeclaration ->
+          JSString -> IO (JSRef (Maybe 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 (unCSSStyleDeclaration self)
+            (toJSString propertyName)))
+ 
+foreign import javascript unsafe "$1[\"setProperty\"]($2, $3, $4)"
+        js_setProperty ::
+        JSRef CSSStyleDeclaration ->
+          JSString -> JSRef (Maybe 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 (unCSSStyleDeclaration self)
+         (toJSString propertyName)
+         (toMaybeJSString value)
+         (toJSString priority))
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef 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 (unCSSStyleDeclaration self) index))
+ 
+foreign import javascript unsafe "$1[\"getPropertyShorthand\"]($2)"
+        js_getPropertyShorthand ::
+        JSRef CSSStyleDeclaration ->
+          JSString -> IO (JSRef (Maybe 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 (unCSSStyleDeclaration self)
+            (toJSString propertyName)))
+ 
+foreign import javascript unsafe
+        "($1[\"isPropertyImplicit\"]($2) ? 1 : 0)" js_isPropertyImplicit ::
+        JSRef 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 (unCSSStyleDeclaration self)
+         (toJSString propertyName))
+ 
+foreign import javascript unsafe "$1[\"cssText\"] = $2;"
+        js_setCssText ::
+        JSRef CSSStyleDeclaration -> JSRef (Maybe 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 (unCSSStyleDeclaration self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"cssText\"]" js_getCssText ::
+        JSRef CSSStyleDeclaration -> IO (JSRef (Maybe 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 (unCSSStyleDeclaration self)))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unCSSStyleDeclaration self))
+ 
+foreign import javascript unsafe "$1[\"parentRule\"]"
+        js_getParentRule :: JSRef CSSStyleDeclaration -> IO (JSRef 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
+      ((js_getParentRule (unCSSStyleDeclaration self)) >>= fromJSRef)
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,52 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"selectorText\"] = $2;"
+        js_setSelectorText ::
+        JSRef CSSStyleRule -> JSRef (Maybe 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 (unCSSStyleRule self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"selectorText\"]"
+        js_getSelectorText ::
+        JSRef CSSStyleRule -> IO (JSRef (Maybe 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 (unCSSStyleRule self)))
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        JSRef CSSStyleRule -> IO (JSRef 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 ((js_getStyle (unCSSStyleRule self)) >>= fromJSRef)
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,87 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
+        js_insertRule :: JSRef 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 (unCSSStyleSheet self) (toJSString rule) index)
+ 
+foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
+        js_deleteRule :: JSRef 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 (unCSSStyleSheet self) index)
+ 
+foreign import javascript unsafe "$1[\"addRule\"]($2, $3, $4)"
+        js_addRule ::
+        JSRef 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 (unCSSStyleSheet self) (toJSString selector)
+         (toJSString style)
+         index)
+ 
+foreign import javascript unsafe "$1[\"removeRule\"]($2)"
+        js_removeRule :: JSRef 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 (unCSSStyleSheet self) index)
+ 
+foreign import javascript unsafe "$1[\"ownerRule\"]"
+        js_getOwnerRule :: JSRef CSSStyleSheet -> IO (JSRef 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 ((js_getOwnerRule (unCSSStyleSheet self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: JSRef CSSStyleSheet -> IO (JSRef 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 ((js_getCssRules (unCSSStyleSheet self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rules\"]" js_getRules ::
+        JSRef CSSStyleSheet -> IO (JSRef 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 ((js_getRules (unCSSStyleSheet self)) >>= fromJSRef)
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,59 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"insertRule\"]($2, $3)"
+        js_insertRule ::
+        JSRef 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 (unCSSSupportsRule self) (toJSString rule) index)
+ 
+foreign import javascript unsafe "$1[\"deleteRule\"]($2)"
+        js_deleteRule :: JSRef 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 (unCSSSupportsRule self) index)
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: JSRef CSSSupportsRule -> IO (JSRef 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 ((js_getCssRules (unCSSSupportsRule self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"conditionText\"]"
+        js_getConditionText :: JSRef 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 (unCSSSupportsRule 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,58 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 :: JSRef CSSValue -> JSRef (Maybe 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 (unCSSValue (toCSSValue self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"cssText\"]" js_getCssText ::
+        JSRef CSSValue -> IO (JSRef (Maybe 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 (unCSSValue (toCSSValue self))))
+ 
+foreign import javascript unsafe "$1[\"cssValueType\"]"
+        js_getCssValueType :: JSRef 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 (unCSSValue (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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef CSSValueList -> Word -> IO (JSRef 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
+      ((js_item (unCSSValueList (toCSSValueList self)) index) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unCSSValueList (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,31 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"addColorStop\"]($2, $3)"
+        js_addColorStop ::
+        JSRef 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 (unCanvasGradient 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,33 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"canvas\"]" js_getCanvas ::
+        JSRef CanvasRenderingContext -> IO (JSRef 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
+      ((js_getCanvas
+          (unCanvasRenderingContext (toCanvasRenderingContext self)))
+         >>= fromJSRef)
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,1738 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"save\"]()" js_save ::
+        JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"restore\"]()" js_restore ::
+        JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"scale\"]($2, $3)" js_scale
+        :: JSRef 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 (unCanvasRenderingContext2D self) sx sy)
+ 
+foreign import javascript unsafe "$1[\"rotate\"]($2)" js_rotate ::
+        JSRef 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 (unCanvasRenderingContext2D self) angle)
+ 
+foreign import javascript unsafe "$1[\"translate\"]($2, $3)"
+        js_translate ::
+        JSRef 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 (unCanvasRenderingContext2D self) tx ty)
+ 
+foreign import javascript unsafe
+        "$1[\"transform\"]($2, $3, $4, $5,\n$6, $7)" js_transform ::
+        JSRef 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 (unCanvasRenderingContext2D self) m11 m12 m21 m22 dx
+         dy)
+ 
+foreign import javascript unsafe
+        "$1[\"setTransform\"]($2, $3, $4,\n$5, $6, $7)" js_setTransform ::
+        JSRef 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 (unCanvasRenderingContext2D self) m11 m12 m21 m22
+         dx
+         dy)
+ 
+foreign import javascript unsafe
+        "$1[\"createLinearGradient\"]($2,\n$3, $4, $5)"
+        js_createLinearGradient ::
+        JSRef CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO (JSRef 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
+      ((js_createLinearGradient (unCanvasRenderingContext2D self) x0 y0
+          x1
+          y1)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createRadialGradient\"]($2,\n$3, $4, $5, $6, $7)"
+        js_createRadialGradient ::
+        JSRef CanvasRenderingContext2D ->
+          Float ->
+            Float ->
+              Float -> Float -> Float -> Float -> IO (JSRef 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
+      ((js_createRadialGradient (unCanvasRenderingContext2D self) x0 y0
+          r0
+          x1
+          y1
+          r1)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"setLineDash\"]($2)"
+        js_setLineDash ::
+        JSRef CanvasRenderingContext2D -> JSRef [Float] -> 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
+      (toJSRef dash >>=
+         \ dash' -> js_setLineDash (unCanvasRenderingContext2D self) dash')
+ 
+foreign import javascript unsafe "$1[\"getLineDash\"]()"
+        js_getLineDash ::
+        JSRef CanvasRenderingContext2D -> IO (JSRef [Float])
+
+-- | <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 (unCanvasRenderingContext2D self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"clearRect\"]($2, $3, $4, $5)" js_clearRect ::
+        JSRef 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 (unCanvasRenderingContext2D self) x y width height)
+ 
+foreign import javascript unsafe "$1[\"fillRect\"]($2, $3, $4, $5)"
+        js_fillRect ::
+        JSRef 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 (unCanvasRenderingContext2D self) x y width height)
+ 
+foreign import javascript unsafe "$1[\"beginPath\"]()" js_beginPath
+        :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"closePath\"]()" js_closePath
+        :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"moveTo\"]($2, $3)" js_moveTo
+        :: JSRef 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 (unCanvasRenderingContext2D self) x y)
+ 
+foreign import javascript unsafe "$1[\"lineTo\"]($2, $3)" js_lineTo
+        :: JSRef 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 (unCanvasRenderingContext2D self) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"quadraticCurveTo\"]($2, $3,\n$4, $5)" js_quadraticCurveTo ::
+        JSRef 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 (unCanvasRenderingContext2D self) cpx cpy x y)
+ 
+foreign import javascript unsafe
+        "$1[\"bezierCurveTo\"]($2, $3, $4,\n$5, $6, $7)" js_bezierCurveTo
+        ::
+        JSRef 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 (unCanvasRenderingContext2D self) cp1x cp1y cp2x
+         cp2y
+         x
+         y)
+ 
+foreign import javascript unsafe
+        "$1[\"arcTo\"]($2, $3, $4, $5, $6)" js_arcTo ::
+        JSRef 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 (unCanvasRenderingContext2D self) x1 y1 x2 y2 radius)
+ 
+foreign import javascript unsafe "$1[\"rect\"]($2, $3, $4, $5)"
+        js_rect ::
+        JSRef 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 (unCanvasRenderingContext2D self) x y width height)
+ 
+foreign import javascript unsafe
+        "$1[\"arc\"]($2, $3, $4, $5, $6,\n$7)" js_arc ::
+        JSRef 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 (unCanvasRenderingContext2D self) x y radius startAngle
+         endAngle
+         anticlockwise)
+ 
+foreign import javascript unsafe "$1[\"fill\"]($2, $3)" js_fillPath
+        ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef Path2D -> JSRef CanvasWindingRule -> 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef path)
+         (pToJSRef winding))
+ 
+foreign import javascript unsafe "$1[\"stroke\"]($2)" js_strokePath
+        :: JSRef CanvasRenderingContext2D -> JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef path))
+ 
+foreign import javascript unsafe "$1[\"clip\"]($2, $3)" js_clipPath
+        ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef Path2D -> JSRef CanvasWindingRule -> 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef path)
+         (pToJSRef winding))
+ 
+foreign import javascript unsafe "$1[\"fill\"]($2)" js_fill ::
+        JSRef CanvasRenderingContext2D -> JSRef CanvasWindingRule -> 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 (unCanvasRenderingContext2D self) (pToJSRef winding))
+ 
+foreign import javascript unsafe "$1[\"stroke\"]()" js_stroke ::
+        JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"clip\"]($2)" js_clip ::
+        JSRef CanvasRenderingContext2D -> JSRef CanvasWindingRule -> 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 (unCanvasRenderingContext2D self) (pToJSRef winding))
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInPath\"]($2, $3, $4,\n$5) ? 1 : 0)"
+        js_isPointInPathPath ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef Path2D ->
+            Float -> Float -> JSRef CanvasWindingRule -> 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef path)
+         x
+         y
+         (pToJSRef winding))
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInStroke\"]($2, $3,\n$4) ? 1 : 0)"
+        js_isPointInStrokePath ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef path)
+         x
+         y)
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInPath\"]($2, $3,\n$4) ? 1 : 0)" js_isPointInPath ::
+        JSRef CanvasRenderingContext2D ->
+          Float -> Float -> JSRef CanvasWindingRule -> 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 (unCanvasRenderingContext2D self) x y
+         (pToJSRef winding))
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInStroke\"]($2,\n$3) ? 1 : 0)" js_isPointInStroke ::
+        JSRef 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 (unCanvasRenderingContext2D self) x y)
+ 
+foreign import javascript unsafe "$1[\"measureText\"]($2)"
+        js_measureText ::
+        JSRef CanvasRenderingContext2D ->
+          JSString -> IO (JSRef 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
+      ((js_measureText (unCanvasRenderingContext2D self)
+          (toJSString text))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"setAlpha\"]($2)" js_setAlpha
+        :: JSRef 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 (unCanvasRenderingContext2D self) alpha)
+ 
+foreign import javascript unsafe
+        "$1[\"setCompositeOperation\"]($2)" js_setCompositeOperation ::
+        JSRef 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 (unCanvasRenderingContext2D self)
+         (toJSString compositeOperation))
+ 
+foreign import javascript unsafe "$1[\"setLineWidth\"]($2)"
+        js_setLineWidthFunction ::
+        JSRef 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 (unCanvasRenderingContext2D self) width)
+ 
+foreign import javascript unsafe "$1[\"setLineCap\"]($2)"
+        js_setLineCapFunction ::
+        JSRef 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 (unCanvasRenderingContext2D self)
+         (toJSString cap))
+ 
+foreign import javascript unsafe "$1[\"setLineJoin\"]($2)"
+        js_setLineJoinFunction ::
+        JSRef 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 (unCanvasRenderingContext2D self)
+         (toJSString join))
+ 
+foreign import javascript unsafe "$1[\"setMiterLimit\"]($2)"
+        js_setMiterLimitFunction ::
+        JSRef 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 (unCanvasRenderingContext2D self) limit)
+ 
+foreign import javascript unsafe "$1[\"clearShadow\"]()"
+        js_clearShadow :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"fillText\"]($2, $3, $4, $5)"
+        js_fillText ::
+        JSRef 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 (unCanvasRenderingContext2D self) (toJSString text) x
+         y
+         maxWidth)
+ 
+foreign import javascript unsafe
+        "$1[\"strokeText\"]($2, $3, $4, $5)" js_strokeText ::
+        JSRef 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 (unCanvasRenderingContext2D self) (toJSString text)
+         x
+         y
+         maxWidth)
+ 
+foreign import javascript unsafe "$1[\"setStrokeColor\"]($2, $3)"
+        js_setStrokeColor ::
+        JSRef 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 (unCanvasRenderingContext2D self)
+         (toJSString color)
+         alpha)
+ 
+foreign import javascript unsafe "$1[\"setStrokeColor\"]($2, $3)"
+        js_setStrokeColorGray ::
+        JSRef 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 (unCanvasRenderingContext2D self) grayLevel
+         alpha)
+ 
+foreign import javascript unsafe
+        "$1[\"setStrokeColor\"]($2, $3, $4,\n$5)" js_setStrokeColorRGB ::
+        JSRef 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 (unCanvasRenderingContext2D self) r g b a)
+ 
+foreign import javascript unsafe
+        "$1[\"setStrokeColor\"]($2, $3, $4,\n$5, $6)" js_setStrokeColorCYMK
+        ::
+        JSRef 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 (unCanvasRenderingContext2D self) c m y k a)
+ 
+foreign import javascript unsafe "$1[\"setFillColor\"]($2, $3)"
+        js_setFillColor ::
+        JSRef 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 (unCanvasRenderingContext2D self)
+         (toJSString color)
+         alpha)
+ 
+foreign import javascript unsafe "$1[\"setFillColor\"]($2, $3)"
+        js_setFillColorGray ::
+        JSRef 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 (unCanvasRenderingContext2D self) grayLevel
+         alpha)
+ 
+foreign import javascript unsafe
+        "$1[\"setFillColor\"]($2, $3, $4,\n$5)" js_setFillColorRGB ::
+        JSRef 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 (unCanvasRenderingContext2D self) r g b a)
+ 
+foreign import javascript unsafe
+        "$1[\"setFillColor\"]($2, $3, $4,\n$5, $6)" js_setFillColorCYMK ::
+        JSRef 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 (unCanvasRenderingContext2D self) c m y k a)
+ 
+foreign import javascript unsafe
+        "$1[\"strokeRect\"]($2, $3, $4, $5)" js_strokeRect ::
+        JSRef 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 (unCanvasRenderingContext2D self) x y width height)
+ 
+foreign import javascript unsafe "$1[\"drawImage\"]($2, $3, $4)"
+        js_drawImage ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef image)
+         x
+         y)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6)" js_drawImageScaled ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef image)
+         x
+         y
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
+        js_drawImagePart ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef image)
+         sx
+         sy
+         sw
+         sh
+         dx
+         dy
+         dw
+         dh)
+ 
+foreign import javascript unsafe "$1[\"drawImage\"]($2, $3, $4)"
+        js_drawImageFromCanvas ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef canvas)
+         x
+         y)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6)"
+        js_drawImageFromCanvasScaled ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef canvas)
+         x
+         y
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
+        js_drawImageFromCanvasPart ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef canvas)
+         sx
+         sy
+         sw
+         sh
+         dx
+         dy
+         dw
+         dh)
+ 
+foreign import javascript unsafe "$1[\"drawImage\"]($2, $3, $4)"
+        js_drawImageFromVideo ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef video)
+         x
+         y)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6)"
+        js_drawImageFromVideoScaled ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef video)
+         x
+         y
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
+        js_drawImageFromVideoPart ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef 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 ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef 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 ::
+        JSRef 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 (unCanvasRenderingContext2D self) width height blur
+         (toJSString color)
+         alpha)
+ 
+foreign import javascript unsafe
+        "$1[\"setShadow\"]($2, $3, $4, $5,\n$6)" js_setShadowGray ::
+        JSRef 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 (unCanvasRenderingContext2D self) width height
+         blur
+         grayLevel
+         alpha)
+ 
+foreign import javascript unsafe
+        "$1[\"setShadow\"]($2, $3, $4, $5,\n$6, $7, $8)" js_setShadowRGB ::
+        JSRef 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 (unCanvasRenderingContext2D 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 ::
+        JSRef 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 (unCanvasRenderingContext2D self) width height
+         blur
+         c
+         m
+         y
+         k
+         a)
+ 
+foreign import javascript unsafe "$1[\"putImageData\"]($2, $3, $4)"
+        js_putImageData ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef imagedata)
+         dx
+         dy)
+ 
+foreign import javascript unsafe
+        "$1[\"putImageData\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_putImageDataDirty ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef imagedata)
+         dx
+         dy
+         dirtyX
+         dirtyY
+         dirtyWidth
+         dirtyHeight)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitPutImageDataHD\"]($2,\n$3, $4)" js_webkitPutImageDataHD
+        ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef imagedata)
+         dx
+         dy)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitPutImageDataHD\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_webkitPutImageDataHDDirty ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef imagedata)
+         dx
+         dy
+         dirtyX
+         dirtyY
+         dirtyWidth
+         dirtyHeight)
+ 
+foreign import javascript unsafe "$1[\"createPattern\"]($2, $3)"
+        js_createPatternFromCanvas ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef HTMLCanvasElement ->
+            JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_createPatternFromCanvas (unCanvasRenderingContext2D self)
+          (maybe jsNull pToJSRef canvas)
+          (toMaybeJSString repetitionType))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createPattern\"]($2, $3)"
+        js_createPattern ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef HTMLImageElement ->
+            JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_createPattern (unCanvasRenderingContext2D self)
+          (maybe jsNull pToJSRef image)
+          (toMaybeJSString repetitionType))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createImageData\"]($2)"
+        js_createImageData ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef ImageData -> IO (JSRef 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
+      ((js_createImageData (unCanvasRenderingContext2D self)
+          (maybe jsNull pToJSRef imagedata))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createImageData\"]($2, $3)"
+        js_createImageDataSize ::
+        JSRef CanvasRenderingContext2D ->
+          Float -> Float -> IO (JSRef 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
+      ((js_createImageDataSize (unCanvasRenderingContext2D self) sw sh)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getImageData\"]($2, $3, $4,\n$5)" js_getImageData ::
+        JSRef CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO (JSRef 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
+      ((js_getImageData (unCanvasRenderingContext2D self) sx sy sw sh)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetImageDataHD\"]($2,\n$3, $4, $5)"
+        js_webkitGetImageDataHD ::
+        JSRef CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO (JSRef 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
+      ((js_webkitGetImageDataHD (unCanvasRenderingContext2D self) sx sy
+          sw
+          sh)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"drawFocusIfNeeded\"]($2)"
+        js_drawFocusIfNeeded ::
+        JSRef CanvasRenderingContext2D -> JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "$1[\"drawFocusIfNeeded\"]($2, $3)" js_drawFocusIfNeededPath ::
+        JSRef CanvasRenderingContext2D ->
+          JSRef Path2D -> JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull pToJSRef path)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe "$1[\"globalAlpha\"] = $2;"
+        js_setGlobalAlpha ::
+        JSRef 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 (unCanvasRenderingContext2D self) val)
+ 
+foreign import javascript unsafe "$1[\"globalAlpha\"]"
+        js_getGlobalAlpha :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe
+        "$1[\"globalCompositeOperation\"] = $2;"
+        js_setGlobalCompositeOperation ::
+        JSRef CanvasRenderingContext2D -> JSRef (Maybe 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 (unCanvasRenderingContext2D self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"globalCompositeOperation\"]"
+        js_getGlobalCompositeOperation ::
+        JSRef CanvasRenderingContext2D -> IO (JSRef (Maybe 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 (unCanvasRenderingContext2D self)))
+ 
+foreign import javascript unsafe "$1[\"lineWidth\"] = $2;"
+        js_setLineWidth :: JSRef 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 (unCanvasRenderingContext2D self) val)
+ 
+foreign import javascript unsafe "$1[\"lineWidth\"]"
+        js_getLineWidth :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"lineCap\"] = $2;"
+        js_setLineCap ::
+        JSRef CanvasRenderingContext2D -> JSRef (Maybe 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 (unCanvasRenderingContext2D self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"lineCap\"]" js_getLineCap ::
+        JSRef CanvasRenderingContext2D -> IO (JSRef (Maybe 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 (unCanvasRenderingContext2D self)))
+ 
+foreign import javascript unsafe "$1[\"lineJoin\"] = $2;"
+        js_setLineJoin ::
+        JSRef CanvasRenderingContext2D -> JSRef (Maybe 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 (unCanvasRenderingContext2D self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"lineJoin\"]" js_getLineJoin
+        :: JSRef CanvasRenderingContext2D -> IO (JSRef (Maybe 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 (unCanvasRenderingContext2D self)))
+ 
+foreign import javascript unsafe "$1[\"miterLimit\"] = $2;"
+        js_setMiterLimit ::
+        JSRef 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 (unCanvasRenderingContext2D self) val)
+ 
+foreign import javascript unsafe "$1[\"miterLimit\"]"
+        js_getMiterLimit :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"shadowOffsetX\"] = $2;"
+        js_setShadowOffsetX ::
+        JSRef 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 (unCanvasRenderingContext2D self) val)
+ 
+foreign import javascript unsafe "$1[\"shadowOffsetX\"]"
+        js_getShadowOffsetX :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"shadowOffsetY\"] = $2;"
+        js_setShadowOffsetY ::
+        JSRef 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 (unCanvasRenderingContext2D self) val)
+ 
+foreign import javascript unsafe "$1[\"shadowOffsetY\"]"
+        js_getShadowOffsetY :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"shadowBlur\"] = $2;"
+        js_setShadowBlur ::
+        JSRef 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 (unCanvasRenderingContext2D self) val)
+ 
+foreign import javascript unsafe "$1[\"shadowBlur\"]"
+        js_getShadowBlur :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"shadowColor\"] = $2;"
+        js_setShadowColor ::
+        JSRef CanvasRenderingContext2D -> JSRef (Maybe 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 (unCanvasRenderingContext2D self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"shadowColor\"]"
+        js_getShadowColor ::
+        JSRef CanvasRenderingContext2D -> IO (JSRef (Maybe 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 (unCanvasRenderingContext2D self)))
+ 
+foreign import javascript unsafe "$1[\"lineDashOffset\"] = $2;"
+        js_setLineDashOffset ::
+        JSRef 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 (unCanvasRenderingContext2D self) val)
+ 
+foreign import javascript unsafe "$1[\"lineDashOffset\"]"
+        js_getLineDashOffset :: JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"webkitLineDash\"] = $2;"
+        js_setWebkitLineDash ::
+        JSRef CanvasRenderingContext2D -> JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull (unArray . toArray) val))
+ 
+foreign import javascript unsafe "$1[\"webkitLineDash\"]"
+        js_getWebkitLineDash ::
+        JSRef CanvasRenderingContext2D -> IO (JSRef 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
+      ((js_getWebkitLineDash (unCanvasRenderingContext2D self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitLineDashOffset\"] = $2;" js_setWebkitLineDashOffset ::
+        JSRef 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 (unCanvasRenderingContext2D self) val)
+ 
+foreign import javascript unsafe "$1[\"webkitLineDashOffset\"]"
+        js_getWebkitLineDashOffset ::
+        JSRef 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 (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe "$1[\"font\"] = $2;" js_setFont ::
+        JSRef 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 (unCanvasRenderingContext2D self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"font\"]" js_getFont ::
+        JSRef 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 (unCanvasRenderingContext2D self)))
+ 
+foreign import javascript unsafe "$1[\"textAlign\"] = $2;"
+        js_setTextAlign ::
+        JSRef 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 (unCanvasRenderingContext2D self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"textAlign\"]"
+        js_getTextAlign :: JSRef 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 (unCanvasRenderingContext2D self)))
+ 
+foreign import javascript unsafe "$1[\"textBaseline\"] = $2;"
+        js_setTextBaseline ::
+        JSRef 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 (unCanvasRenderingContext2D self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"textBaseline\"]"
+        js_getTextBaseline :: JSRef 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 (unCanvasRenderingContext2D self)))
+ 
+foreign import javascript unsafe "$1[\"direction\"] = $2;"
+        js_setDirection ::
+        JSRef 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 (unCanvasRenderingContext2D self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"direction\"]"
+        js_getDirection :: JSRef 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 (unCanvasRenderingContext2D self)))
+ 
+foreign import javascript unsafe "$1[\"strokeStyle\"] = $2;"
+        js_setStrokeStyle ::
+        JSRef CanvasRenderingContext2D -> JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull (unCanvasStyle . toCanvasStyle) val))
+ 
+foreign import javascript unsafe "$1[\"strokeStyle\"]"
+        js_getStrokeStyle ::
+        JSRef CanvasRenderingContext2D -> IO (JSRef 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
+      ((js_getStrokeStyle (unCanvasRenderingContext2D self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"fillStyle\"] = $2;"
+        js_setFillStyle ::
+        JSRef CanvasRenderingContext2D -> JSRef 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 (unCanvasRenderingContext2D self)
+         (maybe jsNull (unCanvasStyle . toCanvasStyle) val))
+ 
+foreign import javascript unsafe "$1[\"fillStyle\"]"
+        js_getFillStyle ::
+        JSRef CanvasRenderingContext2D -> IO (JSRef 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
+      ((js_getFillStyle (unCanvasRenderingContext2D self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitBackingStorePixelRatio\"]"
+        js_getWebkitBackingStorePixelRatio ::
+        JSRef 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
+         (unCanvasRenderingContext2D self))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitImageSmoothingEnabled\"] = $2;"
+        js_setWebkitImageSmoothingEnabled ::
+        JSRef 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
+         (unCanvasRenderingContext2D self)
+         val)
+ 
+foreign import javascript unsafe
+        "($1[\"webkitImageSmoothingEnabled\"] ? 1 : 0)"
+        js_getWebkitImageSmoothingEnabled ::
+        JSRef 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
+         (unCanvasRenderingContext2D 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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"max\"]" js_getMax ::
+        JSRef CapabilityRange -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.max Mozilla CapabilityRange.max documentation> 
+getMax :: (MonadIO m) => CapabilityRange -> m (JSRef a)
+getMax self = liftIO (js_getMax (unCapabilityRange self))
+ 
+foreign import javascript unsafe "$1[\"min\"]" js_getMin ::
+        JSRef CapabilityRange -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.min Mozilla CapabilityRange.min documentation> 
+getMin :: (MonadIO m) => CapabilityRange -> m (JSRef a)
+getMin self = liftIO (js_getMin (unCapabilityRange self))
+ 
+foreign import javascript unsafe "($1[\"supported\"] ? 1 : 0)"
+        js_getSupported :: JSRef 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 (unCapabilityRange 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,118 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"substringData\"]($2, $3)"
+        js_substringData ::
+        JSRef CharacterData -> Word -> Word -> IO (JSRef (Maybe 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 (unCharacterData (toCharacterData self)) offset
+            length))
+ 
+foreign import javascript unsafe "$1[\"appendData\"]($2)"
+        js_appendData :: JSRef 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 (unCharacterData (toCharacterData self))
+         (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"insertData\"]($2, $3)"
+        js_insertData :: JSRef 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 (unCharacterData (toCharacterData self)) offset
+         (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"deleteData\"]($2, $3)"
+        js_deleteData :: JSRef 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 (unCharacterData (toCharacterData self)) offset
+         length)
+ 
+foreign import javascript unsafe "$1[\"replaceData\"]($2, $3, $4)"
+        js_replaceData ::
+        JSRef 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 (unCharacterData (toCharacterData self)) offset
+         length
+         (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"data\"] = $2;" js_setData ::
+        JSRef CharacterData -> JSRef (Maybe 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 (unCharacterData (toCharacterData self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"data\"]" js_getData ::
+        JSRef CharacterData -> IO (JSRef (Maybe 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 (unCharacterData (toCharacterData self))))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unCharacterData (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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"remove\"]()" js_remove ::
+        JSRef 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 (unChildNode 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"top\"]" js_getTop ::
+        JSRef 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 (unClientRect self))
+ 
+foreign import javascript unsafe "$1[\"right\"]" js_getRight ::
+        JSRef 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 (unClientRect self))
+ 
+foreign import javascript unsafe "$1[\"bottom\"]" js_getBottom ::
+        JSRef 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 (unClientRect self))
+ 
+foreign import javascript unsafe "$1[\"left\"]" js_getLeft ::
+        JSRef 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 (unClientRect self))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unClientRect self))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unClientRect 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef ClientRectList -> Word -> IO (JSRef 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 ((js_item (unClientRectList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unClientRectList 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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "($1[\"wasClean\"] ? 1 : 0)"
+        js_getWasClean :: JSRef 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 (unCloseEvent self))
+ 
+foreign import javascript unsafe "$1[\"code\"]" js_getCode ::
+        JSRef 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 (unCloseEvent self))
+ 
+foreign import javascript unsafe "$1[\"reason\"]" js_getReason ::
+        JSRef 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 (unCloseEvent 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,98 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clearConsoleMessages\"]()"
+        js_clearConsoleMessages :: JSRef 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 (unCommandLineAPIHost self))
+ 
+foreign import javascript unsafe "$1[\"copyText\"]($2)" js_copyText
+        :: JSRef 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 (unCommandLineAPIHost self) (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"inspect\"]($2, $3)"
+        js_inspect ::
+        JSRef CommandLineAPIHost -> JSRef a -> JSRef a -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspect Mozilla CommandLineAPIHost.inspect documentation> 
+inspect ::
+        (MonadIO m) => CommandLineAPIHost -> JSRef a -> JSRef a -> m ()
+inspect self objectId hints
+  = liftIO (js_inspect (unCommandLineAPIHost self) objectId hints)
+ 
+foreign import javascript unsafe "$1[\"inspectedObject\"]($2)"
+        js_inspectedObject ::
+        JSRef CommandLineAPIHost -> Int -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
+inspectedObject ::
+                (MonadIO m) => CommandLineAPIHost -> Int -> m (JSRef a)
+inspectedObject self num
+  = liftIO (js_inspectedObject (unCommandLineAPIHost self) num)
+ 
+foreign import javascript unsafe "$1[\"getEventListeners\"]($2)"
+        js_getEventListeners ::
+        JSRef CommandLineAPIHost -> JSRef Node -> IO (JSRef 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
+      ((js_getEventListeners (unCommandLineAPIHost self)
+          (maybe jsNull (unNode . toNode) node))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"databaseId\"]($2)"
+        js_databaseId :: JSRef CommandLineAPIHost -> JSRef a -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.databaseId Mozilla CommandLineAPIHost.databaseId documentation> 
+databaseId ::
+           (MonadIO m, FromJSString result) =>
+             CommandLineAPIHost -> JSRef a -> m result
+databaseId self database
+  = liftIO
+      (fromJSString <$>
+         (js_databaseId (unCommandLineAPIHost self) database))
+ 
+foreign import javascript unsafe "$1[\"storageId\"]($2)"
+        js_storageId :: JSRef CommandLineAPIHost -> JSRef a -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.storageId Mozilla CommandLineAPIHost.storageId documentation> 
+storageId ::
+          (MonadIO m, FromJSString result) =>
+            CommandLineAPIHost -> JSRef a -> m result
+storageId self storage
+  = liftIO
+      (fromJSString <$>
+         (js_storageId (unCommandLineAPIHost 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,26 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"Comment\"]($1)"
+        js_newComment :: JSString -> IO (JSRef 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') >>= fromJSRefUnchecked)
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,50 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initCompositionEvent\"]($2,\n$3, $4, $5, $6)"
+        js_initCompositionEvent ::
+        JSRef CompositionEvent ->
+          JSString -> Bool -> Bool -> JSRef 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 (unCompositionEvent self)
+         (toJSString typeArg)
+         canBubbleArg
+         cancelableArg
+         (maybe jsNull pToJSRef viewArg)
+         (toJSString dataArg))
+ 
+foreign import javascript unsafe "$1[\"data\"]" js_getData ::
+        JSRef 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 (unCompositionEvent 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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"buffer\"] = $2;"
+        js_setBuffer :: JSRef ConvolverNode -> JSRef 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 (unConvolverNode self) (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"buffer\"]" js_getBuffer ::
+        JSRef ConvolverNode -> IO (JSRef 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 ((js_getBuffer (unConvolverNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"normalize\"] = $2;"
+        js_setNormalize :: JSRef 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 (unConvolverNode self) val)
+ 
+foreign import javascript unsafe "($1[\"normalize\"] ? 1 : 0)"
+        js_getNormalize :: JSRef 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 (unConvolverNode 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,82 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"latitude\"]" js_getLatitude
+        :: JSRef 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 (unCoordinates self))
+ 
+foreign import javascript unsafe "$1[\"longitude\"]"
+        js_getLongitude :: JSRef 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 (unCoordinates self))
+ 
+foreign import javascript unsafe "$1[\"altitude\"]" js_getAltitude
+        :: JSRef Coordinates -> IO (JSRef (Maybe Double))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
+getAltitude :: (MonadIO m) => Coordinates -> m (Maybe Double)
+getAltitude self
+  = liftIO
+      ((js_getAltitude (unCoordinates self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"accuracy\"]" js_getAccuracy
+        :: JSRef 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 (unCoordinates self))
+ 
+foreign import javascript unsafe "$1[\"altitudeAccuracy\"]"
+        js_getAltitudeAccuracy ::
+        JSRef Coordinates -> IO (JSRef (Maybe Double))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
+getAltitudeAccuracy ::
+                    (MonadIO m) => Coordinates -> m (Maybe Double)
+getAltitudeAccuracy self
+  = liftIO
+      ((js_getAltitudeAccuracy (unCoordinates self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"heading\"]" js_getHeading ::
+        JSRef Coordinates -> IO (JSRef (Maybe Double))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
+getHeading :: (MonadIO m) => Coordinates -> m (Maybe Double)
+getHeading self
+  = liftIO
+      ((js_getHeading (unCoordinates self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"speed\"]" js_getSpeed ::
+        JSRef Coordinates -> IO (JSRef (Maybe Double))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
+getSpeed :: (MonadIO m) => Coordinates -> m (Maybe Double)
+getSpeed self
+  = liftIO
+      ((js_getSpeed (unCoordinates self)) >>= fromJSRefUnchecked)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"identifier\"]"
+        js_getIdentifier :: JSRef 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 (unCounter self)))
+ 
+foreign import javascript unsafe "$1[\"listStyle\"]"
+        js_getListStyle :: JSRef 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 (unCounter self)))
+ 
+foreign import javascript unsafe "$1[\"separator\"]"
+        js_getSeparator :: JSRef 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 (unCounter 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getRandomValues\"]($2)"
+        js_getRandomValues ::
+        JSRef Crypto -> JSRef ArrayBufferView -> IO (JSRef 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
+      ((js_getRandomValues (unCrypto self)
+          (maybe jsNull (unArrayBufferView . toArrayBufferView) array))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"webkitSubtle\"]"
+        js_getWebkitSubtle :: JSRef Crypto -> IO (JSRef 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 ((js_getWebkitSubtle (unCrypto self)) >>= fromJSRef)
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,51 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef CryptoKey -> IO (JSRef KeyType)
+
+-- | <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 (unCryptoKey self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "($1[\"extractable\"] ? 1 : 0)"
+        js_getExtractable :: JSRef 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 (unCryptoKey self))
+ 
+foreign import javascript unsafe "$1[\"algorithm\"]"
+        js_getAlgorithm :: JSRef CryptoKey -> IO (JSRef 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 ((js_getAlgorithm (unCryptoKey self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"usages\"]" js_getUsages ::
+        JSRef CryptoKey -> IO (JSRef [KeyUsage])
+
+-- | <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 (unCryptoKey self)) >>= fromJSRefUnchecked)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"publicKey\"]"
+        js_getPublicKey :: JSRef CryptoKeyPair -> IO (JSRef 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 ((js_getPublicKey (unCryptoKeyPair self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"privateKey\"]"
+        js_getPrivateKey :: JSRef CryptoKeyPair -> IO (JSRef 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 ((js_getPrivateKey (unCryptoKeyPair self)) >>= fromJSRef)
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,41 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initCustomEvent\"]($2, $3,\n$4, $5)" js_initCustomEvent ::
+        JSRef CustomEvent -> JSString -> Bool -> Bool -> JSRef a -> 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 -> JSRef a -> m ()
+initCustomEvent self typeArg canBubbleArg cancelableArg detailArg
+  = liftIO
+      (js_initCustomEvent (unCustomEvent self) (toJSString typeArg)
+         canBubbleArg
+         cancelableArg
+         detailArg)
+ 
+foreign import javascript unsafe "$1[\"detail\"]" js_getDetail ::
+        JSRef CustomEvent -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.detail Mozilla CustomEvent.detail documentation> 
+getDetail :: (MonadIO m) => CustomEvent -> m (JSRef a)
+getDetail self = liftIO (js_getDetail (unCustomEvent 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,30 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unDOMError (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,108 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"hasFeature\"]($2,\n$3) ? 1 : 0)" js_hasFeature ::
+        JSRef DOMImplementation ->
+          JSString -> JSRef (Maybe 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 (unDOMImplementation self) (toJSString feature)
+         (toMaybeJSString version))
+ 
+foreign import javascript unsafe
+        "$1[\"createDocumentType\"]($2, $3,\n$4)" js_createDocumentType ::
+        JSRef DOMImplementation ->
+          JSRef (Maybe JSString) ->
+            JSRef (Maybe JSString) ->
+              JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_createDocumentType (unDOMImplementation self)
+          (toMaybeJSString qualifiedName)
+          (toMaybeJSString publicId)
+          (toMaybeJSString systemId))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createDocument\"]($2, $3, $4)" js_createDocument ::
+        JSRef DOMImplementation ->
+          JSRef (Maybe JSString) ->
+            JSRef (Maybe JSString) -> JSRef DocumentType -> IO (JSRef 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
+      ((js_createDocument (unDOMImplementation self)
+          (toMaybeJSString namespaceURI)
+          (toMaybeJSString qualifiedName)
+          (maybe jsNull pToJSRef doctype))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createCSSStyleSheet\"]($2,\n$3)" js_createCSSStyleSheet ::
+        JSRef DOMImplementation ->
+          JSString -> JSString -> IO (JSRef 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
+      ((js_createCSSStyleSheet (unDOMImplementation self)
+          (toJSString title)
+          (toJSString media))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createHTMLDocument\"]($2)"
+        js_createHTMLDocument ::
+        JSRef DOMImplementation -> JSString -> IO (JSRef 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
+      ((js_createHTMLDocument (unDOMImplementation self)
+          (toJSString title))
+         >>= fromJSRef)
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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef DOMNamedFlowCollection -> Word -> IO (JSRef 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
+      ((js_item (unDOMNamedFlowCollection self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        JSRef DOMNamedFlowCollection ->
+          JSString -> IO (JSRef 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
+      ((js_namedItem (unDOMNamedFlowCollection self) (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unDOMNamedFlowCollection 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"DOMParser\"]()"
+        js_newDOMParser :: IO (JSRef DOMParser)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation> 
+newDOMParser :: (MonadIO m) => m DOMParser
+newDOMParser = liftIO (js_newDOMParser >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"parseFromString\"]($2, $3)"
+        js_parseFromString ::
+        JSRef DOMParser -> JSString -> JSString -> IO (JSRef 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
+      ((js_parseFromString (unDOMParser self) (toJSString str)
+          (toJSString contentType))
+         >>= fromJSRef)
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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        JSRef DOMSettableTokenList -> Word -> IO (JSRef (Maybe 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 (unDOMSettableTokenList self) index))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unDOMSettableTokenList self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unDOMSettableTokenList 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,46 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef DOMStringList -> Word -> IO (JSRef (Maybe 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 (unDOMStringList self) index))
+ 
+foreign import javascript unsafe "($1[\"contains\"]($2) ? 1 : 0)"
+        js_contains :: JSRef 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 (unDOMStringList self) (toJSString string))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unDOMStringList 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,105 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef DOMTokenList -> Word -> IO (JSRef (Maybe 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 (unDOMTokenList (toDOMTokenList self)) index))
+ 
+foreign import javascript unsafe "($1[\"contains\"]($2) ? 1 : 0)"
+        js_contains :: JSRef 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 (unDOMTokenList (toDOMTokenList self))
+         (toJSString token))
+ 
+foreign import javascript unsafe "$1[\"add\"].apply($1, $2)" js_add
+        :: JSRef DOMTokenList -> JSRef [a] -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.add Mozilla DOMTokenList.add documentation> 
+add ::
+    (MonadIO m, IsDOMTokenList self, ToJSString tokens,
+     ToJSRef tokens) =>
+      self -> [tokens] -> m ()
+add self tokens
+  = liftIO
+      (toJSRef tokens >>=
+         \ tokens' -> js_add (unDOMTokenList (toDOMTokenList self)) tokens')
+ 
+foreign import javascript unsafe "$1[\"remove\"].apply($1, $2)"
+        js_remove :: JSRef DOMTokenList -> JSRef [a] -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.remove Mozilla DOMTokenList.remove documentation> 
+remove ::
+       (MonadIO m, IsDOMTokenList self, ToJSString tokens,
+        ToJSRef tokens) =>
+         self -> [tokens] -> m ()
+remove self tokens
+  = liftIO
+      (toJSRef tokens >>=
+         \ tokens' ->
+           js_remove (unDOMTokenList (toDOMTokenList self)) tokens')
+ 
+foreign import javascript unsafe "($1[\"toggle\"]($2, $3) ? 1 : 0)"
+        js_toggle :: JSRef 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 (unDOMTokenList (toDOMTokenList self))
+         (toJSString token)
+         force)
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: JSRef 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 (unDOMTokenList (toDOMTokenList self))))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unDOMTokenList (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,81 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"WebKitDataCue\"]()"
+        js_newDataCue :: IO (JSRef DataCue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
+newDataCue :: (MonadIO m) => m DataCue
+newDataCue = liftIO (js_newDataCue >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "new window[\"WebKitDataCue\"]($1,\n$2, $3, $4)" js_newDataCue' ::
+        Double -> Double -> JSRef a -> JSString -> IO (JSRef DataCue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
+newDataCue' ::
+            (MonadIO m, ToJSString type') =>
+              Double -> Double -> JSRef a -> type' -> m DataCue
+newDataCue' startTime endTime value type'
+  = liftIO
+      (js_newDataCue' startTime endTime value (toJSString type') >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"data\"] = $2;" js_setData ::
+        JSRef DataCue -> JSRef 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 (unDataCue self)
+         (maybe jsNull (unArrayBuffer . toArrayBuffer) val))
+ 
+foreign import javascript unsafe "$1[\"data\"]" js_getData ::
+        JSRef DataCue -> IO (JSRef 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 ((js_getData (unDataCue self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef DataCue -> JSRef a -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
+setValue :: (MonadIO m) => DataCue -> JSRef a -> m ()
+setValue self val = liftIO (js_setValue (unDataCue self) val)
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef DataCue -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
+getValue :: (MonadIO m) => DataCue -> m (JSRef a)
+getValue self = liftIO (js_getValue (unDataCue self))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unDataCue 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,135 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clearData\"]($2)"
+        js_clearData :: JSRef 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 (unDataTransfer self) (toJSString type'))
+ 
+foreign import javascript unsafe "$1[\"getData\"]($2)" js_getData
+        :: JSRef 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 (unDataTransfer self) (toJSString type')))
+ 
+foreign import javascript unsafe "$1[\"setData\"]($2, $3)"
+        js_setData :: JSRef 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 (unDataTransfer self) (toJSString type')
+         (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"setDragImage\"]($2, $3, $4)"
+        js_setDragImage ::
+        JSRef DataTransfer -> JSRef 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 (unDataTransfer self)
+         (maybe jsNull (unElement . toElement) image)
+         x
+         y)
+ 
+foreign import javascript unsafe "$1[\"dropEffect\"] = $2;"
+        js_setDropEffect :: JSRef 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 (unDataTransfer self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"dropEffect\"]"
+        js_getDropEffect :: JSRef 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 (unDataTransfer self)))
+ 
+foreign import javascript unsafe "$1[\"effectAllowed\"] = $2;"
+        js_setEffectAllowed :: JSRef 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 (unDataTransfer self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"effectAllowed\"]"
+        js_getEffectAllowed :: JSRef 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 (unDataTransfer self)))
+ 
+foreign import javascript unsafe "$1[\"types\"]" js_getTypes ::
+        JSRef DataTransfer -> IO (JSRef 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 ((js_getTypes (unDataTransfer self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"files\"]" js_getFiles ::
+        JSRef DataTransfer -> IO (JSRef 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 ((js_getFiles (unDataTransfer self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"items\"]" js_getItems ::
+        JSRef DataTransfer -> IO (JSRef 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 ((js_getItems (unDataTransfer self)) >>= fromJSRef)
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,59 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getAsString\"]($2)"
+        js_getAsString ::
+        JSRef DataTransferItem -> JSRef (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 (unDataTransferItem self)
+         (maybe jsNull pToJSRef callback))
+ 
+foreign import javascript unsafe "$1[\"getAsFile\"]()" js_getAsFile
+        :: JSRef DataTransferItem -> IO (JSRef 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 ((js_getAsFile (unDataTransferItem self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"kind\"]" js_getKind ::
+        JSRef 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 (unDataTransferItem self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unDataTransferItem 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,69 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef DataTransferItemList -> Word -> IO (JSRef 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
+      ((js_item (unDataTransferItemList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unDataTransferItemList self))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2)" js_addFile ::
+        JSRef DataTransferItemList -> JSRef 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 (unDataTransferItemList self)
+         (maybe jsNull pToJSRef file))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+        JSRef 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 (unDataTransferItemList self) (toJSString data')
+         (toJSString type'))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unDataTransferItemList 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,91 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"changeVersion\"]($2, $3, $4,\n$5, $6)" js_changeVersion ::
+        JSRef Database ->
+          JSString ->
+            JSString ->
+              JSRef SQLTransactionCallback ->
+                JSRef SQLTransactionErrorCallback -> JSRef 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 (unDatabase self) (toJSString oldVersion)
+         (toJSString newVersion)
+         (maybe jsNull pToJSRef callback)
+         (maybe jsNull pToJSRef errorCallback)
+         (maybe jsNull pToJSRef successCallback))
+ 
+foreign import javascript unsafe "$1[\"transaction\"]($2, $3, $4)"
+        js_transaction ::
+        JSRef Database ->
+          JSRef SQLTransactionCallback ->
+            JSRef SQLTransactionErrorCallback -> JSRef 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 (unDatabase self) (maybe jsNull pToJSRef callback)
+         (maybe jsNull pToJSRef errorCallback)
+         (maybe jsNull pToJSRef successCallback))
+ 
+foreign import javascript unsafe
+        "$1[\"readTransaction\"]($2, $3,\n$4)" js_readTransaction ::
+        JSRef Database ->
+          JSRef SQLTransactionCallback ->
+            JSRef SQLTransactionErrorCallback -> JSRef 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 (unDatabase self)
+         (maybe jsNull pToJSRef callback)
+         (maybe jsNull pToJSRef errorCallback)
+         (maybe jsNull pToJSRef successCallback))
+ 
+foreign import javascript unsafe "$1[\"version\"]" js_getVersion ::
+        JSRef 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 (unDatabase 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,46 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ database ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ database ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ database ->
+            fromJSRefUnchecked 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2, $3)"
+        js_postMessage ::
+        JSRef DedicatedWorkerGlobalScope -> JSRef a -> JSRef Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.postMessage Mozilla DedicatedWorkerGlobalScope.postMessage documentation> 
+postMessage ::
+            (MonadIO m, IsArray messagePorts) =>
+              DedicatedWorkerGlobalScope -> JSRef a -> Maybe messagePorts -> m ()
+postMessage self message messagePorts
+  = liftIO
+      (js_postMessage (unDedicatedWorkerGlobalScope self) message
+         (maybe jsNull (unArray . 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"delayTime\"]"
+        js_getDelayTime :: JSRef DelayNode -> IO (JSRef 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 ((js_getDelayTime (unDelayNode self)) >>= fromJSRef)
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,101 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initDeviceMotionEvent\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_initDeviceMotionEvent ::
+        JSRef DeviceMotionEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSRef Acceleration ->
+                  JSRef Acceleration -> JSRef 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 (unDeviceMotionEvent self)
+         (toJSString type')
+         bubbles
+         cancelable
+         (maybe jsNull (unAcceleration . toAcceleration) acceleration)
+         (maybe jsNull (unAcceleration . toAcceleration)
+            accelerationIncludingGravity)
+         (maybe jsNull (unRotationRate . toRotationRate) rotationRate)
+         interval)
+ 
+foreign import javascript unsafe "$1[\"acceleration\"]"
+        js_getAcceleration ::
+        JSRef DeviceMotionEvent -> IO (JSRef 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
+      ((js_getAcceleration (unDeviceMotionEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"accelerationIncludingGravity\"]"
+        js_getAccelerationIncludingGravity ::
+        JSRef DeviceMotionEvent -> IO (JSRef 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
+      ((js_getAccelerationIncludingGravity (unDeviceMotionEvent self))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rotationRate\"]"
+        js_getRotationRate ::
+        JSRef DeviceMotionEvent -> IO (JSRef 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
+      ((js_getRotationRate (unDeviceMotionEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"interval\"]" js_getInterval
+        :: JSRef 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 (unDeviceMotionEvent 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,76 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initDeviceOrientationEvent\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_initDeviceOrientationEvent ::
+        JSRef 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 (unDeviceOrientationEvent self)
+         (toJSString type')
+         bubbles
+         cancelable
+         alpha
+         beta
+         gamma
+         absolute)
+ 
+foreign import javascript unsafe "$1[\"alpha\"]" js_getAlpha ::
+        JSRef 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 (unDeviceOrientationEvent self))
+ 
+foreign import javascript unsafe "$1[\"beta\"]" js_getBeta ::
+        JSRef 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 (unDeviceOrientationEvent self))
+ 
+foreign import javascript unsafe "$1[\"gamma\"]" js_getGamma ::
+        JSRef 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 (unDeviceOrientationEvent self))
+ 
+foreign import javascript unsafe "($1[\"absolute\"] ? 1 : 0)"
+        js_getAbsolute :: JSRef 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 (unDeviceOrientationEvent 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unDeviceProximityEvent self))
+ 
+foreign import javascript unsafe "$1[\"min\"]" js_getMin ::
+        JSRef 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 (unDeviceProximityEvent self))
+ 
+foreign import javascript unsafe "$1[\"max\"]" js_getMax ::
+        JSRef 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 (unDeviceProximityEvent 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,1660 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"Document\"]()"
+        js_newDocument :: IO (JSRef Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation> 
+newDocument :: (MonadIO m) => m Document
+newDocument = liftIO (js_newDocument >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"createElement\"]($2)"
+        js_createElement ::
+        JSRef Document -> JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_createElement (unDocument (toDocument self))
+          (toMaybeJSString tagName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createDocumentFragment\"]()"
+        js_createDocumentFragment ::
+        JSRef Document -> IO (JSRef 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
+      ((js_createDocumentFragment (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createTextNode\"]($2)"
+        js_createTextNode :: JSRef Document -> JSString -> IO (JSRef 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
+      ((js_createTextNode (unDocument (toDocument self))
+          (toJSString data'))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createComment\"]($2)"
+        js_createComment ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_createComment (unDocument (toDocument self))
+          (toJSString data'))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createCDATASection\"]($2)"
+        js_createCDATASection ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_createCDATASection (unDocument (toDocument self))
+          (toJSString data'))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createProcessingInstruction\"]($2,\n$3)"
+        js_createProcessingInstruction ::
+        JSRef Document ->
+          JSString -> JSString -> IO (JSRef 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
+      ((js_createProcessingInstruction (unDocument (toDocument self))
+          (toJSString target)
+          (toJSString data'))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createAttribute\"]($2)"
+        js_createAttribute :: JSRef Document -> JSString -> IO (JSRef 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
+      ((js_createAttribute (unDocument (toDocument self))
+          (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createEntityReference\"]($2)" js_createEntityReference ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_createEntityReference (unDocument (toDocument self))
+          (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getElementsByTagName\"]($2)"
+        js_getElementsByTagName ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_getElementsByTagName (unDocument (toDocument self))
+          (toJSString tagname))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"importNode\"]($2, $3)"
+        js_importNode ::
+        JSRef Document -> JSRef Node -> Bool -> IO (JSRef 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
+      ((js_importNode (unDocument (toDocument self))
+          (maybe jsNull (unNode . toNode) importedNode)
+          deep)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createElementNS\"]($2, $3)"
+        js_createElementNS ::
+        JSRef Document ->
+          JSRef (Maybe JSString) ->
+            JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_createElementNS (unDocument (toDocument self))
+          (toMaybeJSString namespaceURI)
+          (toMaybeJSString qualifiedName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createAttributeNS\"]($2, $3)" js_createAttributeNS ::
+        JSRef Document ->
+          JSRef (Maybe JSString) -> JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_createAttributeNS (unDocument (toDocument self))
+          (toMaybeJSString namespaceURI)
+          (toMaybeJSString qualifiedName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getElementsByTagNameNS\"]($2,\n$3)" js_getElementsByTagNameNS
+        ::
+        JSRef Document ->
+          JSRef (Maybe JSString) -> JSString -> IO (JSRef 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
+      ((js_getElementsByTagNameNS (unDocument (toDocument self))
+          (toMaybeJSString namespaceURI)
+          (toJSString localName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getElementById\"]($2)"
+        js_getElementById ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_getElementById (unDocument (toDocument self))
+          (toJSString elementId))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"adoptNode\"]($2)"
+        js_adoptNode :: JSRef Document -> JSRef Node -> IO (JSRef 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
+      ((js_adoptNode (unDocument (toDocument self))
+          (maybe jsNull (unNode . toNode) source))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createEvent\"]($2)"
+        js_createEvent :: JSRef Document -> JSString -> IO (JSRef 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
+      ((js_createEvent (unDocument (toDocument self))
+          (toJSString eventType))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createRange\"]()"
+        js_createRange :: JSRef Document -> IO (JSRef 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
+      ((js_createRange (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createNodeIterator\"]($2, $3,\n$4, $5)" js_createNodeIterator
+        ::
+        JSRef Document ->
+          JSRef Node ->
+            Word -> JSRef NodeFilter -> Bool -> IO (JSRef 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
+      ((js_createNodeIterator (unDocument (toDocument self))
+          (maybe jsNull (unNode . toNode) root)
+          whatToShow
+          (maybe jsNull pToJSRef filter)
+          expandEntityReferences)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createTreeWalker\"]($2, $3,\n$4, $5)" js_createTreeWalker ::
+        JSRef Document ->
+          JSRef Node ->
+            Word -> JSRef NodeFilter -> Bool -> IO (JSRef 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
+      ((js_createTreeWalker (unDocument (toDocument self))
+          (maybe jsNull (unNode . toNode) root)
+          whatToShow
+          (maybe jsNull pToJSRef filter)
+          expandEntityReferences)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getOverrideStyle\"]($2, $3)"
+        js_getOverrideStyle ::
+        JSRef Document ->
+          JSRef Element -> JSString -> IO (JSRef 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
+      ((js_getOverrideStyle (unDocument (toDocument self))
+          (maybe jsNull (unElement . toElement) element)
+          (toJSString pseudoElement))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createExpression\"]($2, $3)"
+        js_createExpression ::
+        JSRef Document ->
+          JSString -> JSRef XPathNSResolver -> IO (JSRef 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
+      ((js_createExpression (unDocument (toDocument self))
+          (toJSString expression)
+          (maybe jsNull pToJSRef resolver))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createNSResolver\"]($2)"
+        js_createNSResolver ::
+        JSRef Document -> JSRef Node -> IO (JSRef 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
+      ((js_createNSResolver (unDocument (toDocument self))
+          (maybe jsNull (unNode . toNode) nodeResolver))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"evaluate\"]($2, $3, $4, $5,\n$6)" js_evaluate ::
+        JSRef Document ->
+          JSString ->
+            JSRef Node ->
+              JSRef XPathNSResolver ->
+                Word -> JSRef XPathResult -> IO (JSRef 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
+      ((js_evaluate (unDocument (toDocument self))
+          (toJSString expression)
+          (maybe jsNull (unNode . toNode) contextNode)
+          (maybe jsNull pToJSRef resolver)
+          type'
+          (maybe jsNull pToJSRef inResult))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"execCommand\"]($2, $3,\n$4) ? 1 : 0)" js_execCommand ::
+        JSRef Document ->
+          JSString -> Bool -> JSRef (Maybe 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 (unDocument (toDocument self)) (toJSString command)
+         userInterface
+         (toMaybeJSString value))
+ 
+foreign import javascript unsafe
+        "($1[\"queryCommandEnabled\"]($2) ? 1 : 0)" js_queryCommandEnabled
+        :: JSRef 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 (unDocument (toDocument self))
+         (toJSString command))
+ 
+foreign import javascript unsafe
+        "($1[\"queryCommandIndeterm\"]($2) ? 1 : 0)"
+        js_queryCommandIndeterm :: JSRef 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 (unDocument (toDocument self))
+         (toJSString command))
+ 
+foreign import javascript unsafe
+        "($1[\"queryCommandState\"]($2) ? 1 : 0)" js_queryCommandState ::
+        JSRef 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 (unDocument (toDocument self))
+         (toJSString command))
+ 
+foreign import javascript unsafe
+        "($1[\"queryCommandSupported\"]($2) ? 1 : 0)"
+        js_queryCommandSupported :: JSRef 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 (unDocument (toDocument self))
+         (toJSString command))
+ 
+foreign import javascript unsafe "$1[\"queryCommandValue\"]($2)"
+        js_queryCommandValue :: JSRef 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 (unDocument (toDocument self))
+            (toJSString command)))
+ 
+foreign import javascript unsafe "$1[\"getElementsByName\"]($2)"
+        js_getElementsByName ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_getElementsByName (unDocument (toDocument self))
+          (toJSString elementName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"elementFromPoint\"]($2, $3)"
+        js_elementFromPoint ::
+        JSRef Document -> Int -> Int -> IO (JSRef 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
+      ((js_elementFromPoint (unDocument (toDocument self)) x y) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"caretRangeFromPoint\"]($2,\n$3)" js_caretRangeFromPoint ::
+        JSRef Document -> Int -> Int -> IO (JSRef 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
+      ((js_caretRangeFromPoint (unDocument (toDocument self)) x y) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getSelection\"]()"
+        js_getSelection :: JSRef Document -> IO (JSRef 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
+      ((js_getSelection (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getCSSCanvasContext\"]($2,\n$3, $4, $5)"
+        js_getCSSCanvasContext ::
+        JSRef Document ->
+          JSString ->
+            JSString -> Int -> Int -> IO (JSRef 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
+      ((js_getCSSCanvasContext (unDocument (toDocument self))
+          (toJSString contextId)
+          (toJSString name)
+          width
+          height)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getElementsByClassName\"]($2)" js_getElementsByClassName ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_getElementsByClassName (unDocument (toDocument self))
+          (toJSString tagname))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "($1[\"hasFocus\"]() ? 1 : 0)"
+        js_hasFocus :: JSRef 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 (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"querySelector\"]($2)"
+        js_querySelector ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_querySelector (unDocument (toDocument self))
+          (toJSString selectors))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
+        js_querySelectorAll ::
+        JSRef Document -> JSString -> IO (JSRef 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
+      ((js_querySelectorAll (unDocument (toDocument self))
+          (toJSString selectors))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"webkitCancelFullScreen\"]()"
+        js_webkitCancelFullScreen :: JSRef 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 (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"webkitExitFullscreen\"]()"
+        js_webkitExitFullscreen :: JSRef 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 (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"exitPointerLock\"]()"
+        js_exitPointerLock :: JSRef 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 (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"webkitGetNamedFlows\"]()"
+        js_webkitGetNamedFlows ::
+        JSRef Document -> IO (JSRef 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
+      ((js_webkitGetNamedFlows (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createTouch\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12)"
+        js_createTouch ::
+        JSRef Document ->
+          JSRef Window ->
+            JSRef EventTarget ->
+              Int ->
+                Int ->
+                  Int ->
+                    Int -> Int -> Int -> Int -> Float -> Float -> IO (JSRef 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
+      ((js_createTouch (unDocument (toDocument self))
+          (maybe jsNull pToJSRef window)
+          (maybe jsNull (unEventTarget . toEventTarget) target)
+          identifier
+          pageX
+          pageY
+          screenX
+          screenY
+          webkitRadiusX
+          webkitRadiusY
+          webkitRotationAngle
+          webkitForce)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createTouchList\"]()"
+        js_createTouchList :: JSRef Document -> IO (JSRef 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
+      ((js_createTouchList (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"doctype\"]" js_getDoctype ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getDoctype (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"implementation\"]"
+        js_getImplementation ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getImplementation (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"documentElement\"]"
+        js_getDocumentElement :: JSRef Document -> IO (JSRef 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
+      ((js_getDocumentElement (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"inputEncoding\"]"
+        js_getInputEncoding ::
+        JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"xmlEncoding\"]"
+        js_getXmlEncoding :: JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"xmlVersion\"] = $2;"
+        js_setXmlVersion ::
+        JSRef Document -> JSRef (Maybe 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 (unDocument (toDocument self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"xmlVersion\"]"
+        js_getXmlVersion :: JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"xmlStandalone\"] = $2;"
+        js_setXmlStandalone :: JSRef 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 (unDocument (toDocument self)) val)
+ 
+foreign import javascript unsafe "($1[\"xmlStandalone\"] ? 1 : 0)"
+        js_getXmlStandalone :: JSRef 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 (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"documentURI\"]"
+        js_getDocumentURI :: JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"defaultView\"]"
+        js_getDefaultView :: JSRef Document -> IO (JSRef 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
+      ((js_getDefaultView (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"styleSheets\"]"
+        js_getStyleSheets :: JSRef Document -> IO (JSRef 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
+      ((js_getStyleSheets (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"contentType\"]"
+        js_getContentType :: JSRef 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"title\"] = $2;" js_setTitle
+        :: JSRef Document -> JSRef (Maybe 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 (unDocument (toDocument self)) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"title\"]" js_getTitle ::
+        JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"referrer\"]" js_getReferrer
+        :: JSRef 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"domain\"] = $2;"
+        js_setDomain :: JSRef Document -> JSRef (Maybe 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 (unDocument (toDocument self)) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"domain\"]" js_getDomain ::
+        JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"URL\"]" js_getURL ::
+        JSRef 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"cookie\"] = $2;"
+        js_setCookie :: JSRef Document -> JSRef (Maybe 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 (unDocument (toDocument self)) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"cookie\"]" js_getCookie ::
+        JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"body\"] = $2;" js_setBody ::
+        JSRef Document -> JSRef 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 (unDocument (toDocument self))
+         (maybe jsNull (unHTMLElement . toHTMLElement) val))
+ 
+foreign import javascript unsafe "$1[\"body\"]" js_getBody ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getBody (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"head\"]" js_getHead ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getHead (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"images\"]" js_getImages ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getImages (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"applets\"]" js_getApplets ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getApplets (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"links\"]" js_getLinks ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getLinks (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"forms\"]" js_getForms ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getForms (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"anchors\"]" js_getAnchors ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getAnchors (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"lastModified\"]"
+        js_getLastModified :: JSRef 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"location\"] = $2;"
+        js_setLocation :: JSRef Document -> JSRef 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 (unDocument (toDocument self))
+         (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"location\"]" js_getLocation
+        :: JSRef Document -> IO (JSRef 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
+      ((js_getLocation (unDocument (toDocument self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"charset\"] = $2;"
+        js_setCharset :: JSRef Document -> JSRef (Maybe 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 (unDocument (toDocument self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"charset\"]" js_getCharset ::
+        JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"defaultCharset\"]"
+        js_getDefaultCharset ::
+        JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"characterSet\"]"
+        js_getCharacterSet :: JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"preferredStylesheetSet\"]"
+        js_getPreferredStylesheetSet ::
+        JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe
+        "$1[\"selectedStylesheetSet\"] = $2;" js_setSelectedStylesheetSet
+        :: JSRef Document -> JSRef (Maybe 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 (unDocument (toDocument self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"selectedStylesheetSet\"]"
+        js_getSelectedStylesheetSet ::
+        JSRef Document -> IO (JSRef (Maybe 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "$1[\"activeElement\"]"
+        js_getActiveElement :: JSRef Document -> IO (JSRef 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
+      ((js_getActiveElement (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"compatMode\"]"
+        js_getCompatMode :: JSRef 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe
+        "($1[\"webkitIsFullScreen\"] ? 1 : 0)" js_getWebkitIsFullScreen ::
+        JSRef 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 (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe
+        "($1[\"webkitFullScreenKeyboardInputAllowed\"] ? 1 : 0)"
+        js_getWebkitFullScreenKeyboardInputAllowed ::
+        JSRef 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
+         (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitCurrentFullScreenElement\"]"
+        js_getWebkitCurrentFullScreenElement ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getWebkitCurrentFullScreenElement
+          (unDocument (toDocument self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"webkitFullscreenEnabled\"] ? 1 : 0)"
+        js_getWebkitFullscreenEnabled :: JSRef 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 (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"webkitFullscreenElement\"]"
+        js_getWebkitFullscreenElement ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getWebkitFullscreenElement (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pointerLockElement\"]"
+        js_getPointerLockElement :: JSRef Document -> IO (JSRef 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
+      ((js_getPointerLockElement (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"fonts\"]" js_getFonts ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getFonts (unDocument (toDocument self))) >>= fromJSRef)
+
+-- | <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 :: JSRef 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 (unDocument (toDocument self))))
+ 
+foreign import javascript unsafe "($1[\"hidden\"] ? 1 : 0)"
+        js_getHidden :: JSRef 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 (unDocument (toDocument self)))
+ 
+foreign import javascript unsafe "$1[\"securityPolicy\"]"
+        js_getSecurityPolicy :: JSRef Document -> IO (JSRef 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
+      ((js_getSecurityPolicy (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"currentScript\"]"
+        js_getCurrentScript ::
+        JSRef Document -> IO (JSRef 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
+      ((js_getCurrentScript (unDocument (toDocument self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"origin\"]" js_getOrigin ::
+        JSRef 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 (unDocument (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,57 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"DocumentFragment\"]()" js_newDocumentFragment ::
+        IO (JSRef DocumentFragment)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation> 
+newDocumentFragment :: (MonadIO m) => m DocumentFragment
+newDocumentFragment
+  = liftIO (js_newDocumentFragment >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"querySelector\"]($2)"
+        js_querySelector ::
+        JSRef DocumentFragment -> JSString -> IO (JSRef 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
+      ((js_querySelector (unDocumentFragment self)
+          (toJSString selectors))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
+        js_querySelectorAll ::
+        JSRef DocumentFragment -> JSString -> IO (JSRef 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
+      ((js_querySelectorAll (unDocumentFragment self)
+          (toJSString selectors))
+         >>= fromJSRef)
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,83 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unDocumentType self)))
+ 
+foreign import javascript unsafe "$1[\"entities\"]" js_getEntities
+        :: JSRef DocumentType -> IO (JSRef 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 ((js_getEntities (unDocumentType self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"notations\"]"
+        js_getNotations :: JSRef DocumentType -> IO (JSRef 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 ((js_getNotations (unDocumentType self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"publicId\"]" js_getPublicId
+        :: JSRef DocumentType -> IO (JSRef (Maybe 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 (unDocumentType self)))
+ 
+foreign import javascript unsafe "$1[\"systemId\"]" js_getSystemId
+        :: JSRef DocumentType -> IO (JSRef (Maybe 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 (unDocumentType self)))
+ 
+foreign import javascript unsafe "$1[\"internalSubset\"]"
+        js_getInternalSubset ::
+        JSRef DocumentType -> IO (JSRef (Maybe 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 (unDocumentType 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,83 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"threshold\"]"
+        js_getThreshold ::
+        JSRef DynamicsCompressorNode -> IO (JSRef 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
+      ((js_getThreshold (unDynamicsCompressorNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"knee\"]" js_getKnee ::
+        JSRef DynamicsCompressorNode -> IO (JSRef 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
+      ((js_getKnee (unDynamicsCompressorNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"ratio\"]" js_getRatio ::
+        JSRef DynamicsCompressorNode -> IO (JSRef 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
+      ((js_getRatio (unDynamicsCompressorNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"reduction\"]"
+        js_getReduction ::
+        JSRef DynamicsCompressorNode -> IO (JSRef 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
+      ((js_getReduction (unDynamicsCompressorNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"attack\"]" js_getAttack ::
+        JSRef DynamicsCompressorNode -> IO (JSRef 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
+      ((js_getAttack (unDynamicsCompressorNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"release\"]" js_getRelease ::
+        JSRef DynamicsCompressorNode -> IO (JSRef 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
+      ((js_getRelease (unDynamicsCompressorNode self)) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,1103 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getAttribute\"]($2)"
+        js_getAttribute ::
+        JSRef Element -> JSString -> IO (JSRef (Maybe 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 (unElement (toElement self)) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"setAttribute\"]($2, $3)"
+        js_setAttribute :: JSRef 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 (unElement (toElement self)) (toJSString name)
+         (toJSString value))
+ 
+foreign import javascript unsafe "$1[\"removeAttribute\"]($2)"
+        js_removeAttribute :: JSRef 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 (unElement (toElement self)) (toJSString name))
+ 
+foreign import javascript unsafe "$1[\"getAttributeNode\"]($2)"
+        js_getAttributeNode :: JSRef Element -> JSString -> IO (JSRef 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
+      ((js_getAttributeNode (unElement (toElement self))
+          (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"setAttributeNode\"]($2)"
+        js_setAttributeNode ::
+        JSRef Element -> JSRef Attr -> IO (JSRef 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
+      ((js_setAttributeNode (unElement (toElement self))
+          (maybe jsNull pToJSRef newAttr))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeAttributeNode\"]($2)"
+        js_removeAttributeNode ::
+        JSRef Element -> JSRef Attr -> IO (JSRef 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
+      ((js_removeAttributeNode (unElement (toElement self))
+          (maybe jsNull pToJSRef oldAttr))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getElementsByTagName\"]($2)"
+        js_getElementsByTagName ::
+        JSRef Element -> JSString -> IO (JSRef 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
+      ((js_getElementsByTagName (unElement (toElement self))
+          (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"hasAttributes\"]() ? 1 : 0)" js_hasAttributes ::
+        JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"getAttributeNS\"]($2, $3)"
+        js_getAttributeNS ::
+        JSRef Element -> JSRef (Maybe 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 (unElement (toElement self))
+            (toMaybeJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe
+        "$1[\"setAttributeNS\"]($2, $3, $4)" js_setAttributeNS ::
+        JSRef Element ->
+          JSRef (Maybe 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 (unElement (toElement self))
+         (toMaybeJSString namespaceURI)
+         (toJSString qualifiedName)
+         (toJSString value))
+ 
+foreign import javascript unsafe
+        "$1[\"removeAttributeNS\"]($2, $3)" js_removeAttributeNS ::
+        JSRef Element -> JSRef (Maybe 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 (unElement (toElement self))
+         (toMaybeJSString namespaceURI)
+         (toJSString localName))
+ 
+foreign import javascript unsafe
+        "$1[\"getElementsByTagNameNS\"]($2,\n$3)" js_getElementsByTagNameNS
+        ::
+        JSRef Element ->
+          JSRef (Maybe JSString) -> JSString -> IO (JSRef 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
+      ((js_getElementsByTagNameNS (unElement (toElement self))
+          (toMaybeJSString namespaceURI)
+          (toJSString localName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getAttributeNodeNS\"]($2, $3)" js_getAttributeNodeNS ::
+        JSRef Element ->
+          JSRef (Maybe JSString) -> JSString -> IO (JSRef 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
+      ((js_getAttributeNodeNS (unElement (toElement self))
+          (toMaybeJSString namespaceURI)
+          (toJSString localName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"setAttributeNodeNS\"]($2)"
+        js_setAttributeNodeNS ::
+        JSRef Element -> JSRef Attr -> IO (JSRef 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
+      ((js_setAttributeNodeNS (unElement (toElement self))
+          (maybe jsNull pToJSRef newAttr))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"hasAttribute\"]($2) ? 1 : 0)" js_hasAttribute ::
+        JSRef 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 (unElement (toElement self)) (toJSString name))
+ 
+foreign import javascript unsafe
+        "($1[\"hasAttributeNS\"]($2,\n$3) ? 1 : 0)" js_hasAttributeNS ::
+        JSRef Element -> JSRef (Maybe 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 (unElement (toElement self))
+         (toMaybeJSString namespaceURI)
+         (toJSString localName))
+ 
+foreign import javascript unsafe "$1[\"focus\"]()" js_focus ::
+        JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"blur\"]()" js_blur ::
+        JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"scrollIntoView\"]($2)"
+        js_scrollIntoView :: JSRef 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 (unElement (toElement self)) alignWithTop)
+ 
+foreign import javascript unsafe
+        "$1[\"scrollIntoViewIfNeeded\"]($2)" js_scrollIntoViewIfNeeded ::
+        JSRef 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 (unElement (toElement self))
+         centerIfNeeded)
+ 
+foreign import javascript unsafe "$1[\"scrollByLines\"]($2)"
+        js_scrollByLines :: JSRef 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 (unElement (toElement self)) lines)
+ 
+foreign import javascript unsafe "$1[\"scrollByPages\"]($2)"
+        js_scrollByPages :: JSRef 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 (unElement (toElement self)) pages)
+ 
+foreign import javascript unsafe
+        "$1[\"getElementsByClassName\"]($2)" js_getElementsByClassName ::
+        JSRef Element -> JSString -> IO (JSRef 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
+      ((js_getElementsByClassName (unElement (toElement self))
+          (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"querySelector\"]($2)"
+        js_querySelector :: JSRef Element -> JSString -> IO (JSRef 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
+      ((js_querySelector (unElement (toElement self))
+          (toJSString selectors))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"querySelectorAll\"]($2)"
+        js_querySelectorAll ::
+        JSRef Element -> JSString -> IO (JSRef 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
+      ((js_querySelectorAll (unElement (toElement self))
+          (toJSString selectors))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "($1[\"matches\"]($2) ? 1 : 0)"
+        js_matches :: JSRef 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 (unElement (toElement self)) (toJSString selectors))
+ 
+foreign import javascript unsafe "$1[\"closest\"]($2)" js_closest
+        :: JSRef Element -> JSString -> IO (JSRef 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
+      ((js_closest (unElement (toElement self)) (toJSString selectors))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"webkitMatchesSelector\"]($2) ? 1 : 0)"
+        js_webkitMatchesSelector :: JSRef 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 (unElement (toElement self))
+         (toJSString selectors))
+ 
+foreign import javascript unsafe "$1[\"getClientRects\"]()"
+        js_getClientRects :: JSRef Element -> IO (JSRef 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
+      ((js_getClientRects (unElement (toElement self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getBoundingClientRect\"]()"
+        js_getBoundingClientRect :: JSRef Element -> IO (JSRef 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
+      ((js_getBoundingClientRect (unElement (toElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitRequestFullScreen\"]($2)" js_webkitRequestFullScreen ::
+        JSRef 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 (unElement (toElement self)) flags)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitRequestFullscreen\"]()" js_webkitRequestFullscreen ::
+        JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"requestPointerLock\"]()"
+        js_requestPointerLock :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetRegionFlowRanges\"]()" js_webkitGetRegionFlowRanges
+        :: JSRef Element -> IO (JSRef [Maybe Range])
+
+-- | <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 (unElement (toElement self))) >>=
+         fromJSRefUnchecked)
+pattern ALLOW_KEYBOARD_INPUT = 1
+ 
+foreign import javascript unsafe "$1[\"tagName\"]" js_getTagName ::
+        JSRef Element -> IO (JSRef (Maybe 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 (unElement (toElement self))))
+ 
+foreign import javascript unsafe "$1[\"attributes\"]"
+        js_getAttributes :: JSRef Element -> IO (JSRef 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
+      ((js_getAttributes (unElement (toElement self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        JSRef Element -> IO (JSRef 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 ((js_getStyle (unElement (toElement self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"id\"] = $2;" js_setId ::
+        JSRef 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 (unElement (toElement self)) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unElement (toElement self))))
+ 
+foreign import javascript unsafe "$1[\"offsetLeft\"]"
+        js_getOffsetLeft :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"offsetTop\"]"
+        js_getOffsetTop :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"offsetWidth\"]"
+        js_getOffsetWidth :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"offsetHeight\"]"
+        js_getOffsetHeight :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"clientLeft\"]"
+        js_getClientLeft :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"clientTop\"]"
+        js_getClientTop :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"clientWidth\"]"
+        js_getClientWidth :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"clientHeight\"]"
+        js_getClientHeight :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"scrollLeft\"] = $2;"
+        js_setScrollLeft :: JSRef 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 (unElement (toElement self)) val)
+ 
+foreign import javascript unsafe "$1[\"scrollLeft\"]"
+        js_getScrollLeft :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"scrollTop\"] = $2;"
+        js_setScrollTop :: JSRef 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 (unElement (toElement self)) val)
+ 
+foreign import javascript unsafe "$1[\"scrollTop\"]"
+        js_getScrollTop :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"scrollWidth\"]"
+        js_getScrollWidth :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"scrollHeight\"]"
+        js_getScrollHeight :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"offsetParent\"]"
+        js_getOffsetParent :: JSRef Element -> IO (JSRef 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
+      ((js_getOffsetParent (unElement (toElement self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"innerHTML\"] = $2;"
+        js_setInnerHTML :: JSRef Element -> JSRef (Maybe 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 (unElement (toElement self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"innerHTML\"]"
+        js_getInnerHTML :: JSRef Element -> IO (JSRef (Maybe 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 (unElement (toElement self))))
+ 
+foreign import javascript unsafe "$1[\"outerHTML\"] = $2;"
+        js_setOuterHTML :: JSRef Element -> JSRef (Maybe 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 (unElement (toElement self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"outerHTML\"]"
+        js_getOuterHTML :: JSRef Element -> IO (JSRef (Maybe 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 (unElement (toElement self))))
+ 
+foreign import javascript unsafe "$1[\"className\"] = $2;"
+        js_setClassName :: JSRef 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 (unElement (toElement self)) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"className\"]"
+        js_getClassName :: JSRef 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 (unElement (toElement self))))
+ 
+foreign import javascript unsafe "$1[\"classList\"]"
+        js_getClassList :: JSRef Element -> IO (JSRef 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
+      ((js_getClassList (unElement (toElement self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"dataset\"]" js_getDataset ::
+        JSRef Element -> IO (JSRef 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
+      ((js_getDataset (unElement (toElement self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"firstElementChild\"]"
+        js_getFirstElementChild :: JSRef Element -> IO (JSRef 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
+      ((js_getFirstElementChild (unElement (toElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"lastElementChild\"]"
+        js_getLastElementChild :: JSRef Element -> IO (JSRef 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
+      ((js_getLastElementChild (unElement (toElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"previousElementSibling\"]"
+        js_getPreviousElementSibling :: JSRef Element -> IO (JSRef 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
+      ((js_getPreviousElementSibling (unElement (toElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"nextElementSibling\"]"
+        js_getNextElementSibling :: JSRef Element -> IO (JSRef 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
+      ((js_getNextElementSibling (unElement (toElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"childElementCount\"]"
+        js_getChildElementCount :: JSRef 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 (unElement (toElement self)))
+ 
+foreign import javascript unsafe "$1[\"uiactions\"] = $2;"
+        js_setUiactions :: JSRef 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 (unElement (toElement self)) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"uiactions\"]"
+        js_getUiactions :: JSRef 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 (unElement (toElement self))))
+ 
+foreign import javascript unsafe "$1[\"webkitRegionOverset\"]"
+        js_getWebkitRegionOverset :: JSRef 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 (unElement (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,48 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"publicId\"]" js_getPublicId
+        :: JSRef Entity -> IO (JSRef (Maybe 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 (unEntity self)))
+ 
+foreign import javascript unsafe "$1[\"systemId\"]" js_getSystemId
+        :: JSRef Entity -> IO (JSRef (Maybe 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 (unEntity self)))
+ 
+foreign import javascript unsafe "$1[\"notationName\"]"
+        js_getNotationName :: JSRef Entity -> IO (JSRef (Maybe 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 (unEntity 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,777 @@
+{-# LANGUAGE PatternSynonyms, ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Generated.Enums
+       (KeyType(..), PToJSRef, ToJSRef, PFromJSRef, FromJSRef,
+        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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+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 PToJSRef KeyType where
+        pToJSRef KeyTypeSecret = js_KeyTypeSecret
+        pToJSRef KeyTypePublic = js_KeyTypePublic
+        pToJSRef KeyTypePrivate = js_KeyTypePrivate
+ 
+instance ToJSRef KeyType where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef KeyType where
+        pFromJSRef x | x `js_eq` js_KeyTypeSecret = KeyTypeSecret
+        pFromJSRef x | x `js_eq` js_KeyTypePublic = KeyTypePublic
+        pFromJSRef x | x `js_eq` js_KeyTypePrivate = KeyTypePrivate
+ 
+instance FromJSRef KeyType where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"secret\"" js_KeyTypeSecret ::
+        JSRef KeyType
+ 
+foreign import javascript unsafe "\"public\"" js_KeyTypePublic ::
+        JSRef KeyType
+ 
+foreign import javascript unsafe "\"private\"" js_KeyTypePrivate ::
+        JSRef KeyType
+ 
+data KeyUsage = KeyUsageEncrypt
+              | KeyUsageDecrypt
+              | KeyUsageSign
+              | KeyUsageVerify
+              | KeyUsageDeriveKey
+              | KeyUsageDeriveBits
+              | KeyUsageWrapKey
+              | KeyUsageUnwrapKey
+              deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef KeyUsage where
+        pToJSRef KeyUsageEncrypt = js_KeyUsageEncrypt
+        pToJSRef KeyUsageDecrypt = js_KeyUsageDecrypt
+        pToJSRef KeyUsageSign = js_KeyUsageSign
+        pToJSRef KeyUsageVerify = js_KeyUsageVerify
+        pToJSRef KeyUsageDeriveKey = js_KeyUsageDeriveKey
+        pToJSRef KeyUsageDeriveBits = js_KeyUsageDeriveBits
+        pToJSRef KeyUsageWrapKey = js_KeyUsageWrapKey
+        pToJSRef KeyUsageUnwrapKey = js_KeyUsageUnwrapKey
+ 
+instance ToJSRef KeyUsage where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef KeyUsage where
+        pFromJSRef x | x `js_eq` js_KeyUsageEncrypt = KeyUsageEncrypt
+        pFromJSRef x | x `js_eq` js_KeyUsageDecrypt = KeyUsageDecrypt
+        pFromJSRef x | x `js_eq` js_KeyUsageSign = KeyUsageSign
+        pFromJSRef x | x `js_eq` js_KeyUsageVerify = KeyUsageVerify
+        pFromJSRef x | x `js_eq` js_KeyUsageDeriveKey = KeyUsageDeriveKey
+        pFromJSRef x | x `js_eq` js_KeyUsageDeriveBits = KeyUsageDeriveBits
+        pFromJSRef x | x `js_eq` js_KeyUsageWrapKey = KeyUsageWrapKey
+        pFromJSRef x | x `js_eq` js_KeyUsageUnwrapKey = KeyUsageUnwrapKey
+ 
+instance FromJSRef KeyUsage where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"encrypt\"" js_KeyUsageEncrypt
+        :: JSRef KeyUsage
+ 
+foreign import javascript unsafe "\"decrypt\"" js_KeyUsageDecrypt
+        :: JSRef KeyUsage
+ 
+foreign import javascript unsafe "\"sign\"" js_KeyUsageSign ::
+        JSRef KeyUsage
+ 
+foreign import javascript unsafe "\"verify\"" js_KeyUsageVerify ::
+        JSRef KeyUsage
+ 
+foreign import javascript unsafe "\"deriveKey\""
+        js_KeyUsageDeriveKey :: JSRef KeyUsage
+ 
+foreign import javascript unsafe "\"deriveBits\""
+        js_KeyUsageDeriveBits :: JSRef KeyUsage
+ 
+foreign import javascript unsafe "\"wrapKey\"" js_KeyUsageWrapKey
+        :: JSRef KeyUsage
+ 
+foreign import javascript unsafe "\"unwrapKey\""
+        js_KeyUsageUnwrapKey :: JSRef KeyUsage
+ 
+data CanvasWindingRule = CanvasWindingRuleNonzero
+                       | CanvasWindingRuleEvenodd
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef CanvasWindingRule where
+        pToJSRef CanvasWindingRuleNonzero = js_CanvasWindingRuleNonzero
+        pToJSRef CanvasWindingRuleEvenodd = js_CanvasWindingRuleEvenodd
+ 
+instance ToJSRef CanvasWindingRule where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef CanvasWindingRule where
+        pFromJSRef x
+          | x `js_eq` js_CanvasWindingRuleNonzero = CanvasWindingRuleNonzero
+        pFromJSRef x
+          | x `js_eq` js_CanvasWindingRuleEvenodd = CanvasWindingRuleEvenodd
+ 
+instance FromJSRef CanvasWindingRule where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"nonzero\""
+        js_CanvasWindingRuleNonzero :: JSRef CanvasWindingRule
+ 
+foreign import javascript unsafe "\"evenodd\""
+        js_CanvasWindingRuleEvenodd :: JSRef CanvasWindingRule
+ 
+data VideoPresentationMode = VideoPresentationModeFullscreen
+                           | VideoPresentationModeOptimized
+                           | VideoPresentationModeInline
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef VideoPresentationMode where
+        pToJSRef VideoPresentationModeFullscreen
+          = js_VideoPresentationModeFullscreen
+        pToJSRef VideoPresentationModeOptimized
+          = js_VideoPresentationModeOptimized
+        pToJSRef VideoPresentationModeInline
+          = js_VideoPresentationModeInline
+ 
+instance ToJSRef VideoPresentationMode where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef VideoPresentationMode where
+        pFromJSRef x
+          | x `js_eq` js_VideoPresentationModeFullscreen =
+            VideoPresentationModeFullscreen
+        pFromJSRef x
+          | x `js_eq` js_VideoPresentationModeOptimized =
+            VideoPresentationModeOptimized
+        pFromJSRef x
+          | x `js_eq` js_VideoPresentationModeInline =
+            VideoPresentationModeInline
+ 
+instance FromJSRef VideoPresentationMode where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"fullscreen\""
+        js_VideoPresentationModeFullscreen :: JSRef VideoPresentationMode
+ 
+foreign import javascript unsafe "\"optimized\""
+        js_VideoPresentationModeOptimized :: JSRef VideoPresentationMode
+ 
+foreign import javascript unsafe "\"inline\""
+        js_VideoPresentationModeInline :: JSRef VideoPresentationMode
+ 
+data TextTrackMode = TextTrackModeDisabled
+                   | TextTrackModeHidden
+                   | TextTrackModeShowing
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef TextTrackMode where
+        pToJSRef TextTrackModeDisabled = js_TextTrackModeDisabled
+        pToJSRef TextTrackModeHidden = js_TextTrackModeHidden
+        pToJSRef TextTrackModeShowing = js_TextTrackModeShowing
+ 
+instance ToJSRef TextTrackMode where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef TextTrackMode where
+        pFromJSRef x
+          | x `js_eq` js_TextTrackModeDisabled = TextTrackModeDisabled
+        pFromJSRef x
+          | x `js_eq` js_TextTrackModeHidden = TextTrackModeHidden
+        pFromJSRef x
+          | x `js_eq` js_TextTrackModeShowing = TextTrackModeShowing
+ 
+instance FromJSRef TextTrackMode where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"disabled\""
+        js_TextTrackModeDisabled :: JSRef TextTrackMode
+ 
+foreign import javascript unsafe "\"hidden\""
+        js_TextTrackModeHidden :: JSRef TextTrackMode
+ 
+foreign import javascript unsafe "\"showing\""
+        js_TextTrackModeShowing :: JSRef TextTrackMode
+ 
+data TextTrackKind = TextTrackKindSubtitles
+                   | TextTrackKindCaptions
+                   | TextTrackKindDescriptions
+                   | TextTrackKindChapters
+                   | TextTrackKindMetadata
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef TextTrackKind where
+        pToJSRef TextTrackKindSubtitles = js_TextTrackKindSubtitles
+        pToJSRef TextTrackKindCaptions = js_TextTrackKindCaptions
+        pToJSRef TextTrackKindDescriptions = js_TextTrackKindDescriptions
+        pToJSRef TextTrackKindChapters = js_TextTrackKindChapters
+        pToJSRef TextTrackKindMetadata = js_TextTrackKindMetadata
+ 
+instance ToJSRef TextTrackKind where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef TextTrackKind where
+        pFromJSRef x
+          | x `js_eq` js_TextTrackKindSubtitles = TextTrackKindSubtitles
+        pFromJSRef x
+          | x `js_eq` js_TextTrackKindCaptions = TextTrackKindCaptions
+        pFromJSRef x
+          | x `js_eq` js_TextTrackKindDescriptions =
+            TextTrackKindDescriptions
+        pFromJSRef x
+          | x `js_eq` js_TextTrackKindChapters = TextTrackKindChapters
+        pFromJSRef x
+          | x `js_eq` js_TextTrackKindMetadata = TextTrackKindMetadata
+ 
+instance FromJSRef TextTrackKind where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"subtitles\""
+        js_TextTrackKindSubtitles :: JSRef TextTrackKind
+ 
+foreign import javascript unsafe "\"captions\""
+        js_TextTrackKindCaptions :: JSRef TextTrackKind
+ 
+foreign import javascript unsafe "\"descriptions\""
+        js_TextTrackKindDescriptions :: JSRef TextTrackKind
+ 
+foreign import javascript unsafe "\"chapters\""
+        js_TextTrackKindChapters :: JSRef TextTrackKind
+ 
+foreign import javascript unsafe "\"metadata\""
+        js_TextTrackKindMetadata :: JSRef TextTrackKind
+ 
+data DeviceType = DeviceTypeNone
+                | DeviceTypeAirplay
+                | DeviceTypeTvout
+                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef DeviceType where
+        pToJSRef DeviceTypeNone = js_DeviceTypeNone
+        pToJSRef DeviceTypeAirplay = js_DeviceTypeAirplay
+        pToJSRef DeviceTypeTvout = js_DeviceTypeTvout
+ 
+instance ToJSRef DeviceType where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef DeviceType where
+        pFromJSRef x | x `js_eq` js_DeviceTypeNone = DeviceTypeNone
+        pFromJSRef x | x `js_eq` js_DeviceTypeAirplay = DeviceTypeAirplay
+        pFromJSRef x | x `js_eq` js_DeviceTypeTvout = DeviceTypeTvout
+ 
+instance FromJSRef DeviceType where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"none\"" js_DeviceTypeNone ::
+        JSRef DeviceType
+ 
+foreign import javascript unsafe "\"airplay\"" js_DeviceTypeAirplay
+        :: JSRef DeviceType
+ 
+foreign import javascript unsafe "\"tvout\"" js_DeviceTypeTvout ::
+        JSRef DeviceType
+ 
+data MediaUIPartID = MediaUIPartIDOptimizedFullscreenButton
+                   | MediaUIPartIDOptimizedFullscreenPlaceholder
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef MediaUIPartID where
+        pToJSRef MediaUIPartIDOptimizedFullscreenButton
+          = js_MediaUIPartIDOptimizedFullscreenButton
+        pToJSRef MediaUIPartIDOptimizedFullscreenPlaceholder
+          = js_MediaUIPartIDOptimizedFullscreenPlaceholder
+ 
+instance ToJSRef MediaUIPartID where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef MediaUIPartID where
+        pFromJSRef x
+          | x `js_eq` js_MediaUIPartIDOptimizedFullscreenButton =
+            MediaUIPartIDOptimizedFullscreenButton
+        pFromJSRef x
+          | x `js_eq` js_MediaUIPartIDOptimizedFullscreenPlaceholder =
+            MediaUIPartIDOptimizedFullscreenPlaceholder
+ 
+instance FromJSRef MediaUIPartID where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"optimized-fullscreen-button\""
+        js_MediaUIPartIDOptimizedFullscreenButton :: JSRef MediaUIPartID
+ 
+foreign import javascript unsafe
+        "\"optimized-fullscreen-placeholder\""
+        js_MediaUIPartIDOptimizedFullscreenPlaceholder ::
+        JSRef MediaUIPartID
+ 
+data EndOfStreamError = EndOfStreamErrorNetwork
+                      | EndOfStreamErrorDecode
+                      deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef EndOfStreamError where
+        pToJSRef EndOfStreamErrorNetwork = js_EndOfStreamErrorNetwork
+        pToJSRef EndOfStreamErrorDecode = js_EndOfStreamErrorDecode
+ 
+instance ToJSRef EndOfStreamError where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef EndOfStreamError where
+        pFromJSRef x
+          | x `js_eq` js_EndOfStreamErrorNetwork = EndOfStreamErrorNetwork
+        pFromJSRef x
+          | x `js_eq` js_EndOfStreamErrorDecode = EndOfStreamErrorDecode
+ 
+instance FromJSRef EndOfStreamError where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"network\""
+        js_EndOfStreamErrorNetwork :: JSRef EndOfStreamError
+ 
+foreign import javascript unsafe "\"decode\""
+        js_EndOfStreamErrorDecode :: JSRef EndOfStreamError
+ 
+data AppendMode = AppendModeSegments
+                | AppendModeSequence
+                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef AppendMode where
+        pToJSRef AppendModeSegments = js_AppendModeSegments
+        pToJSRef AppendModeSequence = js_AppendModeSequence
+ 
+instance ToJSRef AppendMode where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef AppendMode where
+        pFromJSRef x | x `js_eq` js_AppendModeSegments = AppendModeSegments
+        pFromJSRef x | x `js_eq` js_AppendModeSequence = AppendModeSequence
+ 
+instance FromJSRef AppendMode where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"segments\""
+        js_AppendModeSegments :: JSRef AppendMode
+ 
+foreign import javascript unsafe "\"sequence\""
+        js_AppendModeSequence :: JSRef AppendMode
+ 
+data SourceTypeEnum = SourceTypeEnumNone
+                    | SourceTypeEnumCamera
+                    | SourceTypeEnumMicrophone
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef SourceTypeEnum where
+        pToJSRef SourceTypeEnumNone = js_SourceTypeEnumNone
+        pToJSRef SourceTypeEnumCamera = js_SourceTypeEnumCamera
+        pToJSRef SourceTypeEnumMicrophone = js_SourceTypeEnumMicrophone
+ 
+instance ToJSRef SourceTypeEnum where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef SourceTypeEnum where
+        pFromJSRef x | x `js_eq` js_SourceTypeEnumNone = SourceTypeEnumNone
+        pFromJSRef x
+          | x `js_eq` js_SourceTypeEnumCamera = SourceTypeEnumCamera
+        pFromJSRef x
+          | x `js_eq` js_SourceTypeEnumMicrophone = SourceTypeEnumMicrophone
+ 
+instance FromJSRef SourceTypeEnum where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"none\"" js_SourceTypeEnumNone
+        :: JSRef SourceTypeEnum
+ 
+foreign import javascript unsafe "\"camera\""
+        js_SourceTypeEnumCamera :: JSRef SourceTypeEnum
+ 
+foreign import javascript unsafe "\"microphone\""
+        js_SourceTypeEnumMicrophone :: JSRef SourceTypeEnum
+ 
+data VideoFacingModeEnum = VideoFacingModeEnumUser
+                         | VideoFacingModeEnumEnvironment
+                         | VideoFacingModeEnumLeft
+                         | VideoFacingModeEnumRight
+                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef VideoFacingModeEnum where
+        pToJSRef VideoFacingModeEnumUser = js_VideoFacingModeEnumUser
+        pToJSRef VideoFacingModeEnumEnvironment
+          = js_VideoFacingModeEnumEnvironment
+        pToJSRef VideoFacingModeEnumLeft = js_VideoFacingModeEnumLeft
+        pToJSRef VideoFacingModeEnumRight = js_VideoFacingModeEnumRight
+ 
+instance ToJSRef VideoFacingModeEnum where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef VideoFacingModeEnum where
+        pFromJSRef x
+          | x `js_eq` js_VideoFacingModeEnumUser = VideoFacingModeEnumUser
+        pFromJSRef x
+          | x `js_eq` js_VideoFacingModeEnumEnvironment =
+            VideoFacingModeEnumEnvironment
+        pFromJSRef x
+          | x `js_eq` js_VideoFacingModeEnumLeft = VideoFacingModeEnumLeft
+        pFromJSRef x
+          | x `js_eq` js_VideoFacingModeEnumRight = VideoFacingModeEnumRight
+ 
+instance FromJSRef VideoFacingModeEnum where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"user\""
+        js_VideoFacingModeEnumUser :: JSRef VideoFacingModeEnum
+ 
+foreign import javascript unsafe "\"environment\""
+        js_VideoFacingModeEnumEnvironment :: JSRef VideoFacingModeEnum
+ 
+foreign import javascript unsafe "\"left\""
+        js_VideoFacingModeEnumLeft :: JSRef VideoFacingModeEnum
+ 
+foreign import javascript unsafe "\"right\""
+        js_VideoFacingModeEnumRight :: JSRef VideoFacingModeEnum
+ 
+data MediaStreamTrackState = MediaStreamTrackStateNew
+                           | MediaStreamTrackStateLive
+                           | MediaStreamTrackStateEnded
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef MediaStreamTrackState where
+        pToJSRef MediaStreamTrackStateNew = js_MediaStreamTrackStateNew
+        pToJSRef MediaStreamTrackStateLive = js_MediaStreamTrackStateLive
+        pToJSRef MediaStreamTrackStateEnded = js_MediaStreamTrackStateEnded
+ 
+instance ToJSRef MediaStreamTrackState where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef MediaStreamTrackState where
+        pFromJSRef x
+          | x `js_eq` js_MediaStreamTrackStateNew = MediaStreamTrackStateNew
+        pFromJSRef x
+          | x `js_eq` js_MediaStreamTrackStateLive =
+            MediaStreamTrackStateLive
+        pFromJSRef x
+          | x `js_eq` js_MediaStreamTrackStateEnded =
+            MediaStreamTrackStateEnded
+ 
+instance FromJSRef MediaStreamTrackState where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"new\""
+        js_MediaStreamTrackStateNew :: JSRef MediaStreamTrackState
+ 
+foreign import javascript unsafe "\"live\""
+        js_MediaStreamTrackStateLive :: JSRef MediaStreamTrackState
+ 
+foreign import javascript unsafe "\"ended\""
+        js_MediaStreamTrackStateEnded :: JSRef MediaStreamTrackState
+ 
+data RTCIceTransportsEnum = RTCIceTransportsEnumNone
+                          | RTCIceTransportsEnumRelay
+                          | RTCIceTransportsEnumAll
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef RTCIceTransportsEnum where
+        pToJSRef RTCIceTransportsEnumNone = js_RTCIceTransportsEnumNone
+        pToJSRef RTCIceTransportsEnumRelay = js_RTCIceTransportsEnumRelay
+        pToJSRef RTCIceTransportsEnumAll = js_RTCIceTransportsEnumAll
+ 
+instance ToJSRef RTCIceTransportsEnum where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef RTCIceTransportsEnum where
+        pFromJSRef x
+          | x `js_eq` js_RTCIceTransportsEnumNone = RTCIceTransportsEnumNone
+        pFromJSRef x
+          | x `js_eq` js_RTCIceTransportsEnumRelay =
+            RTCIceTransportsEnumRelay
+        pFromJSRef x
+          | x `js_eq` js_RTCIceTransportsEnumAll = RTCIceTransportsEnumAll
+ 
+instance FromJSRef RTCIceTransportsEnum where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"none\""
+        js_RTCIceTransportsEnumNone :: JSRef RTCIceTransportsEnum
+ 
+foreign import javascript unsafe "\"relay\""
+        js_RTCIceTransportsEnumRelay :: JSRef RTCIceTransportsEnum
+ 
+foreign import javascript unsafe "\"all\""
+        js_RTCIceTransportsEnumAll :: JSRef RTCIceTransportsEnum
+ 
+data RTCIdentityOptionEnum = RTCIdentityOptionEnumYes
+                           | RTCIdentityOptionEnumNo
+                           | RTCIdentityOptionEnumIfconfigured
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef RTCIdentityOptionEnum where
+        pToJSRef RTCIdentityOptionEnumYes = js_RTCIdentityOptionEnumYes
+        pToJSRef RTCIdentityOptionEnumNo = js_RTCIdentityOptionEnumNo
+        pToJSRef RTCIdentityOptionEnumIfconfigured
+          = js_RTCIdentityOptionEnumIfconfigured
+ 
+instance ToJSRef RTCIdentityOptionEnum where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef RTCIdentityOptionEnum where
+        pFromJSRef x
+          | x `js_eq` js_RTCIdentityOptionEnumYes = RTCIdentityOptionEnumYes
+        pFromJSRef x
+          | x `js_eq` js_RTCIdentityOptionEnumNo = RTCIdentityOptionEnumNo
+        pFromJSRef x
+          | x `js_eq` js_RTCIdentityOptionEnumIfconfigured =
+            RTCIdentityOptionEnumIfconfigured
+ 
+instance FromJSRef RTCIdentityOptionEnum where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"yes\""
+        js_RTCIdentityOptionEnumYes :: JSRef RTCIdentityOptionEnum
+ 
+foreign import javascript unsafe "\"no\""
+        js_RTCIdentityOptionEnumNo :: JSRef RTCIdentityOptionEnum
+ 
+foreign import javascript unsafe "\"ifconfigured\""
+        js_RTCIdentityOptionEnumIfconfigured :: JSRef RTCIdentityOptionEnum
+ 
+data ReadableStreamStateType = ReadableStreamStateTypeReadable
+                             | ReadableStreamStateTypeWaiting
+                             | ReadableStreamStateTypeClosed
+                             | ReadableStreamStateTypeErrored
+                             deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef ReadableStreamStateType where
+        pToJSRef ReadableStreamStateTypeReadable
+          = js_ReadableStreamStateTypeReadable
+        pToJSRef ReadableStreamStateTypeWaiting
+          = js_ReadableStreamStateTypeWaiting
+        pToJSRef ReadableStreamStateTypeClosed
+          = js_ReadableStreamStateTypeClosed
+        pToJSRef ReadableStreamStateTypeErrored
+          = js_ReadableStreamStateTypeErrored
+ 
+instance ToJSRef ReadableStreamStateType where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef ReadableStreamStateType where
+        pFromJSRef x
+          | x `js_eq` js_ReadableStreamStateTypeReadable =
+            ReadableStreamStateTypeReadable
+        pFromJSRef x
+          | x `js_eq` js_ReadableStreamStateTypeWaiting =
+            ReadableStreamStateTypeWaiting
+        pFromJSRef x
+          | x `js_eq` js_ReadableStreamStateTypeClosed =
+            ReadableStreamStateTypeClosed
+        pFromJSRef x
+          | x `js_eq` js_ReadableStreamStateTypeErrored =
+            ReadableStreamStateTypeErrored
+ 
+instance FromJSRef ReadableStreamStateType where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"readable\""
+        js_ReadableStreamStateTypeReadable :: JSRef ReadableStreamStateType
+ 
+foreign import javascript unsafe "\"waiting\""
+        js_ReadableStreamStateTypeWaiting :: JSRef ReadableStreamStateType
+ 
+foreign import javascript unsafe "\"closed\""
+        js_ReadableStreamStateTypeClosed :: JSRef ReadableStreamStateType
+ 
+foreign import javascript unsafe "\"errored\""
+        js_ReadableStreamStateTypeErrored :: JSRef ReadableStreamStateType
+ 
+data OverSampleType = OverSampleTypeNone
+                    | OverSampleType2x
+                    | OverSampleType4x
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef OverSampleType where
+        pToJSRef OverSampleTypeNone = js_OverSampleTypeNone
+        pToJSRef OverSampleType2x = js_OverSampleType2x
+        pToJSRef OverSampleType4x = js_OverSampleType4x
+ 
+instance ToJSRef OverSampleType where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef OverSampleType where
+        pFromJSRef x | x `js_eq` js_OverSampleTypeNone = OverSampleTypeNone
+        pFromJSRef x | x `js_eq` js_OverSampleType2x = OverSampleType2x
+        pFromJSRef x | x `js_eq` js_OverSampleType4x = OverSampleType4x
+ 
+instance FromJSRef OverSampleType where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"none\"" js_OverSampleTypeNone
+        :: JSRef OverSampleType
+ 
+foreign import javascript unsafe "\"2x\"" js_OverSampleType2x ::
+        JSRef OverSampleType
+ 
+foreign import javascript unsafe "\"4x\"" js_OverSampleType4x ::
+        JSRef OverSampleType
+ 
+data PageOverlayType = PageOverlayTypeView
+                     | PageOverlayTypeDocument
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef PageOverlayType where
+        pToJSRef PageOverlayTypeView = js_PageOverlayTypeView
+        pToJSRef PageOverlayTypeDocument = js_PageOverlayTypeDocument
+ 
+instance ToJSRef PageOverlayType where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef PageOverlayType where
+        pFromJSRef x
+          | x `js_eq` js_PageOverlayTypeView = PageOverlayTypeView
+        pFromJSRef x
+          | x `js_eq` js_PageOverlayTypeDocument = PageOverlayTypeDocument
+ 
+instance FromJSRef PageOverlayType where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"view\"" js_PageOverlayTypeView
+        :: JSRef PageOverlayType
+ 
+foreign import javascript unsafe "\"document\""
+        js_PageOverlayTypeDocument :: JSRef PageOverlayType
+ 
+data XMLHttpRequestResponseType = XMLHttpRequestResponseType
+                                | XMLHttpRequestResponseTypeArraybuffer
+                                | XMLHttpRequestResponseTypeBlob
+                                | XMLHttpRequestResponseTypeDocument
+                                | XMLHttpRequestResponseTypeJson
+                                | XMLHttpRequestResponseTypeText
+                                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSRef XMLHttpRequestResponseType where
+        pToJSRef XMLHttpRequestResponseType = js_XMLHttpRequestResponseType
+        pToJSRef XMLHttpRequestResponseTypeArraybuffer
+          = js_XMLHttpRequestResponseTypeArraybuffer
+        pToJSRef XMLHttpRequestResponseTypeBlob
+          = js_XMLHttpRequestResponseTypeBlob
+        pToJSRef XMLHttpRequestResponseTypeDocument
+          = js_XMLHttpRequestResponseTypeDocument
+        pToJSRef XMLHttpRequestResponseTypeJson
+          = js_XMLHttpRequestResponseTypeJson
+        pToJSRef XMLHttpRequestResponseTypeText
+          = js_XMLHttpRequestResponseTypeText
+ 
+instance ToJSRef XMLHttpRequestResponseType where
+        toJSRef = return . pToJSRef
+ 
+instance PFromJSRef XMLHttpRequestResponseType where
+        pFromJSRef x
+          | x `js_eq` js_XMLHttpRequestResponseType =
+            XMLHttpRequestResponseType
+        pFromJSRef x
+          | x `js_eq` js_XMLHttpRequestResponseTypeArraybuffer =
+            XMLHttpRequestResponseTypeArraybuffer
+        pFromJSRef x
+          | x `js_eq` js_XMLHttpRequestResponseTypeBlob =
+            XMLHttpRequestResponseTypeBlob
+        pFromJSRef x
+          | x `js_eq` js_XMLHttpRequestResponseTypeDocument =
+            XMLHttpRequestResponseTypeDocument
+        pFromJSRef x
+          | x `js_eq` js_XMLHttpRequestResponseTypeJson =
+            XMLHttpRequestResponseTypeJson
+        pFromJSRef x
+          | x `js_eq` js_XMLHttpRequestResponseTypeText =
+            XMLHttpRequestResponseTypeText
+ 
+instance FromJSRef XMLHttpRequestResponseType where
+        fromJSRefUnchecked = return . pFromJSRef
+        fromJSRef = return . pFromJSRef . castRef
+ 
+foreign import javascript unsafe "\"\""
+        js_XMLHttpRequestResponseType :: JSRef XMLHttpRequestResponseType
+ 
+foreign import javascript unsafe "\"arraybuffer\""
+        js_XMLHttpRequestResponseTypeArraybuffer ::
+        JSRef XMLHttpRequestResponseType
+ 
+foreign import javascript unsafe "\"blob\""
+        js_XMLHttpRequestResponseTypeBlob ::
+        JSRef XMLHttpRequestResponseType
+ 
+foreign import javascript unsafe "\"document\""
+        js_XMLHttpRequestResponseTypeDocument ::
+        JSRef XMLHttpRequestResponseType
+ 
+foreign import javascript unsafe "\"json\""
+        js_XMLHttpRequestResponseTypeJson ::
+        JSRef XMLHttpRequestResponseType
+ 
+foreign import javascript unsafe "\"text\""
+        js_XMLHttpRequestResponseTypeText ::
+        JSRef XMLHttpRequestResponseType
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,52 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"message\"]" js_getMessage ::
+        JSRef 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 (unErrorEvent self)))
+ 
+foreign import javascript unsafe "$1[\"filename\"]" js_getFilename
+        :: JSRef 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 (unErrorEvent self)))
+ 
+foreign import javascript unsafe "$1[\"lineno\"]" js_getLineno ::
+        JSRef 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 (unErrorEvent self))
+ 
+foreign import javascript unsafe "$1[\"colno\"]" js_getColno ::
+        JSRef 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 (unErrorEvent 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,214 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"stopPropagation\"]()"
+        js_stopPropagation :: JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe "$1[\"preventDefault\"]()"
+        js_preventDefault :: JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe "$1[\"initEvent\"]($2, $3, $4)"
+        js_initEvent :: JSRef 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 (unEvent (toEvent self)) (toJSString eventTypeArg)
+         canBubbleArg
+         cancelableArg)
+ 
+foreign import javascript unsafe
+        "$1[\"stopImmediatePropagation\"]()" js_stopImmediatePropagation ::
+        JSRef 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 (unEvent (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 ::
+        JSRef 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 (unEvent (toEvent self))))
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef Event -> IO (JSRef 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 ((js_getTarget (unEvent (toEvent self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"currentTarget\"]"
+        js_getCurrentTarget :: JSRef Event -> IO (JSRef 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
+      ((js_getCurrentTarget (unEvent (toEvent self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"eventPhase\"]"
+        js_getEventPhase :: JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe "($1[\"bubbles\"] ? 1 : 0)"
+        js_getBubbles :: JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe "($1[\"cancelable\"] ? 1 : 0)"
+        js_getCancelable :: JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe "$1[\"timeStamp\"]"
+        js_getTimeStamp :: JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe
+        "($1[\"defaultPrevented\"] ? 1 : 0)" js_getDefaultPrevented ::
+        JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe "$1[\"srcElement\"]"
+        js_getSrcElement :: JSRef Event -> IO (JSRef 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
+      ((js_getSrcElement (unEvent (toEvent self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"returnValue\"] = $2;"
+        js_setReturnValue :: JSRef 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 (unEvent (toEvent self)) val)
+ 
+foreign import javascript unsafe "($1[\"returnValue\"] ? 1 : 0)"
+        js_getReturnValue :: JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe "$1[\"cancelBubble\"] = $2;"
+        js_setCancelBubble :: JSRef 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 (unEvent (toEvent self)) val)
+ 
+foreign import javascript unsafe "($1[\"cancelBubble\"] ? 1 : 0)"
+        js_getCancelBubble :: JSRef 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 (unEvent (toEvent self)))
+ 
+foreign import javascript unsafe "$1[\"clipboardData\"]"
+        js_getClipboardData :: JSRef Event -> IO (JSRef 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
+      ((js_getClipboardData (unEvent (toEvent self))) >>= fromJSRef)
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,30 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"handleEvent\"]($2)"
+        js_handleEvent :: JSRef EventListener -> JSRef 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 (unEventListener self)
+         (maybe jsNull (unEvent . 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,83 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"EventSource\"]($1,\n$2)" js_newEventSource ::
+        JSString -> JSRef Dictionary -> IO (JSRef 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)
+         (maybe jsNull (unDictionary . toDictionary) eventSourceInit)
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unEventSource self))
+pattern CONNECTING = 0
+pattern OPEN = 1
+pattern CLOSED = 2
+ 
+foreign import javascript unsafe "$1[\"url\"]" js_getUrl ::
+        JSRef 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 (unEventSource self)))
+ 
+foreign import javascript unsafe
+        "($1[\"withCredentials\"] ? 1 : 0)" js_getWithCredentials ::
+        JSRef 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 (unEventSource self))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unEventSource 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,65 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"addEventListener\"]($2, $3,\n$4)" js_addEventListener ::
+        JSRef EventTarget ->
+          JSString -> JSRef 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 (unEventTarget (toEventTarget self))
+         (toJSString type')
+         (maybe jsNull pToJSRef listener)
+         useCapture)
+ 
+foreign import javascript unsafe
+        "$1[\"removeEventListener\"]($2,\n$3, $4)" js_removeEventListener
+        ::
+        JSRef EventTarget ->
+          JSString -> JSRef 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 (unEventTarget (toEventTarget self))
+         (toJSString type')
+         (maybe jsNull pToJSRef listener)
+         useCapture)
+ 
+foreign import javascript unsafe
+        "($1[\"dispatchEvent\"]($2) ? 1 : 0)" js_dispatchEvent ::
+        JSRef EventTarget -> JSRef 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 (unEventTarget (toEventTarget self))
+         (maybe jsNull (unEvent . 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unFile self)))
+ 
+foreign import javascript unsafe "$1[\"lastModifiedDate\"]"
+        js_getLastModifiedDate :: JSRef File -> IO (JSRef 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 ((js_getLastModifiedDate (unFile self)) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef 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 (unFileError 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef FileList -> Word -> IO (JSRef 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 ((js_item (unFileList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unFileList 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,134 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"FileReader\"]()"
+        js_newFileReader :: IO (JSRef FileReader)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation> 
+newFileReader :: (MonadIO m) => m FileReader
+newFileReader = liftIO (js_newFileReader >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"readAsArrayBuffer\"]($2)"
+        js_readAsArrayBuffer :: JSRef FileReader -> JSRef 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 (unFileReader self)
+         (maybe jsNull (unBlob . toBlob) blob))
+ 
+foreign import javascript unsafe "$1[\"readAsBinaryString\"]($2)"
+        js_readAsBinaryString :: JSRef FileReader -> JSRef 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 (unFileReader self)
+         (maybe jsNull (unBlob . toBlob) blob))
+ 
+foreign import javascript unsafe "$1[\"readAsText\"]($2, $3)"
+        js_readAsText ::
+        JSRef FileReader -> JSRef 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 (unFileReader self)
+         (maybe jsNull (unBlob . toBlob) blob)
+         (toJSString encoding))
+ 
+foreign import javascript unsafe "$1[\"readAsDataURL\"]($2)"
+        js_readAsDataURL :: JSRef FileReader -> JSRef 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 (unFileReader self)
+         (maybe jsNull (unBlob . toBlob) blob))
+ 
+foreign import javascript unsafe "$1[\"abort\"]()" js_abort ::
+        JSRef 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 (unFileReader self))
+pattern EMPTY = 0
+pattern LOADING = 1
+pattern DONE = 2
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unFileReader self))
+ 
+foreign import javascript unsafe "$1[\"result\"]" js_getResult ::
+        JSRef FileReader -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
+getResult :: (MonadIO m) => FileReader -> m (JSRef a)
+getResult self = liftIO (js_getResult (unFileReader self))
+ 
+foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+        JSRef FileReader -> IO (JSRef 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 ((js_getError (unFileReader self)) >>= fromJSRef)
+
+-- | <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,87 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"FileReaderSync\"]()"
+        js_newFileReaderSync :: IO (JSRef FileReaderSync)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation> 
+newFileReaderSync :: (MonadIO m) => m FileReaderSync
+newFileReaderSync
+  = liftIO (js_newFileReaderSync >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"readAsArrayBuffer\"]($2)"
+        js_readAsArrayBuffer ::
+        JSRef FileReaderSync -> JSRef Blob -> IO (JSRef 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
+      ((js_readAsArrayBuffer (unFileReaderSync self)
+          (maybe jsNull (unBlob . toBlob) blob))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"readAsBinaryString\"]($2)"
+        js_readAsBinaryString ::
+        JSRef FileReaderSync -> JSRef 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 (unFileReaderSync self)
+            (maybe jsNull (unBlob . toBlob) blob)))
+ 
+foreign import javascript unsafe "$1[\"readAsText\"]($2, $3)"
+        js_readAsText ::
+        JSRef FileReaderSync -> JSRef 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 (unFileReaderSync self)
+            (maybe jsNull (unBlob . toBlob) blob)
+            (toJSString encoding)))
+ 
+foreign import javascript unsafe "$1[\"readAsDataURL\"]($2)"
+        js_readAsDataURL ::
+        JSRef FileReaderSync -> JSRef 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 (unFileReaderSync self)
+            (maybe jsNull (unBlob . 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"relatedTarget\"]"
+        js_getRelatedTarget :: JSRef FocusEvent -> IO (JSRef 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 ((js_getRelatedTarget (unFocusEvent self)) >>= fromJSRef)
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,85 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"checkFont\"]($2,\n$3) ? 1 : 0)" js_checkFont ::
+        JSRef 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 (unFontLoader self) (toJSString font)
+         (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"loadFont\"]($2)" js_loadFont
+        :: JSRef FontLoader -> JSRef 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 (unFontLoader self)
+         (maybe jsNull (unDictionary . toDictionary) params))
+ 
+foreign import javascript unsafe "$1[\"notifyWhenFontsReady\"]($2)"
+        js_notifyWhenFontsReady ::
+        JSRef FontLoader -> JSRef 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 (unFontLoader self)
+         (maybe jsNull pToJSRef 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 :: JSRef 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 (unFontLoader 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,43 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"FormData\"]($1)"
+        js_newFormData :: JSRef HTMLFormElement -> IO (JSRef 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 (maybe jsNull pToJSRef form) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"append\"]($2, $3, $4)"
+        js_append ::
+        JSRef 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 (unFormData 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,26 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"gain\"]" js_getGain ::
+        JSRef GainNode -> IO (JSRef 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 ((js_getGain (unGainNode self)) >>= fromJSRef)
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,74 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unGamepad self)))
+ 
+foreign import javascript unsafe "$1[\"index\"]" js_getIndex ::
+        JSRef 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 (unGamepad self))
+ 
+foreign import javascript unsafe "($1[\"connected\"] ? 1 : 0)"
+        js_getConnected :: JSRef 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 (unGamepad self))
+ 
+foreign import javascript unsafe "$1[\"timestamp\"]"
+        js_getTimestamp :: JSRef 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 (unGamepad self))
+ 
+foreign import javascript unsafe "$1[\"mapping\"]" js_getMapping ::
+        JSRef 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 (unGamepad self)))
+ 
+foreign import javascript unsafe "$1[\"axes\"]" js_getAxes ::
+        JSRef Gamepad -> IO (JSRef [Double])
+
+-- | <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 (unGamepad self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"buttons\"]" js_getButtons ::
+        JSRef Gamepad -> IO (JSRef [Maybe GamepadButton])
+
+-- | <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 (unGamepad self)) >>= fromJSRefUnchecked)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "($1[\"pressed\"] ? 1 : 0)"
+        js_getPressed :: JSRef 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 (unGamepadButton self))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unGamepadButton 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"gamepad\"]" js_getGamepad ::
+        JSRef GamepadEvent -> IO (JSRef 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 ((js_getGamepad (unGamepadEvent self)) >>= fromJSRef)
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,66 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getCurrentPosition\"]($2, $3,\n$4)" js_getCurrentPosition ::
+        JSRef Geolocation ->
+          JSRef PositionCallback ->
+            JSRef PositionErrorCallback -> JSRef 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 (unGeolocation self)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef errorCallback)
+         (maybe jsNull (unPositionOptions . toPositionOptions) options))
+ 
+foreign import javascript unsafe
+        "$1[\"watchPosition\"]($2, $3, $4)" js_watchPosition ::
+        JSRef Geolocation ->
+          JSRef PositionCallback ->
+            JSRef PositionErrorCallback -> JSRef 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 (unGeolocation self)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef errorCallback)
+         (maybe jsNull (unPositionOptions . toPositionOptions) options))
+ 
+foreign import javascript unsafe "$1[\"clearWatch\"]($2)"
+        js_clearWatch :: JSRef 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 (unGeolocation 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,34 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"coords\"]" js_getCoords ::
+        JSRef Geoposition -> IO (JSRef 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 ((js_getCoords (unGeoposition self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"timestamp\"]"
+        js_getTimestamp :: JSRef 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 (unGeoposition 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,60 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef HTMLAllCollection -> Word -> IO (JSRef 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 ((js_item (unHTMLAllCollection self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        JSRef HTMLAllCollection -> JSString -> IO (JSRef 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
+      ((js_namedItem (unHTMLAllCollection self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"tags\"]($2)" js_tags ::
+        JSRef HTMLAllCollection -> JSString -> IO (JSRef 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
+      ((js_tags (unHTMLAllCollection self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unHTMLAllCollection 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,466 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"charset\"] = $2;"
+        js_setCharset :: JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"charset\"]" js_getCharset ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"coords\"] = $2;"
+        js_setCoords :: JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"coords\"]" js_getCoords ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"download\"] = $2;"
+        js_setDownload :: JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"download\"]" js_getDownload
+        :: JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+        JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"hreflang\"] = $2;"
+        js_setHreflang :: JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"hreflang\"]" js_getHreflang
+        :: JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"ping\"] = $2;" js_setPing ::
+        JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"ping\"]" js_getPing ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"rel\"] = $2;" js_setRel ::
+        JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"rel\"]" js_getRel ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"rev\"] = $2;" js_setRev ::
+        JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"rev\"]" js_getRev ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"shape\"] = $2;" js_setShape
+        :: JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"shape\"]" js_getShape ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"target\"] = $2;"
+        js_setTarget :: JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"hash\"] = $2;" js_setHash ::
+        JSRef HTMLAnchorElement -> JSRef (Maybe 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 (unHTMLAnchorElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"hash\"]" js_getHash ::
+        JSRef HTMLAnchorElement -> IO (JSRef (Maybe 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"host\"] = $2;" js_setHost ::
+        JSRef HTMLAnchorElement -> JSRef (Maybe 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 (unHTMLAnchorElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"host\"]" js_getHost ::
+        JSRef HTMLAnchorElement -> IO (JSRef (Maybe 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"hostname\"] = $2;"
+        js_setHostname ::
+        JSRef HTMLAnchorElement -> JSRef (Maybe 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 (unHTMLAnchorElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"hostname\"]" js_getHostname
+        :: JSRef HTMLAnchorElement -> IO (JSRef (Maybe 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"pathname\"] = $2;"
+        js_setPathname ::
+        JSRef HTMLAnchorElement -> JSRef (Maybe 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 (unHTMLAnchorElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"pathname\"]" js_getPathname
+        :: JSRef HTMLAnchorElement -> IO (JSRef (Maybe 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"port\"] = $2;" js_setPort ::
+        JSRef HTMLAnchorElement -> JSRef (Maybe 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 (unHTMLAnchorElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"port\"]" js_getPort ::
+        JSRef HTMLAnchorElement -> IO (JSRef (Maybe 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"protocol\"] = $2;"
+        js_setProtocol ::
+        JSRef HTMLAnchorElement -> JSRef (Maybe 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 (unHTMLAnchorElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: JSRef HTMLAnchorElement -> IO (JSRef (Maybe 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"search\"] = $2;"
+        js_setSearch ::
+        JSRef HTMLAnchorElement -> JSRef (Maybe 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 (unHTMLAnchorElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"search\"]" js_getSearch ::
+        JSRef HTMLAnchorElement -> IO (JSRef (Maybe 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"origin\"]" js_getOrigin ::
+        JSRef HTMLAnchorElement -> IO (JSRef (Maybe 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        JSRef 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 (unHTMLAnchorElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        JSRef 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 (unHTMLAnchorElement self)))
+ 
+foreign import javascript unsafe "$1[\"relList\"]" js_getRelList ::
+        JSRef HTMLAnchorElement -> IO (JSRef 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 ((js_getRelList (unHTMLAnchorElement self)) >>= fromJSRef)
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,235 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"alt\"] = $2;" js_setAlt ::
+        JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"alt\"]" js_getAlt ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"archive\"] = $2;"
+        js_setArchive :: JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"archive\"]" js_getArchive ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"code\"] = $2;" js_setCode ::
+        JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"code\"]" js_getCode ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"codeBase\"] = $2;"
+        js_setCodeBase :: JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"codeBase\"]" js_getCodeBase
+        :: JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"hspace\"] = $2;"
+        js_setHspace :: JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"hspace\"]" js_getHspace ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"object\"] = $2;"
+        js_setObject :: JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"object\"]" js_getObject ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"vspace\"] = $2;"
+        js_setVspace :: JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"vspace\"]" js_getVspace ::
+        JSRef 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 (unHTMLAppletElement self)))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLAppletElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLAppletElement 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,243 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"alt\"] = $2;" js_setAlt ::
+        JSRef 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 (unHTMLAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"alt\"]" js_getAlt ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"coords\"] = $2;"
+        js_setCoords :: JSRef 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 (unHTMLAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"coords\"]" js_getCoords ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+        JSRef 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 (unHTMLAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"noHref\"] = $2;"
+        js_setNoHref :: JSRef 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 (unHTMLAreaElement self) val)
+ 
+foreign import javascript unsafe "($1[\"noHref\"] ? 1 : 0)"
+        js_getNoHref :: JSRef 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 (unHTMLAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"ping\"] = $2;" js_setPing ::
+        JSRef 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 (unHTMLAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"ping\"]" js_getPing ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"rel\"] = $2;" js_setRel ::
+        JSRef 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 (unHTMLAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"rel\"]" js_getRel ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"shape\"] = $2;" js_setShape
+        :: JSRef 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 (unHTMLAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"shape\"]" js_getShape ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"target\"] = $2;"
+        js_setTarget :: JSRef 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 (unHTMLAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"hash\"]" js_getHash ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"host\"]" js_getHost ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"hostname\"]" js_getHostname
+        :: JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"pathname\"]" js_getPathname
+        :: JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"port\"]" js_getPort ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"search\"]" js_getSearch ::
+        JSRef 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 (unHTMLAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"relList\"]" js_getRelList ::
+        JSRef HTMLAreaElement -> IO (JSRef 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 ((js_getRelList (unHTMLAreaElement self)) >>= fromJSRef)
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,37 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clear\"] = $2;" js_setClear
+        :: JSRef 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 (unHTMLBRElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"clear\"]" js_getClear ::
+        JSRef 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 (unHTMLBRElement self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+        JSRef HTMLBaseElement -> JSRef (Maybe 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 (unHTMLBaseElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef HTMLBaseElement -> IO (JSRef (Maybe 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 (unHTMLBaseElement self)))
+ 
+foreign import javascript unsafe "$1[\"target\"] = $2;"
+        js_setTarget :: JSRef 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 (unHTMLBaseElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef 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 (unHTMLBaseElement 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,75 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"color\"] = $2;" js_setColor
+        :: JSRef 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 (unHTMLBaseFontElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"color\"]" js_getColor ::
+        JSRef 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 (unHTMLBaseFontElement self)))
+ 
+foreign import javascript unsafe "$1[\"face\"] = $2;" js_setFace ::
+        JSRef 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 (unHTMLBaseFontElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"face\"]" js_getFace ::
+        JSRef 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 (unHTMLBaseFontElement self)))
+ 
+foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+        JSRef 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 (unHTMLBaseFontElement self) val)
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        JSRef 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 (unHTMLBaseFontElement 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,193 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"aLink\"] = $2;" js_setALink
+        :: JSRef 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 (unHTMLBodyElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"aLink\"]" js_getALink ::
+        JSRef 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 (unHTMLBodyElement self)))
+ 
+foreign import javascript unsafe "$1[\"background\"] = $2;"
+        js_setBackground :: JSRef 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 (unHTMLBodyElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"background\"]"
+        js_getBackground :: JSRef 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 (unHTMLBodyElement self)))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
+        js_setBgColor :: JSRef 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 (unHTMLBodyElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"]" js_getBgColor ::
+        JSRef 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 (unHTMLBodyElement self)))
+ 
+foreign import javascript unsafe "$1[\"link\"] = $2;" js_setLink ::
+        JSRef 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 (unHTMLBodyElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"link\"]" js_getLink ::
+        JSRef 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 (unHTMLBodyElement self)))
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        JSRef 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 (unHTMLBodyElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        JSRef 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 (unHTMLBodyElement self)))
+ 
+foreign import javascript unsafe "$1[\"vLink\"] = $2;" js_setVLink
+        :: JSRef 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 (unHTMLBodyElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"vLink\"]" js_getVLink ::
+        JSRef 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 (unHTMLBodyElement 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,299 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLButtonElement self))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        JSRef HTMLButtonElement -> JSRef (Maybe 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 (unHTMLButtonElement self)
+         (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
+        js_setAutofocus :: JSRef 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 (unHTMLButtonElement self) val)
+ 
+foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
+        js_getAutofocus :: JSRef 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 (unHTMLButtonElement self))
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLButtonElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLButtonElement self))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLButtonElement -> IO (JSRef 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 ((js_getForm (unHTMLButtonElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"formAction\"] = $2;"
+        js_setFormAction :: JSRef 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 (unHTMLButtonElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"formAction\"]"
+        js_getFormAction :: JSRef 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 (unHTMLButtonElement self)))
+ 
+foreign import javascript unsafe "$1[\"formEnctype\"] = $2;"
+        js_setFormEnctype ::
+        JSRef HTMLButtonElement -> JSRef (Maybe 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 (unHTMLButtonElement self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"formEnctype\"]"
+        js_getFormEnctype ::
+        JSRef HTMLButtonElement -> IO (JSRef (Maybe 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 (unHTMLButtonElement self)))
+ 
+foreign import javascript unsafe "$1[\"formMethod\"] = $2;"
+        js_setFormMethod ::
+        JSRef HTMLButtonElement -> JSRef (Maybe 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 (unHTMLButtonElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"formMethod\"]"
+        js_getFormMethod ::
+        JSRef HTMLButtonElement -> IO (JSRef (Maybe 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 (unHTMLButtonElement self)))
+ 
+foreign import javascript unsafe "$1[\"formNoValidate\"] = $2;"
+        js_setFormNoValidate :: JSRef 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 (unHTMLButtonElement self) val)
+ 
+foreign import javascript unsafe "($1[\"formNoValidate\"] ? 1 : 0)"
+        js_getFormNoValidate :: JSRef 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 (unHTMLButtonElement self))
+ 
+foreign import javascript unsafe "$1[\"formTarget\"] = $2;"
+        js_setFormTarget :: JSRef 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 (unHTMLButtonElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"formTarget\"]"
+        js_getFormTarget :: JSRef 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 (unHTMLButtonElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLButtonElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLButtonElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef HTMLButtonElement -> JSRef (Maybe 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 (unHTMLButtonElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef HTMLButtonElement -> IO (JSRef (Maybe 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 (unHTMLButtonElement self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unHTMLButtonElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unHTMLButtonElement self)))
+ 
+foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
+        js_getWillValidate :: JSRef 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 (unHTMLButtonElement self))
+ 
+foreign import javascript unsafe "$1[\"validity\"]" js_getValidity
+        :: JSRef HTMLButtonElement -> IO (JSRef 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
+      ((js_getValidity (unHTMLButtonElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"validationMessage\"]"
+        js_getValidationMessage :: JSRef 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 (unHTMLButtonElement self)))
+ 
+foreign import javascript unsafe "$1[\"labels\"]" js_getLabels ::
+        JSRef HTMLButtonElement -> IO (JSRef 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 ((js_getLabels (unHTMLButtonElement self)) >>= fromJSRef)
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,90 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"toDataURL\"]($2)"
+        js_toDataURL ::
+        JSRef HTMLCanvasElement -> JSRef (Maybe 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 (unHTMLCanvasElement self) (toMaybeJSString type')))
+ 
+foreign import javascript unsafe "$1[\"getContext\"]($2)"
+        js_getContext ::
+        JSRef HTMLCanvasElement -> JSString -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
+getContext ::
+           (MonadIO m, ToJSString contextId) =>
+             HTMLCanvasElement -> contextId -> m (JSRef a)
+getContext self contextId
+  = liftIO
+      (js_getContext (unHTMLCanvasElement self) (toJSString contextId))
+ 
+foreign import javascript unsafe
+        "$1[\"probablySupportsContext\"]($2)" js_probablySupportsContext ::
+        JSRef HTMLCanvasElement -> JSString -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.probablySupportsContext Mozilla HTMLCanvasElement.probablySupportsContext documentation> 
+probablySupportsContext ::
+                        (MonadIO m, ToJSString contextId) =>
+                          HTMLCanvasElement -> contextId -> m (JSRef a)
+probablySupportsContext self contextId
+  = liftIO
+      (js_probablySupportsContext (unHTMLCanvasElement self)
+         (toJSString contextId))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLCanvasElement self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLCanvasElement self))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLCanvasElement self) val)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLCanvasElement 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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef HTMLCollection -> Word -> IO (JSRef 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
+      ((js_item (unHTMLCollection (toHTMLCollection self)) index) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem :: JSRef HTMLCollection -> JSString -> IO (JSRef 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
+      ((js_namedItem (unHTMLCollection (toHTMLCollection self))
+          (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unHTMLCollection (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,34 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"compact\"] = $2;"
+        js_setCompact :: JSRef 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 (unHTMLDListElement self) val)
+ 
+foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
+        js_getCompact :: JSRef 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 (unHTMLDListElement 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,29 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"options\"]" js_getOptions ::
+        JSRef HTMLDataListElement -> IO (JSRef 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
+      ((js_getOptions (unHTMLDataListElement self)) >>= fromJSRef)
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,34 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"open\"] = $2;" js_setOpen ::
+        JSRef 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 (unHTMLDetailsElement self) val)
+ 
+foreign import javascript unsafe "($1[\"open\"] ? 1 : 0)"
+        js_getOpen :: JSRef 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 (unHTMLDetailsElement 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,36 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"compact\"] = $2;"
+        js_setCompact :: JSRef 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 (unHTMLDirectoryElement self) val)
+ 
+foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
+        js_getCompact :: JSRef 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 (unHTMLDirectoryElement 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,37 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLDivElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLDivElement 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,300 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"open\"]()" js_open ::
+        JSRef 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 (unHTMLDocument self))
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unHTMLDocument self))
+ 
+foreign import javascript unsafe "$1[\"write\"]($2)" js_write ::
+        JSRef 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 (unHTMLDocument self) (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"writeln\"]($2)" js_writeln
+        :: JSRef 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 (unHTMLDocument self) (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unHTMLDocument self))
+ 
+foreign import javascript unsafe "$1[\"captureEvents\"]()"
+        js_captureEvents :: JSRef 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 (unHTMLDocument self))
+ 
+foreign import javascript unsafe "$1[\"releaseEvents\"]()"
+        js_releaseEvents :: JSRef 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 (unHTMLDocument self))
+ 
+foreign import javascript unsafe "$1[\"embeds\"]" js_getEmbeds ::
+        JSRef HTMLDocument -> IO (JSRef 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 ((js_getEmbeds (unHTMLDocument self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"plugins\"]" js_getPlugins ::
+        JSRef HTMLDocument -> IO (JSRef 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 ((js_getPlugins (unHTMLDocument self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"scripts\"]" js_getScripts ::
+        JSRef HTMLDocument -> IO (JSRef 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 ((js_getScripts (unHTMLDocument self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"all\"]" js_getAll ::
+        JSRef HTMLDocument -> IO (JSRef 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 ((js_getAll (unHTMLDocument self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLDocument self))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLDocument self))
+ 
+foreign import javascript unsafe "$1[\"dir\"] = $2;" js_setDir ::
+        JSRef HTMLDocument -> JSRef (Maybe 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 (unHTMLDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"dir\"]" js_getDir ::
+        JSRef HTMLDocument -> IO (JSRef (Maybe 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 (unHTMLDocument self)))
+ 
+foreign import javascript unsafe "$1[\"designMode\"] = $2;"
+        js_setDesignMode ::
+        JSRef HTMLDocument -> JSRef (Maybe 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 (unHTMLDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"designMode\"]"
+        js_getDesignMode ::
+        JSRef HTMLDocument -> IO (JSRef (Maybe 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 (unHTMLDocument self)))
+ 
+foreign import javascript unsafe "$1[\"compatMode\"]"
+        js_getCompatMode :: JSRef 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 (unHTMLDocument self)))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
+        js_setBgColor ::
+        JSRef HTMLDocument -> JSRef (Maybe 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 (unHTMLDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"]" js_getBgColor ::
+        JSRef HTMLDocument -> IO (JSRef (Maybe 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 (unHTMLDocument self)))
+ 
+foreign import javascript unsafe "$1[\"fgColor\"] = $2;"
+        js_setFgColor ::
+        JSRef HTMLDocument -> JSRef (Maybe 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 (unHTMLDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"fgColor\"]" js_getFgColor ::
+        JSRef HTMLDocument -> IO (JSRef (Maybe 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 (unHTMLDocument self)))
+ 
+foreign import javascript unsafe "$1[\"alinkColor\"] = $2;"
+        js_setAlinkColor ::
+        JSRef HTMLDocument -> JSRef (Maybe 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 (unHTMLDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"alinkColor\"]"
+        js_getAlinkColor ::
+        JSRef HTMLDocument -> IO (JSRef (Maybe 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 (unHTMLDocument self)))
+ 
+foreign import javascript unsafe "$1[\"linkColor\"] = $2;"
+        js_setLinkColor ::
+        JSRef HTMLDocument -> JSRef (Maybe 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 (unHTMLDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"linkColor\"]"
+        js_getLinkColor ::
+        JSRef HTMLDocument -> IO (JSRef (Maybe 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 (unHTMLDocument self)))
+ 
+foreign import javascript unsafe "$1[\"vlinkColor\"] = $2;"
+        js_setVlinkColor ::
+        JSRef HTMLDocument -> JSRef (Maybe 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 (unHTMLDocument self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"vlinkColor\"]"
+        js_getVlinkColor ::
+        JSRef HTMLDocument -> IO (JSRef (Maybe 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 (unHTMLDocument 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,390 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"insertAdjacentElement\"]($2,\n$3)" js_insertAdjacentElement
+        ::
+        JSRef HTMLElement ->
+          JSString -> JSRef Element -> IO (JSRef 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
+      ((js_insertAdjacentElement (unHTMLElement (toHTMLElement self))
+          (toJSString where')
+          (maybe jsNull (unElement . toElement) element))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"insertAdjacentHTML\"]($2, $3)" js_insertAdjacentHTML ::
+        JSRef 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 (unHTMLElement (toHTMLElement self))
+         (toJSString where')
+         (toJSString html))
+ 
+foreign import javascript unsafe
+        "$1[\"insertAdjacentText\"]($2, $3)" js_insertAdjacentText ::
+        JSRef 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 (unHTMLElement (toHTMLElement self))
+         (toJSString where')
+         (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"click\"]()" js_click ::
+        JSRef 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 (unHTMLElement (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"title\"] = $2;" js_setTitle
+        :: JSRef 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 (unHTMLElement (toHTMLElement self)) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"title\"]" js_getTitle ::
+        JSRef 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 (unHTMLElement (toHTMLElement self))))
+ 
+foreign import javascript unsafe "$1[\"lang\"] = $2;" js_setLang ::
+        JSRef 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 (unHTMLElement (toHTMLElement self)) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"lang\"]" js_getLang ::
+        JSRef 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 (unHTMLElement (toHTMLElement self))))
+ 
+foreign import javascript unsafe "$1[\"translate\"] = $2;"
+        js_setTranslate :: JSRef 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 (unHTMLElement (toHTMLElement self)) val)
+ 
+foreign import javascript unsafe "($1[\"translate\"] ? 1 : 0)"
+        js_getTranslate :: JSRef 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 (unHTMLElement (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"dir\"] = $2;" js_setDir ::
+        JSRef 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 (unHTMLElement (toHTMLElement self)) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"dir\"]" js_getDir ::
+        JSRef 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 (unHTMLElement (toHTMLElement self))))
+ 
+foreign import javascript unsafe "$1[\"tabIndex\"] = $2;"
+        js_setTabIndex :: JSRef 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 (unHTMLElement (toHTMLElement self)) val)
+ 
+foreign import javascript unsafe "$1[\"tabIndex\"]" js_getTabIndex
+        :: JSRef 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 (unHTMLElement (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"draggable\"] = $2;"
+        js_setDraggable :: JSRef 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 (unHTMLElement (toHTMLElement self)) val)
+ 
+foreign import javascript unsafe "($1[\"draggable\"] ? 1 : 0)"
+        js_getDraggable :: JSRef 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 (unHTMLElement (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"webkitdropzone\"] = $2;"
+        js_setWebkitdropzone :: JSRef 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 (unHTMLElement (toHTMLElement self))
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"webkitdropzone\"]"
+        js_getWebkitdropzone :: JSRef 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 (unHTMLElement (toHTMLElement self))))
+ 
+foreign import javascript unsafe "$1[\"hidden\"] = $2;"
+        js_setHidden :: JSRef 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 (unHTMLElement (toHTMLElement self)) val)
+ 
+foreign import javascript unsafe "($1[\"hidden\"] ? 1 : 0)"
+        js_getHidden :: JSRef 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 (unHTMLElement (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"accessKey\"] = $2;"
+        js_setAccessKey :: JSRef 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 (unHTMLElement (toHTMLElement self))
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"accessKey\"]"
+        js_getAccessKey :: JSRef 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 (unHTMLElement (toHTMLElement self))))
+ 
+foreign import javascript unsafe "$1[\"innerText\"] = $2;"
+        js_setInnerText ::
+        JSRef HTMLElement -> JSRef (Maybe 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 (unHTMLElement (toHTMLElement self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"innerText\"]"
+        js_getInnerText :: JSRef HTMLElement -> IO (JSRef (Maybe 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 (unHTMLElement (toHTMLElement self))))
+ 
+foreign import javascript unsafe "$1[\"outerText\"] = $2;"
+        js_setOuterText ::
+        JSRef HTMLElement -> JSRef (Maybe 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 (unHTMLElement (toHTMLElement self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"outerText\"]"
+        js_getOuterText :: JSRef HTMLElement -> IO (JSRef (Maybe 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 (unHTMLElement (toHTMLElement self))))
+ 
+foreign import javascript unsafe "$1[\"children\"]" js_getChildren
+        :: JSRef HTMLElement -> IO (JSRef 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
+      ((js_getChildren (unHTMLElement (toHTMLElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"contentEditable\"] = $2;"
+        js_setContentEditable ::
+        JSRef HTMLElement -> JSRef (Maybe 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 (unHTMLElement (toHTMLElement self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"contentEditable\"]"
+        js_getContentEditable ::
+        JSRef HTMLElement -> IO (JSRef (Maybe 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 (unHTMLElement (toHTMLElement self))))
+ 
+foreign import javascript unsafe
+        "($1[\"isContentEditable\"] ? 1 : 0)" js_getIsContentEditable ::
+        JSRef 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 (unHTMLElement (toHTMLElement self)))
+ 
+foreign import javascript unsafe "$1[\"spellcheck\"] = $2;"
+        js_setSpellcheck :: JSRef 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 (unHTMLElement (toHTMLElement self)) val)
+ 
+foreign import javascript unsafe "($1[\"spellcheck\"] ? 1 : 0)"
+        js_getSpellcheck :: JSRef 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 (unHTMLElement (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,143 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+        js_getSVGDocument ::
+        JSRef HTMLEmbedElement -> IO (JSRef 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
+      ((js_getSVGDocument (unHTMLEmbedElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLEmbedElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLEmbedElement self)))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLEmbedElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLEmbedElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLEmbedElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLEmbedElement self)))
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLEmbedElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLEmbedElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLEmbedElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLEmbedElement self)))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLEmbedElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLEmbedElement 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,139 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLFieldSetElement self))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        JSRef HTMLFieldSetElement -> JSRef (Maybe 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 (unHTMLFieldSetElement self)
+         (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLFieldSetElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLFieldSetElement self))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLFieldSetElement -> IO (JSRef 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 ((js_getForm (unHTMLFieldSetElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLFieldSetElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLFieldSetElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLFieldSetElement self)))
+ 
+foreign import javascript unsafe "$1[\"elements\"]" js_getElements
+        :: JSRef HTMLFieldSetElement -> IO (JSRef 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
+      ((js_getElements (unHTMLFieldSetElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
+        js_getWillValidate :: JSRef 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 (unHTMLFieldSetElement self))
+ 
+foreign import javascript unsafe "$1[\"validity\"]" js_getValidity
+        :: JSRef HTMLFieldSetElement -> IO (JSRef 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
+      ((js_getValidity (unHTMLFieldSetElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"validationMessage\"]"
+        js_getValidationMessage :: JSRef 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 (unHTMLFieldSetElement 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,74 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"color\"] = $2;" js_setColor
+        :: JSRef 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 (unHTMLFontElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"color\"]" js_getColor ::
+        JSRef 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 (unHTMLFontElement self)))
+ 
+foreign import javascript unsafe "$1[\"face\"] = $2;" js_setFace ::
+        JSRef 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 (unHTMLFontElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"face\"]" js_getFace ::
+        JSRef 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 (unHTMLFontElement self)))
+ 
+foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+        JSRef 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 (unHTMLFontElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        JSRef 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 (unHTMLFontElement 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,44 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        JSRef HTMLFormControlsCollection -> Word -> IO (JSRef 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
+      ((js__get (unHTMLFormControlsCollection self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        JSRef HTMLFormControlsCollection -> JSString -> IO (JSRef 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
+      ((js_namedItem (unHTMLFormControlsCollection self)
+          (toJSString name))
+         >>= fromJSRef)
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,314 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        JSRef HTMLFormElement -> Word -> IO (JSRef 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 ((js__get (unHTMLFormElement self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"submit\"]()" js_submit ::
+        JSRef 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 (unHTMLFormElement self))
+ 
+foreign import javascript unsafe "$1[\"reset\"]()" js_reset ::
+        JSRef 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 (unHTMLFormElement self))
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLFormElement self))
+ 
+foreign import javascript unsafe "$1[\"requestAutocomplete\"]()"
+        js_requestAutocomplete :: JSRef 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 (unHTMLFormElement self))
+ 
+foreign import javascript unsafe "$1[\"acceptCharset\"] = $2;"
+        js_setAcceptCharset :: JSRef 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 (unHTMLFormElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"acceptCharset\"]"
+        js_getAcceptCharset :: JSRef 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 (unHTMLFormElement self)))
+ 
+foreign import javascript unsafe "$1[\"action\"] = $2;"
+        js_setAction :: JSRef 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 (unHTMLFormElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"action\"]" js_getAction ::
+        JSRef 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 (unHTMLFormElement self)))
+ 
+foreign import javascript unsafe "$1[\"autocomplete\"] = $2;"
+        js_setAutocomplete :: JSRef 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 (unHTMLFormElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"autocomplete\"]"
+        js_getAutocomplete :: JSRef 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 (unHTMLFormElement self)))
+ 
+foreign import javascript unsafe "$1[\"enctype\"] = $2;"
+        js_setEnctype ::
+        JSRef HTMLFormElement -> JSRef (Maybe 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 (unHTMLFormElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"enctype\"]" js_getEnctype ::
+        JSRef HTMLFormElement -> IO (JSRef (Maybe 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 (unHTMLFormElement self)))
+ 
+foreign import javascript unsafe "$1[\"encoding\"] = $2;"
+        js_setEncoding ::
+        JSRef HTMLFormElement -> JSRef (Maybe 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 (unHTMLFormElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"encoding\"]" js_getEncoding
+        :: JSRef HTMLFormElement -> IO (JSRef (Maybe 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 (unHTMLFormElement self)))
+ 
+foreign import javascript unsafe "$1[\"method\"] = $2;"
+        js_setMethod ::
+        JSRef HTMLFormElement -> JSRef (Maybe 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 (unHTMLFormElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"method\"]" js_getMethod ::
+        JSRef HTMLFormElement -> IO (JSRef (Maybe 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 (unHTMLFormElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLFormElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLFormElement self)))
+ 
+foreign import javascript unsafe "$1[\"noValidate\"] = $2;"
+        js_setNoValidate :: JSRef 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 (unHTMLFormElement self) val)
+ 
+foreign import javascript unsafe "($1[\"noValidate\"] ? 1 : 0)"
+        js_getNoValidate :: JSRef 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 (unHTMLFormElement self))
+ 
+foreign import javascript unsafe "$1[\"target\"] = $2;"
+        js_setTarget :: JSRef 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 (unHTMLFormElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef 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 (unHTMLFormElement self)))
+ 
+foreign import javascript unsafe "$1[\"elements\"]" js_getElements
+        :: JSRef HTMLFormElement -> IO (JSRef 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 ((js_getElements (unHTMLFormElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unHTMLFormElement self))
+ 
+foreign import javascript unsafe "$1[\"autocorrect\"] = $2;"
+        js_setAutocorrect :: JSRef 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 (unHTMLFormElement self) val)
+ 
+foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
+        js_getAutocorrect :: JSRef 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 (unHTMLFormElement self))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
+        js_setAutocapitalize ::
+        JSRef HTMLFormElement -> JSRef (Maybe 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 (unHTMLFormElement self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"]"
+        js_getAutocapitalize ::
+        JSRef HTMLFormElement -> IO (JSRef (Maybe 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 (unHTMLFormElement 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,251 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+        js_getSVGDocument ::
+        JSRef HTMLFrameElement -> IO (JSRef 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
+      ((js_getSVGDocument (unHTMLFrameElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"frameBorder\"] = $2;"
+        js_setFrameBorder :: JSRef 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 (unHTMLFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"frameBorder\"]"
+        js_getFrameBorder :: JSRef 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 (unHTMLFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"longDesc\"] = $2;"
+        js_setLongDesc :: JSRef 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 (unHTMLFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"longDesc\"]" js_getLongDesc
+        :: JSRef 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 (unHTMLFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"marginHeight\"] = $2;"
+        js_setMarginHeight :: JSRef 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 (unHTMLFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"marginHeight\"]"
+        js_getMarginHeight :: JSRef 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 (unHTMLFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"marginWidth\"] = $2;"
+        js_setMarginWidth :: JSRef 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 (unHTMLFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"marginWidth\"]"
+        js_getMarginWidth :: JSRef 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 (unHTMLFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"noResize\"] = $2;"
+        js_setNoResize :: JSRef 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 (unHTMLFrameElement self) val)
+ 
+foreign import javascript unsafe "($1[\"noResize\"] ? 1 : 0)"
+        js_getNoResize :: JSRef 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 (unHTMLFrameElement self))
+ 
+foreign import javascript unsafe "$1[\"scrolling\"] = $2;"
+        js_setScrolling :: JSRef 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 (unHTMLFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"scrolling\"]"
+        js_getScrolling :: JSRef 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 (unHTMLFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"contentDocument\"]"
+        js_getContentDocument ::
+        JSRef HTMLFrameElement -> IO (JSRef 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
+      ((js_getContentDocument (unHTMLFrameElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"contentWindow\"]"
+        js_getContentWindow :: JSRef HTMLFrameElement -> IO (JSRef 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
+      ((js_getContentWindow (unHTMLFrameElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"location\"] = $2;"
+        js_setLocation ::
+        JSRef HTMLFrameElement -> JSRef (Maybe 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 (unHTMLFrameElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"location\"]" js_getLocation
+        :: JSRef HTMLFrameElement -> IO (JSRef (Maybe 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 (unHTMLFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLFrameElement self))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLFrameElement 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,117 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"cols\"] = $2;" js_setCols ::
+        JSRef 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 (unHTMLFrameSetElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"cols\"]" js_getCols ::
+        JSRef 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 (unHTMLFrameSetElement self)))
+ 
+foreign import javascript unsafe "$1[\"rows\"] = $2;" js_setRows ::
+        JSRef 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 (unHTMLFrameSetElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
+        JSRef 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 (unHTMLFrameSetElement 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,90 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLHRElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLHRElement self)))
+ 
+foreign import javascript unsafe "$1[\"noShade\"] = $2;"
+        js_setNoShade :: JSRef 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 (unHTMLHRElement self) val)
+ 
+foreign import javascript unsafe "($1[\"noShade\"] ? 1 : 0)"
+        js_getNoShade :: JSRef 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 (unHTMLHRElement self))
+ 
+foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+        JSRef 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 (unHTMLHRElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        JSRef 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 (unHTMLHRElement self)))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLHRElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLHRElement 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,38 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"profile\"] = $2;"
+        js_setProfile :: JSRef 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 (unHTMLHeadElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"profile\"]" js_getProfile ::
+        JSRef 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 (unHTMLHeadElement 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,38 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLHeadingElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLHeadingElement 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,58 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"version\"] = $2;"
+        js_setVersion :: JSRef 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 (unHTMLHtmlElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"version\"]" js_getVersion ::
+        JSRef 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 (unHTMLHtmlElement self)))
+ 
+foreign import javascript unsafe "$1[\"manifest\"] = $2;"
+        js_setManifest :: JSRef 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 (unHTMLHtmlElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"manifest\"]" js_getManifest
+        :: JSRef 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 (unHTMLHtmlElement 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,296 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+        js_getSVGDocument ::
+        JSRef HTMLIFrameElement -> IO (JSRef 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
+      ((js_getSVGDocument (unHTMLIFrameElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"frameBorder\"] = $2;"
+        js_setFrameBorder :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"frameBorder\"]"
+        js_getFrameBorder :: JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"longDesc\"] = $2;"
+        js_setLongDesc :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"longDesc\"]" js_getLongDesc
+        :: JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"marginHeight\"] = $2;"
+        js_setMarginHeight :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"marginHeight\"]"
+        js_getMarginHeight :: JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"marginWidth\"] = $2;"
+        js_setMarginWidth :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"marginWidth\"]"
+        js_getMarginWidth :: JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"sandbox\"] = $2;"
+        js_setSandbox :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"sandbox\"]" js_getSandbox ::
+        JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"scrolling\"] = $2;"
+        js_setScrolling :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"scrolling\"]"
+        js_getScrolling :: JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"srcdoc\"] = $2;"
+        js_setSrcdoc :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"srcdoc\"]" js_getSrcdoc ::
+        JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLIFrameElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLIFrameElement self)))
+ 
+foreign import javascript unsafe "$1[\"contentDocument\"]"
+        js_getContentDocument ::
+        JSRef HTMLIFrameElement -> IO (JSRef 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
+      ((js_getContentDocument (unHTMLIFrameElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"contentWindow\"]"
+        js_getContentWindow :: JSRef HTMLIFrameElement -> IO (JSRef 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
+      ((js_getContentWindow (unHTMLIFrameElement self)) >>= fromJSRef)
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,363 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"alt\"] = $2;" js_setAlt ::
+        JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"alt\"]" js_getAlt ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"border\"] = $2;"
+        js_setBorder :: JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"border\"]" js_getBorder ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"crossOrigin\"] = $2;"
+        js_setCrossOrigin :: JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"crossOrigin\"]"
+        js_getCrossOrigin :: JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLImageElement self) val)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "$1[\"hspace\"] = $2;"
+        js_setHspace :: JSRef 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 (unHTMLImageElement self) val)
+ 
+foreign import javascript unsafe "$1[\"hspace\"]" js_getHspace ::
+        JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "$1[\"isMap\"] = $2;" js_setIsMap
+        :: JSRef 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 (unHTMLImageElement self) val)
+ 
+foreign import javascript unsafe "($1[\"isMap\"] ? 1 : 0)"
+        js_getIsMap :: JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "$1[\"longDesc\"] = $2;"
+        js_setLongDesc :: JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"longDesc\"]" js_getLongDesc
+        :: JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"srcset\"] = $2;"
+        js_setSrcset :: JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"srcset\"]" js_getSrcset ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"sizes\"] = $2;" js_setSizes
+        :: JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"sizes\"]" js_getSizes ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"currentSrc\"]"
+        js_getCurrentSrc :: JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"useMap\"] = $2;"
+        js_setUseMap :: JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"useMap\"]" js_getUseMap ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"vspace\"] = $2;"
+        js_setVspace :: JSRef 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 (unHTMLImageElement self) val)
+ 
+foreign import javascript unsafe "$1[\"vspace\"]" js_getVspace ::
+        JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLImageElement self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "($1[\"complete\"] ? 1 : 0)"
+        js_getComplete :: JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "$1[\"lowsrc\"] = $2;"
+        js_setLowsrc :: JSRef 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 (unHTMLImageElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"lowsrc\"]" js_getLowsrc ::
+        JSRef 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 (unHTMLImageElement self)))
+ 
+foreign import javascript unsafe "$1[\"naturalHeight\"]"
+        js_getNaturalHeight :: JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "$1[\"naturalWidth\"]"
+        js_getNaturalWidth :: JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unHTMLImageElement self))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unHTMLImageElement 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,995 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"stepUp\"]($2)" js_stepUp ::
+        JSRef 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 (unHTMLInputElement self) n)
+ 
+foreign import javascript unsafe "$1[\"stepDown\"]($2)" js_stepDown
+        :: JSRef 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 (unHTMLInputElement self) n)
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        JSRef HTMLInputElement -> JSRef (Maybe 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 (unHTMLInputElement self)
+         (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"select\"]()" js_select ::
+        JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"setRangeText\"]($2)"
+        js_setRangeText :: JSRef 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 (unHTMLInputElement self)
+         (toJSString replacement))
+ 
+foreign import javascript unsafe
+        "$1[\"setRangeText\"]($2, $3, $4,\n$5)" js_setRangeText4 ::
+        JSRef 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 (unHTMLInputElement self)
+         (toJSString replacement)
+         start
+         end
+         (toJSString selectionMode))
+ 
+foreign import javascript unsafe
+        "$1[\"setSelectionRange\"]($2, $3,\n$4)" js_setSelectionRange ::
+        JSRef 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 (unHTMLInputElement self) start end
+         (toJSString direction))
+ 
+foreign import javascript unsafe "$1[\"accept\"] = $2;"
+        js_setAccept :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"accept\"]" js_getAccept ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"alt\"] = $2;" js_setAlt ::
+        JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"alt\"]" js_getAlt ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"autocomplete\"] = $2;"
+        js_setAutocomplete :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"autocomplete\"]"
+        js_getAutocomplete :: JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
+        js_setAutofocus :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
+        js_getAutofocus :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"defaultChecked\"] = $2;"
+        js_setDefaultChecked :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"defaultChecked\"] ? 1 : 0)"
+        js_getDefaultChecked :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"checked\"] = $2;"
+        js_setChecked :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"checked\"] ? 1 : 0)"
+        js_getChecked :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"dirName\"] = $2;"
+        js_setDirName :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"dirName\"]" js_getDirName ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLInputElement -> IO (JSRef 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 ((js_getForm (unHTMLInputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"files\"] = $2;" js_setFiles
+        :: JSRef HTMLInputElement -> JSRef 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 (unHTMLInputElement self) (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"files\"]" js_getFiles ::
+        JSRef HTMLInputElement -> IO (JSRef 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 ((js_getFiles (unHTMLInputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"formAction\"] = $2;"
+        js_setFormAction :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"formAction\"]"
+        js_getFormAction :: JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"formEnctype\"] = $2;"
+        js_setFormEnctype ::
+        JSRef HTMLInputElement -> JSRef (Maybe 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 (unHTMLInputElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"formEnctype\"]"
+        js_getFormEnctype ::
+        JSRef HTMLInputElement -> IO (JSRef (Maybe 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"formMethod\"] = $2;"
+        js_setFormMethod ::
+        JSRef HTMLInputElement -> JSRef (Maybe 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 (unHTMLInputElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"formMethod\"]"
+        js_getFormMethod ::
+        JSRef HTMLInputElement -> IO (JSRef (Maybe 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"formNoValidate\"] = $2;"
+        js_setFormNoValidate :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"formNoValidate\"] ? 1 : 0)"
+        js_getFormNoValidate :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"formTarget\"] = $2;"
+        js_setFormTarget :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"formTarget\"]"
+        js_getFormTarget :: JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"indeterminate\"] = $2;"
+        js_setIndeterminate :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"indeterminate\"] ? 1 : 0)"
+        js_getIndeterminate :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"list\"]" js_getList ::
+        JSRef HTMLInputElement -> IO (JSRef 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 ((js_getList (unHTMLInputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"max\"] = $2;" js_setMax ::
+        JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"max\"]" js_getMax ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"maxLength\"] = $2;"
+        js_setMaxLength :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "$1[\"maxLength\"]"
+        js_getMaxLength :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"min\"] = $2;" js_setMin ::
+        JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"min\"]" js_getMin ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"multiple\"] = $2;"
+        js_setMultiple :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"multiple\"] ? 1 : 0)"
+        js_getMultiple :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"pattern\"] = $2;"
+        js_setPattern :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"pattern\"]" js_getPattern ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"placeholder\"] = $2;"
+        js_setPlaceholder :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"placeholder\"]"
+        js_getPlaceholder :: JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"readOnly\"] = $2;"
+        js_setReadOnly :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"readOnly\"] ? 1 : 0)"
+        js_getReadOnly :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"required\"] = $2;"
+        js_setRequired :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"required\"] ? 1 : 0)"
+        js_getRequired :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+        JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"step\"] = $2;" js_setStep ::
+        JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"step\"]" js_getStep ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"] = $2;"
+        js_setDefaultValue ::
+        JSRef HTMLInputElement -> JSRef (Maybe 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 (unHTMLInputElement self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"]"
+        js_getDefaultValue ::
+        JSRef HTMLInputElement -> IO (JSRef (Maybe 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef HTMLInputElement -> JSRef (Maybe 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 (unHTMLInputElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef HTMLInputElement -> IO (JSRef (Maybe 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"valueAsDate\"] = $2;"
+        js_setValueAsDate :: JSRef HTMLInputElement -> JSRef 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 (unHTMLInputElement self)
+         (maybe jsNull (unDate . toDate) val))
+ 
+foreign import javascript unsafe "$1[\"valueAsDate\"]"
+        js_getValueAsDate :: JSRef HTMLInputElement -> IO (JSRef 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
+      ((js_getValueAsDate (unHTMLInputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"valueAsNumber\"] = $2;"
+        js_setValueAsNumber :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "$1[\"valueAsNumber\"]"
+        js_getValueAsNumber :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
+        js_getWillValidate :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"validity\"]" js_getValidity
+        :: JSRef HTMLInputElement -> IO (JSRef 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 ((js_getValidity (unHTMLInputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"validationMessage\"]"
+        js_getValidationMessage :: JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"labels\"]" js_getLabels ::
+        JSRef HTMLInputElement -> IO (JSRef 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 ((js_getLabels (unHTMLInputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"selectionStart\"] = $2;"
+        js_setSelectionStart :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "$1[\"selectionStart\"]"
+        js_getSelectionStart :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"selectionEnd\"] = $2;"
+        js_setSelectionEnd :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "$1[\"selectionEnd\"]"
+        js_getSelectionEnd :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"selectionDirection\"] = $2;"
+        js_setSelectionDirection ::
+        JSRef 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 (unHTMLInputElement self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"selectionDirection\"]"
+        js_getSelectionDirection :: JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"useMap\"] = $2;"
+        js_setUseMap :: JSRef 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 (unHTMLInputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"useMap\"]" js_getUseMap ::
+        JSRef 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"incremental\"] = $2;"
+        js_setIncremental :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"incremental\"] ? 1 : 0)"
+        js_getIncremental :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"autocorrect\"] = $2;"
+        js_setAutocorrect :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
+        js_getAutocorrect :: JSRef 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 (unHTMLInputElement self))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
+        js_setAutocapitalize ::
+        JSRef HTMLInputElement -> JSRef (Maybe 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 (unHTMLInputElement self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"]"
+        js_getAutocapitalize ::
+        JSRef HTMLInputElement -> IO (JSRef (Maybe 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 (unHTMLInputElement self)))
+ 
+foreign import javascript unsafe "$1[\"capture\"] = $2;"
+        js_setCapture :: JSRef 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 (unHTMLInputElement self) val)
+ 
+foreign import javascript unsafe "($1[\"capture\"] ? 1 : 0)"
+        js_getCapture :: JSRef 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 (unHTMLInputElement 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,194 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLKeygenElement self))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        JSRef HTMLKeygenElement -> JSRef (Maybe 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 (unHTMLKeygenElement self)
+         (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
+        js_setAutofocus :: JSRef 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 (unHTMLKeygenElement self) val)
+ 
+foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
+        js_getAutofocus :: JSRef 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 (unHTMLKeygenElement self))
+ 
+foreign import javascript unsafe "$1[\"challenge\"] = $2;"
+        js_setChallenge :: JSRef 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 (unHTMLKeygenElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"challenge\"]"
+        js_getChallenge :: JSRef 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 (unHTMLKeygenElement self)))
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLKeygenElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLKeygenElement self))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLKeygenElement -> IO (JSRef 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 ((js_getForm (unHTMLKeygenElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"keytype\"] = $2;"
+        js_setKeytype :: JSRef 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 (unHTMLKeygenElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"keytype\"]" js_getKeytype ::
+        JSRef 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 (unHTMLKeygenElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLKeygenElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLKeygenElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLKeygenElement self)))
+ 
+foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
+        js_getWillValidate :: JSRef 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 (unHTMLKeygenElement self))
+ 
+foreign import javascript unsafe "$1[\"validity\"]" js_getValidity
+        :: JSRef HTMLKeygenElement -> IO (JSRef 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
+      ((js_getValidity (unHTMLKeygenElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"validationMessage\"]"
+        js_getValidationMessage :: JSRef 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 (unHTMLKeygenElement self)))
+ 
+foreign import javascript unsafe "$1[\"labels\"]" js_getLabels ::
+        JSRef HTMLKeygenElement -> IO (JSRef 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 ((js_getLabels (unHTMLKeygenElement self)) >>= fromJSRef)
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,52 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLLIElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLLIElement self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unHTMLLIElement self) val)
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unHTMLLIElement 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,57 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLLabelElement -> IO (JSRef 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 ((js_getForm (unHTMLLabelElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"htmlFor\"] = $2;"
+        js_setHtmlFor :: JSRef 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 (unHTMLLabelElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"htmlFor\"]" js_getHtmlFor ::
+        JSRef 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 (unHTMLLabelElement self)))
+ 
+foreign import javascript unsafe "$1[\"control\"]" js_getControl ::
+        JSRef HTMLLabelElement -> IO (JSRef 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 ((js_getControl (unHTMLLabelElement self)) >>= fromJSRef)
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,47 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLLegendElement -> IO (JSRef 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 ((js_getForm (unHTMLLegendElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLLegendElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLLegendElement 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,225 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLLinkElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLLinkElement self))
+ 
+foreign import javascript unsafe "$1[\"charset\"] = $2;"
+        js_setCharset :: JSRef 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 (unHTMLLinkElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"charset\"]" js_getCharset ::
+        JSRef 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 (unHTMLLinkElement self)))
+ 
+foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+        JSRef 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 (unHTMLLinkElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef 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 (unHTMLLinkElement self)))
+ 
+foreign import javascript unsafe "$1[\"hreflang\"] = $2;"
+        js_setHreflang :: JSRef 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 (unHTMLLinkElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"hreflang\"]" js_getHreflang
+        :: JSRef 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 (unHTMLLinkElement self)))
+ 
+foreign import javascript unsafe "$1[\"media\"] = $2;" js_setMedia
+        :: JSRef 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 (unHTMLLinkElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        JSRef 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 (unHTMLLinkElement self)))
+ 
+foreign import javascript unsafe "$1[\"rel\"] = $2;" js_setRel ::
+        JSRef 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 (unHTMLLinkElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"rel\"]" js_getRel ::
+        JSRef 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 (unHTMLLinkElement self)))
+ 
+foreign import javascript unsafe "$1[\"rev\"] = $2;" js_setRev ::
+        JSRef 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 (unHTMLLinkElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"rev\"]" js_getRev ::
+        JSRef 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 (unHTMLLinkElement self)))
+ 
+foreign import javascript unsafe "$1[\"sizes\"] = $2;" js_setSizes
+        :: JSRef HTMLLinkElement -> JSRef 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 (unHTMLLinkElement self) (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"sizes\"]" js_getSizes ::
+        JSRef HTMLLinkElement -> IO (JSRef 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 ((js_getSizes (unHTMLLinkElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"target\"] = $2;"
+        js_setTarget :: JSRef 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 (unHTMLLinkElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef 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 (unHTMLLinkElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLLinkElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLLinkElement self)))
+ 
+foreign import javascript unsafe "$1[\"sheet\"]" js_getSheet ::
+        JSRef HTMLLinkElement -> IO (JSRef 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 ((js_getSheet (unHTMLLinkElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"relList\"]" js_getRelList ::
+        JSRef HTMLLinkElement -> IO (JSRef 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 ((js_getRelList (unHTMLLinkElement self)) >>= fromJSRef)
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,46 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"areas\"]" js_getAreas ::
+        JSRef HTMLMapElement -> IO (JSRef 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 ((js_getAreas (unHTMLMapElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLMapElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLMapElement 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,236 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"start\"]()" js_start ::
+        JSRef 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 (unHTMLMarqueeElement self))
+ 
+foreign import javascript unsafe "$1[\"stop\"]()" js_stop ::
+        JSRef 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 (unHTMLMarqueeElement self))
+ 
+foreign import javascript unsafe "$1[\"behavior\"] = $2;"
+        js_setBehavior :: JSRef 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 (unHTMLMarqueeElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"behavior\"]" js_getBehavior
+        :: JSRef 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 (unHTMLMarqueeElement self)))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
+        js_setBgColor :: JSRef 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 (unHTMLMarqueeElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"]" js_getBgColor ::
+        JSRef 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 (unHTMLMarqueeElement self)))
+ 
+foreign import javascript unsafe "$1[\"direction\"] = $2;"
+        js_setDirection :: JSRef 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 (unHTMLMarqueeElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"direction\"]"
+        js_getDirection :: JSRef 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 (unHTMLMarqueeElement self)))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLMarqueeElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLMarqueeElement self)))
+ 
+foreign import javascript unsafe "$1[\"hspace\"] = $2;"
+        js_setHspace :: JSRef 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 (unHTMLMarqueeElement self) val)
+ 
+foreign import javascript unsafe "$1[\"hspace\"]" js_getHspace ::
+        JSRef 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 (unHTMLMarqueeElement self))
+ 
+foreign import javascript unsafe "$1[\"loop\"] = $2;" js_setLoop ::
+        JSRef 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 (unHTMLMarqueeElement self) val)
+ 
+foreign import javascript unsafe "$1[\"loop\"]" js_getLoop ::
+        JSRef 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 (unHTMLMarqueeElement self))
+ 
+foreign import javascript unsafe "$1[\"scrollAmount\"] = $2;"
+        js_setScrollAmount :: JSRef 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 (unHTMLMarqueeElement self) val)
+ 
+foreign import javascript unsafe "$1[\"scrollAmount\"]"
+        js_getScrollAmount :: JSRef 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 (unHTMLMarqueeElement self))
+ 
+foreign import javascript unsafe "$1[\"scrollDelay\"] = $2;"
+        js_setScrollDelay :: JSRef 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 (unHTMLMarqueeElement self) val)
+ 
+foreign import javascript unsafe "$1[\"scrollDelay\"]"
+        js_getScrollDelay :: JSRef 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 (unHTMLMarqueeElement self))
+ 
+foreign import javascript unsafe "$1[\"trueSpeed\"] = $2;"
+        js_setTrueSpeed :: JSRef 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 (unHTMLMarqueeElement self) val)
+ 
+foreign import javascript unsafe "($1[\"trueSpeed\"] ? 1 : 0)"
+        js_getTrueSpeed :: JSRef 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 (unHTMLMarqueeElement self))
+ 
+foreign import javascript unsafe "$1[\"vspace\"] = $2;"
+        js_setVspace :: JSRef 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 (unHTMLMarqueeElement self) val)
+ 
+foreign import javascript unsafe "$1[\"vspace\"]" js_getVspace ::
+        JSRef 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 (unHTMLMarqueeElement self))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLMarqueeElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLMarqueeElement 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,948 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"load\"]()" js_load ::
+        JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"canPlayType\"]($2, $3)"
+        js_canPlayType ::
+        JSRef HTMLMediaElement ->
+          JSString -> JSRef (Maybe 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 (unHTMLMediaElement (toHTMLMediaElement self))
+            (toJSString type')
+            (toMaybeJSString keySystem)))
+ 
+foreign import javascript unsafe "$1[\"play\"]()" js_play ::
+        JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"pause\"]()" js_pause ::
+        JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"fastSeek\"]($2)" js_fastSeek
+        :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)) time)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGenerateKeyRequest\"]($2,\n$3)"
+        js_webkitGenerateKeyRequest ::
+        JSRef HTMLMediaElement ->
+          JSRef (Maybe JSString) -> JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self))
+         (toMaybeJSString keySystem)
+         (maybe jsNull (unUint8Array . toUint8Array) initData))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitAddKey\"]($2, $3, $4,\n$5)" js_webkitAddKey ::
+        JSRef HTMLMediaElement ->
+          JSRef (Maybe JSString) ->
+            JSRef Uint8Array -> JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         (toMaybeJSString keySystem)
+         (maybe jsNull (unUint8Array . toUint8Array) key)
+         (maybe jsNull (unUint8Array . toUint8Array) initData)
+         (toJSString sessionId))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitCancelKeyRequest\"]($2,\n$3)" js_webkitCancelKeyRequest
+        ::
+        JSRef HTMLMediaElement ->
+          JSRef (Maybe 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
+         (unHTMLMediaElement (toHTMLMediaElement self))
+         (toMaybeJSString keySystem)
+         (toJSString sessionId))
+ 
+foreign import javascript unsafe "$1[\"webkitSetMediaKeys\"]($2)"
+        js_webkitSetMediaKeys ::
+        JSRef HTMLMediaElement -> JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self))
+         (maybe jsNull pToJSRef mediaKeys))
+ 
+foreign import javascript unsafe "$1[\"addTextTrack\"]($2, $3, $4)"
+        js_addTextTrack ::
+        JSRef HTMLMediaElement ->
+          JSString -> JSString -> JSString -> IO (JSRef 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
+      ((js_addTextTrack (unHTMLMediaElement (toHTMLMediaElement self))
+          (toJSString kind)
+          (toJSString label)
+          (toJSString language))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getVideoPlaybackQuality\"]()" js_getVideoPlaybackQuality ::
+        JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getVideoPlaybackQuality
+          (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitShowPlaybackTargetPicker\"]()"
+        js_webkitShowPlaybackTargetPicker ::
+        JSRef 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
+         (unHTMLMediaElement (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 ::
+        JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getError (unHTMLMediaElement (toHTMLMediaElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))))
+ 
+foreign import javascript unsafe "$1[\"currentSrc\"]"
+        js_getCurrentSrc :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))))
+ 
+foreign import javascript unsafe "$1[\"networkState\"]"
+        js_getNetworkState :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"preload\"] = $2;"
+        js_setPreload :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"preload\"]" js_getPreload ::
+        JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))))
+ 
+foreign import javascript unsafe "$1[\"buffered\"]" js_getBuffered
+        :: JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getBuffered (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "($1[\"seeking\"] ? 1 : 0)"
+        js_getSeeking :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"currentTime\"] = $2;"
+        js_setCurrentTime :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         val)
+ 
+foreign import javascript unsafe "$1[\"currentTime\"]"
+        js_getCurrentTime :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"duration\"]" js_getDuration
+        :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "($1[\"paused\"] ? 1 : 0)"
+        js_getPaused :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe
+        "$1[\"defaultPlaybackRate\"] = $2;" js_setDefaultPlaybackRate ::
+        JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self))
+         val)
+ 
+foreign import javascript unsafe "$1[\"defaultPlaybackRate\"]"
+        js_getDefaultPlaybackRate :: JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"playbackRate\"] = $2;"
+        js_setPlaybackRate :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         val)
+ 
+foreign import javascript unsafe "$1[\"playbackRate\"]"
+        js_getPlaybackRate :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"played\"]" js_getPlayed ::
+        JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getPlayed (unHTMLMediaElement (toHTMLMediaElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"seekable\"]" js_getSeekable
+        :: JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getSeekable (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "($1[\"ended\"] ? 1 : 0)"
+        js_getEnded :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"autoplay\"] = $2;"
+        js_setAutoplay :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)) val)
+ 
+foreign import javascript unsafe "($1[\"autoplay\"] ? 1 : 0)"
+        js_getAutoplay :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"loop\"] = $2;" js_setLoop ::
+        JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)) val)
+ 
+foreign import javascript unsafe "($1[\"loop\"] ? 1 : 0)"
+        js_getLoop :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"controls\"] = $2;"
+        js_setControls :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)) val)
+ 
+foreign import javascript unsafe "($1[\"controls\"] ? 1 : 0)"
+        js_getControls :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"volume\"] = $2;"
+        js_setVolume :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)) val)
+ 
+foreign import javascript unsafe "$1[\"volume\"]" js_getVolume ::
+        JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"muted\"] = $2;" js_setMuted
+        :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)) val)
+ 
+foreign import javascript unsafe "($1[\"muted\"] ? 1 : 0)"
+        js_getMuted :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "$1[\"defaultMuted\"] = $2;"
+        js_setDefaultMuted :: JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         val)
+ 
+foreign import javascript unsafe "($1[\"defaultMuted\"] ? 1 : 0)"
+        js_getDefaultMuted :: JSRef 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 (unHTMLMediaElement (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 ::
+        JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self))
+         val)
+ 
+foreign import javascript unsafe
+        "($1[\"webkitPreservesPitch\"] ? 1 : 0)" js_getWebkitPreservesPitch
+        :: JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe
+        "($1[\"webkitHasClosedCaptions\"] ? 1 : 0)"
+        js_getWebkitHasClosedCaptions :: JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitClosedCaptionsVisible\"] = $2;"
+        js_setWebkitClosedCaptionsVisible ::
+        JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self))
+         val)
+ 
+foreign import javascript unsafe
+        "($1[\"webkitClosedCaptionsVisible\"] ? 1 : 0)"
+        js_getWebkitClosedCaptionsVisible ::
+        JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitAudioDecodedByteCount\"]"
+        js_getWebkitAudioDecodedByteCount ::
+        JSRef 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
+         (unHTMLMediaElement (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitVideoDecodedByteCount\"]"
+        js_getWebkitVideoDecodedByteCount ::
+        JSRef 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
+         (unHTMLMediaElement (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 :: JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getWebkitKeys (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"audioTracks\"]"
+        js_getAudioTracks ::
+        JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getAudioTracks (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"textTracks\"]"
+        js_getTextTracks ::
+        JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getTextTracks (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"videoTracks\"]"
+        js_getVideoTracks ::
+        JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getVideoTracks (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"mediaGroup\"] = $2;"
+        js_setMediaGroup ::
+        JSRef HTMLMediaElement -> JSRef (Maybe 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"mediaGroup\"]"
+        js_getMediaGroup ::
+        JSRef HTMLMediaElement -> IO (JSRef (Maybe 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 (unHTMLMediaElement (toHTMLMediaElement self))))
+ 
+foreign import javascript unsafe "$1[\"controller\"] = $2;"
+        js_setController ::
+        JSRef HTMLMediaElement -> JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"controller\"]"
+        js_getController ::
+        JSRef HTMLMediaElement -> IO (JSRef 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
+      ((js_getController (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"webkitCurrentPlaybackTargetIsWireless\"] ? 1 : 0)"
+        js_getWebkitCurrentPlaybackTargetIsWireless ::
+        JSRef 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
+         (unHTMLMediaElement (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 ::
+        JSRef HTMLMediaElement -> JSRef 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 (unHTMLMediaElement (toHTMLMediaElement self))
+         (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"srcObject\"]"
+        js_getSrcObject ::
+        JSRef HTMLMediaElement -> IO (JSRef (Maybe MediaStream))
+
+-- | <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 (unHTMLMediaElement (toHTMLMediaElement self)))
+         >>= fromJSRefUnchecked)
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,34 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"compact\"] = $2;"
+        js_setCompact :: JSRef 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 (unHTMLMenuElement self) val)
+ 
+foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
+        js_getCompact :: JSRef 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 (unHTMLMenuElement 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,97 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"content\"] = $2;"
+        js_setContent :: JSRef 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 (unHTMLMetaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"content\"]" js_getContent ::
+        JSRef 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 (unHTMLMetaElement self)))
+ 
+foreign import javascript unsafe "$1[\"httpEquiv\"] = $2;"
+        js_setHttpEquiv :: JSRef 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 (unHTMLMetaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"httpEquiv\"]"
+        js_getHttpEquiv :: JSRef 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 (unHTMLMetaElement self)))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLMetaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLMetaElement self)))
+ 
+foreign import javascript unsafe "$1[\"scheme\"] = $2;"
+        js_setScheme :: JSRef 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 (unHTMLMetaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"scheme\"]" js_getScheme ::
+        JSRef 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 (unHTMLMetaElement 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,118 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unHTMLMeterElement self) val)
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unHTMLMeterElement self))
+ 
+foreign import javascript unsafe "$1[\"min\"] = $2;" js_setMin ::
+        JSRef 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 (unHTMLMeterElement self) val)
+ 
+foreign import javascript unsafe "$1[\"min\"]" js_getMin ::
+        JSRef 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 (unHTMLMeterElement self))
+ 
+foreign import javascript unsafe "$1[\"max\"] = $2;" js_setMax ::
+        JSRef 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 (unHTMLMeterElement self) val)
+ 
+foreign import javascript unsafe "$1[\"max\"]" js_getMax ::
+        JSRef 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 (unHTMLMeterElement self))
+ 
+foreign import javascript unsafe "$1[\"low\"] = $2;" js_setLow ::
+        JSRef 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 (unHTMLMeterElement self) val)
+ 
+foreign import javascript unsafe "$1[\"low\"]" js_getLow ::
+        JSRef 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 (unHTMLMeterElement self))
+ 
+foreign import javascript unsafe "$1[\"high\"] = $2;" js_setHigh ::
+        JSRef 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 (unHTMLMeterElement self) val)
+ 
+foreign import javascript unsafe "$1[\"high\"]" js_getHigh ::
+        JSRef 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 (unHTMLMeterElement self))
+ 
+foreign import javascript unsafe "$1[\"optimum\"] = $2;"
+        js_setOptimum :: JSRef 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 (unHTMLMeterElement self) val)
+ 
+foreign import javascript unsafe "$1[\"optimum\"]" js_getOptimum ::
+        JSRef 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 (unHTMLMeterElement self))
+ 
+foreign import javascript unsafe "$1[\"labels\"]" js_getLabels ::
+        JSRef HTMLMeterElement -> IO (JSRef 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 ((js_getLabels (unHTMLMeterElement self)) >>= fromJSRef)
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,57 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"cite\"] = $2;" js_setCite ::
+        JSRef 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 (unHTMLModElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"cite\"]" js_getCite ::
+        JSRef 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 (unHTMLModElement self)))
+ 
+foreign import javascript unsafe "$1[\"dateTime\"] = $2;"
+        js_setDateTime :: JSRef 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 (unHTMLModElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"dateTime\"]" js_getDateTime
+        :: JSRef 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 (unHTMLModElement 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,86 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"compact\"] = $2;"
+        js_setCompact :: JSRef 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 (unHTMLOListElement self) val)
+ 
+foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
+        js_getCompact :: JSRef 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 (unHTMLOListElement self))
+ 
+foreign import javascript unsafe "$1[\"start\"] = $2;" js_setStart
+        :: JSRef 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 (unHTMLOListElement self) val)
+ 
+foreign import javascript unsafe "$1[\"start\"]" js_getStart ::
+        JSRef 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 (unHTMLOListElement self))
+ 
+foreign import javascript unsafe "$1[\"reversed\"] = $2;"
+        js_setReversed :: JSRef 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 (unHTMLOListElement self) val)
+ 
+foreign import javascript unsafe "($1[\"reversed\"] ? 1 : 0)"
+        js_getReversed :: JSRef 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 (unHTMLOListElement self))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLOListElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLOListElement 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,410 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLObjectElement self))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        JSRef HTMLObjectElement -> JSRef (Maybe 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 (unHTMLObjectElement self)
+         (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"getSVGDocument\"]()"
+        js_getSVGDocument ::
+        JSRef HTMLObjectElement -> IO (JSRef 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
+      ((js_getSVGDocument (unHTMLObjectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLObjectElement -> IO (JSRef 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 ((js_getForm (unHTMLObjectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"code\"] = $2;" js_setCode ::
+        JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"code\"]" js_getCode ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"archive\"] = $2;"
+        js_setArchive :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"archive\"]" js_getArchive ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"border\"] = $2;"
+        js_setBorder :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"border\"]" js_getBorder ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"codeBase\"] = $2;"
+        js_setCodeBase :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"codeBase\"]" js_getCodeBase
+        :: JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"codeType\"] = $2;"
+        js_setCodeType :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"codeType\"]" js_getCodeType
+        :: JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"data\"] = $2;" js_setData ::
+        JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"data\"]" js_getData ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"declare\"] = $2;"
+        js_setDeclare :: JSRef 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 (unHTMLObjectElement self) val)
+ 
+foreign import javascript unsafe "($1[\"declare\"] ? 1 : 0)"
+        js_getDeclare :: JSRef 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 (unHTMLObjectElement self))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"hspace\"] = $2;"
+        js_setHspace :: JSRef 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 (unHTMLObjectElement self) val)
+ 
+foreign import javascript unsafe "$1[\"hspace\"]" js_getHspace ::
+        JSRef 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 (unHTMLObjectElement self))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"standby\"] = $2;"
+        js_setStandby :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"standby\"]" js_getStandby ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"useMap\"] = $2;"
+        js_setUseMap :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"useMap\"]" js_getUseMap ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"vspace\"] = $2;"
+        js_setVspace :: JSRef 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 (unHTMLObjectElement self) val)
+ 
+foreign import javascript unsafe "$1[\"vspace\"]" js_getVspace ::
+        JSRef 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 (unHTMLObjectElement self))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLObjectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
+        js_getWillValidate :: JSRef 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 (unHTMLObjectElement self))
+ 
+foreign import javascript unsafe "$1[\"validity\"]" js_getValidity
+        :: JSRef HTMLObjectElement -> IO (JSRef 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
+      ((js_getValidity (unHTMLObjectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"validationMessage\"]"
+        js_getValidationMessage :: JSRef 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 (unHTMLObjectElement self)))
+ 
+foreign import javascript unsafe "$1[\"contentDocument\"]"
+        js_getContentDocument ::
+        JSRef HTMLObjectElement -> IO (JSRef 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
+      ((js_getContentDocument (unHTMLObjectElement self)) >>= fromJSRef)
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,56 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLOptGroupElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLOptGroupElement self))
+ 
+foreign import javascript unsafe "$1[\"label\"] = $2;" js_setLabel
+        :: JSRef 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 (unHTMLOptGroupElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unHTMLOptGroupElement 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,146 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLOptionElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLOptionElement self))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLOptionElement -> IO (JSRef 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 ((js_getForm (unHTMLOptionElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"label\"] = $2;" js_setLabel
+        :: JSRef 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 (unHTMLOptionElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unHTMLOptionElement self)))
+ 
+foreign import javascript unsafe "$1[\"defaultSelected\"] = $2;"
+        js_setDefaultSelected :: JSRef 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 (unHTMLOptionElement self) val)
+ 
+foreign import javascript unsafe
+        "($1[\"defaultSelected\"] ? 1 : 0)" js_getDefaultSelected ::
+        JSRef 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 (unHTMLOptionElement self))
+ 
+foreign import javascript unsafe "$1[\"selected\"] = $2;"
+        js_setSelected :: JSRef 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 (unHTMLOptionElement self) val)
+ 
+foreign import javascript unsafe "($1[\"selected\"] ? 1 : 0)"
+        js_getSelected :: JSRef 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 (unHTMLOptionElement self))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unHTMLOptionElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unHTMLOptionElement self)))
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        JSRef 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 (unHTMLOptionElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        JSRef 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 (unHTMLOptionElement self)))
+ 
+foreign import javascript unsafe "$1[\"index\"]" js_getIndex ::
+        JSRef 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 (unHTMLOptionElement 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,104 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        JSRef HTMLOptionsCollection -> JSString -> IO (JSRef 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
+      ((js_namedItem (unHTMLOptionsCollection self) (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_addBefore
+        ::
+        JSRef HTMLOptionsCollection ->
+          JSRef HTMLElement -> JSRef 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 (unHTMLOptionsCollection self)
+         (maybe jsNull (unHTMLElement . toHTMLElement) element)
+         (maybe jsNull (unHTMLElement . toHTMLElement) before))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+        JSRef HTMLOptionsCollection -> JSRef 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 (unHTMLOptionsCollection self)
+         (maybe jsNull (unHTMLElement . toHTMLElement) element)
+         index)
+ 
+foreign import javascript unsafe "$1[\"remove\"]($2)" js_remove ::
+        JSRef 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 (unHTMLOptionsCollection self) index)
+ 
+foreign import javascript unsafe "$1[\"selectedIndex\"] = $2;"
+        js_setSelectedIndex :: JSRef 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 (unHTMLOptionsCollection self) val)
+ 
+foreign import javascript unsafe "$1[\"selectedIndex\"]"
+        js_getSelectedIndex :: JSRef 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 (unHTMLOptionsCollection self))
+ 
+foreign import javascript unsafe "$1[\"length\"] = $2;"
+        js_setLength :: JSRef 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 (unHTMLOptionsCollection self) val)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unHTMLOptionsCollection 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,178 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLOutputElement self))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        JSRef HTMLOutputElement -> JSRef (Maybe 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 (unHTMLOutputElement self)
+         (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"htmlFor\"]" js_getHtmlFor ::
+        JSRef HTMLOutputElement -> IO (JSRef 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 ((js_getHtmlFor (unHTMLOutputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLOutputElement -> IO (JSRef 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 ((js_getForm (unHTMLOutputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLOutputElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLOutputElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLOutputElement self)))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"] = $2;"
+        js_setDefaultValue ::
+        JSRef HTMLOutputElement -> JSRef (Maybe 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 (unHTMLOutputElement self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"]"
+        js_getDefaultValue ::
+        JSRef HTMLOutputElement -> IO (JSRef (Maybe 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 (unHTMLOutputElement self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef HTMLOutputElement -> JSRef (Maybe 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 (unHTMLOutputElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef HTMLOutputElement -> IO (JSRef (Maybe 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 (unHTMLOutputElement self)))
+ 
+foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
+        js_getWillValidate :: JSRef 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 (unHTMLOutputElement self))
+ 
+foreign import javascript unsafe "$1[\"validity\"]" js_getValidity
+        :: JSRef HTMLOutputElement -> IO (JSRef 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
+      ((js_getValidity (unHTMLOutputElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"validationMessage\"]"
+        js_getValidationMessage :: JSRef 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 (unHTMLOutputElement self)))
+ 
+foreign import javascript unsafe "$1[\"labels\"]" js_getLabels ::
+        JSRef HTMLOutputElement -> IO (JSRef 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 ((js_getLabels (unHTMLOutputElement self)) >>= fromJSRef)
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,41 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLParagraphElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLParagraphElement self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLParamElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLParamElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLParamElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLParamElement self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unHTMLParamElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unHTMLParamElement self)))
+ 
+foreign import javascript unsafe "$1[\"valueType\"] = $2;"
+        js_setValueType :: JSRef 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 (unHTMLParamElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"valueType\"]"
+        js_getValueType :: JSRef 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 (unHTMLParamElement 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,49 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLPreElement self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLPreElement self))
+ 
+foreign import javascript unsafe "$1[\"wrap\"] = $2;" js_setWrap ::
+        JSRef 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 (unHTMLPreElement self) val)
+ 
+foreign import javascript unsafe "($1[\"wrap\"] ? 1 : 0)"
+        js_getWrap :: JSRef 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 (unHTMLPreElement 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,69 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unHTMLProgressElement self) val)
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unHTMLProgressElement self))
+ 
+foreign import javascript unsafe "$1[\"max\"] = $2;" js_setMax ::
+        JSRef 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 (unHTMLProgressElement self) val)
+ 
+foreign import javascript unsafe "$1[\"max\"]" js_getMax ::
+        JSRef 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 (unHTMLProgressElement self))
+ 
+foreign import javascript unsafe "$1[\"position\"]" js_getPosition
+        :: JSRef 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 (unHTMLProgressElement self))
+ 
+foreign import javascript unsafe "$1[\"labels\"]" js_getLabels ::
+        JSRef HTMLProgressElement -> IO (JSRef 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
+      ((js_getLabels (unHTMLProgressElement self)) >>= fromJSRef)
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,37 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"cite\"] = $2;" js_setCite ::
+        JSRef 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 (unHTMLQuoteElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"cite\"]" js_getCite ::
+        JSRef 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 (unHTMLQuoteElement 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,212 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        JSRef HTMLScriptElement -> JSRef (Maybe 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 (unHTMLScriptElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        JSRef HTMLScriptElement -> IO (JSRef (Maybe 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 (unHTMLScriptElement self)))
+ 
+foreign import javascript unsafe "$1[\"htmlFor\"] = $2;"
+        js_setHtmlFor :: JSRef 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 (unHTMLScriptElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"htmlFor\"]" js_getHtmlFor ::
+        JSRef 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 (unHTMLScriptElement self)))
+ 
+foreign import javascript unsafe "$1[\"event\"] = $2;" js_setEvent
+        :: JSRef 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 (unHTMLScriptElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"event\"]" js_getEvent ::
+        JSRef 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 (unHTMLScriptElement self)))
+ 
+foreign import javascript unsafe "$1[\"charset\"] = $2;"
+        js_setCharset :: JSRef 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 (unHTMLScriptElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"charset\"]" js_getCharset ::
+        JSRef 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 (unHTMLScriptElement self)))
+ 
+foreign import javascript unsafe "$1[\"async\"] = $2;" js_setAsync
+        :: JSRef 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 (unHTMLScriptElement self) val)
+ 
+foreign import javascript unsafe "($1[\"async\"] ? 1 : 0)"
+        js_getAsync :: JSRef 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 (unHTMLScriptElement self))
+ 
+foreign import javascript unsafe "$1[\"defer\"] = $2;" js_setDefer
+        :: JSRef 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 (unHTMLScriptElement self) val)
+ 
+foreign import javascript unsafe "($1[\"defer\"] ? 1 : 0)"
+        js_getDefer :: JSRef 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 (unHTMLScriptElement self))
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLScriptElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLScriptElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLScriptElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLScriptElement self)))
+ 
+foreign import javascript unsafe "$1[\"crossOrigin\"] = $2;"
+        js_setCrossOrigin :: JSRef 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 (unHTMLScriptElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"crossOrigin\"]"
+        js_getCrossOrigin :: JSRef 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 (unHTMLScriptElement self)))
+ 
+foreign import javascript unsafe "$1[\"nonce\"] = $2;" js_setNonce
+        :: JSRef 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 (unHTMLScriptElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"nonce\"]" js_getNonce ::
+        JSRef 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 (unHTMLScriptElement 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,337 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef HTMLSelectElement -> Word -> IO (JSRef 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 ((js_item (unHTMLSelectElement self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        JSRef HTMLSelectElement -> JSString -> IO (JSRef 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
+      ((js_namedItem (unHTMLSelectElement self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_addBefore
+        ::
+        JSRef HTMLSelectElement ->
+          JSRef HTMLElement -> JSRef 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 (unHTMLSelectElement self)
+         (maybe jsNull (unHTMLElement . toHTMLElement) element)
+         (maybe jsNull (unHTMLElement . toHTMLElement) before))
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+        JSRef HTMLSelectElement -> JSRef 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 (unHTMLSelectElement self)
+         (maybe jsNull (unHTMLElement . toHTMLElement) element)
+         index)
+ 
+foreign import javascript unsafe "$1[\"remove\"]()" js_remove ::
+        JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        JSRef HTMLSelectElement -> JSRef (Maybe 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 (unHTMLSelectElement self)
+         (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
+        js_setAutofocus :: JSRef 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 (unHTMLSelectElement self) val)
+ 
+foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
+        js_getAutofocus :: JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLSelectElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLSelectElement -> IO (JSRef 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 ((js_getForm (unHTMLSelectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"multiple\"] = $2;"
+        js_setMultiple :: JSRef 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 (unHTMLSelectElement self) val)
+ 
+foreign import javascript unsafe "($1[\"multiple\"] ? 1 : 0)"
+        js_getMultiple :: JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLSelectElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLSelectElement self)))
+ 
+foreign import javascript unsafe "$1[\"required\"] = $2;"
+        js_setRequired :: JSRef 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 (unHTMLSelectElement self) val)
+ 
+foreign import javascript unsafe "($1[\"required\"] ? 1 : 0)"
+        js_getRequired :: JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+        JSRef 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 (unHTMLSelectElement self) val)
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLSelectElement self)))
+ 
+foreign import javascript unsafe "$1[\"options\"]" js_getOptions ::
+        JSRef HTMLSelectElement -> IO (JSRef 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 ((js_getOptions (unHTMLSelectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"] = $2;"
+        js_setLength :: JSRef 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 (unHTMLSelectElement self) val)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"selectedOptions\"]"
+        js_getSelectedOptions ::
+        JSRef HTMLSelectElement -> IO (JSRef 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
+      ((js_getSelectedOptions (unHTMLSelectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"selectedIndex\"] = $2;"
+        js_setSelectedIndex :: JSRef 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 (unHTMLSelectElement self) val)
+ 
+foreign import javascript unsafe "$1[\"selectedIndex\"]"
+        js_getSelectedIndex :: JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef HTMLSelectElement -> JSRef (Maybe 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 (unHTMLSelectElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef HTMLSelectElement -> IO (JSRef (Maybe 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 (unHTMLSelectElement self)))
+ 
+foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
+        js_getWillValidate :: JSRef 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 (unHTMLSelectElement self))
+ 
+foreign import javascript unsafe "$1[\"validity\"]" js_getValidity
+        :: JSRef HTMLSelectElement -> IO (JSRef 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
+      ((js_getValidity (unHTMLSelectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"validationMessage\"]"
+        js_getValidationMessage :: JSRef 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 (unHTMLSelectElement self)))
+ 
+foreign import javascript unsafe "$1[\"labels\"]" js_getLabels ::
+        JSRef HTMLSelectElement -> IO (JSRef 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 ((js_getLabels (unHTMLSelectElement self)) >>= fromJSRef)
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,75 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLSourceElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLSourceElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLSourceElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLSourceElement self)))
+ 
+foreign import javascript unsafe "$1[\"media\"] = $2;" js_setMedia
+        :: JSRef 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 (unHTMLSourceElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        JSRef 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 (unHTMLSourceElement 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,81 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLStyleElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLStyleElement self))
+ 
+foreign import javascript unsafe "$1[\"media\"] = $2;" js_setMedia
+        :: JSRef 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 (unHTMLStyleElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        JSRef 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 (unHTMLStyleElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLStyleElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLStyleElement self)))
+ 
+foreign import javascript unsafe "$1[\"sheet\"]" js_getSheet ::
+        JSRef HTMLStyleElement -> IO (JSRef 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 ((js_getSheet (unHTMLStyleElement self)) >>= fromJSRef)
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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLTableCaptionElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLTableCaptionElement 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,316 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"cellIndex\"]"
+        js_getCellIndex :: JSRef 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 (unHTMLTableCellElement self))
+ 
+foreign import javascript unsafe "$1[\"abbr\"] = $2;" js_setAbbr ::
+        JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"abbr\"]" js_getAbbr ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"axis\"] = $2;" js_setAxis ::
+        JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"axis\"]" js_getAxis ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
+        js_setBgColor :: JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"]" js_getBgColor ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"ch\"] = $2;" js_setCh ::
+        JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"ch\"]" js_getCh ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"chOff\"] = $2;" js_setChOff
+        :: JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"chOff\"]" js_getChOff ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"colSpan\"] = $2;"
+        js_setColSpan :: JSRef 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 (unHTMLTableCellElement self) val)
+ 
+foreign import javascript unsafe "$1[\"colSpan\"]" js_getColSpan ::
+        JSRef 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 (unHTMLTableCellElement self))
+ 
+foreign import javascript unsafe "$1[\"headers\"] = $2;"
+        js_setHeaders :: JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"headers\"]" js_getHeaders ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"noWrap\"] = $2;"
+        js_setNoWrap :: JSRef 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 (unHTMLTableCellElement self) val)
+ 
+foreign import javascript unsafe "($1[\"noWrap\"] ? 1 : 0)"
+        js_getNoWrap :: JSRef 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 (unHTMLTableCellElement self))
+ 
+foreign import javascript unsafe "$1[\"rowSpan\"] = $2;"
+        js_setRowSpan :: JSRef 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 (unHTMLTableCellElement self) val)
+ 
+foreign import javascript unsafe "$1[\"rowSpan\"]" js_getRowSpan ::
+        JSRef 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 (unHTMLTableCellElement self))
+ 
+foreign import javascript unsafe "$1[\"scope\"] = $2;" js_setScope
+        :: JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"scope\"]" js_getScope ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"vAlign\"] = $2;"
+        js_setVAlign :: JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"vAlign\"]" js_getVAlign ::
+        JSRef 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 (unHTMLTableCellElement self)))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLTableCellElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLTableCellElement 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,136 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLTableColElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLTableColElement self)))
+ 
+foreign import javascript unsafe "$1[\"ch\"] = $2;" js_setCh ::
+        JSRef 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 (unHTMLTableColElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"ch\"]" js_getCh ::
+        JSRef 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 (unHTMLTableColElement self)))
+ 
+foreign import javascript unsafe "$1[\"chOff\"] = $2;" js_setChOff
+        :: JSRef 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 (unHTMLTableColElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"chOff\"]" js_getChOff ::
+        JSRef 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 (unHTMLTableColElement self)))
+ 
+foreign import javascript unsafe "$1[\"span\"] = $2;" js_setSpan ::
+        JSRef 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 (unHTMLTableColElement self) val)
+ 
+foreign import javascript unsafe "$1[\"span\"]" js_getSpan ::
+        JSRef 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 (unHTMLTableColElement self))
+ 
+foreign import javascript unsafe "$1[\"vAlign\"] = $2;"
+        js_setVAlign :: JSRef 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 (unHTMLTableColElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"vAlign\"]" js_getVAlign ::
+        JSRef 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 (unHTMLTableColElement self)))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLTableColElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLTableColElement 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,367 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"createTHead\"]()"
+        js_createTHead :: JSRef HTMLTableElement -> IO (JSRef 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 ((js_createTHead (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteTHead\"]()"
+        js_deleteTHead :: JSRef 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 (unHTMLTableElement self))
+ 
+foreign import javascript unsafe "$1[\"createTFoot\"]()"
+        js_createTFoot :: JSRef HTMLTableElement -> IO (JSRef 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 ((js_createTFoot (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteTFoot\"]()"
+        js_deleteTFoot :: JSRef 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 (unHTMLTableElement self))
+ 
+foreign import javascript unsafe "$1[\"createTBody\"]()"
+        js_createTBody :: JSRef HTMLTableElement -> IO (JSRef 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 ((js_createTBody (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createCaption\"]()"
+        js_createCaption ::
+        JSRef HTMLTableElement -> IO (JSRef 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
+      ((js_createCaption (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteCaption\"]()"
+        js_deleteCaption :: JSRef 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 (unHTMLTableElement self))
+ 
+foreign import javascript unsafe "$1[\"insertRow\"]($2)"
+        js_insertRow ::
+        JSRef HTMLTableElement -> Int -> IO (JSRef 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
+      ((js_insertRow (unHTMLTableElement self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteRow\"]($2)"
+        js_deleteRow :: JSRef 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 (unHTMLTableElement self) index)
+ 
+foreign import javascript unsafe "$1[\"caption\"] = $2;"
+        js_setCaption ::
+        JSRef HTMLTableElement -> JSRef 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 (unHTMLTableElement self)
+         (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"caption\"]" js_getCaption ::
+        JSRef HTMLTableElement -> IO (JSRef 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 ((js_getCaption (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"tHead\"] = $2;" js_setTHead
+        :: JSRef HTMLTableElement -> JSRef 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 (unHTMLTableElement self) (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"tHead\"]" js_getTHead ::
+        JSRef HTMLTableElement -> IO (JSRef 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 ((js_getTHead (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"tFoot\"] = $2;" js_setTFoot
+        :: JSRef HTMLTableElement -> JSRef 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 (unHTMLTableElement self) (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"tFoot\"]" js_getTFoot ::
+        JSRef HTMLTableElement -> IO (JSRef 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 ((js_getTFoot (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
+        JSRef HTMLTableElement -> IO (JSRef 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 ((js_getRows (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"tBodies\"]" js_getTBodies ::
+        JSRef HTMLTableElement -> IO (JSRef 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 ((js_getTBodies (unHTMLTableElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLTableElement self)))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
+        js_setBgColor :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"]" js_getBgColor ::
+        JSRef 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 (unHTMLTableElement self)))
+ 
+foreign import javascript unsafe "$1[\"border\"] = $2;"
+        js_setBorder :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"border\"]" js_getBorder ::
+        JSRef 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 (unHTMLTableElement self)))
+ 
+foreign import javascript unsafe "$1[\"cellPadding\"] = $2;"
+        js_setCellPadding :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"cellPadding\"]"
+        js_getCellPadding :: JSRef 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 (unHTMLTableElement self)))
+ 
+foreign import javascript unsafe "$1[\"cellSpacing\"] = $2;"
+        js_setCellSpacing :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"cellSpacing\"]"
+        js_getCellSpacing :: JSRef 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 (unHTMLTableElement self)))
+ 
+foreign import javascript unsafe "$1[\"frame\"] = $2;" js_setFrame
+        :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"frame\"]" js_getFrame ::
+        JSRef 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 (unHTMLTableElement self)))
+ 
+foreign import javascript unsafe "$1[\"rules\"] = $2;" js_setRules
+        :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"rules\"]" js_getRules ::
+        JSRef 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 (unHTMLTableElement self)))
+ 
+foreign import javascript unsafe "$1[\"summary\"] = $2;"
+        js_setSummary :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"summary\"]" js_getSummary ::
+        JSRef 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 (unHTMLTableElement self)))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLTableElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLTableElement 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,167 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"insertCell\"]($2)"
+        js_insertCell ::
+        JSRef HTMLTableRowElement -> Int -> IO (JSRef 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
+      ((js_insertCell (unHTMLTableRowElement self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteCell\"]($2)"
+        js_deleteCell :: JSRef 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 (unHTMLTableRowElement self) index)
+ 
+foreign import javascript unsafe "$1[\"rowIndex\"]" js_getRowIndex
+        :: JSRef 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 (unHTMLTableRowElement self))
+ 
+foreign import javascript unsafe "$1[\"sectionRowIndex\"]"
+        js_getSectionRowIndex :: JSRef 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 (unHTMLTableRowElement self))
+ 
+foreign import javascript unsafe "$1[\"cells\"]" js_getCells ::
+        JSRef HTMLTableRowElement -> IO (JSRef 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 ((js_getCells (unHTMLTableRowElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLTableRowElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLTableRowElement self)))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"] = $2;"
+        js_setBgColor :: JSRef 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 (unHTMLTableRowElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"bgColor\"]" js_getBgColor ::
+        JSRef 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 (unHTMLTableRowElement self)))
+ 
+foreign import javascript unsafe "$1[\"ch\"] = $2;" js_setCh ::
+        JSRef 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 (unHTMLTableRowElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"ch\"]" js_getCh ::
+        JSRef 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 (unHTMLTableRowElement self)))
+ 
+foreign import javascript unsafe "$1[\"chOff\"] = $2;" js_setChOff
+        :: JSRef 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 (unHTMLTableRowElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"chOff\"]" js_getChOff ::
+        JSRef 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 (unHTMLTableRowElement self)))
+ 
+foreign import javascript unsafe "$1[\"vAlign\"] = $2;"
+        js_setVAlign :: JSRef 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 (unHTMLTableRowElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"vAlign\"]" js_getVAlign ::
+        JSRef 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 (unHTMLTableRowElement 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,142 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"insertRow\"]($2)"
+        js_insertRow ::
+        JSRef HTMLTableSectionElement -> Int -> IO (JSRef 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
+      ((js_insertRow (unHTMLTableSectionElement self) index) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteRow\"]($2)"
+        js_deleteRow :: JSRef 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 (unHTMLTableSectionElement self) index)
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unHTMLTableSectionElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unHTMLTableSectionElement self)))
+ 
+foreign import javascript unsafe "$1[\"ch\"] = $2;" js_setCh ::
+        JSRef 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 (unHTMLTableSectionElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"ch\"]" js_getCh ::
+        JSRef 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 (unHTMLTableSectionElement self)))
+ 
+foreign import javascript unsafe "$1[\"chOff\"] = $2;" js_setChOff
+        :: JSRef 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 (unHTMLTableSectionElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"chOff\"]" js_getChOff ::
+        JSRef 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 (unHTMLTableSectionElement self)))
+ 
+foreign import javascript unsafe "$1[\"vAlign\"] = $2;"
+        js_setVAlign :: JSRef 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 (unHTMLTableSectionElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"vAlign\"]" js_getVAlign ::
+        JSRef 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 (unHTMLTableSectionElement self)))
+ 
+foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
+        JSRef HTMLTableSectionElement -> IO (JSRef 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
+      ((js_getRows (unHTMLTableSectionElement self)) >>= fromJSRef)
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,29 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"content\"]" js_getContent ::
+        JSRef HTMLTemplateElement -> IO (JSRef 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
+      ((js_getContent (unHTMLTemplateElement self)) >>= fromJSRef)
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,520 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"checkValidity\"]() ? 1 : 0)" js_checkValidity ::
+        JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"setCustomValidity\"]($2)"
+        js_setCustomValidity ::
+        JSRef HTMLTextAreaElement -> JSRef (Maybe 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 (unHTMLTextAreaElement self)
+         (toMaybeJSString error))
+ 
+foreign import javascript unsafe "$1[\"select\"]()" js_select ::
+        JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"setRangeText\"]($2)"
+        js_setRangeText :: JSRef 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 (unHTMLTextAreaElement self)
+         (toJSString replacement))
+ 
+foreign import javascript unsafe
+        "$1[\"setRangeText\"]($2, $3, $4,\n$5)" js_setRangeText4 ::
+        JSRef 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 (unHTMLTextAreaElement self)
+         (toJSString replacement)
+         start
+         end
+         (toJSString selectionMode))
+ 
+foreign import javascript unsafe
+        "$1[\"setSelectionRange\"]($2, $3,\n$4)" js_setSelectionRange ::
+        JSRef 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 (unHTMLTextAreaElement self) start end
+         (toJSString direction))
+ 
+foreign import javascript unsafe "$1[\"autofocus\"] = $2;"
+        js_setAutofocus :: JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "($1[\"autofocus\"] ? 1 : 0)"
+        js_getAutofocus :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"cols\"] = $2;" js_setCols ::
+        JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "$1[\"cols\"]" js_getCols ::
+        JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"dirName\"] = $2;"
+        js_setDirName :: JSRef 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 (unHTMLTextAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"dirName\"]" js_getDirName ::
+        JSRef 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"form\"]" js_getForm ::
+        JSRef HTMLTextAreaElement -> IO (JSRef 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 ((js_getForm (unHTMLTextAreaElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"maxLength\"] = $2;"
+        js_setMaxLength :: JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "$1[\"maxLength\"]"
+        js_getMaxLength :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unHTMLTextAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"placeholder\"] = $2;"
+        js_setPlaceholder :: JSRef 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 (unHTMLTextAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"placeholder\"]"
+        js_getPlaceholder :: JSRef 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"readOnly\"] = $2;"
+        js_setReadOnly :: JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "($1[\"readOnly\"] ? 1 : 0)"
+        js_getReadOnly :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"required\"] = $2;"
+        js_setRequired :: JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "($1[\"required\"] ? 1 : 0)"
+        js_getRequired :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"rows\"] = $2;" js_setRows ::
+        JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
+        JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"wrap\"] = $2;" js_setWrap ::
+        JSRef 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 (unHTMLTextAreaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"wrap\"]" js_getWrap ::
+        JSRef 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"] = $2;"
+        js_setDefaultValue ::
+        JSRef HTMLTextAreaElement -> JSRef (Maybe 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 (unHTMLTextAreaElement self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"defaultValue\"]"
+        js_getDefaultValue ::
+        JSRef HTMLTextAreaElement -> IO (JSRef (Maybe 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef HTMLTextAreaElement -> JSRef (Maybe 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 (unHTMLTextAreaElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef HTMLTextAreaElement -> IO (JSRef (Maybe 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"textLength\"]"
+        js_getTextLength :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "($1[\"willValidate\"] ? 1 : 0)"
+        js_getWillValidate :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"validity\"]" js_getValidity
+        :: JSRef HTMLTextAreaElement -> IO (JSRef 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
+      ((js_getValidity (unHTMLTextAreaElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"validationMessage\"]"
+        js_getValidationMessage :: JSRef 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"labels\"]" js_getLabels ::
+        JSRef HTMLTextAreaElement -> IO (JSRef 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
+      ((js_getLabels (unHTMLTextAreaElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"selectionStart\"] = $2;"
+        js_setSelectionStart :: JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "$1[\"selectionStart\"]"
+        js_getSelectionStart :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"selectionEnd\"] = $2;"
+        js_setSelectionEnd :: JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "$1[\"selectionEnd\"]"
+        js_getSelectionEnd :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"selectionDirection\"] = $2;"
+        js_setSelectionDirection ::
+        JSRef 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 (unHTMLTextAreaElement self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"selectionDirection\"]"
+        js_getSelectionDirection ::
+        JSRef 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 (unHTMLTextAreaElement self)))
+ 
+foreign import javascript unsafe "$1[\"autocorrect\"] = $2;"
+        js_setAutocorrect :: JSRef 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 (unHTMLTextAreaElement self) val)
+ 
+foreign import javascript unsafe "($1[\"autocorrect\"] ? 1 : 0)"
+        js_getAutocorrect :: JSRef 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 (unHTMLTextAreaElement self))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"] = $2;"
+        js_setAutocapitalize ::
+        JSRef HTMLTextAreaElement -> JSRef (Maybe 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 (unHTMLTextAreaElement self)
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"autocapitalize\"]"
+        js_getAutocapitalize ::
+        JSRef HTMLTextAreaElement -> IO (JSRef (Maybe 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 (unHTMLTextAreaElement 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,41 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        JSRef HTMLTitleElement -> JSRef (Maybe 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 (unHTMLTitleElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        JSRef HTMLTitleElement -> IO (JSRef (Maybe 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 (unHTMLTitleElement 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,132 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+pattern NONE = 0
+pattern LOADING = 1
+pattern LOADED = 2
+pattern ERROR = 3
+ 
+foreign import javascript unsafe "$1[\"kind\"] = $2;" js_setKind ::
+        JSRef 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 (unHTMLTrackElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"kind\"]" js_getKind ::
+        JSRef 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 (unHTMLTrackElement self)))
+ 
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        JSRef 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 (unHTMLTrackElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        JSRef 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 (unHTMLTrackElement self)))
+ 
+foreign import javascript unsafe "$1[\"srclang\"] = $2;"
+        js_setSrclang :: JSRef 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 (unHTMLTrackElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"srclang\"]" js_getSrclang ::
+        JSRef 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 (unHTMLTrackElement self)))
+ 
+foreign import javascript unsafe "$1[\"label\"] = $2;" js_setLabel
+        :: JSRef 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 (unHTMLTrackElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unHTMLTrackElement self)))
+ 
+foreign import javascript unsafe "$1[\"default\"] = $2;"
+        js_setDefault :: JSRef 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 (unHTMLTrackElement self) val)
+ 
+foreign import javascript unsafe "($1[\"default\"] ? 1 : 0)"
+        js_getDefault :: JSRef 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 (unHTMLTrackElement self))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unHTMLTrackElement self))
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        JSRef HTMLTrackElement -> IO (JSRef 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 ((js_getTrack (unHTMLTrackElement self)) >>= fromJSRef)
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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"compact\"] = $2;"
+        js_setCompact :: JSRef 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 (unHTMLUListElement self) val)
+ 
+foreign import javascript unsafe "($1[\"compact\"] ? 1 : 0)"
+        js_getCompact :: JSRef 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 (unHTMLUListElement self))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unHTMLUListElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unHTMLUListElement self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
@@ -0,0 +1,245 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"webkitEnterFullscreen\"]()"
+        js_webkitEnterFullscreen :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"webkitExitFullscreen\"]()"
+        js_webkitExitFullscreen :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"webkitEnterFullScreen\"]()"
+        js_webkitEnterFullScreen :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"webkitExitFullScreen\"]()"
+        js_webkitExitFullScreen :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe
+        "($1[\"webkitSupportsPresentationMode\"]($2) ? 1 : 0)"
+        js_webkitSupportsPresentationMode ::
+        JSRef HTMLVideoElement -> JSRef VideoPresentationMode -> 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 (unHTMLVideoElement self)
+         (pToJSRef mode))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitSetPresentationMode\"]($2)"
+        js_webkitSetPresentationMode ::
+        JSRef HTMLVideoElement -> JSRef VideoPresentationMode -> 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 (unHTMLVideoElement self)
+         (pToJSRef mode))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unHTMLVideoElement self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unHTMLVideoElement self) val)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"videoWidth\"]"
+        js_getVideoWidth :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"videoHeight\"]"
+        js_getVideoHeight :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"poster\"] = $2;"
+        js_setPoster :: JSRef 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 (unHTMLVideoElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"poster\"]" js_getPoster ::
+        JSRef 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 (unHTMLVideoElement self)))
+ 
+foreign import javascript unsafe
+        "($1[\"webkitSupportsFullscreen\"] ? 1 : 0)"
+        js_getWebkitSupportsFullscreen :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe
+        "($1[\"webkitDisplayingFullscreen\"] ? 1 : 0)"
+        js_getWebkitDisplayingFullscreen ::
+        JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitWirelessVideoPlaybackDisabled\"] = $2;"
+        js_setWebkitWirelessVideoPlaybackDisabled ::
+        JSRef 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
+         (unHTMLVideoElement self)
+         val)
+ 
+foreign import javascript unsafe
+        "($1[\"webkitWirelessVideoPlaybackDisabled\"] ? 1 : 0)"
+        js_getWebkitWirelessVideoPlaybackDisabled ::
+        JSRef 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
+         (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"webkitDecodedFrameCount\"]"
+        js_getWebkitDecodedFrameCount :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"webkitDroppedFrameCount\"]"
+        js_getWebkitDroppedFrameCount :: JSRef 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 (unHTMLVideoElement self))
+ 
+foreign import javascript unsafe "$1[\"webkitPresentationMode\"]"
+        js_getWebkitPresentationMode ::
+        JSRef HTMLVideoElement -> IO (JSRef VideoPresentationMode)
+
+-- | <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 (unHTMLVideoElement self)) >>=
+         fromJSRefUnchecked)
+
+-- | <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,58 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initHashChangeEvent\"]($2,\n$3, $4, $5, $6)"
+        js_initHashChangeEvent ::
+        JSRef 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 (unHashChangeEvent self) (toJSString type')
+         canBubble
+         cancelable
+         (toJSString oldURL)
+         (toJSString newURL))
+ 
+foreign import javascript unsafe "$1[\"oldURL\"]" js_getOldURL ::
+        JSRef 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 (unHashChangeEvent self)))
+ 
+foreign import javascript unsafe "$1[\"newURL\"]" js_getNewURL ::
+        JSRef 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 (unHashChangeEvent 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,83 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"back\"]()" js_back ::
+        JSRef 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 (unHistory self))
+ 
+foreign import javascript unsafe "$1[\"forward\"]()" js_forward ::
+        JSRef 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 (unHistory self))
+ 
+foreign import javascript unsafe "$1[\"go\"]($2)" js_go ::
+        JSRef 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 (unHistory self) distance)
+ 
+foreign import javascript unsafe "$1[\"pushState\"]($2, $3, $4)"
+        js_pushState ::
+        JSRef History -> JSRef a -> 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 -> JSRef a -> title -> url -> m ()
+pushState self data' title url
+  = liftIO
+      (js_pushState (unHistory self) data' (toJSString title)
+         (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"replaceState\"]($2, $3, $4)"
+        js_replaceState ::
+        JSRef History -> JSRef a -> 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 -> JSRef a -> title -> url -> m ()
+replaceState self data' title url
+  = liftIO
+      (js_replaceState (unHistory self) data' (toJSString title)
+         (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unHistory self))
+ 
+foreign import javascript unsafe "$1[\"state\"]" js_getState ::
+        JSRef History -> IO (JSRef 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 ((js_getState (unHistory self)) >>= fromJSRef)
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,98 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"update\"]($2)" js_update ::
+        JSRef IDBCursor -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
+update ::
+       (MonadIO m, IsIDBCursor self) =>
+         self -> JSRef a -> m (Maybe IDBRequest)
+update self value
+  = liftIO
+      ((js_update (unIDBCursor (toIDBCursor self)) value) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"advance\"]($2)" js_advance
+        :: JSRef 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 (unIDBCursor (toIDBCursor self)) count)
+ 
+foreign import javascript unsafe "$1[\"continue\"]($2)" js_continue
+        :: JSRef IDBCursor -> JSRef a -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continue Mozilla IDBCursor.continue documentation> 
+continue ::
+         (MonadIO m, IsIDBCursor self) => self -> JSRef a -> m ()
+continue self key
+  = liftIO (js_continue (unIDBCursor (toIDBCursor self)) key)
+ 
+foreign import javascript unsafe "$1[\"delete\"]()" js_delete ::
+        JSRef IDBCursor -> IO (JSRef 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
+      ((js_delete (unIDBCursor (toIDBCursor self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"source\"]" js_getSource ::
+        JSRef IDBCursor -> IO (JSRef 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
+      ((js_getSource (unIDBCursor (toIDBCursor self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"direction\"]"
+        js_getDirection :: JSRef 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 (unIDBCursor (toIDBCursor self))))
+ 
+foreign import javascript unsafe "$1[\"key\"]" js_getKey ::
+        JSRef IDBCursor -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.key Mozilla IDBCursor.key documentation> 
+getKey :: (MonadIO m, IsIDBCursor self) => self -> m (JSRef a)
+getKey self = liftIO (js_getKey (unIDBCursor (toIDBCursor self)))
+ 
+foreign import javascript unsafe "$1[\"primaryKey\"]"
+        js_getPrimaryKey :: JSRef IDBCursor -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.primaryKey Mozilla IDBCursor.primaryKey documentation> 
+getPrimaryKey ::
+              (MonadIO m, IsIDBCursor self) => self -> m (JSRef a)
+getPrimaryKey self
+  = liftIO (js_getPrimaryKey (unIDBCursor (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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef IDBCursorWithValue -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue.value Mozilla IDBCursorWithValue.value documentation> 
+getValue :: (MonadIO m) => IDBCursorWithValue -> m (JSRef a)
+getValue self = liftIO (js_getValue (unIDBCursorWithValue 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,126 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"createObjectStore\"]($2, $3)" js_createObjectStore ::
+        JSRef IDBDatabase ->
+          JSString -> JSRef Dictionary -> IO (JSRef 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
+      ((js_createObjectStore (unIDBDatabase self) (toJSString name)
+          (maybe jsNull (unDictionary . toDictionary) options))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteObjectStore\"]($2)"
+        js_deleteObjectStore :: JSRef 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 (unIDBDatabase self) (toJSString name))
+ 
+foreign import javascript unsafe "$1[\"transaction\"]($2, $3)"
+        js_transaction ::
+        JSRef IDBDatabase ->
+          JSString -> JSString -> IO (JSRef 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
+      ((js_transaction (unIDBDatabase self) (toJSString storeName)
+          (toJSString mode))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"transaction\"]($2, $3)"
+        js_transaction' ::
+        JSRef IDBDatabase ->
+          JSRef [storeNames] -> JSString -> IO (JSRef 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
+      ((toJSRef storeNames >>=
+          \ storeNames' -> js_transaction' (unIDBDatabase self) storeNames'
+          (toJSString mode))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unIDBDatabase self))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unIDBDatabase self)))
+ 
+foreign import javascript unsafe "$1[\"version\"]" js_getVersion ::
+        JSRef 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 (unIDBDatabase self)))
+ 
+foreign import javascript unsafe "$1[\"objectStoreNames\"]"
+        js_getObjectStoreNames ::
+        JSRef IDBDatabase -> IO (JSRef 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
+      ((js_getObjectStoreNames (unIDBDatabase self)) >>= fromJSRef)
+
+-- | <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,54 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"open\"]($2, $3)" js_open ::
+        JSRef IDBFactory ->
+          JSString -> Double -> IO (JSRef 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
+      ((js_open (unIDBFactory self) (toJSString name)
+          (fromIntegral version))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteDatabase\"]($2)"
+        js_deleteDatabase ::
+        JSRef IDBFactory -> JSString -> IO (JSRef 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
+      ((js_deleteDatabase (unIDBFactory self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cmp\"]($2, $3)" js_cmp ::
+        JSRef IDBFactory -> JSRef a -> JSRef a -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
+cmp :: (MonadIO m) => IDBFactory -> JSRef a -> JSRef a -> m Int
+cmp self first second
+  = liftIO (js_cmp (unIDBFactory 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,184 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+        js_openCursorRange ::
+        JSRef IDBIndex ->
+          JSRef IDBKeyRange -> JSString -> IO (JSRef 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
+      ((js_openCursorRange (unIDBIndex self)
+          (maybe jsNull pToJSRef range)
+          (toJSString direction))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+        js_openCursor ::
+        JSRef IDBIndex -> JSRef a -> JSString -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursor ::
+           (MonadIO m, ToJSString direction) =>
+             IDBIndex -> JSRef a -> direction -> m (Maybe IDBRequest)
+openCursor self key direction
+  = liftIO
+      ((js_openCursor (unIDBIndex self) key (toJSString direction)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"openKeyCursor\"]($2, $3)"
+        js_openKeyCursorRange ::
+        JSRef IDBIndex ->
+          JSRef IDBKeyRange -> JSString -> IO (JSRef 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
+      ((js_openKeyCursorRange (unIDBIndex self)
+          (maybe jsNull pToJSRef range)
+          (toJSString direction))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"openKeyCursor\"]($2, $3)"
+        js_openKeyCursor ::
+        JSRef IDBIndex -> JSRef a -> JSString -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursor ::
+              (MonadIO m, ToJSString direction) =>
+                IDBIndex -> JSRef a -> direction -> m (Maybe IDBRequest)
+openKeyCursor self key direction
+  = liftIO
+      ((js_openKeyCursor (unIDBIndex self) key (toJSString direction))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"get\"]($2)" js_getRange ::
+        JSRef IDBIndex -> JSRef IDBKeyRange -> IO (JSRef 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
+      ((js_getRange (unIDBIndex self) (maybe jsNull pToJSRef key)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"get\"]($2)" js_get ::
+        JSRef IDBIndex -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+get :: (MonadIO m) => IDBIndex -> JSRef a -> m (Maybe IDBRequest)
+get self key
+  = liftIO ((js_get (unIDBIndex self) key) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getKey\"]($2)"
+        js_getKeyRange ::
+        JSRef IDBIndex -> JSRef IDBKeyRange -> IO (JSRef 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
+      ((js_getKeyRange (unIDBIndex self) (maybe jsNull pToJSRef key)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getKey\"]($2)" js_getKey ::
+        JSRef IDBIndex -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKey ::
+       (MonadIO m) => IDBIndex -> JSRef a -> m (Maybe IDBRequest)
+getKey self key
+  = liftIO ((js_getKey (unIDBIndex self) key) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"count\"]($2)" js_countRange
+        :: JSRef IDBIndex -> JSRef IDBKeyRange -> IO (JSRef 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
+      ((js_countRange (unIDBIndex self) (maybe jsNull pToJSRef range))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"count\"]($2)" js_count ::
+        JSRef IDBIndex -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+count :: (MonadIO m) => IDBIndex -> JSRef a -> m (Maybe IDBRequest)
+count self key
+  = liftIO ((js_count (unIDBIndex self) key) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unIDBIndex self)))
+ 
+foreign import javascript unsafe "$1[\"objectStore\"]"
+        js_getObjectStore :: JSRef IDBIndex -> IO (JSRef 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 ((js_getObjectStore (unIDBIndex self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"keyPath\"]" js_getKeyPath ::
+        JSRef IDBIndex -> IO (JSRef 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 ((js_getKeyPath (unIDBIndex self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "($1[\"multiEntry\"] ? 1 : 0)"
+        js_getMultiEntry :: JSRef 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 (unIDBIndex self))
+ 
+foreign import javascript unsafe "($1[\"unique\"] ? 1 : 0)"
+        js_getUnique :: JSRef 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 (unIDBIndex 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,97 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"only\"]($2)" js_only ::
+        JSRef IDBKeyRange -> JSRef a -> IO (JSRef IDBKeyRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
+only ::
+     (MonadIO m) => IDBKeyRange -> JSRef a -> m (Maybe IDBKeyRange)
+only self value
+  = liftIO ((js_only (unIDBKeyRange self) value) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"lowerBound\"]($2, $3)"
+        js_lowerBound ::
+        JSRef IDBKeyRange -> JSRef a -> Bool -> IO (JSRef IDBKeyRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
+lowerBound ::
+           (MonadIO m) =>
+             IDBKeyRange -> JSRef a -> Bool -> m (Maybe IDBKeyRange)
+lowerBound self lower open
+  = liftIO
+      ((js_lowerBound (unIDBKeyRange self) lower open) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"upperBound\"]($2, $3)"
+        js_upperBound ::
+        JSRef IDBKeyRange -> JSRef a -> Bool -> IO (JSRef IDBKeyRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
+upperBound ::
+           (MonadIO m) =>
+             IDBKeyRange -> JSRef a -> Bool -> m (Maybe IDBKeyRange)
+upperBound self upper open
+  = liftIO
+      ((js_upperBound (unIDBKeyRange self) upper open) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"bound\"]($2, $3, $4, $5)"
+        js_bound ::
+        JSRef IDBKeyRange ->
+          JSRef a -> JSRef a -> Bool -> Bool -> IO (JSRef IDBKeyRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
+bound ::
+      (MonadIO m) =>
+        IDBKeyRange ->
+          JSRef a -> JSRef a -> Bool -> Bool -> m (Maybe IDBKeyRange)
+bound self lower upper lowerOpen upperOpen
+  = liftIO
+      ((js_bound (unIDBKeyRange self) lower upper lowerOpen upperOpen)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"lower\"]" js_getLower ::
+        JSRef IDBKeyRange -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lower Mozilla IDBKeyRange.lower documentation> 
+getLower :: (MonadIO m) => IDBKeyRange -> m (JSRef a)
+getLower self = liftIO (js_getLower (unIDBKeyRange self))
+ 
+foreign import javascript unsafe "$1[\"upper\"]" js_getUpper ::
+        JSRef IDBKeyRange -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upper Mozilla IDBKeyRange.upper documentation> 
+getUpper :: (MonadIO m) => IDBKeyRange -> m (JSRef a)
+getUpper self = liftIO (js_getUpper (unIDBKeyRange self))
+ 
+foreign import javascript unsafe "($1[\"lowerOpen\"] ? 1 : 0)"
+        js_getLowerOpen :: JSRef 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 (unIDBKeyRange self))
+ 
+foreign import javascript unsafe "($1[\"upperOpen\"] ? 1 : 0)"
+        js_getUpperOpen :: JSRef 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 (unIDBKeyRange 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,259 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"put\"]($2, $3)" js_put ::
+        JSRef IDBObjectStore -> JSRef a -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
+put ::
+    (MonadIO m) =>
+      IDBObjectStore -> JSRef a -> JSRef a -> m (Maybe IDBRequest)
+put self value key
+  = liftIO ((js_put (unIDBObjectStore self) value key) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"add\"]($2, $3)" js_add ::
+        JSRef IDBObjectStore -> JSRef a -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
+add ::
+    (MonadIO m) =>
+      IDBObjectStore -> JSRef a -> JSRef a -> m (Maybe IDBRequest)
+add self value key
+  = liftIO ((js_add (unIDBObjectStore self) value key) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"delete\"]($2)"
+        js_deleteRange ::
+        JSRef IDBObjectStore -> JSRef IDBKeyRange -> IO (JSRef 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
+      ((js_deleteRange (unIDBObjectStore self)
+          (maybe jsNull pToJSRef keyRange))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"delete\"]($2)" js_delete ::
+        JSRef IDBObjectStore -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+delete ::
+       (MonadIO m) => IDBObjectStore -> JSRef a -> m (Maybe IDBRequest)
+delete self key
+  = liftIO ((js_delete (unIDBObjectStore self) key) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"get\"]($2)" js_getRange ::
+        JSRef IDBObjectStore -> JSRef IDBKeyRange -> IO (JSRef 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
+      ((js_getRange (unIDBObjectStore self) (maybe jsNull pToJSRef key))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"get\"]($2)" js_get ::
+        JSRef IDBObjectStore -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+get ::
+    (MonadIO m) => IDBObjectStore -> JSRef a -> m (Maybe IDBRequest)
+get self key
+  = liftIO ((js_get (unIDBObjectStore self) key) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef IDBObjectStore -> IO (JSRef 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 ((js_clear (unIDBObjectStore self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+        js_openCursorRange ::
+        JSRef IDBObjectStore ->
+          JSRef IDBKeyRange -> JSString -> IO (JSRef 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
+      ((js_openCursorRange (unIDBObjectStore self)
+          (maybe jsNull pToJSRef range)
+          (toJSString direction))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"openCursor\"]($2, $3)"
+        js_openCursor ::
+        JSRef IDBObjectStore ->
+          JSRef a -> JSString -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursor ::
+           (MonadIO m, ToJSString direction) =>
+             IDBObjectStore -> JSRef a -> direction -> m (Maybe IDBRequest)
+openCursor self key direction
+  = liftIO
+      ((js_openCursor (unIDBObjectStore self) key (toJSString direction))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createIndex\"]($2, $3, $4)"
+        js_createIndex' ::
+        JSRef IDBObjectStore ->
+          JSString ->
+            JSRef [keyPath] -> JSRef Dictionary -> IO (JSRef 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
+      ((toJSRef keyPath >>=
+          \ keyPath' ->
+            js_createIndex' (unIDBObjectStore self) (toJSString name) keyPath'
+          (maybe jsNull (unDictionary . toDictionary) options))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createIndex\"]($2, $3, $4)"
+        js_createIndex ::
+        JSRef IDBObjectStore ->
+          JSString -> JSString -> JSRef Dictionary -> IO (JSRef 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
+      ((js_createIndex (unIDBObjectStore self) (toJSString name)
+          (toJSString keyPath)
+          (maybe jsNull (unDictionary . toDictionary) options))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"index\"]($2)" js_index ::
+        JSRef IDBObjectStore -> JSString -> IO (JSRef 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
+      ((js_index (unIDBObjectStore self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteIndex\"]($2)"
+        js_deleteIndex :: JSRef 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 (unIDBObjectStore self) (toJSString name))
+ 
+foreign import javascript unsafe "$1[\"count\"]($2)" js_countRange
+        ::
+        JSRef IDBObjectStore -> JSRef IDBKeyRange -> IO (JSRef 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
+      ((js_countRange (unIDBObjectStore self)
+          (maybe jsNull pToJSRef range))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"count\"]($2)" js_count ::
+        JSRef IDBObjectStore -> JSRef a -> IO (JSRef IDBRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+count ::
+      (MonadIO m) => IDBObjectStore -> JSRef a -> m (Maybe IDBRequest)
+count self key
+  = liftIO ((js_count (unIDBObjectStore self) key) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef IDBObjectStore -> IO (JSRef (Maybe 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 (unIDBObjectStore self)))
+ 
+foreign import javascript unsafe "$1[\"keyPath\"]" js_getKeyPath ::
+        JSRef IDBObjectStore -> IO (JSRef 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 ((js_getKeyPath (unIDBObjectStore self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"indexNames\"]"
+        js_getIndexNames ::
+        JSRef IDBObjectStore -> IO (JSRef 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 ((js_getIndexNames (unIDBObjectStore self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"transaction\"]"
+        js_getTransaction ::
+        JSRef IDBObjectStore -> IO (JSRef 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
+      ((js_getTransaction (unIDBObjectStore self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "($1[\"autoIncrement\"] ? 1 : 0)"
+        js_getAutoIncrement :: JSRef 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 (unIDBObjectStore 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,84 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"result\"]" js_getResult ::
+        JSRef IDBRequest -> IO (JSRef 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
+      ((js_getResult (unIDBRequest (toIDBRequest self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+        JSRef IDBRequest -> IO (JSRef 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
+      ((js_getError (unIDBRequest (toIDBRequest self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"source\"]" js_getSource ::
+        JSRef IDBRequest -> IO (JSRef 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
+      ((js_getSource (unIDBRequest (toIDBRequest self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"transaction\"]"
+        js_getTransaction :: JSRef IDBRequest -> IO (JSRef 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
+      ((js_getTransaction (unIDBRequest (toIDBRequest self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unIDBRequest (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,77 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"objectStore\"]($2)"
+        js_objectStore ::
+        JSRef IDBTransaction -> JSString -> IO (JSRef 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
+      ((js_objectStore (unIDBTransaction self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"abort\"]()" js_abort ::
+        JSRef 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 (unIDBTransaction self))
+ 
+foreign import javascript unsafe "$1[\"mode\"]" js_getMode ::
+        JSRef 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 (unIDBTransaction self)))
+ 
+foreign import javascript unsafe "$1[\"db\"]" js_getDb ::
+        JSRef IDBTransaction -> IO (JSRef 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 ((js_getDb (unIDBTransaction self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+        JSRef IDBTransaction -> IO (JSRef 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 ((js_getError (unIDBTransaction self)) >>= fromJSRef)
+
+-- | <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,41 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"oldVersion\"]"
+        js_getOldVersion :: JSRef 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 (unIDBVersionChangeEvent self)))
+ 
+foreign import javascript unsafe "$1[\"newVersion\"]"
+        js_getNewVersion ::
+        JSRef IDBVersionChangeEvent -> IO (JSRef (Maybe 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 . pFromJSRef <$>
+         (js_getNewVersion (unIDBVersionChangeEvent 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,59 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"ImageData\"]($1, $2,\n$3)" js_newImageData ::
+        JSRef Uint8ClampedArray -> Word -> Word -> IO (JSRef 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
+         (maybe jsNull (unUint8ClampedArray . toUint8ClampedArray) data')
+         sw
+         sh
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "new window[\"ImageData\"]($1, $2)" js_newImageData' ::
+        Word -> Word -> IO (JSRef 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 >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unImageData self))
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unImageData 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,333 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"loaded\"]()" js_loaded ::
+        JSRef 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 (unInspectorFrontendHost self))
+ 
+foreign import javascript unsafe "$1[\"closeWindow\"]()"
+        js_closeWindow :: JSRef 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 (unInspectorFrontendHost self))
+ 
+foreign import javascript unsafe "$1[\"bringToFront\"]()"
+        js_bringToFront :: JSRef 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 (unInspectorFrontendHost self))
+ 
+foreign import javascript unsafe "$1[\"setZoomFactor\"]($2)"
+        js_setZoomFactor :: JSRef 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 (unInspectorFrontendHost self) zoom)
+ 
+foreign import javascript unsafe "$1[\"inspectedURLChanged\"]($2)"
+        js_inspectedURLChanged ::
+        JSRef 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 (unInspectorFrontendHost self)
+         (toJSString newURL))
+ 
+foreign import javascript unsafe "$1[\"requestSetDockSide\"]($2)"
+        js_requestSetDockSide ::
+        JSRef 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 (unInspectorFrontendHost self)
+         (toJSString side))
+ 
+foreign import javascript unsafe
+        "$1[\"setAttachedWindowHeight\"]($2)" js_setAttachedWindowHeight ::
+        JSRef 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 (unInspectorFrontendHost self) height)
+ 
+foreign import javascript unsafe
+        "$1[\"setAttachedWindowWidth\"]($2)" js_setAttachedWindowWidth ::
+        JSRef 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 (unInspectorFrontendHost self) width)
+ 
+foreign import javascript unsafe "$1[\"setToolbarHeight\"]($2)"
+        js_setToolbarHeight ::
+        JSRef 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 (unInspectorFrontendHost self) height)
+ 
+foreign import javascript unsafe "$1[\"moveWindowBy\"]($2, $3)"
+        js_moveWindowBy ::
+        JSRef 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 (unInspectorFrontendHost self) x y)
+ 
+foreign import javascript unsafe "$1[\"localizedStringsURL\"]()"
+        js_localizedStringsURL ::
+        JSRef 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 (unInspectorFrontendHost self)))
+ 
+foreign import javascript unsafe "$1[\"debuggableType\"]()"
+        js_debuggableType :: JSRef 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 (unInspectorFrontendHost self)))
+ 
+foreign import javascript unsafe "$1[\"copyText\"]($2)" js_copyText
+        :: JSRef 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 (unInspectorFrontendHost self) (toJSString text))
+ 
+foreign import javascript unsafe "$1[\"openInNewTab\"]($2)"
+        js_openInNewTab :: JSRef 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 (unInspectorFrontendHost self) (toJSString url))
+ 
+foreign import javascript unsafe "($1[\"canSave\"]() ? 1 : 0)"
+        js_canSave :: JSRef 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 (unInspectorFrontendHost self))
+ 
+foreign import javascript unsafe "$1[\"save\"]($2, $3, $4, $5)"
+        js_save ::
+        JSRef 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 (unInspectorFrontendHost self) (toJSString url)
+         (toJSString content)
+         base64Encoded
+         forceSaveAs)
+ 
+foreign import javascript unsafe "$1[\"append\"]($2, $3)" js_append
+        :: JSRef 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 (unInspectorFrontendHost self) (toJSString url)
+         (toJSString content))
+ 
+foreign import javascript unsafe "$1[\"close\"]($2)" js_close ::
+        JSRef 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 (unInspectorFrontendHost self) (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"platform\"]()" js_platform
+        :: JSRef 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 (unInspectorFrontendHost self)))
+ 
+foreign import javascript unsafe "$1[\"port\"]()" js_port ::
+        JSRef 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 (unInspectorFrontendHost self)))
+ 
+foreign import javascript unsafe "$1[\"showContextMenu\"]($2, $3)"
+        js_showContextMenu ::
+        JSRef InspectorFrontendHost -> JSRef MouseEvent -> JSRef a -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.showContextMenu Mozilla InspectorFrontendHost.showContextMenu documentation> 
+showContextMenu ::
+                (MonadIO m, IsMouseEvent event) =>
+                  InspectorFrontendHost -> Maybe event -> JSRef a -> m ()
+showContextMenu self event items
+  = liftIO
+      (js_showContextMenu (unInspectorFrontendHost self)
+         (maybe jsNull (unMouseEvent . toMouseEvent) event)
+         items)
+ 
+foreign import javascript unsafe
+        "$1[\"dispatchEventAsContextMenuEvent\"]($2)"
+        js_dispatchEventAsContextMenuEvent ::
+        JSRef InspectorFrontendHost -> JSRef 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 (unInspectorFrontendHost self)
+         (maybe jsNull (unEvent . toEvent) event))
+ 
+foreign import javascript unsafe "$1[\"sendMessageToBackend\"]($2)"
+        js_sendMessageToBackend ::
+        JSRef 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 (unInspectorFrontendHost self)
+         (toJSString message))
+ 
+foreign import javascript unsafe "$1[\"unbufferedLog\"]($2)"
+        js_unbufferedLog ::
+        JSRef 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 (unInspectorFrontendHost self)
+         (toJSString message))
+ 
+foreign import javascript unsafe "($1[\"isUnderTest\"]() ? 1 : 0)"
+        js_isUnderTest :: JSRef 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 (unInspectorFrontendHost self))
+ 
+foreign import javascript unsafe "$1[\"beep\"]()" js_beep ::
+        JSRef 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 (unInspectorFrontendHost self))
+ 
+foreign import javascript unsafe
+        "($1[\"canInspectWorkers\"]() ? 1 : 0)" js_canInspectWorkers ::
+        JSRef 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 (unInspectorFrontendHost self))
+ 
+foreign import javascript unsafe "($1[\"canSaveAs\"]() ? 1 : 0)"
+        js_canSaveAs :: JSRef 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 (unInspectorFrontendHost 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,441 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"setTouchEventEmulationEnabled\"]($2)"
+        js_setTouchEventEmulationEnabled ::
+        JSRef 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 (unInternalSettings self)
+         enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setStandardFontFamily\"]($2,\n$3)" js_setStandardFontFamily
+        :: JSRef 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 (unInternalSettings self)
+         (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setSerifFontFamily\"]($2, $3)" js_setSerifFontFamily ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setSansSerifFontFamily\"]($2,\n$3)" js_setSansSerifFontFamily
+        :: JSRef 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 (unInternalSettings self)
+         (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setFixedFontFamily\"]($2, $3)" js_setFixedFontFamily ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setCursiveFontFamily\"]($2,\n$3)" js_setCursiveFontFamily ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setFantasyFontFamily\"]($2,\n$3)" js_setFantasyFontFamily ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setPictographFontFamily\"]($2,\n$3)"
+        js_setPictographFontFamily ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString family')
+         (toJSString script))
+ 
+foreign import javascript unsafe
+        "$1[\"setFontFallbackPrefersPictographs\"]($2)"
+        js_setFontFallbackPrefersPictographs ::
+        JSRef 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 (unInternalSettings self)
+         preferPictographs)
+ 
+foreign import javascript unsafe
+        "$1[\"setTextAutosizingEnabled\"]($2)" js_setTextAutosizingEnabled
+        :: JSRef 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 (unInternalSettings self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setTextAutosizingWindowSizeOverride\"]($2,\n$3)"
+        js_setTextAutosizingWindowSizeOverride ::
+        JSRef 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 (unInternalSettings self)
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"setTextAutosizingFontScaleFactor\"]($2)"
+        js_setTextAutosizingFontScaleFactor ::
+        JSRef 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 (unInternalSettings self)
+         fontScaleFactor)
+ 
+foreign import javascript unsafe "$1[\"setCSSShapesEnabled\"]($2)"
+        js_setCSSShapesEnabled :: JSRef 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 (unInternalSettings self) enabled)
+ 
+foreign import javascript unsafe "$1[\"setCanStartMedia\"]($2)"
+        js_setCanStartMedia :: JSRef 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 (unInternalSettings self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setShouldDisplayTrackKind\"]($2,\n$3)"
+        js_setShouldDisplayTrackKind ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString kind)
+         enabled)
+ 
+foreign import javascript unsafe
+        "($1[\"shouldDisplayTrackKind\"]($2) ? 1 : 0)"
+        js_shouldDisplayTrackKind ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString trackKind))
+ 
+foreign import javascript unsafe
+        "$1[\"setDefaultVideoPosterURL\"]($2)" js_setDefaultVideoPosterURL
+        :: JSRef 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 (unInternalSettings self)
+         (toJSString poster))
+ 
+foreign import javascript unsafe
+        "$1[\"setTimeWithoutMouseMovementBeforeHidingControls\"]($2)"
+        js_setTimeWithoutMouseMovementBeforeHidingControls ::
+        JSRef 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
+         (unInternalSettings self)
+         time)
+ 
+foreign import javascript unsafe "$1[\"setMediaTypeOverride\"]($2)"
+        js_setMediaTypeOverride ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString mediaTypeOverride))
+ 
+foreign import javascript unsafe
+        "$1[\"setPluginReplacementEnabled\"]($2)"
+        js_setPluginReplacementEnabled ::
+        JSRef 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 (unInternalSettings self) enabled)
+ 
+foreign import javascript unsafe "$1[\"setEditingBehavior\"]($2)"
+        js_setEditingBehavior ::
+        JSRef 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 (unInternalSettings self)
+         (toJSString behavior))
+ 
+foreign import javascript unsafe
+        "$1[\"setShouldConvertPositionStyleOnCopy\"]($2)"
+        js_setShouldConvertPositionStyleOnCopy ::
+        JSRef 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 (unInternalSettings self)
+         convert)
+ 
+foreign import javascript unsafe
+        "$1[\"setLangAttributeAwareFormControlUIEnabled\"]($2)"
+        js_setLangAttributeAwareFormControlUIEnabled ::
+        JSRef 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
+         (unInternalSettings self)
+         enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setStorageBlockingPolicy\"]($2)" js_setStorageBlockingPolicy
+        :: JSRef 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 (unInternalSettings self)
+         (toJSString policy))
+ 
+foreign import javascript unsafe "$1[\"setImagesEnabled\"]($2)"
+        js_setImagesEnabled :: JSRef 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 (unInternalSettings self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setUseLegacyBackgroundSizeShorthandBehavior\"]($2)"
+        js_setUseLegacyBackgroundSizeShorthandBehavior ::
+        JSRef 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
+         (unInternalSettings self)
+         enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutoscrollForDragAndDropEnabled\"]($2)"
+        js_setAutoscrollForDragAndDropEnabled ::
+        JSRef 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 (unInternalSettings self)
+         enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setBackgroundShouldExtendBeyondPage\"]($2)"
+        js_setBackgroundShouldExtendBeyondPage ::
+        JSRef 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 (unInternalSettings self)
+         hasExtendedBackground)
+ 
+foreign import javascript unsafe
+        "$1[\"setScrollingTreeIncludesFrames\"]($2)"
+        js_setScrollingTreeIncludesFrames ::
+        JSRef 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 (unInternalSettings self)
+         enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setMinimumTimerInterval\"]($2)" js_setMinimumTimerInterval ::
+        JSRef 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 (unInternalSettings 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,2268 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"address\"]($2)" js_address
+        :: JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unNode . toNode) node)))
+ 
+foreign import javascript unsafe
+        "($1[\"nodeNeedsStyleRecalc\"]($2) ? 1 : 0)"
+        js_nodeNeedsStyleRecalc :: JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unNode . toNode) node))
+ 
+foreign import javascript unsafe "$1[\"description\"]($2)"
+        js_description :: JSRef Internals -> JSRef a -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.description Mozilla Internals.description documentation> 
+description ::
+            (MonadIO m, FromJSString result) =>
+              Internals -> JSRef a -> m result
+description self value
+  = liftIO
+      (fromJSString <$> (js_description (unInternals self) value))
+ 
+foreign import javascript unsafe
+        "($1[\"hasPausedImageAnimations\"]($2) ? 1 : 0)"
+        js_hasPausedImageAnimations ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "$1[\"elementRenderTreeAsText\"]($2)" js_elementRenderTreeAsText ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unElement . toElement) element)))
+ 
+foreign import javascript unsafe
+        "($1[\"isPreloaded\"]($2) ? 1 : 0)" js_isPreloaded ::
+        JSRef 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 (unInternals self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"isLoadingFromMemoryCache\"]($2) ? 1 : 0)"
+        js_isLoadingFromMemoryCache ::
+        JSRef 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 (unInternals self) (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"xhrResponseSource\"]($2)"
+        js_xhrResponseSource ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull pToJSRef xhr)))
+ 
+foreign import javascript unsafe "$1[\"clearMemoryCache\"]()"
+        js_clearMemoryCache :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"pruneMemoryCacheToSize\"]($2)" js_pruneMemoryCacheToSize ::
+        JSRef 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 (unInternals self) size)
+ 
+foreign import javascript unsafe "$1[\"memoryCacheSize\"]()"
+        js_memoryCacheSize :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"clearPageCache\"]()"
+        js_clearPageCache :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"pageCacheSize\"]()"
+        js_pageCacheSize :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"computedStyleIncludingVisitedInfo\"]($2)"
+        js_computedStyleIncludingVisitedInfo ::
+        JSRef Internals -> JSRef Node -> IO (JSRef 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
+      ((js_computedStyleIncludingVisitedInfo (unInternals self)
+          (maybe jsNull (unNode . toNode) node))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"ensureShadowRoot\"]($2)"
+        js_ensureShadowRoot ::
+        JSRef Internals -> JSRef Element -> IO (JSRef 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
+      ((js_ensureShadowRoot (unInternals self)
+          (maybe jsNull (unElement . toElement) host))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createShadowRoot\"]($2)"
+        js_createShadowRoot ::
+        JSRef Internals -> JSRef Element -> IO (JSRef 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
+      ((js_createShadowRoot (unInternals self)
+          (maybe jsNull (unElement . toElement) host))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"shadowRoot\"]($2)"
+        js_shadowRoot ::
+        JSRef Internals -> JSRef Element -> IO (JSRef 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
+      ((js_shadowRoot (unInternals self)
+          (maybe jsNull (unElement . toElement) host))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"shadowRootType\"]($2)"
+        js_shadowRootType :: JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unNode . toNode) root)))
+ 
+foreign import javascript unsafe "$1[\"includerFor\"]($2)"
+        js_includerFor ::
+        JSRef Internals -> JSRef Node -> IO (JSRef 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
+      ((js_includerFor (unInternals self)
+          (maybe jsNull (unNode . toNode) node))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"shadowPseudoId\"]($2)"
+        js_shadowPseudoId ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unElement . toElement) element)))
+ 
+foreign import javascript unsafe
+        "$1[\"setShadowPseudoId\"]($2, $3)" js_setShadowPseudoId ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element)
+         (toJSString id))
+ 
+foreign import javascript unsafe "$1[\"treeScopeRootNode\"]($2)"
+        js_treeScopeRootNode ::
+        JSRef Internals -> JSRef Node -> IO (JSRef 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
+      ((js_treeScopeRootNode (unInternals self)
+          (maybe jsNull (unNode . toNode) node))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"parentTreeScope\"]($2)"
+        js_parentTreeScope ::
+        JSRef Internals -> JSRef Node -> IO (JSRef 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
+      ((js_parentTreeScope (unInternals self)
+          (maybe jsNull (unNode . toNode) node))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"lastSpatialNavigationCandidateCount\"]()"
+        js_lastSpatialNavigationCandidateCount ::
+        JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"numberOfActiveAnimations\"]()" js_numberOfActiveAnimations ::
+        JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"suspendAnimations\"]()"
+        js_suspendAnimations :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"resumeAnimations\"]()"
+        js_resumeAnimations :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "($1[\"animationsAreSuspended\"]() ? 1 : 0)"
+        js_animationsAreSuspended :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "($1[\"pauseAnimationAtTimeOnElement\"]($2,\n$3, $4) ? 1 : 0)"
+        js_pauseAnimationAtTimeOnElement ::
+        JSRef Internals -> JSString -> Double -> JSRef 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 (unInternals self)
+         (toJSString animationName)
+         pauseTime
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "($1[\"pauseAnimationAtTimeOnPseudoElement\"]($2,\n$3, $4, $5) ? 1 : 0)"
+        js_pauseAnimationAtTimeOnPseudoElement ::
+        JSRef Internals ->
+          JSString -> Double -> JSRef 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 (unInternals self)
+         (toJSString animationName)
+         pauseTime
+         (maybe jsNull (unElement . toElement) element)
+         (toJSString pseudoId))
+ 
+foreign import javascript unsafe
+        "($1[\"pauseTransitionAtTimeOnElement\"]($2,\n$3, $4) ? 1 : 0)"
+        js_pauseTransitionAtTimeOnElement ::
+        JSRef Internals -> JSString -> Double -> JSRef 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 (unInternals self)
+         (toJSString propertyName)
+         pauseTime
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "($1[\"pauseTransitionAtTimeOnPseudoElement\"]($2,\n$3, $4, $5) ? 1 : 0)"
+        js_pauseTransitionAtTimeOnPseudoElement ::
+        JSRef Internals ->
+          JSString -> Double -> JSRef 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 (unInternals self)
+         (toJSString property)
+         pauseTime
+         (maybe jsNull (unElement . toElement) element)
+         (toJSString pseudoId))
+ 
+foreign import javascript unsafe "($1[\"attached\"]($2) ? 1 : 0)"
+        js_attached :: JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unNode . toNode) node))
+ 
+foreign import javascript unsafe "$1[\"visiblePlaceholder\"]($2)"
+        js_visiblePlaceholder ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unElement . toElement) element)))
+ 
+foreign import javascript unsafe
+        "$1[\"selectColorInColorChooser\"]($2,\n$3)"
+        js_selectColorInColorChooser ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element)
+         (toJSString colorValue))
+ 
+foreign import javascript unsafe
+        "$1[\"formControlStateOfPreviousHistoryItem\"]()"
+        js_formControlStateOfPreviousHistoryItem ::
+        JSRef Internals -> IO (JSRef [result])
+
+-- | <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 (unInternals self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"setFormControlStateOfPreviousHistoryItem\"]($2)"
+        js_setFormControlStateOfPreviousHistoryItem ::
+        JSRef Internals -> JSRef [values] -> 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
+      (toJSRef values >>=
+         \ values' ->
+           js_setFormControlStateOfPreviousHistoryItem (unInternals self)
+             values')
+ 
+foreign import javascript unsafe "$1[\"absoluteCaretBounds\"]()"
+        js_absoluteCaretBounds :: JSRef Internals -> IO (JSRef 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
+      ((js_absoluteCaretBounds (unInternals self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"boundingBox\"]($2)"
+        js_boundingBox ::
+        JSRef Internals -> JSRef Element -> IO (JSRef 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
+      ((js_boundingBox (unInternals self)
+          (maybe jsNull (unElement . toElement) element))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"inspectorHighlightRects\"]()" js_inspectorHighlightRects ::
+        JSRef Internals -> IO (JSRef 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
+      ((js_inspectorHighlightRects (unInternals self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"inspectorHighlightObject\"]()" js_inspectorHighlightObject ::
+        JSRef 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 (unInternals self)))
+ 
+foreign import javascript unsafe
+        "$1[\"markerCountForNode\"]($2, $3)" js_markerCountForNode ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unNode . toNode) node)
+         (toJSString markerType))
+ 
+foreign import javascript unsafe
+        "$1[\"markerRangeForNode\"]($2, $3,\n$4)" js_markerRangeForNode ::
+        JSRef Internals ->
+          JSRef Node -> JSString -> Word -> IO (JSRef 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
+      ((js_markerRangeForNode (unInternals self)
+          (maybe jsNull (unNode . toNode) node)
+          (toJSString markerType)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"markerDescriptionForNode\"]($2,\n$3, $4)"
+        js_markerDescriptionForNode ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unNode . toNode) node)
+            (toJSString markerType)
+            index))
+ 
+foreign import javascript unsafe
+        "$1[\"addTextMatchMarker\"]($2, $3)" js_addTextMatchMarker ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull pToJSRef range)
+         isActive)
+ 
+foreign import javascript unsafe
+        "$1[\"setMarkedTextMatchesAreHighlighted\"]($2)"
+        js_setMarkedTextMatchesAreHighlighted ::
+        JSRef 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 (unInternals self) flag)
+ 
+foreign import javascript unsafe "$1[\"invalidateFontCache\"]()"
+        js_invalidateFontCache :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"setScrollViewPosition\"]($2,\n$3)" js_setScrollViewPosition
+        :: JSRef 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 (unInternals self) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"setPagination\"]($2, $3, $4)" js_setPagination ::
+        JSRef 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 (unInternals self) (toJSString mode) gap
+         pageLength)
+ 
+foreign import javascript unsafe
+        "$1[\"configurationForViewport\"]($2,\n$3, $4, $5, $6)"
+        js_configurationForViewport ::
+        JSRef 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 (unInternals self) devicePixelRatio
+            deviceWidth
+            deviceHeight
+            availableWidth
+            availableHeight))
+ 
+foreign import javascript unsafe
+        "($1[\"wasLastChangeUserEdit\"]($2) ? 1 : 0)"
+        js_wasLastChangeUserEdit ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) textField))
+ 
+foreign import javascript unsafe
+        "($1[\"elementShouldAutoComplete\"]($2) ? 1 : 0)"
+        js_elementShouldAutoComplete ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) inputElement))
+ 
+foreign import javascript unsafe "$1[\"setEditingValue\"]($2, $3)"
+        js_setEditingValue ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) inputElement)
+         (toJSString value))
+ 
+foreign import javascript unsafe "$1[\"setAutofilled\"]($2, $3)"
+        js_setAutofilled ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) inputElement)
+         enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"countMatchesForText\"]($2,\n$3, $4)" js_countMatchesForText
+        :: JSRef 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 (unInternals self) (toJSString text)
+         findOptions
+         (toJSString markMatches))
+ 
+foreign import javascript unsafe "$1[\"paintControlTints\"]()"
+        js_paintControlTints :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"scrollElementToRect\"]($2,\n$3, $4, $5, $6)"
+        js_scrollElementToRect ::
+        JSRef Internals ->
+          JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element)
+         x
+         y
+         w
+         h)
+ 
+foreign import javascript unsafe
+        "$1[\"rangeFromLocationAndLength\"]($2,\n$3, $4)"
+        js_rangeFromLocationAndLength ::
+        JSRef Internals -> JSRef Element -> Int -> Int -> IO (JSRef 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
+      ((js_rangeFromLocationAndLength (unInternals self)
+          (maybe jsNull (unElement . toElement) scope)
+          rangeLocation
+          rangeLength)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"locationFromRange\"]($2, $3)" js_locationFromRange ::
+        JSRef Internals -> JSRef Element -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) scope)
+         (maybe jsNull pToJSRef range))
+ 
+foreign import javascript unsafe "$1[\"lengthFromRange\"]($2, $3)"
+        js_lengthFromRange ::
+        JSRef Internals -> JSRef Element -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) scope)
+         (maybe jsNull pToJSRef range))
+ 
+foreign import javascript unsafe "$1[\"rangeAsText\"]($2)"
+        js_rangeAsText :: JSRef Internals -> JSRef 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 (unInternals self) (maybe jsNull pToJSRef range)))
+ 
+foreign import javascript unsafe "$1[\"subrange\"]($2, $3, $4)"
+        js_subrange ::
+        JSRef Internals -> JSRef Range -> Int -> Int -> IO (JSRef 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
+      ((js_subrange (unInternals self) (maybe jsNull pToJSRef range)
+          rangeLocation
+          rangeLength)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"rangeForDictionaryLookupAtLocation\"]($2,\n$3)"
+        js_rangeForDictionaryLookupAtLocation ::
+        JSRef Internals -> Int -> Int -> IO (JSRef 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
+      ((js_rangeForDictionaryLookupAtLocation (unInternals self) x y) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"setDelegatesScrolling\"]($2)" js_setDelegatesScrolling ::
+        JSRef 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 (unInternals self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"lastSpellCheckRequestSequence\"]()"
+        js_lastSpellCheckRequestSequence :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"lastSpellCheckProcessedSequence\"]()"
+        js_lastSpellCheckProcessedSequence :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"userPreferredLanguages\"]()"
+        js_userPreferredLanguages :: JSRef Internals -> IO (JSRef [result])
+
+-- | <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 (unInternals self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"setUserPreferredLanguages\"]($2)"
+        js_setUserPreferredLanguages ::
+        JSRef Internals -> JSRef [languages] -> 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
+      (toJSRef languages >>=
+         \ languages' ->
+           js_setUserPreferredLanguages (unInternals self) languages')
+ 
+foreign import javascript unsafe "$1[\"wheelEventHandlerCount\"]()"
+        js_wheelEventHandlerCount :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"touchEventHandlerCount\"]()"
+        js_touchEventHandlerCount :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"nodesFromRect\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11)"
+        js_nodesFromRect ::
+        JSRef Internals ->
+          JSRef Document ->
+            Int ->
+              Int ->
+                Word ->
+                  Word -> Word -> Word -> Bool -> Bool -> Bool -> IO (JSRef 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
+      ((js_nodesFromRect (unInternals self)
+          (maybe jsNull (unDocument . toDocument) document)
+          x
+          y
+          topPadding
+          rightPadding
+          bottomPadding
+          leftPadding
+          ignoreClipping
+          allowShadowContent
+          allowChildFrameContent)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"parserMetaData\"]($2)"
+        js_parserMetaData :: JSRef Internals -> JSRef a -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.parserMetaData Mozilla Internals.parserMetaData documentation> 
+parserMetaData ::
+               (MonadIO m, FromJSString result) =>
+                 Internals -> JSRef a -> m result
+parserMetaData self func
+  = liftIO
+      (fromJSString <$> (js_parserMetaData (unInternals self) func))
+ 
+foreign import javascript unsafe
+        "$1[\"updateEditorUINowIfScheduled\"]()"
+        js_updateEditorUINowIfScheduled :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "($1[\"hasSpellingMarker\"]($2,\n$3) ? 1 : 0)" js_hasSpellingMarker
+        :: JSRef 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 (unInternals self) from length)
+ 
+foreign import javascript unsafe
+        "($1[\"hasGrammarMarker\"]($2,\n$3) ? 1 : 0)" js_hasGrammarMarker
+        :: JSRef 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 (unInternals self) from length)
+ 
+foreign import javascript unsafe
+        "($1[\"hasAutocorrectedMarker\"]($2,\n$3) ? 1 : 0)"
+        js_hasAutocorrectedMarker ::
+        JSRef 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 (unInternals self) from length)
+ 
+foreign import javascript unsafe
+        "$1[\"setContinuousSpellCheckingEnabled\"]($2)"
+        js_setContinuousSpellCheckingEnabled ::
+        JSRef 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 (unInternals self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticQuoteSubstitutionEnabled\"]($2)"
+        js_setAutomaticQuoteSubstitutionEnabled ::
+        JSRef 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 (unInternals self)
+         enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticLinkDetectionEnabled\"]($2)"
+        js_setAutomaticLinkDetectionEnabled ::
+        JSRef 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 (unInternals self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticDashSubstitutionEnabled\"]($2)"
+        js_setAutomaticDashSubstitutionEnabled ::
+        JSRef 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 (unInternals self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticTextReplacementEnabled\"]($2)"
+        js_setAutomaticTextReplacementEnabled ::
+        JSRef 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 (unInternals self) enabled)
+ 
+foreign import javascript unsafe
+        "$1[\"setAutomaticSpellingCorrectionEnabled\"]($2)"
+        js_setAutomaticSpellingCorrectionEnabled ::
+        JSRef 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 (unInternals self)
+         enabled)
+ 
+foreign import javascript unsafe
+        "($1[\"isOverwriteModeEnabled\"]() ? 1 : 0)"
+        js_isOverwriteModeEnabled :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"toggleOverwriteModeEnabled\"]()"
+        js_toggleOverwriteModeEnabled :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"numberOfScrollableAreas\"]()" js_numberOfScrollableAreas ::
+        JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "($1[\"isPageBoxVisible\"]($2) ? 1 : 0)" js_isPageBoxVisible ::
+        JSRef 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 (unInternals self) pageNumber)
+ 
+foreign import javascript unsafe "$1[\"layerTreeAsText\"]($2, $3)"
+        js_layerTreeAsText ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unDocument . toDocument) document)
+            flags))
+ 
+foreign import javascript unsafe
+        "$1[\"scrollingStateTreeAsText\"]()" js_scrollingStateTreeAsText ::
+        JSRef 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 (unInternals self)))
+ 
+foreign import javascript unsafe
+        "$1[\"mainThreadScrollingReasons\"]()"
+        js_mainThreadScrollingReasons :: JSRef 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 (unInternals self)))
+ 
+foreign import javascript unsafe "$1[\"nonFastScrollableRects\"]()"
+        js_nonFastScrollableRects ::
+        JSRef Internals -> IO (JSRef 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
+      ((js_nonFastScrollableRects (unInternals self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"repaintRectsAsText\"]()"
+        js_repaintRectsAsText :: JSRef 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 (unInternals self)))
+ 
+foreign import javascript unsafe
+        "$1[\"garbageCollectDocumentResources\"]()"
+        js_garbageCollectDocumentResources :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"allowRoundingHacks\"]()"
+        js_allowRoundingHacks :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"insertAuthorCSS\"]($2)"
+        js_insertAuthorCSS :: JSRef 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 (unInternals self) (toJSString css))
+ 
+foreign import javascript unsafe "$1[\"insertUserCSS\"]($2)"
+        js_insertUserCSS :: JSRef 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 (unInternals self) (toJSString css))
+ 
+foreign import javascript unsafe
+        "$1[\"setBatteryStatus\"]($2, $3,\n$4, $5, $6)" js_setBatteryStatus
+        ::
+        JSRef 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 (unInternals self) (toJSString eventType)
+         charging
+         chargingTime
+         dischargingTime
+         level)
+ 
+foreign import javascript unsafe
+        "$1[\"setDeviceProximity\"]($2, $3,\n$4, $5)" js_setDeviceProximity
+        ::
+        JSRef 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 (unInternals self) (toJSString eventType)
+         value
+         min
+         max)
+ 
+foreign import javascript unsafe "$1[\"numberOfLiveNodes\"]()"
+        js_numberOfLiveNodes :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"numberOfLiveDocuments\"]()"
+        js_numberOfLiveDocuments :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"consoleMessageArgumentCounts\"]()"
+        js_consoleMessageArgumentCounts ::
+        JSRef Internals -> IO (JSRef [result])
+
+-- | <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 (unInternals self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"openDummyInspectorFrontend\"]($2)"
+        js_openDummyInspectorFrontend ::
+        JSRef Internals -> JSString -> IO (JSRef 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
+      ((js_openDummyInspectorFrontend (unInternals self)
+          (toJSString url))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"closeDummyInspectorFrontend\"]()"
+        js_closeDummyInspectorFrontend :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"setJavaScriptProfilingEnabled\"]($2)"
+        js_setJavaScriptProfilingEnabled ::
+        JSRef 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 (unInternals self) creates)
+ 
+foreign import javascript unsafe
+        "$1[\"setInspectorIsUnderTest\"]($2)" js_setInspectorIsUnderTest ::
+        JSRef 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 (unInternals self) isUnderTest)
+ 
+foreign import javascript unsafe "$1[\"counterValue\"]($2)"
+        js_counterValue :: JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unElement . toElement) element)))
+ 
+foreign import javascript unsafe "$1[\"pageNumber\"]($2, $3, $4)"
+        js_pageNumber ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element)
+         pageWidth
+         pageHeight)
+ 
+foreign import javascript unsafe "$1[\"shortcutIconURLs\"]()"
+        js_shortcutIconURLs :: JSRef Internals -> IO (JSRef [result])
+
+-- | <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 (unInternals self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"allIconURLs\"]()"
+        js_allIconURLs :: JSRef Internals -> IO (JSRef [result])
+
+-- | <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 (unInternals self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"numberOfPages\"]($2, $3)"
+        js_numberOfPages :: JSRef 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 (unInternals self) pageWidthInPixels
+         pageHeightInPixels)
+ 
+foreign import javascript unsafe "$1[\"pageProperty\"]($2, $3)"
+        js_pageProperty ::
+        JSRef 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 (unInternals self) (toJSString propertyName)
+            pageNumber))
+ 
+foreign import javascript unsafe
+        "$1[\"pageSizeAndMarginsInPixels\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_pageSizeAndMarginsInPixels ::
+        JSRef 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 (unInternals self) pageIndex width
+            height
+            marginTop
+            marginRight
+            marginBottom
+            marginLeft))
+ 
+foreign import javascript unsafe
+        "$1[\"setPageScaleFactor\"]($2, $3,\n$4)" js_setPageScaleFactor ::
+        JSRef 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 (unInternals self) scaleFactor x y)
+ 
+foreign import javascript unsafe "$1[\"setPageZoomFactor\"]($2)"
+        js_setPageZoomFactor :: JSRef 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 (unInternals self) zoomFactor)
+ 
+foreign import javascript unsafe "$1[\"setHeaderHeight\"]($2)"
+        js_setHeaderHeight :: JSRef 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 (unInternals self) height)
+ 
+foreign import javascript unsafe "$1[\"setFooterHeight\"]($2)"
+        js_setFooterHeight :: JSRef 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 (unInternals self) height)
+ 
+foreign import javascript unsafe "$1[\"setTopContentInset\"]($2)"
+        js_setTopContentInset :: JSRef 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 (unInternals self) contentInset)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitWillEnterFullScreenForElement\"]($2)"
+        js_webkitWillEnterFullScreenForElement ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitDidEnterFullScreenForElement\"]($2)"
+        js_webkitDidEnterFullScreenForElement ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitWillExitFullScreenForElement\"]($2)"
+        js_webkitWillExitFullScreenForElement ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitDidExitFullScreenForElement\"]($2)"
+        js_webkitDidExitFullScreenForElement ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "$1[\"setApplicationCacheOriginQuota\"]($2)"
+        js_setApplicationCacheOriginQuota ::
+        JSRef 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 (unInternals self)
+         (fromIntegral quota))
+ 
+foreign import javascript unsafe
+        "$1[\"registerURLSchemeAsBypassingContentSecurityPolicy\"]($2)"
+        js_registerURLSchemeAsBypassingContentSecurityPolicy ::
+        JSRef 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
+         (unInternals self)
+         (toJSString scheme))
+ 
+foreign import javascript unsafe
+        "$1[\"removeURLSchemeRegisteredAsBypassingContentSecurityPolicy\"]($2)"
+        js_removeURLSchemeRegisteredAsBypassingContentSecurityPolicy ::
+        JSRef 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
+         (unInternals self)
+         (toJSString scheme))
+ 
+foreign import javascript unsafe "$1[\"mallocStatistics\"]()"
+        js_mallocStatistics ::
+        JSRef Internals -> IO (JSRef 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 ((js_mallocStatistics (unInternals self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"typeConversions\"]()"
+        js_typeConversions :: JSRef Internals -> IO (JSRef 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 ((js_typeConversions (unInternals self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"memoryInfo\"]()"
+        js_memoryInfo :: JSRef Internals -> IO (JSRef 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 ((js_memoryInfo (unInternals self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getReferencedFilePaths\"]()"
+        js_getReferencedFilePaths :: JSRef Internals -> IO (JSRef [result])
+
+-- | <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 (unInternals self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"startTrackingRepaints\"]()"
+        js_startTrackingRepaints :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"stopTrackingRepaints\"]()"
+        js_stopTrackingRepaints :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "($1[\"isTimerThrottled\"]($2) ? 1 : 0)" js_isTimerThrottled ::
+        JSRef 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 (unInternals self) timerHandle)
+ 
+foreign import javascript unsafe
+        "$1[\"updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks\"]($2)"
+        js_updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks ::
+        JSRef Internals -> JSRef 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
+         (unInternals self)
+         (maybe jsNull (unNode . toNode) node))
+ 
+foreign import javascript unsafe "$1[\"getCurrentCursorInfo\"]()"
+        js_getCurrentCursorInfo :: JSRef 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 (unInternals self)))
+ 
+foreign import javascript unsafe
+        "$1[\"markerTextForListItem\"]($2)" js_markerTextForListItem ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unElement . toElement) element)))
+ 
+foreign import javascript unsafe "$1[\"toolTipFromElement\"]($2)"
+        js_toolTipFromElement ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unElement . toElement) element)))
+ 
+foreign import javascript unsafe "$1[\"deserializeBuffer\"]($2)"
+        js_deserializeBuffer ::
+        JSRef Internals ->
+          JSRef ArrayBuffer -> IO (JSRef 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
+      ((js_deserializeBuffer (unInternals self)
+          (maybe jsNull (unArrayBuffer . toArrayBuffer) buffer))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"serializeObject\"]($2)"
+        js_serializeObject ::
+        JSRef Internals ->
+          JSRef SerializedScriptValue -> IO (JSRef 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
+      ((js_serializeObject (unInternals self)
+          (maybe jsNull (unSerializedScriptValue . toSerializedScriptValue)
+             obj))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"setUsesOverlayScrollbars\"]($2)" js_setUsesOverlayScrollbars
+        :: JSRef 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 (unInternals self) enabled)
+ 
+foreign import javascript unsafe "$1[\"forceReload\"]($2)"
+        js_forceReload :: JSRef 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 (unInternals self) endToEnd)
+ 
+foreign import javascript unsafe
+        "$1[\"simulateAudioInterruption\"]($2)"
+        js_simulateAudioInterruption ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unNode . toNode) node))
+ 
+foreign import javascript unsafe
+        "($1[\"mediaElementHasCharacteristic\"]($2,\n$3) ? 1 : 0)"
+        js_mediaElementHasCharacteristic ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unNode . toNode) node)
+         (toJSString characteristic))
+ 
+foreign import javascript unsafe "$1[\"initializeMockCDM\"]()"
+        js_initializeMockCDM :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"enableMockSpeechSynthesizer\"]()"
+        js_enableMockSpeechSynthesizer :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"getImageSourceURL\"]($2)"
+        js_getImageSourceURL ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+            (maybe jsNull (unElement . toElement) element)))
+ 
+foreign import javascript unsafe
+        "$1[\"captionsStyleSheetOverride\"]()"
+        js_captionsStyleSheetOverride :: JSRef 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 (unInternals self)))
+ 
+foreign import javascript unsafe
+        "$1[\"setCaptionsStyleSheetOverride\"]($2)"
+        js_setCaptionsStyleSheetOverride ::
+        JSRef 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 (unInternals self)
+         (toJSString override))
+ 
+foreign import javascript unsafe
+        "$1[\"setPrimaryAudioTrackLanguageOverride\"]($2)"
+        js_setPrimaryAudioTrackLanguageOverride ::
+        JSRef 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 (unInternals self)
+         (toJSString language))
+ 
+foreign import javascript unsafe
+        "$1[\"setCaptionDisplayMode\"]($2)" js_setCaptionDisplayMode ::
+        JSRef 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 (unInternals self) (toJSString mode))
+ 
+foreign import javascript unsafe "$1[\"createTimeRanges\"]($2, $3)"
+        js_createTimeRanges ::
+        JSRef Internals ->
+          JSRef Float32Array -> JSRef Float32Array -> IO (JSRef 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
+      ((js_createTimeRanges (unInternals self)
+          (maybe jsNull (unFloat32Array . toFloat32Array) startTimes)
+          (maybe jsNull (unFloat32Array . toFloat32Array) endTimes))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"closestTimeToTimeRanges\"]($2,\n$3)"
+        js_closestTimeToTimeRanges ::
+        JSRef Internals -> Double -> JSRef 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 (unInternals self) time
+         (maybe jsNull pToJSRef ranges))
+ 
+foreign import javascript unsafe
+        "($1[\"isSelectPopupVisible\"]($2) ? 1 : 0)"
+        js_isSelectPopupVisible :: JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unNode . toNode) node))
+ 
+foreign import javascript unsafe "($1[\"isVibrating\"]() ? 1 : 0)"
+        js_isVibrating :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "($1[\"isPluginUnavailabilityIndicatorObscured\"]($2) ? 1 : 0)"
+        js_isPluginUnavailabilityIndicatorObscured ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "($1[\"isPluginSnapshotted\"]($2) ? 1 : 0)" js_isPluginSnapshotted
+        :: JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe "$1[\"selectionBounds\"]()"
+        js_selectionBounds :: JSRef Internals -> IO (JSRef 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 ((js_selectionBounds (unInternals self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"initializeMockMediaSource\"]()" js_initializeMockMediaSource
+        :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"bufferedSamplesForTrackID\"]($2,\n$3)"
+        js_bufferedSamplesForTrackID ::
+        JSRef Internals ->
+          JSRef SourceBuffer -> JSString -> IO (JSRef [result])
+
+-- | <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 (unInternals self)
+          (maybe jsNull pToJSRef buffer)
+          (toJSString trackID))
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"beginMediaSessionInterruption\"]()"
+        js_beginMediaSessionInterruption :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"endMediaSessionInterruption\"]($2)"
+        js_endMediaSessionInterruption ::
+        JSRef 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 (unInternals self)
+         (toJSString flags))
+ 
+foreign import javascript unsafe
+        "$1[\"applicationWillEnterForeground\"]()"
+        js_applicationWillEnterForeground :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"applicationWillEnterBackground\"]()"
+        js_applicationWillEnterBackground :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "$1[\"setMediaSessionRestrictions\"]($2,\n$3)"
+        js_setMediaSessionRestrictions ::
+        JSRef 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 (unInternals self)
+         (toJSString mediaType)
+         (toJSString restrictions))
+ 
+foreign import javascript unsafe
+        "$1[\"postRemoteControlCommand\"]($2)" js_postRemoteControlCommand
+        :: JSRef 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 (unInternals self)
+         (toJSString command))
+ 
+foreign import javascript unsafe "$1[\"simulateSystemSleep\"]()"
+        js_simulateSystemSleep :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"simulateSystemWake\"]()"
+        js_simulateSystemWake :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe
+        "($1[\"elementIsBlockingDisplaySleep\"]($2) ? 1 : 0)"
+        js_elementIsBlockingDisplaySleep ::
+        JSRef Internals -> JSRef 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 (unInternals self)
+         (maybe jsNull (unElement . toElement) element))
+ 
+foreign import javascript unsafe
+        "$1[\"installMockPageOverlay\"]($2)" js_installMockPageOverlay ::
+        JSRef Internals -> JSRef PageOverlayType -> 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 (unInternals self) (pToJSRef type'))
+ 
+foreign import javascript unsafe
+        "$1[\"pageOverlayLayerTreeAsText\"]()"
+        js_pageOverlayLayerTreeAsText :: JSRef 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 (unInternals self)))
+ 
+foreign import javascript unsafe "$1[\"setPageMuted\"]($2)"
+        js_setPageMuted :: JSRef 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 (unInternals self) muted)
+ 
+foreign import javascript unsafe
+        "($1[\"isPagePlayingAudio\"]() ? 1 : 0)" js_isPagePlayingAudio ::
+        JSRef 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 (unInternals 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
+        :: JSRef Internals -> IO (JSRef 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 ((js_getSettings (unInternals self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"workerThreadCount\"]"
+        js_getWorkerThreadCount :: JSRef 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 (unInternals self))
+ 
+foreign import javascript unsafe "$1[\"consoleProfiles\"]"
+        js_getConsoleProfiles ::
+        JSRef Internals -> IO (JSRef [Maybe ScriptProfile])
+
+-- | <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 (unInternals self)) >>= fromJSRefUnchecked)
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,125 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initKeyboardEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11, $12)"
+        js_initKeyboardEvent ::
+        JSRef KeyboardEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSRef 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 (unKeyboardEvent self) (toJSString type')
+         canBubble
+         cancelable
+         (maybe jsNull pToJSRef 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 :: JSRef 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 (unKeyboardEvent self)))
+ 
+foreign import javascript unsafe "$1[\"location\"]" js_getLocation
+        :: JSRef 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 (unKeyboardEvent self))
+ 
+foreign import javascript unsafe "$1[\"keyLocation\"]"
+        js_getKeyLocation :: JSRef 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 (unKeyboardEvent self))
+ 
+foreign import javascript unsafe "($1[\"ctrlKey\"] ? 1 : 0)"
+        js_getCtrlKey :: JSRef 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 (unKeyboardEvent self))
+ 
+foreign import javascript unsafe "($1[\"shiftKey\"] ? 1 : 0)"
+        js_getShiftKey :: JSRef 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 (unKeyboardEvent self))
+ 
+foreign import javascript unsafe "($1[\"altKey\"] ? 1 : 0)"
+        js_getAltKey :: JSRef 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 (unKeyboardEvent self))
+ 
+foreign import javascript unsafe "($1[\"metaKey\"] ? 1 : 0)"
+        js_getMetaKey :: JSRef 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 (unKeyboardEvent self))
+ 
+foreign import javascript unsafe "($1[\"altGraphKey\"] ? 1 : 0)"
+        js_getAltGraphKey :: JSRef 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 (unKeyboardEvent 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,212 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"assign\"]($2)" js_assign ::
+        JSRef 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 (unLocation self) (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"replace\"]($2)" js_replace
+        :: JSRef 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 (unLocation self) (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"reload\"]()" js_reload ::
+        JSRef 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 (unLocation self))
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+        JSRef 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 (unLocation self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"protocol\"] = $2;"
+        js_setProtocol :: JSRef 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 (unLocation self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"host\"] = $2;" js_setHost ::
+        JSRef 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 (unLocation self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"host\"]" js_getHost ::
+        JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"hostname\"] = $2;"
+        js_setHostname :: JSRef 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 (unLocation self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"hostname\"]" js_getHostname
+        :: JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"port\"] = $2;" js_setPort ::
+        JSRef 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 (unLocation self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"port\"]" js_getPort ::
+        JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"pathname\"] = $2;"
+        js_setPathname :: JSRef 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 (unLocation self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"pathname\"]" js_getPathname
+        :: JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"search\"] = $2;"
+        js_setSearch :: JSRef 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 (unLocation self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"search\"]" js_getSearch ::
+        JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"hash\"] = $2;" js_setHash ::
+        JSRef 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 (unLocation self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"hash\"]" js_getHash ::
+        JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"origin\"]" js_getOrigin ::
+        JSRef 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 (unLocation self)))
+ 
+foreign import javascript unsafe "$1[\"ancestorOrigins\"]"
+        js_getAncestorOrigins :: JSRef Location -> IO (JSRef 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 ((js_getAncestorOrigins (unLocation self)) >>= fromJSRef)
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,44 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"reservedVMBytes\"]"
+        js_getReservedVMBytes :: JSRef 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 (unMallocStatistics self))
+ 
+foreign import javascript unsafe "$1[\"committedVMBytes\"]"
+        js_getCommittedVMBytes :: JSRef 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 (unMallocStatistics self))
+ 
+foreign import javascript unsafe "$1[\"freeListBytes\"]"
+        js_getFreeListBytes :: JSRef 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 (unMallocStatistics 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,190 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"MediaController\"]()" js_newMediaController ::
+        IO (JSRef MediaController)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation> 
+newMediaController :: (MonadIO m) => m MediaController
+newMediaController
+  = liftIO (js_newMediaController >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"play\"]()" js_play ::
+        JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "$1[\"pause\"]()" js_pause ::
+        JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "$1[\"unpause\"]()" js_unpause ::
+        JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "$1[\"buffered\"]" js_getBuffered
+        :: JSRef MediaController -> IO (JSRef 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 ((js_getBuffered (unMediaController self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"seekable\"]" js_getSeekable
+        :: JSRef MediaController -> IO (JSRef 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 ((js_getSeekable (unMediaController self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"duration\"]" js_getDuration
+        :: JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "$1[\"currentTime\"] = $2;"
+        js_setCurrentTime :: JSRef 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 (unMediaController self) val)
+ 
+foreign import javascript unsafe "$1[\"currentTime\"]"
+        js_getCurrentTime :: JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "($1[\"paused\"] ? 1 : 0)"
+        js_getPaused :: JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "$1[\"played\"]" js_getPlayed ::
+        JSRef MediaController -> IO (JSRef 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 ((js_getPlayed (unMediaController self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"playbackState\"]"
+        js_getPlaybackState :: JSRef 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 (unMediaController self)))
+ 
+foreign import javascript unsafe
+        "$1[\"defaultPlaybackRate\"] = $2;" js_setDefaultPlaybackRate ::
+        JSRef 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 (unMediaController self) val)
+ 
+foreign import javascript unsafe "$1[\"defaultPlaybackRate\"]"
+        js_getDefaultPlaybackRate :: JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "$1[\"playbackRate\"] = $2;"
+        js_setPlaybackRate :: JSRef 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 (unMediaController self) val)
+ 
+foreign import javascript unsafe "$1[\"playbackRate\"]"
+        js_getPlaybackRate :: JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "$1[\"volume\"] = $2;"
+        js_setVolume :: JSRef 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 (unMediaController self) val)
+ 
+foreign import javascript unsafe "$1[\"volume\"]" js_getVolume ::
+        JSRef 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 (unMediaController self))
+ 
+foreign import javascript unsafe "$1[\"muted\"] = $2;" js_setMuted
+        :: JSRef 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 (unMediaController self) val)
+ 
+foreign import javascript unsafe "($1[\"muted\"] ? 1 : 0)"
+        js_getMuted :: JSRef 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 (unMediaController 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,287 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"sortedTrackListForMenu\"]($2)" js_sortedTrackListForMenu ::
+        JSRef MediaControlsHost ->
+          JSRef TextTrackList -> IO (JSRef [Maybe TextTrack])
+
+-- | <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 (unMediaControlsHost self)
+          (maybe jsNull pToJSRef trackList))
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"sortedTrackListForMenu\"]($2)" js_sortedTrackListForMenuAudio
+        ::
+        JSRef MediaControlsHost ->
+          JSRef AudioTrackList -> IO (JSRef [Maybe AudioTrack])
+
+-- | <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 (unMediaControlsHost self)
+          (maybe jsNull pToJSRef trackList))
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"displayNameForTrack\"]($2)"
+        js_displayNameForTrack ::
+        JSRef MediaControlsHost -> JSRef 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 (unMediaControlsHost self)
+            (maybe jsNull pToJSRef track)))
+ 
+foreign import javascript unsafe "$1[\"displayNameForTrack\"]($2)"
+        js_displayNameForTrackAudio ::
+        JSRef MediaControlsHost -> JSRef 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 (unMediaControlsHost self)
+            (maybe jsNull pToJSRef track)))
+ 
+foreign import javascript unsafe "$1[\"setSelectedTextTrack\"]($2)"
+        js_setSelectedTextTrack ::
+        JSRef MediaControlsHost -> JSRef 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 (unMediaControlsHost self)
+         (maybe jsNull pToJSRef track))
+ 
+foreign import javascript unsafe
+        "$1[\"updateTextTrackContainer\"]()" js_updateTextTrackContainer ::
+        JSRef 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 (unMediaControlsHost self))
+ 
+foreign import javascript unsafe "$1[\"enteredFullscreen\"]()"
+        js_enteredFullscreen :: JSRef 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 (unMediaControlsHost self))
+ 
+foreign import javascript unsafe "$1[\"exitedFullscreen\"]()"
+        js_exitedFullscreen :: JSRef 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 (unMediaControlsHost self))
+ 
+foreign import javascript unsafe
+        "$1[\"enterFullscreenOptimized\"]()" js_enterFullscreenOptimized ::
+        JSRef 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 (unMediaControlsHost self))
+ 
+foreign import javascript unsafe "$1[\"mediaUIImageData\"]($2)"
+        js_mediaUIImageData ::
+        JSRef MediaControlsHost -> JSRef MediaUIPartID -> 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 (unMediaControlsHost self) (pToJSRef partID)))
+ 
+foreign import javascript unsafe "$1[\"captionMenuOffItem\"]"
+        js_getCaptionMenuOffItem ::
+        JSRef MediaControlsHost -> IO (JSRef 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
+      ((js_getCaptionMenuOffItem (unMediaControlsHost self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"captionMenuAutomaticItem\"]"
+        js_getCaptionMenuAutomaticItem ::
+        JSRef MediaControlsHost -> IO (JSRef 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
+      ((js_getCaptionMenuAutomaticItem (unMediaControlsHost self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"captionDisplayMode\"]"
+        js_getCaptionDisplayMode :: JSRef 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 (unMediaControlsHost self)))
+ 
+foreign import javascript unsafe "$1[\"textTrackContainer\"]"
+        js_getTextTrackContainer ::
+        JSRef MediaControlsHost -> IO (JSRef 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
+      ((js_getTextTrackContainer (unMediaControlsHost self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"mediaPlaybackAllowsInline\"] ? 1 : 0)"
+        js_getMediaPlaybackAllowsInline ::
+        JSRef 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 (unMediaControlsHost self))
+ 
+foreign import javascript unsafe
+        "($1[\"supportsFullscreen\"] ? 1 : 0)" js_getSupportsFullscreen ::
+        JSRef 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 (unMediaControlsHost self))
+ 
+foreign import javascript unsafe
+        "($1[\"userGestureRequired\"] ? 1 : 0)" js_getUserGestureRequired
+        :: JSRef 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 (unMediaControlsHost self))
+ 
+foreign import javascript unsafe
+        "$1[\"externalDeviceDisplayName\"]" js_getExternalDeviceDisplayName
+        :: JSRef 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 (unMediaControlsHost self)))
+ 
+foreign import javascript unsafe "$1[\"externalDeviceType\"]"
+        js_getExternalDeviceType ::
+        JSRef MediaControlsHost -> IO (JSRef DeviceType)
+
+-- | <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 (unMediaControlsHost self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"controlsDependOnPageScaleFactor\"] = $2;"
+        js_setControlsDependOnPageScaleFactor ::
+        JSRef 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 (unMediaControlsHost self)
+         val)
+ 
+foreign import javascript unsafe
+        "($1[\"controlsDependOnPageScaleFactor\"] ? 1 : 0)"
+        js_getControlsDependOnPageScaleFactor ::
+        JSRef 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 (unMediaControlsHost 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,33 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"mediaElement\"]"
+        js_getMediaElement ::
+        JSRef MediaElementAudioSourceNode -> IO (JSRef 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
+      ((js_getMediaElement (unMediaElementAudioSourceNode self)) >>=
+         fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef 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 (unMediaError 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,43 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef 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 (unMediaKeyError self))
+ 
+foreign import javascript unsafe "$1[\"systemCode\"]"
+        js_getSystemCode :: JSRef 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 (unMediaKeyError 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,85 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"keySystem\"]"
+        js_getKeySystem :: JSRef 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 (unMediaKeyEvent self)))
+ 
+foreign import javascript unsafe "$1[\"sessionId\"]"
+        js_getSessionId :: JSRef 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 (unMediaKeyEvent self)))
+ 
+foreign import javascript unsafe "$1[\"initData\"]" js_getInitData
+        :: JSRef MediaKeyEvent -> IO (JSRef 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 ((js_getInitData (unMediaKeyEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"message\"]" js_getMessage ::
+        JSRef MediaKeyEvent -> IO (JSRef 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 ((js_getMessage (unMediaKeyEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"defaultURL\"]"
+        js_getDefaultURL :: JSRef 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 (unMediaKeyEvent self)))
+ 
+foreign import javascript unsafe "$1[\"errorCode\"]"
+        js_getErrorCode :: JSRef MediaKeyEvent -> IO (JSRef 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 ((js_getErrorCode (unMediaKeyEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"systemCode\"]"
+        js_getSystemCode :: JSRef 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 (unMediaKeyEvent 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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"message\"]" js_getMessage ::
+        JSRef MediaKeyMessageEvent -> IO (JSRef 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
+      ((js_getMessage (unMediaKeyMessageEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"destinationURL\"]"
+        js_getDestinationURL :: JSRef 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 (unMediaKeyMessageEvent 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,29 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"initData\"]" js_getInitData
+        :: JSRef MediaKeyNeededEvent -> IO (JSRef 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
+      ((js_getInitData (unMediaKeyNeededEvent self)) >>= fromJSRef)
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,81 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"update\"]($2)" js_update ::
+        JSRef MediaKeySession -> JSRef 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 (unMediaKeySession self)
+         (maybe jsNull (unUint8Array . toUint8Array) key))
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unMediaKeySession self))
+ 
+foreign import javascript unsafe "$1[\"error\"]" js_getError ::
+        JSRef MediaKeySession -> IO (JSRef 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 ((js_getError (unMediaKeySession self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"keySystem\"]"
+        js_getKeySystem :: JSRef 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 (unMediaKeySession self)))
+ 
+foreign import javascript unsafe "$1[\"sessionId\"]"
+        js_getSessionId :: JSRef 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 (unMediaKeySession 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,68 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"WebKitMediaKeys\"]($1)" js_newMediaKeys ::
+        JSString -> IO (JSRef 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) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"createSession\"]($2, $3)"
+        js_createSession ::
+        JSRef MediaKeys ->
+          JSString -> JSRef Uint8Array -> IO (JSRef 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
+      ((js_createSession (unMediaKeys self) (toJSString type')
+          (maybe jsNull (unUint8Array . toUint8Array) initData))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"isTypeSupported\"]($2,\n$3) ? 1 : 0)" js_isTypeSupported ::
+        JSRef 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 (unMediaKeys self) (toJSString keySystem)
+         (toJSString type'))
+ 
+foreign import javascript unsafe "$1[\"keySystem\"]"
+        js_getKeySystem :: JSRef 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 (unMediaKeys 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,78 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef MediaList -> Word -> IO (JSRef (Maybe 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 (unMediaList self) index))
+ 
+foreign import javascript unsafe "$1[\"deleteMedium\"]($2)"
+        js_deleteMedium :: JSRef 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 (unMediaList self) (toJSString oldMedium))
+ 
+foreign import javascript unsafe "$1[\"appendMedium\"]($2)"
+        js_appendMedium :: JSRef 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 (unMediaList self) (toJSString newMedium))
+ 
+foreign import javascript unsafe "$1[\"mediaText\"] = $2;"
+        js_setMediaText ::
+        JSRef MediaList -> JSRef (Maybe 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 (unMediaList self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"mediaText\"]"
+        js_getMediaText :: JSRef MediaList -> IO (JSRef (Maybe 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 (unMediaList self)))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unMediaList 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,62 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"addListener\"]($2)"
+        js_addListener ::
+        JSRef MediaQueryList -> JSRef 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 (unMediaQueryList self)
+         (maybe jsNull pToJSRef listener))
+ 
+foreign import javascript unsafe "$1[\"removeListener\"]($2)"
+        js_removeListener ::
+        JSRef MediaQueryList -> JSRef 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 (unMediaQueryList self)
+         (maybe jsNull pToJSRef listener))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        JSRef 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 (unMediaQueryList self)))
+ 
+foreign import javascript unsafe "($1[\"matches\"] ? 1 : 0)"
+        js_getMatches :: JSRef 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 (unMediaQueryList 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,46 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ list -> fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ list -> fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ list -> fromJSRefUnchecked 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,122 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"MediaSource\"]()"
+        js_newMediaSource :: IO (JSRef MediaSource)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation> 
+newMediaSource :: (MonadIO m) => m MediaSource
+newMediaSource = liftIO (js_newMediaSource >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"addSourceBuffer\"]($2)"
+        js_addSourceBuffer ::
+        JSRef MediaSource -> JSString -> IO (JSRef 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
+      ((js_addSourceBuffer (unMediaSource self) (toJSString type')) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeSourceBuffer\"]($2)"
+        js_removeSourceBuffer ::
+        JSRef MediaSource -> JSRef 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 (unMediaSource self)
+         (maybe jsNull pToJSRef buffer))
+ 
+foreign import javascript unsafe "$1[\"endOfStream\"]($2)"
+        js_endOfStream ::
+        JSRef MediaSource -> JSRef EndOfStreamError -> 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 (unMediaSource self) (pToJSRef error))
+ 
+foreign import javascript unsafe
+        "($1[\"isTypeSupported\"]($2) ? 1 : 0)" js_isTypeSupported ::
+        JSRef 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 (unMediaSource self) (toJSString type'))
+ 
+foreign import javascript unsafe "$1[\"sourceBuffers\"]"
+        js_getSourceBuffers ::
+        JSRef MediaSource -> IO (JSRef 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 ((js_getSourceBuffers (unMediaSource self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"activeSourceBuffers\"]"
+        js_getActiveSourceBuffers ::
+        JSRef MediaSource -> IO (JSRef 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
+      ((js_getActiveSourceBuffers (unMediaSource self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"duration\"] = $2;"
+        js_setDuration :: JSRef 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 (unMediaSource self) val)
+ 
+foreign import javascript unsafe "$1[\"duration\"]" js_getDuration
+        :: JSRef 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 (unMediaSource self))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unMediaSource 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,106 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"sourceType\"]"
+        js_getSourceType ::
+        JSRef MediaSourceStates -> IO (JSRef SourceTypeEnum)
+
+-- | <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 (unMediaSourceStates self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"sourceId\"]" js_getSourceId
+        :: JSRef 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 (unMediaSourceStates self)))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef MediaSourceStates -> IO (JSRef (Maybe Word))
+
+-- | <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 (unMediaSourceStates self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef MediaSourceStates -> IO (JSRef (Maybe Word))
+
+-- | <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 (unMediaSourceStates self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"frameRate\"]"
+        js_getFrameRate ::
+        JSRef MediaSourceStates -> IO (JSRef (Maybe Float))
+
+-- | <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 (unMediaSourceStates self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"aspectRatio\"]"
+        js_getAspectRatio ::
+        JSRef MediaSourceStates -> IO (JSRef (Maybe Float))
+
+-- | <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 (unMediaSourceStates self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"facingMode\"]"
+        js_getFacingMode ::
+        JSRef MediaSourceStates -> IO (JSRef VideoFacingModeEnum)
+
+-- | <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 (unMediaSourceStates self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"volume\"]" js_getVolume ::
+        JSRef MediaSourceStates -> IO (JSRef (Maybe Word))
+
+-- | <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 (unMediaSourceStates self)) >>= fromJSRefUnchecked)
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,167 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"webkitMediaStream\"]()" js_newMediaStream ::
+        IO (JSRef MediaStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+newMediaStream :: (MonadIO m) => m MediaStream
+newMediaStream = liftIO (js_newMediaStream >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "new window[\"webkitMediaStream\"]($1)" js_newMediaStream' ::
+        JSRef MediaStream -> IO (JSRef 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' (maybe jsNull pToJSRef stream) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "new window[\"webkitMediaStream\"]($1)" js_newMediaStream'' ::
+        JSRef [Maybe tracks] -> IO (JSRef 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
+      (toJSRef tracks >>= \ tracks' -> js_newMediaStream'' tracks' >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"getAudioTracks\"]()"
+        js_getAudioTracks ::
+        JSRef MediaStream -> IO (JSRef [Maybe MediaStreamTrack])
+
+-- | <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 (unMediaStream self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"getVideoTracks\"]()"
+        js_getVideoTracks ::
+        JSRef MediaStream -> IO (JSRef [Maybe MediaStreamTrack])
+
+-- | <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 (unMediaStream self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"getTracks\"]()" js_getTracks
+        :: JSRef MediaStream -> IO (JSRef [Maybe MediaStreamTrack])
+
+-- | <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 (unMediaStream self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"addTrack\"]($2)" js_addTrack
+        :: JSRef MediaStream -> JSRef 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 (unMediaStream self)
+         (maybe jsNull (unMediaStreamTrack . toMediaStreamTrack) track))
+ 
+foreign import javascript unsafe "$1[\"removeTrack\"]($2)"
+        js_removeTrack ::
+        JSRef MediaStream -> JSRef 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 (unMediaStream self)
+         (maybe jsNull (unMediaStreamTrack . toMediaStreamTrack) track))
+ 
+foreign import javascript unsafe "$1[\"getTrackById\"]($2)"
+        js_getTrackById ::
+        JSRef MediaStream -> JSString -> IO (JSRef 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
+      ((js_getTrackById (unMediaStream self) (toJSString trackId)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"clone\"]()" js_clone ::
+        JSRef MediaStream -> IO (JSRef 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 ((js_clone (unMediaStream self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unMediaStream self)))
+ 
+foreign import javascript unsafe "($1[\"active\"] ? 1 : 0)"
+        js_getActive :: JSRef 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 (unMediaStream 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,32 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"stream\"]" js_getStream ::
+        JSRef MediaStreamAudioDestinationNode -> IO (JSRef 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
+      ((js_getStream (unMediaStreamAudioDestinationNode self)) >>=
+         fromJSRef)
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,31 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"mediaStream\"]"
+        js_getMediaStream ::
+        JSRef MediaStreamAudioSourceNode -> IO (JSRef 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
+      ((js_getMediaStream (unMediaStreamAudioSourceNode self)) >>=
+         fromJSRef)
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,28 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"stream\"]" js_getStream ::
+        JSRef MediaStreamEvent -> IO (JSRef 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 ((js_getStream (unMediaStreamEvent self)) >>= fromJSRef)
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,239 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getSources\"]($2)"
+        js_getSources ::
+        JSRef MediaStreamTrack ->
+          JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self))
+         (maybe jsNull pToJSRef callback))
+ 
+foreign import javascript unsafe "$1[\"getConstraints\"]()"
+        js_getConstraints ::
+        JSRef MediaStreamTrack -> IO (JSRef 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
+      ((js_getConstraints (unMediaStreamTrack (toMediaStreamTrack self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"states\"]()" js_states ::
+        JSRef MediaStreamTrack -> IO (JSRef 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
+      ((js_states (unMediaStreamTrack (toMediaStreamTrack self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getCapabilities\"]()"
+        js_getCapabilities ::
+        JSRef MediaStreamTrack -> IO (JSRef 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
+      ((js_getCapabilities
+          (unMediaStreamTrack (toMediaStreamTrack self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"applyConstraints\"]($2)"
+        js_applyConstraints ::
+        JSRef MediaStreamTrack -> JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self))
+         (maybe jsNull (unDictionary . toDictionary) constraints))
+ 
+foreign import javascript unsafe "$1[\"clone\"]()" js_clone ::
+        JSRef MediaStreamTrack -> IO (JSRef 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
+      ((js_clone (unMediaStreamTrack (toMediaStreamTrack self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"stop\"]()" js_stop ::
+        JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "$1[\"kind\"]" js_getKind ::
+        JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self))))
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self))))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self))))
+ 
+foreign import javascript unsafe "$1[\"enabled\"] = $2;"
+        js_setEnabled :: JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self)) val)
+ 
+foreign import javascript unsafe "($1[\"enabled\"] ? 1 : 0)"
+        js_getEnabled :: JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "($1[\"muted\"] ? 1 : 0)"
+        js_getMuted :: JSRef 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 (unMediaStreamTrack (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 :: JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "($1[\"remote\"] ? 1 : 0)"
+        js_getRemote :: JSRef 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 (unMediaStreamTrack (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState ::
+        JSRef MediaStreamTrack -> IO (JSRef MediaStreamTrackState)
+
+-- | <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 (unMediaStreamTrack (toMediaStreamTrack self)))
+         >>= fromJSRefUnchecked)
+
+-- | <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,29 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        JSRef MediaStreamTrackEvent -> IO (JSRef 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
+      ((js_getTrack (unMediaStreamTrackEvent self)) >>= fromJSRef)
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,54 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ sources ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ sources ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ sources ->
+            fromJSRefUnchecked 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,48 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"mandatory\"]"
+        js_getMandatory ::
+        JSRef MediaTrackConstraints ->
+          IO (JSRef (Maybe MediaTrackConstraintSet))
+
+-- | <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 (unMediaTrackConstraints self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"optional\"]" js_getOptional
+        ::
+        JSRef MediaTrackConstraints ->
+          IO (JSRef (Maybe [Maybe MediaTrackConstraint]))
+
+-- | <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 (unMediaTrackConstraints self)) >>=
+         fromJSRefUnchecked)
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,35 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"usedJSHeapSize\"]"
+        js_getUsedJSHeapSize :: JSRef 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 (unMemoryInfo self))
+ 
+foreign import javascript unsafe "$1[\"totalJSHeapSize\"]"
+        js_getTotalJSHeapSize :: JSRef 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 (unMemoryInfo 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,44 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"MessageChannel\"]()"
+        js_newMessageChannel :: IO (JSRef MessageChannel)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation> 
+newMessageChannel :: (MonadIO m) => m MessageChannel
+newMessageChannel
+  = liftIO (js_newMessageChannel >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"port1\"]" js_getPort1 ::
+        JSRef MessageChannel -> IO (JSRef 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 ((js_getPort1 (unMessageChannel self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"port2\"]" js_getPort2 ::
+        JSRef MessageChannel -> IO (JSRef 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 ((js_getPort2 (unMessageChannel self)) >>= fromJSRef)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initMessageEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9)"
+        js_initMessageEvent ::
+        JSRef MessageEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSRef a ->
+                  JSString -> JSString -> JSRef Window -> JSRef 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 ->
+                           JSRef a ->
+                             originArg ->
+                               lastEventIdArg -> Maybe Window -> Maybe messagePorts -> m ()
+initMessageEvent self typeArg canBubbleArg cancelableArg dataArg
+  originArg lastEventIdArg sourceArg messagePorts
+  = liftIO
+      (js_initMessageEvent (unMessageEvent self) (toJSString typeArg)
+         canBubbleArg
+         cancelableArg
+         dataArg
+         (toJSString originArg)
+         (toJSString lastEventIdArg)
+         (maybe jsNull pToJSRef sourceArg)
+         (maybe jsNull (unArray . toArray) messagePorts))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitInitMessageEvent\"]($2,\n$3, $4, $5, $6, $7, $8, $9)"
+        js_webkitInitMessageEvent ::
+        JSRef MessageEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSRef a ->
+                  JSString -> JSString -> JSRef Window -> JSRef 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 ->
+                                 JSRef a ->
+                                   originArg ->
+                                     lastEventIdArg -> Maybe Window -> Maybe transferables -> m ()
+webkitInitMessageEvent self typeArg canBubbleArg cancelableArg
+  dataArg originArg lastEventIdArg sourceArg transferables
+  = liftIO
+      (js_webkitInitMessageEvent (unMessageEvent self)
+         (toJSString typeArg)
+         canBubbleArg
+         cancelableArg
+         dataArg
+         (toJSString originArg)
+         (toJSString lastEventIdArg)
+         (maybe jsNull pToJSRef sourceArg)
+         (maybe jsNull (unArray . toArray) transferables))
+ 
+foreign import javascript unsafe "$1[\"origin\"]" js_getOrigin ::
+        JSRef 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 (unMessageEvent self)))
+ 
+foreign import javascript unsafe "$1[\"lastEventId\"]"
+        js_getLastEventId :: JSRef 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 (unMessageEvent self)))
+ 
+foreign import javascript unsafe "$1[\"source\"]" js_getSource ::
+        JSRef MessageEvent -> IO (JSRef 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 ((js_getSource (unMessageEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"data\"]" js_getData ::
+        JSRef MessageEvent -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.data Mozilla MessageEvent.data documentation> 
+getData :: (MonadIO m) => MessageEvent -> m (JSRef a)
+getData self = liftIO (js_getData (unMessageEvent self))
+ 
+foreign import javascript unsafe "$1[\"ports\"]" js_getPorts ::
+        JSRef MessageEvent -> IO (JSRef [Maybe MessagePort])
+
+-- | <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 (unMessageEvent self)) >>= fromJSRefUnchecked)
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,50 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2, $3)"
+        js_postMessage ::
+        JSRef MessagePort -> JSRef a -> JSRef Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
+postMessage ::
+            (MonadIO m, IsArray messagePorts) =>
+              MessagePort -> JSRef a -> Maybe messagePorts -> m ()
+postMessage self message messagePorts
+  = liftIO
+      (js_postMessage (unMessagePort self) message
+         (maybe jsNull (unArray . toArray) messagePorts))
+ 
+foreign import javascript unsafe "$1[\"start\"]()" js_start ::
+        JSRef 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 (unMessagePort self))
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unMessagePort 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,54 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unMimeType self)))
+ 
+foreign import javascript unsafe "$1[\"suffixes\"]" js_getSuffixes
+        :: JSRef 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 (unMimeType self)))
+ 
+foreign import javascript unsafe "$1[\"description\"]"
+        js_getDescription :: JSRef 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 (unMimeType self)))
+ 
+foreign import javascript unsafe "$1[\"enabledPlugin\"]"
+        js_getEnabledPlugin :: JSRef MimeType -> IO (JSRef 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 ((js_getEnabledPlugin (unMimeType self)) >>= fromJSRef)
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,47 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef MimeTypeArray -> Word -> IO (JSRef 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 ((js_item (unMimeTypeArray self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        JSRef MimeTypeArray -> JSString -> IO (JSRef 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
+      ((js_namedItem (unMimeTypeArray self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unMimeTypeArray 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,241 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.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 ::
+        JSRef MouseEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSRef Window ->
+                  Int ->
+                    Int ->
+                      Int ->
+                        Int ->
+                          Int ->
+                            Bool -> Bool -> Bool -> Bool -> Word -> JSRef 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 (unMouseEvent (toMouseEvent self))
+         (toJSString type')
+         canBubble
+         cancelable
+         (maybe jsNull pToJSRef view)
+         detail
+         screenX
+         screenY
+         clientX
+         clientY
+         ctrlKey
+         altKey
+         shiftKey
+         metaKey
+         button
+         (maybe jsNull (unEventTarget . toEventTarget) relatedTarget))
+ 
+foreign import javascript unsafe "$1[\"screenX\"]" js_getScreenX ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"screenY\"]" js_getScreenY ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"clientX\"]" js_getClientX ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"clientY\"]" js_getClientY ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "($1[\"ctrlKey\"] ? 1 : 0)"
+        js_getCtrlKey :: JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "($1[\"shiftKey\"] ? 1 : 0)"
+        js_getShiftKey :: JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "($1[\"altKey\"] ? 1 : 0)"
+        js_getAltKey :: JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "($1[\"metaKey\"] ? 1 : 0)"
+        js_getMetaKey :: JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"button\"]" js_getButton ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"relatedTarget\"]"
+        js_getRelatedTarget :: JSRef MouseEvent -> IO (JSRef 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
+      ((js_getRelatedTarget (unMouseEvent (toMouseEvent self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"movementX\"]"
+        js_getMovementX :: JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"movementY\"]"
+        js_getMovementY :: JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"offsetX\"]" js_getOffsetX ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"offsetY\"]" js_getOffsetY ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unMouseEvent (toMouseEvent self)))
+ 
+foreign import javascript unsafe "$1[\"fromElement\"]"
+        js_getFromElement :: JSRef MouseEvent -> IO (JSRef 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
+      ((js_getFromElement (unMouseEvent (toMouseEvent self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"toElement\"]"
+        js_getToElement :: JSRef MouseEvent -> IO (JSRef 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
+      ((js_getToElement (unMouseEvent (toMouseEvent self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"dataTransfer\"]"
+        js_getDataTransfer :: JSRef MouseEvent -> IO (JSRef 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
+      ((js_getDataTransfer (unMouseEvent (toMouseEvent self))) >>=
+         fromJSRef)
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,101 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initMutationEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9)"
+        js_initMutationEvent ::
+        JSRef MutationEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSRef 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 (unMutationEvent self) (toJSString type')
+         canBubble
+         cancelable
+         (maybe jsNull (unNode . 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 :: JSRef MutationEvent -> IO (JSRef 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 ((js_getRelatedNode (unMutationEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"prevValue\"]"
+        js_getPrevValue :: JSRef 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 (unMutationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"newValue\"]" js_getNewValue
+        :: JSRef 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 (unMutationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"attrName\"]" js_getAttrName
+        :: JSRef 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 (unMutationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"attrChange\"]"
+        js_getAttrChange :: JSRef 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 (unMutationEvent 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,66 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"MutationObserver\"]($1)" js_newMutationObserver ::
+        JSRef MutationCallback -> IO (JSRef 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
+         (maybe jsNull (unMutationCallback . toMutationCallback) callback)
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"observe\"]($2, $3)"
+        js_observe ::
+        JSRef MutationObserver -> JSRef Node -> JSRef 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 (unMutationObserver self)
+         (maybe jsNull (unNode . toNode) target)
+         (maybe jsNull (unDictionary . toDictionary) options))
+ 
+foreign import javascript unsafe "$1[\"takeRecords\"]()"
+        js_takeRecords ::
+        JSRef MutationObserver -> IO (JSRef [Maybe MutationRecord])
+
+-- | <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 (unMutationObserver self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"disconnect\"]()"
+        js_disconnect :: JSRef 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 (unMutationObserver 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,116 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unMutationRecord self)))
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef MutationRecord -> IO (JSRef 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 ((js_getTarget (unMutationRecord self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"addedNodes\"]"
+        js_getAddedNodes :: JSRef MutationRecord -> IO (JSRef 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 ((js_getAddedNodes (unMutationRecord self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removedNodes\"]"
+        js_getRemovedNodes :: JSRef MutationRecord -> IO (JSRef 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
+      ((js_getRemovedNodes (unMutationRecord self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"previousSibling\"]"
+        js_getPreviousSibling :: JSRef MutationRecord -> IO (JSRef 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
+      ((js_getPreviousSibling (unMutationRecord self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"nextSibling\"]"
+        js_getNextSibling :: JSRef MutationRecord -> IO (JSRef 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
+      ((js_getNextSibling (unMutationRecord self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"attributeName\"]"
+        js_getAttributeName ::
+        JSRef MutationRecord -> IO (JSRef (Maybe 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 (unMutationRecord self)))
+ 
+foreign import javascript unsafe "$1[\"attributeNamespace\"]"
+        js_getAttributeNamespace ::
+        JSRef MutationRecord -> IO (JSRef (Maybe 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 (unMutationRecord self)))
+ 
+foreign import javascript unsafe "$1[\"oldValue\"]" js_getOldValue
+        :: JSRef MutationRecord -> IO (JSRef (Maybe 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 (unMutationRecord 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,124 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getNamedItem\"]($2)"
+        js_getNamedItem ::
+        JSRef NamedNodeMap -> JSString -> IO (JSRef 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
+      ((js_getNamedItem (unNamedNodeMap self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"setNamedItem\"]($2)"
+        js_setNamedItem ::
+        JSRef NamedNodeMap -> JSRef Node -> IO (JSRef 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
+      ((js_setNamedItem (unNamedNodeMap self)
+          (maybe jsNull (unNode . toNode) node))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeNamedItem\"]($2)"
+        js_removeNamedItem ::
+        JSRef NamedNodeMap -> JSString -> IO (JSRef 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
+      ((js_removeNamedItem (unNamedNodeMap self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef NamedNodeMap -> Word -> IO (JSRef 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 ((js_item (unNamedNodeMap self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getNamedItemNS\"]($2, $3)"
+        js_getNamedItemNS ::
+        JSRef NamedNodeMap ->
+          JSRef (Maybe JSString) -> JSString -> IO (JSRef 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
+      ((js_getNamedItemNS (unNamedNodeMap self)
+          (toMaybeJSString namespaceURI)
+          (toJSString localName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"setNamedItemNS\"]($2)"
+        js_setNamedItemNS ::
+        JSRef NamedNodeMap -> JSRef Node -> IO (JSRef 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
+      ((js_setNamedItemNS (unNamedNodeMap self)
+          (maybe jsNull (unNode . toNode) node))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"removeNamedItemNS\"]($2, $3)" js_removeNamedItemNS ::
+        JSRef NamedNodeMap ->
+          JSRef (Maybe JSString) -> JSString -> IO (JSRef 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
+      ((js_removeNamedItemNS (unNamedNodeMap self)
+          (toMaybeJSString namespaceURI)
+          (toJSString localName))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unNamedNodeMap 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,313 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getGamepads\"]()"
+        js_getGamepads :: JSRef Navigator -> IO (JSRef [Maybe Gamepad])
+
+-- | <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 (unNavigator self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetUserMedia\"]($2, $3,\n$4)" js_webkitGetUserMedia ::
+        JSRef Navigator ->
+          JSRef Dictionary ->
+            JSRef NavigatorUserMediaSuccessCallback ->
+              JSRef 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 (unNavigator self)
+         (maybe jsNull (unDictionary . toDictionary) options)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef errorCallback))
+ 
+foreign import javascript unsafe
+        "$1[\"registerProtocolHandler\"]($2,\n$3, $4)"
+        js_registerProtocolHandler ::
+        JSRef 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 (unNavigator self) (toJSString scheme)
+         (toJSString url)
+         (toJSString title))
+ 
+foreign import javascript unsafe
+        "$1[\"isProtocolHandlerRegistered\"]($2,\n$3)"
+        js_isProtocolHandlerRegistered ::
+        JSRef 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 (unNavigator self)
+            (toJSString scheme)
+            (toJSString url)))
+ 
+foreign import javascript unsafe
+        "$1[\"unregisterProtocolHandler\"]($2,\n$3)"
+        js_unregisterProtocolHandler ::
+        JSRef 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 (unNavigator self)
+         (toJSString scheme)
+         (toJSString url))
+ 
+foreign import javascript unsafe "($1[\"vibrate\"]($2) ? 1 : 0)"
+        js_vibratePattern :: JSRef Navigator -> JSRef [Word] -> 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
+      (toJSRef pattern' >>=
+         \ pattern'' -> js_vibratePattern (unNavigator self) pattern'')
+ 
+foreign import javascript unsafe "($1[\"vibrate\"]($2) ? 1 : 0)"
+        js_vibrate :: JSRef 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 (unNavigator self) time)
+ 
+foreign import javascript unsafe "($1[\"javaEnabled\"]() ? 1 : 0)"
+        js_javaEnabled :: JSRef 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 (unNavigator self))
+ 
+foreign import javascript unsafe "$1[\"getStorageUpdates\"]()"
+        js_getStorageUpdates :: JSRef 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 (unNavigator self))
+ 
+foreign import javascript unsafe "$1[\"webkitBattery\"]"
+        js_getWebkitBattery :: JSRef Navigator -> IO (JSRef 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 ((js_getWebkitBattery (unNavigator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"geolocation\"]"
+        js_getGeolocation :: JSRef Navigator -> IO (JSRef 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 ((js_getGeolocation (unNavigator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"webkitTemporaryStorage\"]"
+        js_getWebkitTemporaryStorage ::
+        JSRef Navigator -> IO (JSRef 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
+      ((js_getWebkitTemporaryStorage (unNavigator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"webkitPersistentStorage\"]"
+        js_getWebkitPersistentStorage ::
+        JSRef Navigator -> IO (JSRef 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
+      ((js_getWebkitPersistentStorage (unNavigator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appCodeName\"]"
+        js_getAppCodeName :: JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"appName\"]" js_getAppName ::
+        JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"appVersion\"]"
+        js_getAppVersion :: JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"language\"]" js_getLanguage
+        :: JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"userAgent\"]"
+        js_getUserAgent :: JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"platform\"]" js_getPlatform
+        :: JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"plugins\"]" js_getPlugins ::
+        JSRef Navigator -> IO (JSRef 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 ((js_getPlugins (unNavigator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"mimeTypes\"]"
+        js_getMimeTypes :: JSRef Navigator -> IO (JSRef 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 ((js_getMimeTypes (unNavigator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"product\"]" js_getProduct ::
+        JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"productSub\"]"
+        js_getProductSub :: JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"vendor\"]" js_getVendor ::
+        JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"vendorSub\"]"
+        js_getVendorSub :: JSRef 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 (unNavigator self)))
+ 
+foreign import javascript unsafe "($1[\"cookieEnabled\"] ? 1 : 0)"
+        js_getCookieEnabled :: JSRef 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 (unNavigator self))
+ 
+foreign import javascript unsafe "($1[\"onLine\"] ? 1 : 0)"
+        js_getOnLine :: JSRef 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 (unNavigator self))
+ 
+foreign import javascript unsafe "$1[\"hardwareConcurrency\"]"
+        js_getHardwareConcurrency :: JSRef 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 (unNavigator 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,32 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"constraintName\"]"
+        js_getConstraintName ::
+        JSRef 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 (unNavigatorUserMediaError 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,54 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ error ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ error ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ error ->
+            fromJSRefUnchecked 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,54 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ stream ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ stream ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ stream ->
+            fromJSRefUnchecked 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,441 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"insertBefore\"]($2, $3)"
+        js_insertBefore ::
+        JSRef Node -> JSRef Node -> JSRef Node -> IO (JSRef 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
+      ((js_insertBefore (unNode (toNode self))
+          (maybe jsNull (unNode . toNode) newChild)
+          (maybe jsNull (unNode . toNode) refChild))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"replaceChild\"]($2, $3)"
+        js_replaceChild ::
+        JSRef Node -> JSRef Node -> JSRef Node -> IO (JSRef 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
+      ((js_replaceChild (unNode (toNode self))
+          (maybe jsNull (unNode . toNode) newChild)
+          (maybe jsNull (unNode . toNode) oldChild))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeChild\"]($2)"
+        js_removeChild :: JSRef Node -> JSRef Node -> IO (JSRef 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
+      ((js_removeChild (unNode (toNode self))
+          (maybe jsNull (unNode . toNode) oldChild))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appendChild\"]($2)"
+        js_appendChild :: JSRef Node -> JSRef Node -> IO (JSRef 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
+      ((js_appendChild (unNode (toNode self))
+          (maybe jsNull (unNode . toNode) newChild))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"hasChildNodes\"]() ? 1 : 0)" js_hasChildNodes ::
+        JSRef 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 (unNode (toNode self)))
+ 
+foreign import javascript unsafe "$1[\"cloneNode\"]($2)"
+        js_cloneNode :: JSRef Node -> Bool -> IO (JSRef 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 ((js_cloneNode (unNode (toNode self)) deep) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"normalize\"]()" js_normalize
+        :: JSRef 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 (unNode (toNode self)))
+ 
+foreign import javascript unsafe
+        "($1[\"isSupported\"]($2,\n$3) ? 1 : 0)" js_isSupported ::
+        JSRef Node -> JSString -> JSRef (Maybe 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 (unNode (toNode self)) (toJSString feature)
+         (toMaybeJSString version))
+ 
+foreign import javascript unsafe "($1[\"isSameNode\"]($2) ? 1 : 0)"
+        js_isSameNode :: JSRef Node -> JSRef 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 (unNode (toNode self))
+         (maybe jsNull (unNode . toNode) other))
+ 
+foreign import javascript unsafe
+        "($1[\"isEqualNode\"]($2) ? 1 : 0)" js_isEqualNode ::
+        JSRef Node -> JSRef 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 (unNode (toNode self))
+         (maybe jsNull (unNode . toNode) other))
+ 
+foreign import javascript unsafe "$1[\"lookupPrefix\"]($2)"
+        js_lookupPrefix ::
+        JSRef Node -> JSRef (Maybe JSString) -> IO (JSRef (Maybe 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 (unNode (toNode self))
+            (toMaybeJSString namespaceURI)))
+ 
+foreign import javascript unsafe
+        "($1[\"isDefaultNamespace\"]($2) ? 1 : 0)" js_isDefaultNamespace ::
+        JSRef Node -> JSRef (Maybe 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 (unNode (toNode self))
+         (toMaybeJSString namespaceURI))
+ 
+foreign import javascript unsafe "$1[\"lookupNamespaceURI\"]($2)"
+        js_lookupNamespaceURI ::
+        JSRef Node -> JSRef (Maybe JSString) -> IO (JSRef (Maybe 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 (unNode (toNode self))
+            (toMaybeJSString prefix)))
+ 
+foreign import javascript unsafe
+        "$1[\"compareDocumentPosition\"]($2)" js_compareDocumentPosition ::
+        JSRef Node -> JSRef 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 (unNode (toNode self))
+         (maybe jsNull (unNode . toNode) other))
+ 
+foreign import javascript unsafe "($1[\"contains\"]($2) ? 1 : 0)"
+        js_contains :: JSRef Node -> JSRef 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 (unNode (toNode self))
+         (maybe jsNull (unNode . 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
+        :: JSRef Node -> IO (JSRef (Maybe 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 (unNode (toNode self))))
+ 
+foreign import javascript unsafe "$1[\"nodeValue\"] = $2;"
+        js_setNodeValue :: JSRef Node -> JSRef (Maybe 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 (unNode (toNode self)) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"nodeValue\"]"
+        js_getNodeValue :: JSRef Node -> IO (JSRef (Maybe 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 (unNode (toNode self))))
+ 
+foreign import javascript unsafe "$1[\"nodeType\"]" js_getNodeType
+        :: JSRef 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 (unNode (toNode self)))
+ 
+foreign import javascript unsafe "$1[\"parentNode\"]"
+        js_getParentNode :: JSRef Node -> IO (JSRef 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 ((js_getParentNode (unNode (toNode self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"childNodes\"]"
+        js_getChildNodes :: JSRef Node -> IO (JSRef 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 ((js_getChildNodes (unNode (toNode self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"firstChild\"]"
+        js_getFirstChild :: JSRef Node -> IO (JSRef 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 ((js_getFirstChild (unNode (toNode self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"lastChild\"]"
+        js_getLastChild :: JSRef Node -> IO (JSRef 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 ((js_getLastChild (unNode (toNode self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"previousSibling\"]"
+        js_getPreviousSibling :: JSRef Node -> IO (JSRef 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
+      ((js_getPreviousSibling (unNode (toNode self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"nextSibling\"]"
+        js_getNextSibling :: JSRef Node -> IO (JSRef 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 ((js_getNextSibling (unNode (toNode self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"ownerDocument\"]"
+        js_getOwnerDocument :: JSRef Node -> IO (JSRef 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
+      ((js_getOwnerDocument (unNode (toNode self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namespaceURI\"]"
+        js_getNamespaceURI :: JSRef Node -> IO (JSRef (Maybe 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 (unNode (toNode self))))
+ 
+foreign import javascript unsafe "$1[\"prefix\"] = $2;"
+        js_setPrefix :: JSRef Node -> JSRef (Maybe 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 (unNode (toNode self)) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"prefix\"]" js_getPrefix ::
+        JSRef Node -> IO (JSRef (Maybe 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 (unNode (toNode self))))
+ 
+foreign import javascript unsafe "$1[\"localName\"]"
+        js_getLocalName :: JSRef Node -> IO (JSRef (Maybe 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 (unNode (toNode self))))
+ 
+foreign import javascript unsafe "$1[\"baseURI\"]" js_getBaseURI ::
+        JSRef Node -> IO (JSRef (Maybe 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 (unNode (toNode self))))
+ 
+foreign import javascript unsafe "$1[\"textContent\"] = $2;"
+        js_setTextContent :: JSRef Node -> JSRef (Maybe 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 (unNode (toNode self)) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"textContent\"]"
+        js_getTextContent :: JSRef Node -> IO (JSRef (Maybe 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 (unNode (toNode self))))
+ 
+foreign import javascript unsafe "$1[\"parentElement\"]"
+        js_getParentElement :: JSRef Node -> IO (JSRef 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
+      ((js_getParentElement (unNode (toNode self))) >>= fromJSRef)
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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"acceptNode\"]($2)"
+        js_acceptNode :: JSRef NodeFilter -> JSRef 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 (unNodeFilter self)
+         (maybe jsNull (unNode . 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,98 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"nextNode\"]()" js_nextNode
+        :: JSRef NodeIterator -> IO (JSRef 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 ((js_nextNode (unNodeIterator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"previousNode\"]()"
+        js_previousNode :: JSRef NodeIterator -> IO (JSRef 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 ((js_previousNode (unNodeIterator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"detach\"]()" js_detach ::
+        JSRef 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 (unNodeIterator self))
+ 
+foreign import javascript unsafe "$1[\"root\"]" js_getRoot ::
+        JSRef NodeIterator -> IO (JSRef 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 ((js_getRoot (unNodeIterator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"whatToShow\"]"
+        js_getWhatToShow :: JSRef 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 (unNodeIterator self))
+ 
+foreign import javascript unsafe "$1[\"filter\"]" js_getFilter ::
+        JSRef NodeIterator -> IO (JSRef 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 ((js_getFilter (unNodeIterator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"expandEntityReferences\"] ? 1 : 0)"
+        js_getExpandEntityReferences :: JSRef 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 (unNodeIterator self))
+ 
+foreign import javascript unsafe "$1[\"referenceNode\"]"
+        js_getReferenceNode :: JSRef NodeIterator -> IO (JSRef 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
+      ((js_getReferenceNode (unNodeIterator self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"pointerBeforeReferenceNode\"] ? 1 : 0)"
+        js_getPointerBeforeReferenceNode :: JSRef 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 (unNodeIterator 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,37 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef NodeList -> Word -> IO (JSRef 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
+      ((js_item (unNodeList (toNodeList self)) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unNodeList (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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"show\"]()" js_show ::
+        JSRef 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 (unNotification 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 Event
+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,60 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"createNotification\"]($2, $3,\n$4)" js_createNotification ::
+        JSRef NotificationCenter ->
+          JSString -> JSString -> JSString -> IO (JSRef 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
+      ((js_createNotification (unNotificationCenter self)
+          (toJSString iconUrl)
+          (toJSString title)
+          (toJSString body))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"checkPermission\"]()"
+        js_checkPermission :: JSRef 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 (unNotificationCenter self))
+ 
+foreign import javascript unsafe "$1[\"requestPermission\"]($2)"
+        js_requestPermission ::
+        JSRef NotificationCenter -> JSRef 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 (unNotificationCenter self)
+         (maybe jsNull pToJSRef 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,57 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ permission ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ permission ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ permission ->
+            fromJSRefUnchecked 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,78 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"createVertexArrayOES\"]()"
+        js_createVertexArrayOES ::
+        JSRef OESVertexArrayObject -> IO (JSRef 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
+      ((js_createVertexArrayOES (unOESVertexArrayObject self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteVertexArrayOES\"]($2)"
+        js_deleteVertexArrayOES ::
+        JSRef OESVertexArrayObject ->
+          JSRef 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 (unOESVertexArrayObject self)
+         (maybe jsNull pToJSRef arrayObject))
+ 
+foreign import javascript unsafe
+        "($1[\"isVertexArrayOES\"]($2) ? 1 : 0)" js_isVertexArrayOES ::
+        JSRef OESVertexArrayObject ->
+          JSRef 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 (unOESVertexArrayObject self)
+         (maybe jsNull pToJSRef arrayObject))
+ 
+foreign import javascript unsafe "$1[\"bindVertexArrayOES\"]($2)"
+        js_bindVertexArrayOES ::
+        JSRef OESVertexArrayObject ->
+          JSRef 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 (unOESVertexArrayObject self)
+         (maybe jsNull pToJSRef 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,32 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"renderedBuffer\"]"
+        js_getRenderedBuffer ::
+        JSRef OfflineAudioCompletionEvent -> IO (JSRef 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
+      ((js_getRenderedBuffer (unOfflineAudioCompletionEvent self)) >>=
+         fromJSRef)
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,34 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"OfflineAudioContext\"]($1,\n$2, $3)"
+        js_newOfflineAudioContext ::
+        Word -> Word -> Float -> IO (JSRef 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
+         >>= fromJSRefUnchecked)
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,122 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"start\"]($2)" js_start ::
+        JSRef 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 (unOscillatorNode self) when)
+ 
+foreign import javascript unsafe "$1[\"stop\"]($2)" js_stop ::
+        JSRef 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 (unOscillatorNode self) when)
+ 
+foreign import javascript unsafe "$1[\"noteOn\"]($2)" js_noteOn ::
+        JSRef 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 (unOscillatorNode self) when)
+ 
+foreign import javascript unsafe "$1[\"noteOff\"]($2)" js_noteOff
+        :: JSRef 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 (unOscillatorNode self) when)
+ 
+foreign import javascript unsafe "$1[\"setPeriodicWave\"]($2)"
+        js_setPeriodicWave ::
+        JSRef OscillatorNode -> JSRef 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 (unOscillatorNode self)
+         (maybe jsNull pToJSRef 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 ::
+        JSRef 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 (unOscillatorNode self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unOscillatorNode self)))
+ 
+foreign import javascript unsafe "$1[\"playbackState\"]"
+        js_getPlaybackState :: JSRef 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 (unOscillatorNode self))
+ 
+foreign import javascript unsafe "$1[\"frequency\"]"
+        js_getFrequency :: JSRef OscillatorNode -> IO (JSRef 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 ((js_getFrequency (unOscillatorNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"detune\"]" js_getDetune ::
+        JSRef OscillatorNode -> IO (JSRef 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 ((js_getDetune (unOscillatorNode self)) >>= fromJSRef)
+
+-- | <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,49 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+pattern HORIZONTAL = 0
+pattern VERTICAL = 1
+pattern BOTH = 2
+ 
+foreign import javascript unsafe "$1[\"orient\"]" js_getOrient ::
+        JSRef 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 (unOverflowEvent self))
+ 
+foreign import javascript unsafe
+        "($1[\"horizontalOverflow\"] ? 1 : 0)" js_getHorizontalOverflow ::
+        JSRef 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 (unOverflowEvent self))
+ 
+foreign import javascript unsafe
+        "($1[\"verticalOverflow\"] ? 1 : 0)" js_getVerticalOverflow ::
+        JSRef 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 (unOverflowEvent 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,27 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "($1[\"persisted\"] ? 1 : 0)"
+        js_getPersisted :: JSRef 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 (unPageTransitionEvent 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,203 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setPosition\"]($2, $3, $4)"
+        js_setPosition ::
+        JSRef 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 (unPannerNode self) x y z)
+ 
+foreign import javascript unsafe
+        "$1[\"setOrientation\"]($2, $3, $4)" js_setOrientation ::
+        JSRef 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 (unPannerNode self) x y z)
+ 
+foreign import javascript unsafe "$1[\"setVelocity\"]($2, $3, $4)"
+        js_setVelocity ::
+        JSRef 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 (unPannerNode 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 :: JSRef 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 (unPannerNode self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"panningModel\"]"
+        js_getPanningModel :: JSRef 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 (unPannerNode self)))
+ 
+foreign import javascript unsafe "$1[\"distanceModel\"] = $2;"
+        js_setDistanceModel :: JSRef 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 (unPannerNode self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"distanceModel\"]"
+        js_getDistanceModel :: JSRef 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 (unPannerNode self)))
+ 
+foreign import javascript unsafe "$1[\"refDistance\"] = $2;"
+        js_setRefDistance :: JSRef 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 (unPannerNode self) val)
+ 
+foreign import javascript unsafe "$1[\"refDistance\"]"
+        js_getRefDistance :: JSRef 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 (unPannerNode self))
+ 
+foreign import javascript unsafe "$1[\"maxDistance\"] = $2;"
+        js_setMaxDistance :: JSRef 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 (unPannerNode self) val)
+ 
+foreign import javascript unsafe "$1[\"maxDistance\"]"
+        js_getMaxDistance :: JSRef 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 (unPannerNode self))
+ 
+foreign import javascript unsafe "$1[\"rolloffFactor\"] = $2;"
+        js_setRolloffFactor :: JSRef 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 (unPannerNode self) val)
+ 
+foreign import javascript unsafe "$1[\"rolloffFactor\"]"
+        js_getRolloffFactor :: JSRef 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 (unPannerNode self))
+ 
+foreign import javascript unsafe "$1[\"coneInnerAngle\"] = $2;"
+        js_setConeInnerAngle :: JSRef 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 (unPannerNode self) val)
+ 
+foreign import javascript unsafe "$1[\"coneInnerAngle\"]"
+        js_getConeInnerAngle :: JSRef 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 (unPannerNode self))
+ 
+foreign import javascript unsafe "$1[\"coneOuterAngle\"] = $2;"
+        js_setConeOuterAngle :: JSRef 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 (unPannerNode self) val)
+ 
+foreign import javascript unsafe "$1[\"coneOuterAngle\"]"
+        js_getConeOuterAngle :: JSRef 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 (unPannerNode self))
+ 
+foreign import javascript unsafe "$1[\"coneOuterGain\"] = $2;"
+        js_setConeOuterGain :: JSRef 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 (unPannerNode self) val)
+ 
+foreign import javascript unsafe "$1[\"coneOuterGain\"]"
+        js_getConeOuterGain :: JSRef 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 (unPannerNode 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,139 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"Path2D\"]()"
+        js_newPath2D :: IO (JSRef Path2D)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+newPath2D :: (MonadIO m) => m Path2D
+newPath2D = liftIO (js_newPath2D >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "new window[\"Path2D\"]($1)"
+        js_newPath2D' :: JSRef Path2D -> IO (JSRef 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' (maybe jsNull pToJSRef path) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "new window[\"Path2D\"]($1)"
+        js_newPath2D'' :: JSString -> IO (JSRef 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) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"addPath\"]($2, $3)"
+        js_addPath ::
+        JSRef Path2D -> JSRef Path2D -> JSRef 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 (unPath2D self) (maybe jsNull pToJSRef path)
+         (maybe jsNull pToJSRef transform))
+ 
+foreign import javascript unsafe "$1[\"closePath\"]()" js_closePath
+        :: JSRef 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 (unPath2D self))
+ 
+foreign import javascript unsafe "$1[\"moveTo\"]($2, $3)" js_moveTo
+        :: JSRef 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 (unPath2D self) x y)
+ 
+foreign import javascript unsafe "$1[\"lineTo\"]($2, $3)" js_lineTo
+        :: JSRef 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 (unPath2D self) x y)
+ 
+foreign import javascript unsafe
+        "$1[\"quadraticCurveTo\"]($2, $3,\n$4, $5)" js_quadraticCurveTo ::
+        JSRef 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 (unPath2D self) cpx cpy x y)
+ 
+foreign import javascript unsafe
+        "$1[\"bezierCurveTo\"]($2, $3, $4,\n$5, $6, $7)" js_bezierCurveTo
+        ::
+        JSRef 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 (unPath2D self) cp1x cp1y cp2x cp2y x y)
+ 
+foreign import javascript unsafe
+        "$1[\"arcTo\"]($2, $3, $4, $5, $6)" js_arcTo ::
+        JSRef 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 (unPath2D self) x1 y1 x2 y2 radius)
+ 
+foreign import javascript unsafe "$1[\"rect\"]($2, $3, $4, $5)"
+        js_rect ::
+        JSRef 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 (unPath2D self) x y width height)
+ 
+foreign import javascript unsafe
+        "$1[\"arc\"]($2, $3, $4, $5, $6,\n$7)" js_arc ::
+        JSRef 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 (unPath2D 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,165 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"webkitGetEntries\"]()"
+        js_webkitGetEntries ::
+        JSRef Performance -> IO (JSRef 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 ((js_webkitGetEntries (unPerformance self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetEntriesByType\"]($2)" js_webkitGetEntriesByType ::
+        JSRef Performance -> JSString -> IO (JSRef 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
+      ((js_webkitGetEntriesByType (unPerformance self)
+          (toJSString entryType))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitGetEntriesByName\"]($2,\n$3)" js_webkitGetEntriesByName
+        ::
+        JSRef Performance ->
+          JSString -> JSString -> IO (JSRef 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
+      ((js_webkitGetEntriesByName (unPerformance self) (toJSString name)
+          (toJSString entryType))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitClearResourceTimings\"]()"
+        js_webkitClearResourceTimings :: JSRef 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 (unPerformance self))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitSetResourceTimingBufferSize\"]($2)"
+        js_webkitSetResourceTimingBufferSize ::
+        JSRef 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 (unPerformance self) maxSize)
+ 
+foreign import javascript unsafe "$1[\"webkitMark\"]($2)"
+        js_webkitMark :: JSRef 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 (unPerformance self) (toJSString markName))
+ 
+foreign import javascript unsafe "$1[\"webkitClearMarks\"]($2)"
+        js_webkitClearMarks :: JSRef 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 (unPerformance self) (toJSString markName))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitMeasure\"]($2, $3, $4)" js_webkitMeasure ::
+        JSRef 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 (unPerformance self) (toJSString measureName)
+         (toJSString startMark)
+         (toJSString endMark))
+ 
+foreign import javascript unsafe "$1[\"webkitClearMeasures\"]($2)"
+        js_webkitClearMeasures :: JSRef 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 (unPerformance self)
+         (toJSString measureName))
+ 
+foreign import javascript unsafe "$1[\"now\"]()" js_now ::
+        JSRef 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 (unPerformance self))
+ 
+foreign import javascript unsafe "$1[\"navigation\"]"
+        js_getNavigation ::
+        JSRef Performance -> IO (JSRef 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 ((js_getNavigation (unPerformance self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"timing\"]" js_getTiming ::
+        JSRef Performance -> IO (JSRef 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 ((js_getTiming (unPerformance self)) >>= fromJSRef)
+
+-- | <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,65 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unPerformanceEntry (toPerformanceEntry self))))
+ 
+foreign import javascript unsafe "$1[\"entryType\"]"
+        js_getEntryType :: JSRef 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 (unPerformanceEntry (toPerformanceEntry self))))
+ 
+foreign import javascript unsafe "$1[\"startTime\"]"
+        js_getStartTime :: JSRef 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 (unPerformanceEntry (toPerformanceEntry self)))
+ 
+foreign import javascript unsafe "$1[\"duration\"]" js_getDuration
+        :: JSRef 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 (unPerformanceEntry (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,38 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef PerformanceEntryList -> Word -> IO (JSRef 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
+      ((js_item (unPerformanceEntryList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unPerformanceEntryList 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,41 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef 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 (unPerformanceNavigation self))
+ 
+foreign import javascript unsafe "$1[\"redirectCount\"]"
+        js_getRedirectCount :: JSRef 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 (unPerformanceNavigation 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,134 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"initiatorType\"]"
+        js_getInitiatorType ::
+        JSRef 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 (unPerformanceResourceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"redirectStart\"]"
+        js_getRedirectStart :: JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"redirectEnd\"]"
+        js_getRedirectEnd :: JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"fetchStart\"]"
+        js_getFetchStart :: JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"domainLookupStart\"]"
+        js_getDomainLookupStart ::
+        JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"domainLookupEnd\"]"
+        js_getDomainLookupEnd ::
+        JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"connectStart\"]"
+        js_getConnectStart :: JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"connectEnd\"]"
+        js_getConnectEnd :: JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"secureConnectionStart\"]"
+        js_getSecureConnectionStart ::
+        JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"requestStart\"]"
+        js_getRequestStart :: JSRef 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 (unPerformanceResourceTiming self))
+ 
+foreign import javascript unsafe "$1[\"responseEnd\"]"
+        js_getResponseEnd :: JSRef 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 (unPerformanceResourceTiming 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,227 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"navigationStart\"]"
+        js_getNavigationStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"unloadEventStart\"]"
+        js_getUnloadEventStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"unloadEventEnd\"]"
+        js_getUnloadEventEnd :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"redirectStart\"]"
+        js_getRedirectStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"redirectEnd\"]"
+        js_getRedirectEnd :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"fetchStart\"]"
+        js_getFetchStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"domainLookupStart\"]"
+        js_getDomainLookupStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"domainLookupEnd\"]"
+        js_getDomainLookupEnd :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"connectStart\"]"
+        js_getConnectStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"connectEnd\"]"
+        js_getConnectEnd :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"secureConnectionStart\"]"
+        js_getSecureConnectionStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"requestStart\"]"
+        js_getRequestStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"responseStart\"]"
+        js_getResponseStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"responseEnd\"]"
+        js_getResponseEnd :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"domLoading\"]"
+        js_getDomLoading :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"domInteractive\"]"
+        js_getDomInteractive :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe
+        "$1[\"domContentLoadedEventStart\"]"
+        js_getDomContentLoadedEventStart ::
+        JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"domContentLoadedEventEnd\"]"
+        js_getDomContentLoadedEventEnd ::
+        JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"domComplete\"]"
+        js_getDomComplete :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"loadEventStart\"]"
+        js_getLoadEventStart :: JSRef 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 (unPerformanceTiming self)))
+ 
+foreign import javascript unsafe "$1[\"loadEventEnd\"]"
+        js_getLoadEventEnd :: JSRef 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 (unPerformanceTiming 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,72 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef Plugin -> Word -> IO (JSRef 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 ((js_item (unPlugin self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem :: JSRef Plugin -> JSString -> IO (JSRef 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
+      ((js_namedItem (unPlugin self) (toJSString name)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unPlugin self)))
+ 
+foreign import javascript unsafe "$1[\"filename\"]" js_getFilename
+        :: JSRef 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 (unPlugin self)))
+ 
+foreign import javascript unsafe "$1[\"description\"]"
+        js_getDescription :: JSRef 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 (unPlugin self)))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unPlugin 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,55 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef PluginArray -> Word -> IO (JSRef 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 ((js_item (unPluginArray self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem :: JSRef PluginArray -> JSString -> IO (JSRef 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
+      ((js_namedItem (unPluginArray self) (toJSString name)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"refresh\"]($2)" js_refresh
+        :: JSRef 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 (unPluginArray self) reload)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unPluginArray 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"state\"]" js_getState ::
+        JSRef PopStateEvent -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent.state Mozilla PopStateEvent.state documentation> 
+getState :: (MonadIO m) => PopStateEvent -> m (JSRef a)
+getState self = liftIO (js_getState (unPopStateEvent 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,46 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ position ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ position ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ position ->
+            fromJSRefUnchecked 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,39 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+pattern PERMISSION_DENIED = 1
+pattern POSITION_UNAVAILABLE = 2
+pattern TIMEOUT = 3
+ 
+foreign import javascript unsafe "$1[\"code\"]" js_getCode ::
+        JSRef 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 (unPositionError self))
+ 
+foreign import javascript unsafe "$1[\"message\"]" js_getMessage ::
+        JSRef 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 (unPositionError 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,49 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ error ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ error ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ error ->
+            fromJSRefUnchecked 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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef ProcessingInstruction -> IO (JSRef (Maybe 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 (unProcessingInstruction self)))
+ 
+foreign import javascript unsafe "$1[\"sheet\"]" js_getSheet ::
+        JSRef ProcessingInstruction -> IO (JSRef 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
+      ((js_getSheet (unProcessingInstruction self)) >>= fromJSRef)
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,50 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"lengthComputable\"] ? 1 : 0)" js_getLengthComputable ::
+        JSRef 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 (unProgressEvent (toProgressEvent self)))
+ 
+foreign import javascript unsafe "$1[\"loaded\"]" js_getLoaded ::
+        JSRef 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 (unProgressEvent (toProgressEvent self))))
+ 
+foreign import javascript unsafe "$1[\"total\"]" js_getTotal ::
+        JSRef 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 (unProgressEvent (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,73 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"postEvent\"]($2)"
+        js_postEvent ::
+        JSRef 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 (unQuickTimePluginReplacement self)
+         (toJSString eventName))
+ 
+foreign import javascript unsafe "$1[\"movieSize\"]"
+        js_getMovieSize :: JSRef 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 (unQuickTimePluginReplacement self)))
+ 
+foreign import javascript unsafe "$1[\"timedMetaData\"]"
+        js_getTimedMetaData ::
+        JSRef QuickTimePluginReplacement -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.timedMetaData Mozilla QuickTimePluginReplacement.timedMetaData documentation> 
+getTimedMetaData ::
+                 (MonadIO m) => QuickTimePluginReplacement -> m (JSRef a)
+getTimedMetaData self
+  = liftIO (js_getTimedMetaData (unQuickTimePluginReplacement self))
+ 
+foreign import javascript unsafe "$1[\"accessLog\"]"
+        js_getAccessLog :: JSRef QuickTimePluginReplacement -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.accessLog Mozilla QuickTimePluginReplacement.accessLog documentation> 
+getAccessLog ::
+             (MonadIO m) => QuickTimePluginReplacement -> m (JSRef a)
+getAccessLog self
+  = liftIO (js_getAccessLog (unQuickTimePluginReplacement self))
+ 
+foreign import javascript unsafe "$1[\"errorLog\"]" js_getErrorLog
+        :: JSRef QuickTimePluginReplacement -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.errorLog Mozilla QuickTimePluginReplacement.errorLog documentation> 
+getErrorLog ::
+            (MonadIO m) => QuickTimePluginReplacement -> m (JSRef a)
+getErrorLog self
+  = liftIO (js_getErrorLog (unQuickTimePluginReplacement 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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"red\"]" js_getRed ::
+        JSRef RGBColor -> IO (JSRef 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 ((js_getRed (unRGBColor self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"green\"]" js_getGreen ::
+        JSRef RGBColor -> IO (JSRef 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 ((js_getGreen (unRGBColor self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"blue\"]" js_getBlue ::
+        JSRef RGBColor -> IO (JSRef 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 ((js_getBlue (unRGBColor self)) >>= fromJSRef)
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,56 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"iceServers\"]"
+        js_getIceServers ::
+        JSRef RTCConfiguration -> IO (JSRef [Maybe RTCIceServer])
+
+-- | <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 (unRTCConfiguration self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"iceTransports\"]"
+        js_getIceTransports ::
+        JSRef RTCConfiguration -> IO (JSRef RTCIceTransportsEnum)
+
+-- | <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 (unRTCConfiguration self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"requestIdentity\"]"
+        js_getRequestIdentity ::
+        JSRef RTCConfiguration -> IO (JSRef RTCIdentityOptionEnum)
+
+-- | <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 (unRTCConfiguration self)) >>=
+         fromJSRefUnchecked)
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,80 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"insertDTMF\"]($2, $3, $4)"
+        js_insertDTMF ::
+        JSRef 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 (unRTCDTMFSender self) (toJSString tones) duration
+         interToneGap)
+ 
+foreign import javascript unsafe "($1[\"canInsertDTMF\"] ? 1 : 0)"
+        js_getCanInsertDTMF :: JSRef 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 (unRTCDTMFSender self))
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        JSRef RTCDTMFSender -> IO (JSRef 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 ((js_getTrack (unRTCDTMFSender self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"toneBuffer\"]"
+        js_getToneBuffer :: JSRef 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 (unRTCDTMFSender self)))
+ 
+foreign import javascript unsafe "$1[\"duration\"]" js_getDuration
+        :: JSRef 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 (unRTCDTMFSender self))
+ 
+foreign import javascript unsafe "$1[\"interToneGap\"]"
+        js_getInterToneGap :: JSRef 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 (unRTCDTMFSender 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,30 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"tone\"]" js_getTone ::
+        JSRef 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 (unRTCDTMFToneChangeEvent 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,189 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_send ::
+        JSRef RTCDataChannel -> JSRef 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 (unRTCDataChannel self)
+         (maybe jsNull (unArrayBuffer . toArrayBuffer) data'))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendView ::
+        JSRef RTCDataChannel -> JSRef 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 (unRTCDataChannel self)
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data'))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendBlob ::
+        JSRef RTCDataChannel -> JSRef 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 (unRTCDataChannel self)
+         (maybe jsNull (unBlob . toBlob) data'))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendString
+        :: JSRef 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 (unRTCDataChannel self) (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unRTCDataChannel self))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unRTCDataChannel self)))
+ 
+foreign import javascript unsafe "($1[\"ordered\"] ? 1 : 0)"
+        js_getOrdered :: JSRef 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 (unRTCDataChannel self))
+ 
+foreign import javascript unsafe "$1[\"maxRetransmitTime\"]"
+        js_getMaxRetransmitTime :: JSRef 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 (unRTCDataChannel self))
+ 
+foreign import javascript unsafe "$1[\"maxRetransmits\"]"
+        js_getMaxRetransmits :: JSRef 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 (unRTCDataChannel self))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: JSRef 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 (unRTCDataChannel self)))
+ 
+foreign import javascript unsafe "($1[\"negotiated\"] ? 1 : 0)"
+        js_getNegotiated :: JSRef 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 (unRTCDataChannel self))
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unRTCDataChannel self))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unRTCDataChannel self)))
+ 
+foreign import javascript unsafe "$1[\"bufferedAmount\"]"
+        js_getBufferedAmount :: JSRef 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 (unRTCDataChannel self))
+ 
+foreign import javascript unsafe "$1[\"binaryType\"] = $2;"
+        js_setBinaryType :: JSRef 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 (unRTCDataChannel self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"binaryType\"]"
+        js_getBinaryType :: JSRef 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 (unRTCDataChannel 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 Event
+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,29 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"channel\"]" js_getChannel ::
+        JSRef RTCDataChannelEvent -> IO (JSRef 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
+      ((js_getChannel (unRTCDataChannelEvent self)) >>= fromJSRef)
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,62 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"RTCIceCandidate\"]($1)" js_newRTCIceCandidate ::
+        JSRef Dictionary -> IO (JSRef 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
+         (maybe jsNull (unDictionary . toDictionary) dictionary)
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"candidate\"]"
+        js_getCandidate :: JSRef 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 (unRTCIceCandidate self)))
+ 
+foreign import javascript unsafe "$1[\"sdpMid\"]" js_getSdpMid ::
+        JSRef 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 (unRTCIceCandidate self)))
+ 
+foreign import javascript unsafe "$1[\"sdpMLineIndex\"]"
+        js_getSdpMLineIndex :: JSRef 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 (unRTCIceCandidate 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,30 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"candidate\"]"
+        js_getCandidate ::
+        JSRef RTCIceCandidateEvent -> IO (JSRef 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
+      ((js_getCandidate (unRTCIceCandidateEvent self)) >>= fromJSRef)
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,49 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"urls\"]" js_getUrls ::
+        JSRef RTCIceServer -> IO (JSRef [result])
+
+-- | <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 (unRTCIceServer self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"username\"]" js_getUsername
+        :: JSRef 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 (unRTCIceServer self)))
+ 
+foreign import javascript unsafe "$1[\"credential\"]"
+        js_getCredential :: JSRef 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 (unRTCIceServer 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,381 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"webkitRTCPeerConnection\"]($1)"
+        js_newRTCPeerConnection ::
+        JSRef Dictionary -> IO (JSRef 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
+         (maybe jsNull (unDictionary . toDictionary) rtcConfiguration)
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"createOffer\"]($2, $3, $4)"
+        js_createOffer ::
+        JSRef RTCPeerConnection ->
+          JSRef RTCSessionDescriptionCallback ->
+            JSRef RTCPeerConnectionErrorCallback -> JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef failureCallback)
+         (maybe jsNull (unDictionary . toDictionary) offerOptions))
+ 
+foreign import javascript unsafe "$1[\"createAnswer\"]($2, $3, $4)"
+        js_createAnswer ::
+        JSRef RTCPeerConnection ->
+          JSRef RTCSessionDescriptionCallback ->
+            JSRef RTCPeerConnectionErrorCallback -> JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef failureCallback)
+         (maybe jsNull (unDictionary . toDictionary) answerOptions))
+ 
+foreign import javascript unsafe
+        "$1[\"setLocalDescription\"]($2,\n$3, $4)" js_setLocalDescription
+        ::
+        JSRef RTCPeerConnection ->
+          JSRef RTCSessionDescription ->
+            JSRef VoidCallback -> JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull pToJSRef description)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef failureCallback))
+ 
+foreign import javascript unsafe
+        "$1[\"setRemoteDescription\"]($2,\n$3, $4)" js_setRemoteDescription
+        ::
+        JSRef RTCPeerConnection ->
+          JSRef RTCSessionDescription ->
+            JSRef VoidCallback -> JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull pToJSRef description)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef failureCallback))
+ 
+foreign import javascript unsafe "$1[\"updateIce\"]($2)"
+        js_updateIce ::
+        JSRef RTCPeerConnection -> JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull (unDictionary . toDictionary) configuration))
+ 
+foreign import javascript unsafe
+        "$1[\"addIceCandidate\"]($2, $3,\n$4)" js_addIceCandidate ::
+        JSRef RTCPeerConnection ->
+          JSRef RTCIceCandidate ->
+            JSRef VoidCallback -> JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull pToJSRef candidate)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef failureCallback))
+ 
+foreign import javascript unsafe "$1[\"getLocalStreams\"]()"
+        js_getLocalStreams ::
+        JSRef RTCPeerConnection -> IO (JSRef [Maybe MediaStream])
+
+-- | <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 (unRTCPeerConnection self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"getRemoteStreams\"]()"
+        js_getRemoteStreams ::
+        JSRef RTCPeerConnection -> IO (JSRef [Maybe MediaStream])
+
+-- | <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 (unRTCPeerConnection self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"getStreamById\"]($2)"
+        js_getStreamById ::
+        JSRef RTCPeerConnection -> JSString -> IO (JSRef 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
+      ((js_getStreamById (unRTCPeerConnection self)
+          (toJSString streamId))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getConfiguration\"]()"
+        js_getConfiguration ::
+        JSRef RTCPeerConnection -> IO (JSRef 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
+      ((js_getConfiguration (unRTCPeerConnection self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"addStream\"]($2)"
+        js_addStream ::
+        JSRef RTCPeerConnection -> JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull pToJSRef stream))
+ 
+foreign import javascript unsafe "$1[\"removeStream\"]($2)"
+        js_removeStream ::
+        JSRef RTCPeerConnection -> JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull pToJSRef stream))
+ 
+foreign import javascript unsafe "$1[\"getStats\"]($2, $3, $4)"
+        js_getStats ::
+        JSRef RTCPeerConnection ->
+          JSRef RTCStatsCallback ->
+            JSRef RTCPeerConnectionErrorCallback ->
+              JSRef 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 (unRTCPeerConnection self)
+         (maybe jsNull pToJSRef successCallback)
+         (maybe jsNull pToJSRef failureCallback)
+         (maybe jsNull (unMediaStreamTrack . toMediaStreamTrack) selector))
+ 
+foreign import javascript unsafe
+        "$1[\"createDataChannel\"]($2, $3)" js_createDataChannel ::
+        JSRef RTCPeerConnection ->
+          JSRef (Maybe JSString) ->
+            JSRef Dictionary -> IO (JSRef 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
+      ((js_createDataChannel (unRTCPeerConnection self)
+          (toMaybeJSString label)
+          (maybe jsNull (unDictionary . toDictionary) options))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createDTMFSender\"]($2)"
+        js_createDTMFSender ::
+        JSRef RTCPeerConnection ->
+          JSRef MediaStreamTrack -> IO (JSRef 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
+      ((js_createDTMFSender (unRTCPeerConnection self)
+          (maybe jsNull (unMediaStreamTrack . toMediaStreamTrack) track))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unRTCPeerConnection self))
+ 
+foreign import javascript unsafe "$1[\"localDescription\"]"
+        js_getLocalDescription ::
+        JSRef RTCPeerConnection -> IO (JSRef 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
+      ((js_getLocalDescription (unRTCPeerConnection self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"remoteDescription\"]"
+        js_getRemoteDescription ::
+        JSRef RTCPeerConnection -> IO (JSRef 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
+      ((js_getRemoteDescription (unRTCPeerConnection self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"signalingState\"]"
+        js_getSignalingState :: JSRef 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 (unRTCPeerConnection self)))
+ 
+foreign import javascript unsafe "$1[\"iceGatheringState\"]"
+        js_getIceGatheringState :: JSRef 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 (unRTCPeerConnection self)))
+ 
+foreign import javascript unsafe "$1[\"iceConnectionState\"]"
+        js_getIceConnectionState :: JSRef 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 (unRTCPeerConnection 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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ error ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ error ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ error ->
+            fromJSRefUnchecked 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,78 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"RTCSessionDescription\"]($1)"
+        js_newRTCSessionDescription ::
+        JSRef Dictionary -> IO (JSRef 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
+         (maybe jsNull (unDictionary . toDictionary) dictionary)
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unRTCSessionDescription self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unRTCSessionDescription self)))
+ 
+foreign import javascript unsafe "$1[\"sdp\"] = $2;" js_setSdp ::
+        JSRef 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 (unRTCSessionDescription self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"sdp\"]" js_getSdp ::
+        JSRef 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 (unRTCSessionDescription 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,51 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ sdp -> fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ sdp -> fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ sdp -> fromJSRefUnchecked 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,49 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ response ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ response ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ response ->
+            fromJSRefUnchecked 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,87 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"stat\"]($2)" js_stat ::
+        JSRef 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 (unRTCStatsReport self) (toJSString name)))
+ 
+foreign import javascript unsafe "$1[\"names\"]()" js_names ::
+        JSRef RTCStatsReport -> IO (JSRef [result])
+
+-- | <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 (unRTCStatsReport self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"timestamp\"]"
+        js_getTimestamp :: JSRef RTCStatsReport -> IO (JSRef 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 ((js_getTimestamp (unRTCStatsReport self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unRTCStatsReport self)))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unRTCStatsReport self)))
+ 
+foreign import javascript unsafe "$1[\"local\"]" js_getLocal ::
+        JSRef RTCStatsReport -> IO (JSRef 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 ((js_getLocal (unRTCStatsReport self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"remote\"]" js_getRemote ::
+        JSRef RTCStatsReport -> IO (JSRef 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 ((js_getRemote (unRTCStatsReport self)) >>= fromJSRef)
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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"result\"]()" js_result ::
+        JSRef RTCStatsResponse -> IO (JSRef [Maybe RTCStatsReport])
+
+-- | <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 (unRTCStatsResponse self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"namedItem\"]($2)"
+        js_namedItem ::
+        JSRef RTCStatsResponse -> JSString -> IO (JSRef 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
+      ((js_namedItem (unRTCStatsResponse self) (toJSString name)) >>=
+         fromJSRef)
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,45 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        JSRef RadioNodeList -> Word -> IO (JSRef 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 ((js__get (unRadioNodeList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unRadioNodeList self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unRadioNodeList 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,368 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"Range\"]()"
+        js_newRange :: IO (JSRef Range)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation> 
+newRange :: (MonadIO m) => m Range
+newRange = liftIO (js_newRange >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"setStart\"]($2, $3)"
+        js_setStart :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode)
+         offset)
+ 
+foreign import javascript unsafe "$1[\"setEnd\"]($2, $3)" js_setEnd
+        :: JSRef Range -> JSRef 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 (unRange self) (maybe jsNull (unNode . toNode) refNode)
+         offset)
+ 
+foreign import javascript unsafe "$1[\"setStartBefore\"]($2)"
+        js_setStartBefore :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode))
+ 
+foreign import javascript unsafe "$1[\"setStartAfter\"]($2)"
+        js_setStartAfter :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode))
+ 
+foreign import javascript unsafe "$1[\"setEndBefore\"]($2)"
+        js_setEndBefore :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode))
+ 
+foreign import javascript unsafe "$1[\"setEndAfter\"]($2)"
+        js_setEndAfter :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode))
+ 
+foreign import javascript unsafe "$1[\"collapse\"]($2)" js_collapse
+        :: JSRef 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 (unRange self) toStart)
+ 
+foreign import javascript unsafe "$1[\"selectNode\"]($2)"
+        js_selectNode :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode))
+ 
+foreign import javascript unsafe "$1[\"selectNodeContents\"]($2)"
+        js_selectNodeContents :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode))
+ 
+foreign import javascript unsafe
+        "$1[\"compareBoundaryPoints\"]($2,\n$3)" js_compareBoundaryPoints
+        :: JSRef Range -> Word -> JSRef 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 (unRange self) how
+         (maybe jsNull pToJSRef sourceRange))
+ 
+foreign import javascript unsafe "$1[\"deleteContents\"]()"
+        js_deleteContents :: JSRef 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 (unRange self))
+ 
+foreign import javascript unsafe "$1[\"extractContents\"]()"
+        js_extractContents :: JSRef Range -> IO (JSRef 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 ((js_extractContents (unRange self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cloneContents\"]()"
+        js_cloneContents :: JSRef Range -> IO (JSRef 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 ((js_cloneContents (unRange self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"insertNode\"]($2)"
+        js_insertNode :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) newNode))
+ 
+foreign import javascript unsafe "$1[\"surroundContents\"]($2)"
+        js_surroundContents :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) newParent))
+ 
+foreign import javascript unsafe "$1[\"cloneRange\"]()"
+        js_cloneRange :: JSRef Range -> IO (JSRef 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 ((js_cloneRange (unRange self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: JSRef 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 (unRange self)))
+ 
+foreign import javascript unsafe "$1[\"detach\"]()" js_detach ::
+        JSRef 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 (unRange self))
+ 
+foreign import javascript unsafe "$1[\"getClientRects\"]()"
+        js_getClientRects :: JSRef Range -> IO (JSRef 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 ((js_getClientRects (unRange self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getBoundingClientRect\"]()"
+        js_getBoundingClientRect :: JSRef Range -> IO (JSRef 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 ((js_getBoundingClientRect (unRange self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createContextualFragment\"]($2)" js_createContextualFragment
+        :: JSRef Range -> JSString -> IO (JSRef 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
+      ((js_createContextualFragment (unRange self) (toJSString html)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"intersectsNode\"]($2) ? 1 : 0)" js_intersectsNode ::
+        JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode))
+ 
+foreign import javascript unsafe "$1[\"compareNode\"]($2)"
+        js_compareNode :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode))
+ 
+foreign import javascript unsafe "$1[\"comparePoint\"]($2, $3)"
+        js_comparePoint :: JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode)
+         offset)
+ 
+foreign import javascript unsafe
+        "($1[\"isPointInRange\"]($2,\n$3) ? 1 : 0)" js_isPointInRange ::
+        JSRef Range -> JSRef 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 (unRange self)
+         (maybe jsNull (unNode . toNode) refNode)
+         offset)
+ 
+foreign import javascript unsafe "$1[\"expand\"]($2)" js_expand ::
+        JSRef 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 (unRange 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 :: JSRef Range -> IO (JSRef 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 ((js_getStartContainer (unRange self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"startOffset\"]"
+        js_getStartOffset :: JSRef 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 (unRange self))
+ 
+foreign import javascript unsafe "$1[\"endContainer\"]"
+        js_getEndContainer :: JSRef Range -> IO (JSRef 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 ((js_getEndContainer (unRange self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"endOffset\"]"
+        js_getEndOffset :: JSRef 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 (unRange self))
+ 
+foreign import javascript unsafe "($1[\"collapsed\"] ? 1 : 0)"
+        js_getCollapsed :: JSRef 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 (unRange self))
+ 
+foreign import javascript unsafe "$1[\"commonAncestorContainer\"]"
+        js_getCommonAncestorContainer :: JSRef Range -> IO (JSRef 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
+      ((js_getCommonAncestorContainer (unRange self)) >>= fromJSRef)
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,101 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"ReadableStream\"]($1)" js_newReadableStream ::
+        JSRef a -> IO (JSRef ReadableStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation> 
+newReadableStream :: (MonadIO m) => JSRef a -> m ReadableStream
+newReadableStream properties
+  = liftIO (js_newReadableStream properties >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"read\"]()" js_read ::
+        JSRef ReadableStream -> IO (JSRef 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 ((js_read (unReadableStream self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cancel\"]($2)" js_cancel ::
+        JSRef ReadableStream -> JSString -> IO (JSRef 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
+      ((js_cancel (unReadableStream self) (toJSString reason)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pipeTo\"]($2, $3)" js_pipeTo
+        :: JSRef ReadableStream -> JSRef a -> JSRef a -> IO (JSRef Promise)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
+pipeTo ::
+       (MonadIO m) =>
+         ReadableStream -> JSRef a -> JSRef a -> m (Maybe Promise)
+pipeTo self streams options
+  = liftIO
+      ((js_pipeTo (unReadableStream self) streams options) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pipeThrough\"]($2, $3)"
+        js_pipeThrough ::
+        JSRef ReadableStream -> JSRef a -> JSRef a -> IO (JSRef GObject)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
+pipeThrough ::
+            (MonadIO m) =>
+              ReadableStream -> JSRef a -> JSRef a -> m (Maybe GObject)
+pipeThrough self dest options
+  = liftIO
+      ((js_pipeThrough (unReadableStream self) dest options) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"state\"]" js_getState ::
+        JSRef ReadableStream -> IO (JSRef ReadableStreamStateType)
+
+-- | <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 (unReadableStream self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"closed\"]" js_getClosed ::
+        JSRef ReadableStream -> IO (JSRef 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 ((js_getClosed (unReadableStream self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"ready\"]" js_getReady ::
+        JSRef ReadableStream -> IO (JSRef 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 ((js_getReady (unReadableStream self)) >>= fromJSRef)
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,48 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"top\"]" js_getTop ::
+        JSRef Rect -> IO (JSRef 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 ((js_getTop (unRect self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"right\"]" js_getRight ::
+        JSRef Rect -> IO (JSRef 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 ((js_getRight (unRect self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"bottom\"]" js_getBottom ::
+        JSRef Rect -> IO (JSRef 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 ((js_getBottom (unRect self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"left\"]" js_getLeft ::
+        JSRef Rect -> IO (JSRef 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 ((js_getLeft (unRect self)) >>= fromJSRef)
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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
+newRequestAnimationFrameCallback ::
+                                 (MonadIO m) => (Double -> IO ()) -> m RequestAnimationFrameCallback
+newRequestAnimationFrameCallback callback
+  = liftIO
+      (syncCallback1 ThrowWouldBlock
+         (\ highResTime ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ highResTime ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ highResTime ->
+            fromJSRefUnchecked 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,45 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef 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 (unSQLError self))
+ 
+foreign import javascript unsafe "$1[\"message\"]" js_getMessage ::
+        JSRef 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 (unSQLError 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,44 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"rows\"]" js_getRows ::
+        JSRef SQLResultSet -> IO (JSRef 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 ((js_getRows (unSQLResultSet self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"insertId\"]" js_getInsertId
+        :: JSRef 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 (unSQLResultSet self))
+ 
+foreign import javascript unsafe "$1[\"rowsAffected\"]"
+        js_getRowsAffected :: JSRef 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 (unSQLResultSet 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,34 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef SQLResultSetRowList -> Word -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
+item :: (MonadIO m) => SQLResultSetRowList -> Word -> m (JSRef a)
+item self index
+  = liftIO (js_item (unSQLResultSetRowList self) index)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unSQLResultSetRowList 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,64 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback2 ThrowWouldBlock
+         (\ transaction resultSet ->
+            fromJSRefUnchecked resultSet >>=
+              \ resultSet' ->
+                fromJSRefUnchecked 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
+      (syncCallback2 ContinueAsync
+         (\ transaction resultSet ->
+            fromJSRefUnchecked resultSet >>=
+              \ resultSet' ->
+                fromJSRefUnchecked 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
+      (asyncCallback2
+         (\ transaction resultSet ->
+            fromJSRefUnchecked resultSet >>=
+              \ resultSet' ->
+                fromJSRefUnchecked 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,64 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback2 ThrowWouldBlock
+         (\ transaction error ->
+            fromJSRefUnchecked error >>=
+              \ error' ->
+                fromJSRefUnchecked 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
+      (syncCallback2 ContinueAsync
+         (\ transaction error ->
+            fromJSRefUnchecked error >>=
+              \ error' ->
+                fromJSRefUnchecked 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
+      (asyncCallback2
+         (\ transaction error ->
+            fromJSRefUnchecked error >>=
+              \ error' ->
+                fromJSRefUnchecked 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"executeSql\"]($2, $3, $4, $5)" js_executeSql ::
+        JSRef SQLTransaction ->
+          JSString ->
+            JSRef ObjectArray ->
+              JSRef SQLStatementCallback ->
+                JSRef 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 (unSQLTransaction self) (toJSString sqlStatement)
+         (maybe jsNull (unObjectArray . toObjectArray) arguments)
+         (maybe jsNull pToJSRef callback)
+         (maybe jsNull pToJSRef 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,52 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ transaction ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ transaction ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ transaction ->
+            fromJSRefUnchecked 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,50 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ error ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ error ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ error ->
+            fromJSRefUnchecked 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,28 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef SVGAElement -> IO (JSRef 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 ((js_getTarget (unSVGAElement self)) >>= fromJSRef)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"glyphRef\"] = $2;"
+        js_setGlyphRef :: JSRef 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 (unSVGAltGlyphElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"glyphRef\"]" js_getGlyphRef
+        :: JSRef 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 (unSVGAltGlyphElement self)))
+ 
+foreign import javascript unsafe "$1[\"format\"] = $2;"
+        js_setFormat :: JSRef 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 (unSVGAltGlyphElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"format\"]" js_getFormat ::
+        JSRef 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 (unSVGAltGlyphElement 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,114 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"newValueSpecifiedUnits\"]($2,\n$3)" js_newValueSpecifiedUnits
+        :: JSRef 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 (unSVGAngle self) unitType
+         valueInSpecifiedUnits)
+ 
+foreign import javascript unsafe
+        "$1[\"convertToSpecifiedUnits\"]($2)" js_convertToSpecifiedUnits ::
+        JSRef 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 (unSVGAngle 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
+        :: JSRef 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 (unSVGAngle self))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unSVGAngle self) val)
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unSVGAngle self))
+ 
+foreign import javascript unsafe
+        "$1[\"valueInSpecifiedUnits\"] = $2;" js_setValueInSpecifiedUnits
+        :: JSRef 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 (unSVGAngle self) val)
+ 
+foreign import javascript unsafe "$1[\"valueInSpecifiedUnits\"]"
+        js_getValueInSpecifiedUnits :: JSRef 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 (unSVGAngle self))
+ 
+foreign import javascript unsafe "$1[\"valueAsString\"] = $2;"
+        js_setValueAsString ::
+        JSRef SVGAngle -> JSRef (Maybe 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 (unSVGAngle self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"valueAsString\"]"
+        js_getValueAsString ::
+        JSRef SVGAngle -> IO (JSRef (Maybe 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 (unSVGAngle 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef SVGAnimatedAngle -> IO (JSRef 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 ((js_getBaseVal (unSVGAnimatedAngle self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef SVGAnimatedAngle -> IO (JSRef 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 ((js_getAnimVal (unSVGAnimatedAngle self)) >>= fromJSRef)
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,44 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+        js_setBaseVal :: JSRef 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 (unSVGAnimatedBoolean self) val)
+ 
+foreign import javascript unsafe "($1[\"baseVal\"] ? 1 : 0)"
+        js_getBaseVal :: JSRef 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 (unSVGAnimatedBoolean self))
+ 
+foreign import javascript unsafe "($1[\"animVal\"] ? 1 : 0)"
+        js_getAnimVal :: JSRef 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 (unSVGAnimatedBoolean 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,44 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+        js_setBaseVal :: JSRef 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 (unSVGAnimatedEnumeration self) val)
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef 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 (unSVGAnimatedEnumeration self))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef 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 (unSVGAnimatedEnumeration 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,44 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+        js_setBaseVal :: JSRef 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 (unSVGAnimatedInteger self) val)
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef 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 (unSVGAnimatedInteger self))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef 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 (unSVGAnimatedInteger 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef SVGAnimatedLength -> IO (JSRef 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 ((js_getBaseVal (unSVGAnimatedLength self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef SVGAnimatedLength -> IO (JSRef 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 ((js_getAnimVal (unSVGAnimatedLength self)) >>= fromJSRef)
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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef SVGAnimatedLengthList -> IO (JSRef 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
+      ((js_getBaseVal (unSVGAnimatedLengthList self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef SVGAnimatedLengthList -> IO (JSRef 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
+      ((js_getAnimVal (unSVGAnimatedLengthList self)) >>= fromJSRef)
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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+        js_setBaseVal :: JSRef 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 (unSVGAnimatedNumber self) val)
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef 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 (unSVGAnimatedNumber self))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef 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 (unSVGAnimatedNumber 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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef SVGAnimatedNumberList -> IO (JSRef 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
+      ((js_getBaseVal (unSVGAnimatedNumberList self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef SVGAnimatedNumberList -> IO (JSRef 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
+      ((js_getAnimVal (unSVGAnimatedNumberList self)) >>= fromJSRef)
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,47 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef SVGAnimatedPreserveAspectRatio ->
+          IO (JSRef 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
+      ((js_getBaseVal (unSVGAnimatedPreserveAspectRatio self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef SVGAnimatedPreserveAspectRatio ->
+          IO (JSRef 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
+      ((js_getAnimVal (unSVGAnimatedPreserveAspectRatio self)) >>=
+         fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef SVGAnimatedRect -> IO (JSRef 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 ((js_getBaseVal (unSVGAnimatedRect self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef SVGAnimatedRect -> IO (JSRef 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 ((js_getAnimVal (unSVGAnimatedRect self)) >>= fromJSRef)
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,50 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"] = $2;"
+        js_setBaseVal :: JSRef 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 (unSVGAnimatedString self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef 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 (unSVGAnimatedString self)))
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef 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 (unSVGAnimatedString 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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"baseVal\"]" js_getBaseVal ::
+        JSRef SVGAnimatedTransformList -> IO (JSRef 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
+      ((js_getBaseVal (unSVGAnimatedTransformList self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animVal\"]" js_getAnimVal ::
+        JSRef SVGAnimatedTransformList -> IO (JSRef 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
+      ((js_getAnimVal (unSVGAnimatedTransformList self)) >>= fromJSRef)
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,117 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getStartTime\"]()"
+        js_getStartTime :: JSRef 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
+         (unSVGAnimationElement (toSVGAnimationElement self)))
+ 
+foreign import javascript unsafe "$1[\"getCurrentTime\"]()"
+        js_getCurrentTime :: JSRef 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
+         (unSVGAnimationElement (toSVGAnimationElement self)))
+ 
+foreign import javascript unsafe "$1[\"getSimpleDuration\"]()"
+        js_getSimpleDuration :: JSRef 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
+         (unSVGAnimationElement (toSVGAnimationElement self)))
+ 
+foreign import javascript unsafe "$1[\"beginElement\"]()"
+        js_beginElement :: JSRef 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
+         (unSVGAnimationElement (toSVGAnimationElement self)))
+ 
+foreign import javascript unsafe "$1[\"beginElementAt\"]($2)"
+        js_beginElementAt :: JSRef 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
+         (unSVGAnimationElement (toSVGAnimationElement self))
+         offset)
+ 
+foreign import javascript unsafe "$1[\"endElement\"]()"
+        js_endElement :: JSRef 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
+         (unSVGAnimationElement (toSVGAnimationElement self)))
+ 
+foreign import javascript unsafe "$1[\"endElementAt\"]($2)"
+        js_endElementAt :: JSRef 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
+         (unSVGAnimationElement (toSVGAnimationElement self))
+         offset)
+ 
+foreign import javascript unsafe "$1[\"targetElement\"]"
+        js_getTargetElement ::
+        JSRef SVGAnimationElement -> IO (JSRef 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
+      ((js_getTargetElement
+          (unSVGAnimationElement (toSVGAnimationElement self)))
+         >>= fromJSRef)
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,46 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
+        JSRef SVGCircleElement -> IO (JSRef 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 ((js_getCx (unSVGCircleElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cy\"]" js_getCy ::
+        JSRef SVGCircleElement -> IO (JSRef 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 ((js_getCy (unSVGCircleElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"r\"]" js_getR ::
+        JSRef SVGCircleElement -> IO (JSRef 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 ((js_getR (unSVGCircleElement self)) >>= fromJSRef)
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,31 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clipPathUnits\"]"
+        js_getClipPathUnits ::
+        JSRef SVGClipPathElement -> IO (JSRef 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
+      ((js_getClipPathUnits (unSVGClipPathElement self)) >>= fromJSRef)
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,88 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setRGBColor\"]($2)"
+        js_setRGBColor :: JSRef 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 (unSVGColor (toSVGColor self))
+         (toJSString rgbColor))
+ 
+foreign import javascript unsafe
+        "$1[\"setRGBColorICCColor\"]($2,\n$3)" js_setRGBColorICCColor ::
+        JSRef 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 (unSVGColor (toSVGColor self))
+         (toJSString rgbColor)
+         (toJSString iccColor))
+ 
+foreign import javascript unsafe "$1[\"setColor\"]($2, $3, $4)"
+        js_setColor ::
+        JSRef 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 (unSVGColor (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 :: JSRef 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 (unSVGColor (toSVGColor self)))
+ 
+foreign import javascript unsafe "$1[\"rgbColor\"]" js_getRgbColor
+        :: JSRef SVGColor -> IO (JSRef 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
+      ((js_getRgbColor (unSVGColor (toSVGColor self))) >>= fromJSRef)
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,146 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGComponentTransferFunctionElement ->
+          IO (JSRef 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
+      ((js_getType
+          (unSVGComponentTransferFunctionElement
+             (toSVGComponentTransferFunctionElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"tableValues\"]"
+        js_getTableValues ::
+        JSRef SVGComponentTransferFunctionElement ->
+          IO (JSRef 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
+      ((js_getTableValues
+          (unSVGComponentTransferFunctionElement
+             (toSVGComponentTransferFunctionElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"slope\"]" js_getSlope ::
+        JSRef SVGComponentTransferFunctionElement ->
+          IO (JSRef 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
+      ((js_getSlope
+          (unSVGComponentTransferFunctionElement
+             (toSVGComponentTransferFunctionElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"intercept\"]"
+        js_getIntercept ::
+        JSRef SVGComponentTransferFunctionElement ->
+          IO (JSRef 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
+      ((js_getIntercept
+          (unSVGComponentTransferFunctionElement
+             (toSVGComponentTransferFunctionElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"amplitude\"]"
+        js_getAmplitude ::
+        JSRef SVGComponentTransferFunctionElement ->
+          IO (JSRef 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
+      ((js_getAmplitude
+          (unSVGComponentTransferFunctionElement
+             (toSVGComponentTransferFunctionElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"exponent\"]" js_getExponent
+        ::
+        JSRef SVGComponentTransferFunctionElement ->
+          IO (JSRef 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
+      ((js_getExponent
+          (unSVGComponentTransferFunctionElement
+             (toSVGComponentTransferFunctionElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"offset\"]" js_getOffset ::
+        JSRef SVGComponentTransferFunctionElement ->
+          IO (JSRef 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
+      ((js_getOffset
+          (unSVGComponentTransferFunctionElement
+             (toSVGComponentTransferFunctionElement self)))
+         >>= fromJSRef)
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,37 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGCursorElement -> IO (JSRef 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 ((js_getX (unSVGCursorElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGCursorElement -> IO (JSRef 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 ((js_getY (unSVGCursorElement self)) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"createEvent\"]($2)"
+        js_createEvent :: JSRef SVGDocument -> JSString -> IO (JSRef 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
+      ((js_createEvent (unSVGDocument self) (toJSString eventType)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rootElement\"]"
+        js_getRootElement :: JSRef SVGDocument -> IO (JSRef 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 ((js_getRootElement (unSVGDocument self)) >>= fromJSRef)
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,175 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getPresentationAttribute\"]($2)" js_getPresentationAttribute
+        :: JSRef SVGElement -> JSString -> IO (JSRef 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
+      ((js_getPresentationAttribute (unSVGElement (toSVGElement self))
+          (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"xmlbase\"] = $2;"
+        js_setXmlbase ::
+        JSRef SVGElement -> JSRef (Maybe 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 (unSVGElement (toSVGElement self))
+         (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"xmlbase\"]" js_getXmlbase ::
+        JSRef SVGElement -> IO (JSRef (Maybe 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 (unSVGElement (toSVGElement self))))
+ 
+foreign import javascript unsafe "$1[\"ownerSVGElement\"]"
+        js_getOwnerSVGElement ::
+        JSRef SVGElement -> IO (JSRef 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
+      ((js_getOwnerSVGElement (unSVGElement (toSVGElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"viewportElement\"]"
+        js_getViewportElement :: JSRef SVGElement -> IO (JSRef 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
+      ((js_getViewportElement (unSVGElement (toSVGElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"xmllang\"] = $2;"
+        js_setXmllang :: JSRef 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 (unSVGElement (toSVGElement self)) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"xmllang\"]" js_getXmllang ::
+        JSRef 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 (unSVGElement (toSVGElement self))))
+ 
+foreign import javascript unsafe "$1[\"xmlspace\"] = $2;"
+        js_setXmlspace :: JSRef 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 (unSVGElement (toSVGElement self))
+         (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"xmlspace\"]" js_getXmlspace
+        :: JSRef 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 (unSVGElement (toSVGElement self))))
+ 
+foreign import javascript unsafe "$1[\"className\"]"
+        js_getClassName :: JSRef SVGElement -> IO (JSRef 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
+      ((js_getClassName (unSVGElement (toSVGElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        JSRef SVGElement -> IO (JSRef 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
+      ((js_getStyle (unSVGElement (toSVGElement self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"tabIndex\"] = $2;"
+        js_setTabIndex :: JSRef 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 (unSVGElement (toSVGElement self)) val)
+ 
+foreign import javascript unsafe "$1[\"tabIndex\"]" js_getTabIndex
+        :: JSRef 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 (unSVGElement (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,56 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
+        JSRef SVGEllipseElement -> IO (JSRef 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 ((js_getCx (unSVGEllipseElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cy\"]" js_getCy ::
+        JSRef SVGEllipseElement -> IO (JSRef 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 ((js_getCy (unSVGEllipseElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rx\"]" js_getRx ::
+        JSRef SVGEllipseElement -> IO (JSRef 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 ((js_getRx (unSVGEllipseElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"ry\"]" js_getRy ::
+        JSRef SVGEllipseElement -> IO (JSRef 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 ((js_getRy (unSVGEllipseElement self)) >>= fromJSRef)
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,35 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"externalResourcesRequired\"]" js_getExternalResourcesRequired
+        ::
+        JSRef SVGExternalResourcesRequired -> IO (JSRef 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
+      ((js_getExternalResourcesRequired
+          (unSVGExternalResourcesRequired self))
+         >>= fromJSRef)
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,56 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGFEBlendElement -> IO (JSRef 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 ((js_getIn1 (unSVGFEBlendElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"in2\"]" js_getIn2 ::
+        JSRef SVGFEBlendElement -> IO (JSRef 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 ((js_getIn2 (unSVGFEBlendElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"mode\"]" js_getMode ::
+        JSRef SVGFEBlendElement -> IO (JSRef 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 ((js_getMode (unSVGFEBlendElement self)) >>= fromJSRef)
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,63 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGFEColorMatrixElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFEColorMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef SVGFEColorMatrixElement -> IO (JSRef 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
+      ((js_getType (unSVGFEColorMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"values\"]" js_getValues ::
+        JSRef SVGFEColorMatrixElement -> IO (JSRef 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
+      ((js_getValues (unSVGFEColorMatrixElement self)) >>= fromJSRef)
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,31 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        JSRef SVGFEComponentTransferElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFEComponentTransferElement self)) >>= fromJSRef)
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,100 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGFECompositeElement -> IO (JSRef 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 ((js_getIn1 (unSVGFECompositeElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"in2\"]" js_getIn2 ::
+        JSRef SVGFECompositeElement -> IO (JSRef 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 ((js_getIn2 (unSVGFECompositeElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"operator\"]" js_getOperator
+        :: JSRef SVGFECompositeElement -> IO (JSRef 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
+      ((js_getOperator (unSVGFECompositeElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"k1\"]" js_getK1 ::
+        JSRef SVGFECompositeElement -> IO (JSRef 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 ((js_getK1 (unSVGFECompositeElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"k2\"]" js_getK2 ::
+        JSRef SVGFECompositeElement -> IO (JSRef 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 ((js_getK2 (unSVGFECompositeElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"k3\"]" js_getK3 ::
+        JSRef SVGFECompositeElement -> IO (JSRef 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 ((js_getK3 (unSVGFECompositeElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"k4\"]" js_getK4 ::
+        JSRef SVGFECompositeElement -> IO (JSRef 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 ((js_getK4 (unSVGFECompositeElement self)) >>= fromJSRef)
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,175 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFEConvolveMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"orderX\"]" js_getOrderX ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getOrderX (unSVGFEConvolveMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"orderY\"]" js_getOrderY ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getOrderY (unSVGFEConvolveMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"kernelMatrix\"]"
+        js_getKernelMatrix ::
+        JSRef SVGFEConvolveMatrixElement ->
+          IO (JSRef 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
+      ((js_getKernelMatrix (unSVGFEConvolveMatrixElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"divisor\"]" js_getDivisor ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getDivisor (unSVGFEConvolveMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"bias\"]" js_getBias ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getBias (unSVGFEConvolveMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"targetX\"]" js_getTargetX ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getTargetX (unSVGFEConvolveMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"targetY\"]" js_getTargetY ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getTargetY (unSVGFEConvolveMatrixElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"edgeMode\"]" js_getEdgeMode
+        ::
+        JSRef SVGFEConvolveMatrixElement ->
+          IO (JSRef 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
+      ((js_getEdgeMode (unSVGFEConvolveMatrixElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"kernelUnitLengthX\"]"
+        js_getKernelUnitLengthX ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getKernelUnitLengthX (unSVGFEConvolveMatrixElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"kernelUnitLengthY\"]"
+        js_getKernelUnitLengthY ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getKernelUnitLengthY (unSVGFEConvolveMatrixElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"preserveAlpha\"]"
+        js_getPreserveAlpha ::
+        JSRef SVGFEConvolveMatrixElement -> IO (JSRef 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
+      ((js_getPreserveAlpha (unSVGFEConvolveMatrixElement self)) >>=
+         fromJSRef)
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,86 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        JSRef SVGFEDiffuseLightingElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFEDiffuseLightingElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"surfaceScale\"]"
+        js_getSurfaceScale ::
+        JSRef SVGFEDiffuseLightingElement -> IO (JSRef 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
+      ((js_getSurfaceScale (unSVGFEDiffuseLightingElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"diffuseConstant\"]"
+        js_getDiffuseConstant ::
+        JSRef SVGFEDiffuseLightingElement -> IO (JSRef 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
+      ((js_getDiffuseConstant (unSVGFEDiffuseLightingElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"kernelUnitLengthX\"]"
+        js_getKernelUnitLengthX ::
+        JSRef SVGFEDiffuseLightingElement -> IO (JSRef 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
+      ((js_getKernelUnitLengthX (unSVGFEDiffuseLightingElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"kernelUnitLengthY\"]"
+        js_getKernelUnitLengthY ::
+        JSRef SVGFEDiffuseLightingElement -> IO (JSRef 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
+      ((js_getKernelUnitLengthY (unSVGFEDiffuseLightingElement self)) >>=
+         fromJSRef)
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,90 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGFEDisplacementMapElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFEDisplacementMapElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"in2\"]" js_getIn2 ::
+        JSRef SVGFEDisplacementMapElement -> IO (JSRef 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
+      ((js_getIn2 (unSVGFEDisplacementMapElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"scale\"]" js_getScale ::
+        JSRef SVGFEDisplacementMapElement -> IO (JSRef 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
+      ((js_getScale (unSVGFEDisplacementMapElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"xChannelSelector\"]"
+        js_getXChannelSelector ::
+        JSRef SVGFEDisplacementMapElement ->
+          IO (JSRef 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
+      ((js_getXChannelSelector (unSVGFEDisplacementMapElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"yChannelSelector\"]"
+        js_getYChannelSelector ::
+        JSRef SVGFEDisplacementMapElement ->
+          IO (JSRef 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
+      ((js_getYChannelSelector (unSVGFEDisplacementMapElement self)) >>=
+         fromJSRef)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"azimuth\"]" js_getAzimuth ::
+        JSRef SVGFEDistantLightElement -> IO (JSRef 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
+      ((js_getAzimuth (unSVGFEDistantLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"elevation\"]"
+        js_getElevation ::
+        JSRef SVGFEDistantLightElement -> IO (JSRef 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
+      ((js_getElevation (unSVGFEDistantLightElement self)) >>= fromJSRef)
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,90 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setStdDeviation\"]($2, $3)"
+        js_setStdDeviation ::
+        JSRef 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 (unSVGFEDropShadowElement self) stdDeviationX
+         stdDeviationY)
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        JSRef SVGFEDropShadowElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFEDropShadowElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"dx\"]" js_getDx ::
+        JSRef SVGFEDropShadowElement -> IO (JSRef 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 ((js_getDx (unSVGFEDropShadowElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"dy\"]" js_getDy ::
+        JSRef SVGFEDropShadowElement -> IO (JSRef 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 ((js_getDy (unSVGFEDropShadowElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"stdDeviationX\"]"
+        js_getStdDeviationX ::
+        JSRef SVGFEDropShadowElement -> IO (JSRef 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
+      ((js_getStdDeviationX (unSVGFEDropShadowElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"stdDeviationY\"]"
+        js_getStdDeviationY ::
+        JSRef SVGFEDropShadowElement -> IO (JSRef 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
+      ((js_getStdDeviationY (unSVGFEDropShadowElement self)) >>=
+         fromJSRef)
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,88 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setStdDeviation\"]($2, $3)"
+        js_setStdDeviation ::
+        JSRef 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 (unSVGFEGaussianBlurElement 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 ::
+        JSRef SVGFEGaussianBlurElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFEGaussianBlurElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"stdDeviationX\"]"
+        js_getStdDeviationX ::
+        JSRef SVGFEGaussianBlurElement -> IO (JSRef 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
+      ((js_getStdDeviationX (unSVGFEGaussianBlurElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"stdDeviationY\"]"
+        js_getStdDeviationY ::
+        JSRef SVGFEGaussianBlurElement -> IO (JSRef 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
+      ((js_getStdDeviationY (unSVGFEGaussianBlurElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"edgeMode\"]" js_getEdgeMode
+        ::
+        JSRef SVGFEGaussianBlurElement -> IO (JSRef 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
+      ((js_getEdgeMode (unSVGFEGaussianBlurElement self)) >>= fromJSRef)
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,33 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"preserveAspectRatio\"]"
+        js_getPreserveAspectRatio ::
+        JSRef SVGFEImageElement ->
+          IO (JSRef 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
+      ((js_getPreserveAspectRatio (unSVGFEImageElement self)) >>=
+         fromJSRef)
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,28 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        JSRef SVGFEMergeNodeElement -> IO (JSRef 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 ((js_getIn1 (unSVGFEMergeNodeElement self)) >>= fromJSRef)
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,82 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setRadius\"]($2, $3)"
+        js_setRadius ::
+        JSRef 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 (unSVGFEMorphologyElement 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 ::
+        JSRef SVGFEMorphologyElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFEMorphologyElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"operator\"]" js_getOperator
+        ::
+        JSRef SVGFEMorphologyElement -> IO (JSRef 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
+      ((js_getOperator (unSVGFEMorphologyElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"radiusX\"]" js_getRadiusX ::
+        JSRef SVGFEMorphologyElement -> IO (JSRef 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
+      ((js_getRadiusX (unSVGFEMorphologyElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"radiusY\"]" js_getRadiusY ::
+        JSRef SVGFEMorphologyElement -> IO (JSRef 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
+      ((js_getRadiusY (unSVGFEMorphologyElement self)) >>= fromJSRef)
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,47 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        JSRef SVGFEOffsetElement -> IO (JSRef 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 ((js_getIn1 (unSVGFEOffsetElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"dx\"]" js_getDx ::
+        JSRef SVGFEOffsetElement -> IO (JSRef 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 ((js_getDx (unSVGFEOffsetElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"dy\"]" js_getDy ::
+        JSRef SVGFEOffsetElement -> IO (JSRef 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 ((js_getDy (unSVGFEOffsetElement self)) >>= fromJSRef)
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,50 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGFEPointLightElement -> IO (JSRef 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 ((js_getX (unSVGFEPointLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGFEPointLightElement -> IO (JSRef 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 ((js_getY (unSVGFEPointLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"z\"]" js_getZ ::
+        JSRef SVGFEPointLightElement -> IO (JSRef 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 ((js_getZ (unSVGFEPointLightElement self)) >>= fromJSRef)
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,72 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        JSRef SVGFESpecularLightingElement -> IO (JSRef 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
+      ((js_getIn1 (unSVGFESpecularLightingElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"surfaceScale\"]"
+        js_getSurfaceScale ::
+        JSRef SVGFESpecularLightingElement -> IO (JSRef 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
+      ((js_getSurfaceScale (unSVGFESpecularLightingElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"specularConstant\"]"
+        js_getSpecularConstant ::
+        JSRef SVGFESpecularLightingElement -> IO (JSRef 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
+      ((js_getSpecularConstant (unSVGFESpecularLightingElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"specularExponent\"]"
+        js_getSpecularExponent ::
+        JSRef SVGFESpecularLightingElement -> IO (JSRef 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
+      ((js_getSpecularExponent (unSVGFESpecularLightingElement self)) >>=
+         fromJSRef)
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,107 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGFESpotLightElement -> IO (JSRef 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 ((js_getX (unSVGFESpotLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGFESpotLightElement -> IO (JSRef 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 ((js_getY (unSVGFESpotLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"z\"]" js_getZ ::
+        JSRef SVGFESpotLightElement -> IO (JSRef 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 ((js_getZ (unSVGFESpotLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pointsAtX\"]"
+        js_getPointsAtX ::
+        JSRef SVGFESpotLightElement -> IO (JSRef 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
+      ((js_getPointsAtX (unSVGFESpotLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pointsAtY\"]"
+        js_getPointsAtY ::
+        JSRef SVGFESpotLightElement -> IO (JSRef 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
+      ((js_getPointsAtY (unSVGFESpotLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pointsAtZ\"]"
+        js_getPointsAtZ ::
+        JSRef SVGFESpotLightElement -> IO (JSRef 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
+      ((js_getPointsAtZ (unSVGFESpotLightElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"specularExponent\"]"
+        js_getSpecularExponent ::
+        JSRef SVGFESpotLightElement -> IO (JSRef 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
+      ((js_getSpecularExponent (unSVGFESpotLightElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"limitingConeAngle\"]"
+        js_getLimitingConeAngle ::
+        JSRef SVGFESpotLightElement -> IO (JSRef 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
+      ((js_getLimitingConeAngle (unSVGFESpotLightElement self)) >>=
+         fromJSRef)
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,28 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"in1\"]" js_getIn1 ::
+        JSRef SVGFETileElement -> IO (JSRef 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 ((js_getIn1 (unSVGFETileElement self)) >>= fromJSRef)
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,105 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGFETurbulenceElement -> IO (JSRef 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
+      ((js_getBaseFrequencyX (unSVGFETurbulenceElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"baseFrequencyY\"]"
+        js_getBaseFrequencyY ::
+        JSRef SVGFETurbulenceElement -> IO (JSRef 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
+      ((js_getBaseFrequencyY (unSVGFETurbulenceElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"numOctaves\"]"
+        js_getNumOctaves ::
+        JSRef SVGFETurbulenceElement -> IO (JSRef 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
+      ((js_getNumOctaves (unSVGFETurbulenceElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"seed\"]" js_getSeed ::
+        JSRef SVGFETurbulenceElement -> IO (JSRef 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
+      ((js_getSeed (unSVGFETurbulenceElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"stitchTiles\"]"
+        js_getStitchTiles ::
+        JSRef SVGFETurbulenceElement -> IO (JSRef 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
+      ((js_getStitchTiles (unSVGFETurbulenceElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef SVGFETurbulenceElement -> IO (JSRef 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
+      ((js_getType (unSVGFETurbulenceElement self)) >>= fromJSRef)
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,112 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setFilterRes\"]($2, $3)"
+        js_setFilterRes :: JSRef 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 (unSVGFilterElement self) filterResX filterResY)
+ 
+foreign import javascript unsafe "$1[\"filterUnits\"]"
+        js_getFilterUnits ::
+        JSRef SVGFilterElement -> IO (JSRef 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
+      ((js_getFilterUnits (unSVGFilterElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"primitiveUnits\"]"
+        js_getPrimitiveUnits ::
+        JSRef SVGFilterElement -> IO (JSRef 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
+      ((js_getPrimitiveUnits (unSVGFilterElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGFilterElement -> IO (JSRef 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 ((js_getX (unSVGFilterElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGFilterElement -> IO (JSRef 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 ((js_getY (unSVGFilterElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGFilterElement -> IO (JSRef 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 ((js_getWidth (unSVGFilterElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGFilterElement -> IO (JSRef 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 ((js_getHeight (unSVGFilterElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"filterResX\"]"
+        js_getFilterResX ::
+        JSRef SVGFilterElement -> IO (JSRef 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
+      ((js_getFilterResX (unSVGFilterElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"filterResY\"]"
+        js_getFilterResY ::
+        JSRef SVGFilterElement -> IO (JSRef 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
+      ((js_getFilterResY (unSVGFilterElement self)) >>= fromJSRef)
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,87 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGFilterPrimitiveStandardAttributes ->
+          IO (JSRef 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
+      ((js_getX (unSVGFilterPrimitiveStandardAttributes self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGFilterPrimitiveStandardAttributes ->
+          IO (JSRef 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
+      ((js_getY (unSVGFilterPrimitiveStandardAttributes self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGFilterPrimitiveStandardAttributes ->
+          IO (JSRef 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
+      ((js_getWidth (unSVGFilterPrimitiveStandardAttributes self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGFilterPrimitiveStandardAttributes ->
+          IO (JSRef 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
+      ((js_getHeight (unSVGFilterPrimitiveStandardAttributes self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"result\"]" js_getResult ::
+        JSRef SVGFilterPrimitiveStandardAttributes ->
+          IO (JSRef 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
+      ((js_getResult (unSVGFilterPrimitiveStandardAttributes self)) >>=
+         fromJSRef)
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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"viewBox\"]" js_getViewBox ::
+        JSRef SVGFitToViewBox -> IO (JSRef 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 ((js_getViewBox (unSVGFitToViewBox self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"preserveAspectRatio\"]"
+        js_getPreserveAspectRatio ::
+        JSRef SVGFitToViewBox -> IO (JSRef 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
+      ((js_getPreserveAspectRatio (unSVGFitToViewBox self)) >>=
+         fromJSRef)
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,62 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGForeignObjectElement -> IO (JSRef 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 ((js_getX (unSVGForeignObjectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGForeignObjectElement -> IO (JSRef 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 ((js_getY (unSVGForeignObjectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGForeignObjectElement -> IO (JSRef 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
+      ((js_getWidth (unSVGForeignObjectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGForeignObjectElement -> IO (JSRef 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
+      ((js_getHeight (unSVGForeignObjectElement self)) >>= fromJSRef)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"glyphRef\"] = $2;"
+        js_setGlyphRef :: JSRef 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 (unSVGGlyphRefElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"glyphRef\"]" js_getGlyphRef
+        :: JSRef 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 (unSVGGlyphRefElement self)))
+ 
+foreign import javascript unsafe "$1[\"format\"] = $2;"
+        js_setFormat :: JSRef 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 (unSVGGlyphRefElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"format\"]" js_getFormat ::
+        JSRef 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 (unSVGGlyphRefElement self)))
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGGlyphRefElement self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGGlyphRefElement self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGGlyphRefElement self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGGlyphRefElement self))
+ 
+foreign import javascript unsafe "$1[\"dx\"] = $2;" js_setDx ::
+        JSRef 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 (unSVGGlyphRefElement self) val)
+ 
+foreign import javascript unsafe "$1[\"dx\"]" js_getDx ::
+        JSRef 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 (unSVGGlyphRefElement self))
+ 
+foreign import javascript unsafe "$1[\"dy\"] = $2;" js_setDy ::
+        JSRef 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 (unSVGGlyphRefElement self) val)
+ 
+foreign import javascript unsafe "$1[\"dy\"]" js_getDy ::
+        JSRef 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 (unSVGGlyphRefElement 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,70 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGGradientElement -> IO (JSRef 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
+      ((js_getGradientUnits
+          (unSVGGradientElement (toSVGGradientElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"gradientTransform\"]"
+        js_getGradientTransform ::
+        JSRef SVGGradientElement -> IO (JSRef 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
+      ((js_getGradientTransform
+          (unSVGGradientElement (toSVGGradientElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"spreadMethod\"]"
+        js_getSpreadMethod ::
+        JSRef SVGGradientElement -> IO (JSRef 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
+      ((js_getSpreadMethod
+          (unSVGGradientElement (toSVGGradientElement self)))
+         >>= fromJSRef)
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,118 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getBBox\"]()" js_getBBox ::
+        JSRef SVGGraphicsElement -> IO (JSRef 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
+      ((js_getBBox (unSVGGraphicsElement (toSVGGraphicsElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getCTM\"]()" js_getCTM ::
+        JSRef SVGGraphicsElement -> IO (JSRef 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
+      ((js_getCTM (unSVGGraphicsElement (toSVGGraphicsElement self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getScreenCTM\"]()"
+        js_getScreenCTM :: JSRef SVGGraphicsElement -> IO (JSRef 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
+      ((js_getScreenCTM
+          (unSVGGraphicsElement (toSVGGraphicsElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getTransformToElement\"]($2)" js_getTransformToElement ::
+        JSRef SVGGraphicsElement ->
+          JSRef SVGElement -> IO (JSRef 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
+      ((js_getTransformToElement
+          (unSVGGraphicsElement (toSVGGraphicsElement self))
+          (maybe jsNull (unSVGElement . toSVGElement) element))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"transform\"]"
+        js_getTransform ::
+        JSRef SVGGraphicsElement -> IO (JSRef 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
+      ((js_getTransform
+          (unSVGGraphicsElement (toSVGGraphicsElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"nearestViewportElement\"]"
+        js_getNearestViewportElement ::
+        JSRef SVGGraphicsElement -> IO (JSRef 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
+      ((js_getNearestViewportElement
+          (unSVGGraphicsElement (toSVGGraphicsElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"farthestViewportElement\"]"
+        js_getFarthestViewportElement ::
+        JSRef SVGGraphicsElement -> IO (JSRef 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
+      ((js_getFarthestViewportElement
+          (unSVGGraphicsElement (toSVGGraphicsElement self)))
+         >>= fromJSRef)
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,69 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGImageElement -> IO (JSRef 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 ((js_getX (unSVGImageElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGImageElement -> IO (JSRef 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 ((js_getY (unSVGImageElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGImageElement -> IO (JSRef 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 ((js_getWidth (unSVGImageElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGImageElement -> IO (JSRef 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 ((js_getHeight (unSVGImageElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"preserveAspectRatio\"]"
+        js_getPreserveAspectRatio ::
+        JSRef SVGImageElement -> IO (JSRef 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
+      ((js_getPreserveAspectRatio (unSVGImageElement self)) >>=
+         fromJSRef)
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,123 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"newValueSpecifiedUnits\"]($2,\n$3)" js_newValueSpecifiedUnits
+        :: JSRef 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 (unSVGLength self) unitType
+         valueInSpecifiedUnits)
+ 
+foreign import javascript unsafe
+        "$1[\"convertToSpecifiedUnits\"]($2)" js_convertToSpecifiedUnits ::
+        JSRef 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 (unSVGLength 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
+        :: JSRef 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 (unSVGLength self))
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unSVGLength self) val)
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unSVGLength self))
+ 
+foreign import javascript unsafe
+        "$1[\"valueInSpecifiedUnits\"] = $2;" js_setValueInSpecifiedUnits
+        :: JSRef 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 (unSVGLength self) val)
+ 
+foreign import javascript unsafe "$1[\"valueInSpecifiedUnits\"]"
+        js_getValueInSpecifiedUnits :: JSRef 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 (unSVGLength self))
+ 
+foreign import javascript unsafe "$1[\"valueAsString\"] = $2;"
+        js_setValueAsString ::
+        JSRef SVGLength -> JSRef (Maybe 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 (unSVGLength self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"valueAsString\"]"
+        js_getValueAsString ::
+        JSRef SVGLength -> IO (JSRef (Maybe 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 (unSVGLength 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,117 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unSVGLengthList self))
+ 
+foreign import javascript unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        JSRef SVGLengthList -> JSRef SVGLength -> IO (JSRef 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
+      ((js_initialize (unSVGLengthList self)
+          (maybe jsNull pToJSRef item))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: JSRef SVGLengthList -> Word -> IO (JSRef 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 ((js_getItem (unSVGLengthList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        JSRef SVGLengthList ->
+          JSRef SVGLength -> Word -> IO (JSRef 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
+      ((js_insertItemBefore (unSVGLengthList self)
+          (maybe jsNull pToJSRef item)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        JSRef SVGLengthList ->
+          JSRef SVGLength -> Word -> IO (JSRef 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
+      ((js_replaceItem (unSVGLengthList self)
+          (maybe jsNull pToJSRef item)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem ::
+        JSRef SVGLengthList -> Word -> IO (JSRef 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
+      ((js_removeItem (unSVGLengthList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        JSRef SVGLengthList -> JSRef SVGLength -> IO (JSRef 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
+      ((js_appendItem (unSVGLengthList self)
+          (maybe jsNull pToJSRef item))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"numberOfItems\"]"
+        js_getNumberOfItems :: JSRef 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 (unSVGLengthList self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
+        JSRef SVGLineElement -> IO (JSRef 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 ((js_getX1 (unSVGLineElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y1\"]" js_getY1 ::
+        JSRef SVGLineElement -> IO (JSRef 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 ((js_getY1 (unSVGLineElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"x2\"]" js_getX2 ::
+        JSRef SVGLineElement -> IO (JSRef 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 ((js_getX2 (unSVGLineElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y2\"]" js_getY2 ::
+        JSRef SVGLineElement -> IO (JSRef 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 ((js_getY2 (unSVGLineElement self)) >>= fromJSRef)
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,64 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
+        JSRef SVGLinearGradientElement -> IO (JSRef 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
+      ((js_getX1 (unSVGLinearGradientElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y1\"]" js_getY1 ::
+        JSRef SVGLinearGradientElement -> IO (JSRef 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
+      ((js_getY1 (unSVGLinearGradientElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"x2\"]" js_getX2 ::
+        JSRef SVGLinearGradientElement -> IO (JSRef 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
+      ((js_getX2 (unSVGLinearGradientElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y2\"]" js_getY2 ::
+        JSRef SVGLinearGradientElement -> IO (JSRef 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
+      ((js_getY2 (unSVGLinearGradientElement self)) >>= fromJSRef)
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,126 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setOrientToAuto\"]()"
+        js_setOrientToAuto :: JSRef 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 (unSVGMarkerElement self))
+ 
+foreign import javascript unsafe "$1[\"setOrientToAngle\"]($2)"
+        js_setOrientToAngle ::
+        JSRef SVGMarkerElement -> JSRef 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 (unSVGMarkerElement self)
+         (maybe jsNull pToJSRef 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 ::
+        JSRef SVGMarkerElement -> IO (JSRef 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 ((js_getRefX (unSVGMarkerElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"refY\"]" js_getRefY ::
+        JSRef SVGMarkerElement -> IO (JSRef 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 ((js_getRefY (unSVGMarkerElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"markerUnits\"]"
+        js_getMarkerUnits ::
+        JSRef SVGMarkerElement -> IO (JSRef 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
+      ((js_getMarkerUnits (unSVGMarkerElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"markerWidth\"]"
+        js_getMarkerWidth ::
+        JSRef SVGMarkerElement -> IO (JSRef 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
+      ((js_getMarkerWidth (unSVGMarkerElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"markerHeight\"]"
+        js_getMarkerHeight ::
+        JSRef SVGMarkerElement -> IO (JSRef 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
+      ((js_getMarkerHeight (unSVGMarkerElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"orientType\"]"
+        js_getOrientType ::
+        JSRef SVGMarkerElement -> IO (JSRef 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
+      ((js_getOrientType (unSVGMarkerElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"orientAngle\"]"
+        js_getOrientAngle ::
+        JSRef SVGMarkerElement -> IO (JSRef 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
+      ((js_getOrientAngle (unSVGMarkerElement self)) >>= fromJSRef)
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,78 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"maskUnits\"]"
+        js_getMaskUnits ::
+        JSRef SVGMaskElement -> IO (JSRef 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 ((js_getMaskUnits (unSVGMaskElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"maskContentUnits\"]"
+        js_getMaskContentUnits ::
+        JSRef SVGMaskElement -> IO (JSRef 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
+      ((js_getMaskContentUnits (unSVGMaskElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGMaskElement -> IO (JSRef 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 ((js_getX (unSVGMaskElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGMaskElement -> IO (JSRef 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 ((js_getY (unSVGMaskElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGMaskElement -> IO (JSRef 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 ((js_getWidth (unSVGMaskElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGMaskElement -> IO (JSRef 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 ((js_getHeight (unSVGMaskElement self)) >>= fromJSRef)
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,208 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"multiply\"]($2)" js_multiply
+        :: JSRef SVGMatrix -> JSRef SVGMatrix -> IO (JSRef 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
+      ((js_multiply (unSVGMatrix self)
+          (maybe jsNull pToJSRef secondMatrix))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"inverse\"]()" js_inverse ::
+        JSRef SVGMatrix -> IO (JSRef 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 ((js_inverse (unSVGMatrix self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"translate\"]($2, $3)"
+        js_translate ::
+        JSRef SVGMatrix -> Float -> Float -> IO (JSRef 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 ((js_translate (unSVGMatrix self) x y) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"scale\"]($2)" js_scale ::
+        JSRef SVGMatrix -> Float -> IO (JSRef 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 ((js_scale (unSVGMatrix self) scaleFactor) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"scaleNonUniform\"]($2, $3)"
+        js_scaleNonUniform ::
+        JSRef SVGMatrix -> Float -> Float -> IO (JSRef 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
+      ((js_scaleNonUniform (unSVGMatrix self) scaleFactorX scaleFactorY)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rotate\"]($2)" js_rotate ::
+        JSRef SVGMatrix -> Float -> IO (JSRef 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 ((js_rotate (unSVGMatrix self) angle) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rotateFromVector\"]($2, $3)"
+        js_rotateFromVector ::
+        JSRef SVGMatrix -> Float -> Float -> IO (JSRef 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
+      ((js_rotateFromVector (unSVGMatrix self) x y) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"flipX\"]()" js_flipX ::
+        JSRef SVGMatrix -> IO (JSRef 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 ((js_flipX (unSVGMatrix self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"flipY\"]()" js_flipY ::
+        JSRef SVGMatrix -> IO (JSRef 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 ((js_flipY (unSVGMatrix self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"skewX\"]($2)" js_skewX ::
+        JSRef SVGMatrix -> Float -> IO (JSRef 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 ((js_skewX (unSVGMatrix self) angle) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"skewY\"]($2)" js_skewY ::
+        JSRef SVGMatrix -> Float -> IO (JSRef 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 ((js_skewY (unSVGMatrix self) angle) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"a\"] = $2;" js_setA ::
+        JSRef 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 (unSVGMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"a\"]" js_getA ::
+        JSRef 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 (unSVGMatrix self))
+ 
+foreign import javascript unsafe "$1[\"b\"] = $2;" js_setB ::
+        JSRef 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 (unSVGMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"b\"]" js_getB ::
+        JSRef 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 (unSVGMatrix self))
+ 
+foreign import javascript unsafe "$1[\"c\"] = $2;" js_setC ::
+        JSRef 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 (unSVGMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"c\"]" js_getC ::
+        JSRef 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 (unSVGMatrix self))
+ 
+foreign import javascript unsafe "$1[\"d\"] = $2;" js_setD ::
+        JSRef 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 (unSVGMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"d\"]" js_getD ::
+        JSRef 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 (unSVGMatrix self))
+ 
+foreign import javascript unsafe "$1[\"e\"] = $2;" js_setE ::
+        JSRef 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 (unSVGMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"e\"]" js_getE ::
+        JSRef 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 (unSVGMatrix self))
+ 
+foreign import javascript unsafe "$1[\"f\"] = $2;" js_setF ::
+        JSRef 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 (unSVGMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"f\"]" js_getF ::
+        JSRef 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 (unSVGMatrix 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"value\"] = $2;" js_setValue
+        :: JSRef 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 (unSVGNumber self) val)
+ 
+foreign import javascript unsafe "$1[\"value\"]" js_getValue ::
+        JSRef 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 (unSVGNumber 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,117 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unSVGNumberList self))
+ 
+foreign import javascript unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        JSRef SVGNumberList -> JSRef SVGNumber -> IO (JSRef 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
+      ((js_initialize (unSVGNumberList self)
+          (maybe jsNull pToJSRef item))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: JSRef SVGNumberList -> Word -> IO (JSRef 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 ((js_getItem (unSVGNumberList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        JSRef SVGNumberList ->
+          JSRef SVGNumber -> Word -> IO (JSRef 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
+      ((js_insertItemBefore (unSVGNumberList self)
+          (maybe jsNull pToJSRef item)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        JSRef SVGNumberList ->
+          JSRef SVGNumber -> Word -> IO (JSRef 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
+      ((js_replaceItem (unSVGNumberList self)
+          (maybe jsNull pToJSRef item)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem ::
+        JSRef SVGNumberList -> Word -> IO (JSRef 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
+      ((js_removeItem (unSVGNumberList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        JSRef SVGNumberList -> JSRef SVGNumber -> IO (JSRef 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
+      ((js_appendItem (unSVGNumberList self)
+          (maybe jsNull pToJSRef item))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"numberOfItems\"]"
+        js_getNumberOfItems :: JSRef 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 (unSVGNumberList 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,75 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setUri\"]($2)" js_setUri ::
+        JSRef 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 (unSVGPaint self) (toJSString uri))
+ 
+foreign import javascript unsafe "$1[\"setPaint\"]($2, $3, $4, $5)"
+        js_setPaint ::
+        JSRef 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 (unSVGPaint 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 :: JSRef 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 (unSVGPaint self))
+ 
+foreign import javascript unsafe "$1[\"uri\"]" js_getUri ::
+        JSRef 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 (unSVGPaint 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,513 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getTotalLength\"]()"
+        js_getTotalLength :: JSRef 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 (unSVGPathElement self))
+ 
+foreign import javascript unsafe "$1[\"getPointAtLength\"]($2)"
+        js_getPointAtLength ::
+        JSRef SVGPathElement -> Float -> IO (JSRef 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
+      ((js_getPointAtLength (unSVGPathElement self) distance) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getPathSegAtLength\"]($2)"
+        js_getPathSegAtLength :: JSRef 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 (unSVGPathElement self) distance)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegClosePath\"]()" js_createSVGPathSegClosePath
+        :: JSRef SVGPathElement -> IO (JSRef 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
+      ((js_createSVGPathSegClosePath (unSVGPathElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegMovetoAbs\"]($2,\n$3)"
+        js_createSVGPathSegMovetoAbs ::
+        JSRef SVGPathElement ->
+          Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegMovetoAbs (unSVGPathElement self) x y) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegMovetoRel\"]($2,\n$3)"
+        js_createSVGPathSegMovetoRel ::
+        JSRef SVGPathElement ->
+          Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegMovetoRel (unSVGPathElement self) x y) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoAbs\"]($2,\n$3)"
+        js_createSVGPathSegLinetoAbs ::
+        JSRef SVGPathElement ->
+          Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegLinetoAbs (unSVGPathElement self) x y) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoRel\"]($2,\n$3)"
+        js_createSVGPathSegLinetoRel ::
+        JSRef SVGPathElement ->
+          Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegLinetoRel (unSVGPathElement self) x y) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoCubicAbs\"]($2,\n$3, $4, $5, $6, $7)"
+        js_createSVGPathSegCurvetoCubicAbs ::
+        JSRef SVGPathElement ->
+          Float ->
+            Float ->
+              Float ->
+                Float -> Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegCurvetoCubicAbs (unSVGPathElement self) x y x1
+          y1
+          x2
+          y2)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoCubicRel\"]($2,\n$3, $4, $5, $6, $7)"
+        js_createSVGPathSegCurvetoCubicRel ::
+        JSRef SVGPathElement ->
+          Float ->
+            Float ->
+              Float ->
+                Float -> Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegCurvetoCubicRel (unSVGPathElement self) x y x1
+          y1
+          x2
+          y2)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoQuadraticAbs\"]($2,\n$3, $4, $5)"
+        js_createSVGPathSegCurvetoQuadraticAbs ::
+        JSRef SVGPathElement ->
+          Float ->
+            Float -> Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegCurvetoQuadraticAbs (unSVGPathElement self) x
+          y
+          x1
+          y1)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoQuadraticRel\"]($2,\n$3, $4, $5)"
+        js_createSVGPathSegCurvetoQuadraticRel ::
+        JSRef SVGPathElement ->
+          Float ->
+            Float -> Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegCurvetoQuadraticRel (unSVGPathElement self) x
+          y
+          x1
+          y1)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegArcAbs\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_createSVGPathSegArcAbs ::
+        JSRef SVGPathElement ->
+          Float ->
+            Float ->
+              Float ->
+                Float -> Float -> Bool -> Bool -> IO (JSRef 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
+      ((js_createSVGPathSegArcAbs (unSVGPathElement self) x y r1 r2 angle
+          largeArcFlag
+          sweepFlag)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegArcRel\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_createSVGPathSegArcRel ::
+        JSRef SVGPathElement ->
+          Float ->
+            Float ->
+              Float ->
+                Float -> Float -> Bool -> Bool -> IO (JSRef 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
+      ((js_createSVGPathSegArcRel (unSVGPathElement self) x y r1 r2 angle
+          largeArcFlag
+          sweepFlag)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoHorizontalAbs\"]($2)"
+        js_createSVGPathSegLinetoHorizontalAbs ::
+        JSRef SVGPathElement ->
+          Float -> IO (JSRef 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
+      ((js_createSVGPathSegLinetoHorizontalAbs (unSVGPathElement self) x)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoHorizontalRel\"]($2)"
+        js_createSVGPathSegLinetoHorizontalRel ::
+        JSRef SVGPathElement ->
+          Float -> IO (JSRef 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
+      ((js_createSVGPathSegLinetoHorizontalRel (unSVGPathElement self) x)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoVerticalAbs\"]($2)"
+        js_createSVGPathSegLinetoVerticalAbs ::
+        JSRef SVGPathElement ->
+          Float -> IO (JSRef 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
+      ((js_createSVGPathSegLinetoVerticalAbs (unSVGPathElement self) y)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegLinetoVerticalRel\"]($2)"
+        js_createSVGPathSegLinetoVerticalRel ::
+        JSRef SVGPathElement ->
+          Float -> IO (JSRef 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
+      ((js_createSVGPathSegLinetoVerticalRel (unSVGPathElement self) y)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoCubicSmoothAbs\"]($2,\n$3, $4, $5)"
+        js_createSVGPathSegCurvetoCubicSmoothAbs ::
+        JSRef SVGPathElement ->
+          Float ->
+            Float ->
+              Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegCurvetoCubicSmoothAbs (unSVGPathElement self)
+          x
+          y
+          x2
+          y2)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoCubicSmoothRel\"]($2,\n$3, $4, $5)"
+        js_createSVGPathSegCurvetoCubicSmoothRel ::
+        JSRef SVGPathElement ->
+          Float ->
+            Float ->
+              Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegCurvetoCubicSmoothRel (unSVGPathElement self)
+          x
+          y
+          x2
+          y2)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoQuadraticSmoothAbs\"]($2,\n$3)"
+        js_createSVGPathSegCurvetoQuadraticSmoothAbs ::
+        JSRef SVGPathElement ->
+          Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegCurvetoQuadraticSmoothAbs
+          (unSVGPathElement self)
+          x
+          y)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGPathSegCurvetoQuadraticSmoothRel\"]($2,\n$3)"
+        js_createSVGPathSegCurvetoQuadraticSmoothRel ::
+        JSRef SVGPathElement ->
+          Float -> Float -> IO (JSRef 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
+      ((js_createSVGPathSegCurvetoQuadraticSmoothRel
+          (unSVGPathElement self)
+          x
+          y)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pathLength\"]"
+        js_getPathLength ::
+        JSRef SVGPathElement -> IO (JSRef 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 ((js_getPathLength (unSVGPathElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pathSegList\"]"
+        js_getPathSegList ::
+        JSRef SVGPathElement -> IO (JSRef 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
+      ((js_getPathSegList (unSVGPathElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"normalizedPathSegList\"]"
+        js_getNormalizedPathSegList ::
+        JSRef SVGPathElement -> IO (JSRef 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
+      ((js_getNormalizedPathSegList (unSVGPathElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animatedPathSegList\"]"
+        js_getAnimatedPathSegList ::
+        JSRef SVGPathElement -> IO (JSRef 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
+      ((js_getAnimatedPathSegList (unSVGPathElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"animatedNormalizedPathSegList\"]"
+        js_getAnimatedNormalizedPathSegList ::
+        JSRef SVGPathElement -> IO (JSRef 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
+      ((js_getAnimatedNormalizedPathSegList (unSVGPathElement self)) >>=
+         fromJSRef)
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,75 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 :: JSRef 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 (unSVGPathSeg (toSVGPathSeg self)))
+ 
+foreign import javascript unsafe "$1[\"pathSegTypeAsLetter\"]"
+        js_getPathSegTypeAsLetter :: JSRef 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 (unSVGPathSeg (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,126 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegArcAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegArcAbs self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegArcAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegArcAbs self))
+ 
+foreign import javascript unsafe "$1[\"r1\"] = $2;" js_setR1 ::
+        JSRef 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 (unSVGPathSegArcAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"r1\"]" js_getR1 ::
+        JSRef 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 (unSVGPathSegArcAbs self))
+ 
+foreign import javascript unsafe "$1[\"r2\"] = $2;" js_setR2 ::
+        JSRef 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 (unSVGPathSegArcAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"r2\"]" js_getR2 ::
+        JSRef 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 (unSVGPathSegArcAbs self))
+ 
+foreign import javascript unsafe "$1[\"angle\"] = $2;" js_setAngle
+        :: JSRef 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 (unSVGPathSegArcAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"angle\"]" js_getAngle ::
+        JSRef 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 (unSVGPathSegArcAbs self))
+ 
+foreign import javascript unsafe "$1[\"largeArcFlag\"] = $2;"
+        js_setLargeArcFlag :: JSRef 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 (unSVGPathSegArcAbs self) val)
+ 
+foreign import javascript unsafe "($1[\"largeArcFlag\"] ? 1 : 0)"
+        js_getLargeArcFlag :: JSRef 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 (unSVGPathSegArcAbs self))
+ 
+foreign import javascript unsafe "$1[\"sweepFlag\"] = $2;"
+        js_setSweepFlag :: JSRef 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 (unSVGPathSegArcAbs self) val)
+ 
+foreign import javascript unsafe "($1[\"sweepFlag\"] ? 1 : 0)"
+        js_getSweepFlag :: JSRef 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 (unSVGPathSegArcAbs 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,126 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegArcRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegArcRel self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegArcRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegArcRel self))
+ 
+foreign import javascript unsafe "$1[\"r1\"] = $2;" js_setR1 ::
+        JSRef 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 (unSVGPathSegArcRel self) val)
+ 
+foreign import javascript unsafe "$1[\"r1\"]" js_getR1 ::
+        JSRef 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 (unSVGPathSegArcRel self))
+ 
+foreign import javascript unsafe "$1[\"r2\"] = $2;" js_setR2 ::
+        JSRef 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 (unSVGPathSegArcRel self) val)
+ 
+foreign import javascript unsafe "$1[\"r2\"]" js_getR2 ::
+        JSRef 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 (unSVGPathSegArcRel self))
+ 
+foreign import javascript unsafe "$1[\"angle\"] = $2;" js_setAngle
+        :: JSRef 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 (unSVGPathSegArcRel self) val)
+ 
+foreign import javascript unsafe "$1[\"angle\"]" js_getAngle ::
+        JSRef 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 (unSVGPathSegArcRel self))
+ 
+foreign import javascript unsafe "$1[\"largeArcFlag\"] = $2;"
+        js_setLargeArcFlag :: JSRef 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 (unSVGPathSegArcRel self) val)
+ 
+foreign import javascript unsafe "($1[\"largeArcFlag\"] ? 1 : 0)"
+        js_getLargeArcFlag :: JSRef 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 (unSVGPathSegArcRel self))
+ 
+foreign import javascript unsafe "$1[\"sweepFlag\"] = $2;"
+        js_setSweepFlag :: JSRef 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 (unSVGPathSegArcRel self) val)
+ 
+foreign import javascript unsafe "($1[\"sweepFlag\"] ? 1 : 0)"
+        js_getSweepFlag :: JSRef 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 (unSVGPathSegArcRel 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,112 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self))
+ 
+foreign import javascript unsafe "$1[\"x1\"] = $2;" js_setX1 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self))
+ 
+foreign import javascript unsafe "$1[\"y1\"] = $2;" js_setY1 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y1\"]" js_getY1 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self))
+ 
+foreign import javascript unsafe "$1[\"x2\"] = $2;" js_setX2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x2\"]" js_getX2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self))
+ 
+foreign import javascript unsafe "$1[\"y2\"] = $2;" js_setY2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y2\"]" js_getY2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicAbs 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,112 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self))
+ 
+foreign import javascript unsafe "$1[\"x1\"] = $2;" js_setX1 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self))
+ 
+foreign import javascript unsafe "$1[\"y1\"] = $2;" js_setY1 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y1\"]" js_getY1 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self))
+ 
+foreign import javascript unsafe "$1[\"x2\"] = $2;" js_setX2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x2\"]" js_getX2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self))
+ 
+foreign import javascript unsafe "$1[\"y2\"] = $2;" js_setY2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y2\"]" js_getY2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicRel 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,90 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothAbs self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothAbs self))
+ 
+foreign import javascript unsafe "$1[\"x2\"] = $2;" js_setX2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x2\"]" js_getX2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothAbs self))
+ 
+foreign import javascript unsafe "$1[\"y2\"] = $2;" js_setY2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y2\"]" js_getY2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothAbs 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,90 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothRel self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothRel self))
+ 
+foreign import javascript unsafe "$1[\"x2\"] = $2;" js_setX2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x2\"]" js_getX2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothRel self))
+ 
+foreign import javascript unsafe "$1[\"y2\"] = $2;" js_setY2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y2\"]" js_getY2 ::
+        JSRef 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 (unSVGPathSegCurvetoCubicSmoothRel 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,87 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticAbs self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticAbs self))
+ 
+foreign import javascript unsafe "$1[\"x1\"] = $2;" js_setX1 ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticAbs self))
+ 
+foreign import javascript unsafe "$1[\"y1\"] = $2;" js_setY1 ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y1\"]" js_getY1 ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticAbs 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,87 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticRel self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticRel self))
+ 
+foreign import javascript unsafe "$1[\"x1\"] = $2;" js_setX1 ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x1\"]" js_getX1 ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticRel self))
+ 
+foreign import javascript unsafe "$1[\"y1\"] = $2;" js_setY1 ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y1\"]" js_getY1 ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticRel 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,57 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticSmoothAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticSmoothAbs self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticSmoothAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticSmoothAbs 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,57 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticSmoothRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticSmoothRel self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticSmoothRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegCurvetoQuadraticSmoothRel 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegLinetoAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegLinetoAbs self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegLinetoAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegLinetoAbs 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,36 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegLinetoHorizontalAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegLinetoHorizontalAbs 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,36 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegLinetoHorizontalRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegLinetoHorizontalRel 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegLinetoRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegLinetoRel self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegLinetoRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegLinetoRel 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,35 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegLinetoVerticalAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegLinetoVerticalAbs 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,35 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegLinetoVerticalRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegLinetoVerticalRel 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,117 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unSVGPathSegList self))
+ 
+foreign import javascript unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        JSRef SVGPathSegList -> JSRef SVGPathSeg -> IO (JSRef 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
+      ((js_initialize (unSVGPathSegList self)
+          (maybe jsNull (unSVGPathSeg . toSVGPathSeg) newItem))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: JSRef SVGPathSegList -> Word -> IO (JSRef 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 ((js_getItem (unSVGPathSegList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        JSRef SVGPathSegList ->
+          JSRef SVGPathSeg -> Word -> IO (JSRef 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
+      ((js_insertItemBefore (unSVGPathSegList self)
+          (maybe jsNull (unSVGPathSeg . toSVGPathSeg) newItem)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        JSRef SVGPathSegList ->
+          JSRef SVGPathSeg -> Word -> IO (JSRef 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
+      ((js_replaceItem (unSVGPathSegList self)
+          (maybe jsNull (unSVGPathSeg . toSVGPathSeg) newItem)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem ::
+        JSRef SVGPathSegList -> Word -> IO (JSRef 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
+      ((js_removeItem (unSVGPathSegList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        JSRef SVGPathSegList -> JSRef SVGPathSeg -> IO (JSRef 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
+      ((js_appendItem (unSVGPathSegList self)
+          (maybe jsNull (unSVGPathSeg . toSVGPathSeg) newItem))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"numberOfItems\"]"
+        js_getNumberOfItems :: JSRef 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 (unSVGPathSegList 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegMovetoAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegMovetoAbs self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegMovetoAbs self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegMovetoAbs 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPathSegMovetoRel self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPathSegMovetoRel self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPathSegMovetoRel self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPathSegMovetoRel 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,95 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"patternUnits\"]"
+        js_getPatternUnits ::
+        JSRef SVGPatternElement -> IO (JSRef 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
+      ((js_getPatternUnits (unSVGPatternElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"patternContentUnits\"]"
+        js_getPatternContentUnits ::
+        JSRef SVGPatternElement -> IO (JSRef 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
+      ((js_getPatternContentUnits (unSVGPatternElement self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"patternTransform\"]"
+        js_getPatternTransform ::
+        JSRef SVGPatternElement -> IO (JSRef 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
+      ((js_getPatternTransform (unSVGPatternElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGPatternElement -> IO (JSRef 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 ((js_getX (unSVGPatternElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGPatternElement -> IO (JSRef 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 ((js_getY (unSVGPatternElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGPatternElement -> IO (JSRef 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 ((js_getWidth (unSVGPatternElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGPatternElement -> IO (JSRef 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 ((js_getHeight (unSVGPatternElement self)) >>= fromJSRef)
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,61 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"matrixTransform\"]($2)"
+        js_matrixTransform ::
+        JSRef SVGPoint -> JSRef SVGMatrix -> IO (JSRef 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
+      ((js_matrixTransform (unSVGPoint self)
+          (maybe jsNull pToJSRef matrix))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGPoint self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGPoint self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGPoint self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGPoint 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,109 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unSVGPointList self))
+ 
+foreign import javascript unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        JSRef SVGPointList -> JSRef SVGPoint -> IO (JSRef 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
+      ((js_initialize (unSVGPointList self) (maybe jsNull pToJSRef item))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: JSRef SVGPointList -> Word -> IO (JSRef 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 ((js_getItem (unSVGPointList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        JSRef SVGPointList -> JSRef SVGPoint -> Word -> IO (JSRef 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
+      ((js_insertItemBefore (unSVGPointList self)
+          (maybe jsNull pToJSRef item)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        JSRef SVGPointList -> JSRef SVGPoint -> Word -> IO (JSRef 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
+      ((js_replaceItem (unSVGPointList self) (maybe jsNull pToJSRef item)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem :: JSRef SVGPointList -> Word -> IO (JSRef 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
+      ((js_removeItem (unSVGPointList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        JSRef SVGPointList -> JSRef SVGPoint -> IO (JSRef 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
+      ((js_appendItem (unSVGPointList self) (maybe jsNull pToJSRef item))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"numberOfItems\"]"
+        js_getNumberOfItems :: JSRef 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 (unSVGPointList 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,39 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"points\"]" js_getPoints ::
+        JSRef SVGPolygonElement -> IO (JSRef 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 ((js_getPoints (unSVGPolygonElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animatedPoints\"]"
+        js_getAnimatedPoints ::
+        JSRef SVGPolygonElement -> IO (JSRef 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
+      ((js_getAnimatedPoints (unSVGPolygonElement self)) >>= fromJSRef)
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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"points\"]" js_getPoints ::
+        JSRef SVGPolylineElement -> IO (JSRef 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 ((js_getPoints (unSVGPolylineElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"animatedPoints\"]"
+        js_getAnimatedPoints ::
+        JSRef SVGPolylineElement -> IO (JSRef 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
+      ((js_getAnimatedPoints (unSVGPolylineElement self)) >>= fromJSRef)
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,80 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+        :: JSRef 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 (unSVGPreserveAspectRatio self) val)
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unSVGPreserveAspectRatio self))
+ 
+foreign import javascript unsafe "$1[\"meetOrSlice\"] = $2;"
+        js_setMeetOrSlice :: JSRef 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 (unSVGPreserveAspectRatio self) val)
+ 
+foreign import javascript unsafe "$1[\"meetOrSlice\"]"
+        js_getMeetOrSlice :: JSRef 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 (unSVGPreserveAspectRatio 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,86 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"cx\"]" js_getCx ::
+        JSRef SVGRadialGradientElement -> IO (JSRef 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
+      ((js_getCx (unSVGRadialGradientElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cy\"]" js_getCy ::
+        JSRef SVGRadialGradientElement -> IO (JSRef 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
+      ((js_getCy (unSVGRadialGradientElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"r\"]" js_getR ::
+        JSRef SVGRadialGradientElement -> IO (JSRef 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
+      ((js_getR (unSVGRadialGradientElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"fx\"]" js_getFx ::
+        JSRef SVGRadialGradientElement -> IO (JSRef 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
+      ((js_getFx (unSVGRadialGradientElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"fy\"]" js_getFy ::
+        JSRef SVGRadialGradientElement -> IO (JSRef 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
+      ((js_getFy (unSVGRadialGradientElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"fr\"]" js_getFr ::
+        JSRef SVGRadialGradientElement -> IO (JSRef 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
+      ((js_getFr (unSVGRadialGradientElement self)) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unSVGRect self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unSVGRect self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unSVGRect self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unSVGRect self))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unSVGRect self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unSVGRect self))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unSVGRect self) val)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unSVGRect 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,74 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGRectElement -> IO (JSRef 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 ((js_getX (unSVGRectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGRectElement -> IO (JSRef 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 ((js_getY (unSVGRectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGRectElement -> IO (JSRef 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 ((js_getWidth (unSVGRectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGRectElement -> IO (JSRef 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 ((js_getHeight (unSVGRectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rx\"]" js_getRx ::
+        JSRef SVGRectElement -> IO (JSRef 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 ((js_getRx (unSVGRectElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"ry\"]" js_getRy ::
+        JSRef SVGRectElement -> IO (JSRef 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 ((js_getRy (unSVGRectElement self)) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,445 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"suspendRedraw\"]($2)"
+        js_suspendRedraw :: JSRef 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 (unSVGSVGElement self) maxWaitMilliseconds)
+ 
+foreign import javascript unsafe "$1[\"unsuspendRedraw\"]($2)"
+        js_unsuspendRedraw :: JSRef 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 (unSVGSVGElement self) suspendHandleId)
+ 
+foreign import javascript unsafe "$1[\"unsuspendRedrawAll\"]()"
+        js_unsuspendRedrawAll :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"forceRedraw\"]()"
+        js_forceRedraw :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"pauseAnimations\"]()"
+        js_pauseAnimations :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"unpauseAnimations\"]()"
+        js_unpauseAnimations :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe
+        "($1[\"animationsPaused\"]() ? 1 : 0)" js_animationsPaused ::
+        JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"getCurrentTime\"]()"
+        js_getCurrentTime :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"setCurrentTime\"]($2)"
+        js_setCurrentTime :: JSRef 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 (unSVGSVGElement self) seconds)
+ 
+foreign import javascript unsafe
+        "$1[\"getIntersectionList\"]($2,\n$3)" js_getIntersectionList ::
+        JSRef SVGSVGElement ->
+          JSRef SVGRect -> JSRef SVGElement -> IO (JSRef 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
+      ((js_getIntersectionList (unSVGSVGElement self)
+          (maybe jsNull pToJSRef rect)
+          (maybe jsNull (unSVGElement . toSVGElement) referenceElement))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getEnclosureList\"]($2, $3)"
+        js_getEnclosureList ::
+        JSRef SVGSVGElement ->
+          JSRef SVGRect -> JSRef SVGElement -> IO (JSRef 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
+      ((js_getEnclosureList (unSVGSVGElement self)
+          (maybe jsNull pToJSRef rect)
+          (maybe jsNull (unSVGElement . toSVGElement) referenceElement))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"checkIntersection\"]($2,\n$3) ? 1 : 0)" js_checkIntersection
+        ::
+        JSRef SVGSVGElement -> JSRef SVGElement -> JSRef 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 (unSVGSVGElement self)
+         (maybe jsNull (unSVGElement . toSVGElement) element)
+         (maybe jsNull pToJSRef rect))
+ 
+foreign import javascript unsafe
+        "($1[\"checkEnclosure\"]($2,\n$3) ? 1 : 0)" js_checkEnclosure ::
+        JSRef SVGSVGElement -> JSRef SVGElement -> JSRef 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 (unSVGSVGElement self)
+         (maybe jsNull (unSVGElement . toSVGElement) element)
+         (maybe jsNull pToJSRef rect))
+ 
+foreign import javascript unsafe "$1[\"deselectAll\"]()"
+        js_deselectAll :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"createSVGNumber\"]()"
+        js_createSVGNumber :: JSRef SVGSVGElement -> IO (JSRef 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
+      ((js_createSVGNumber (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createSVGLength\"]()"
+        js_createSVGLength :: JSRef SVGSVGElement -> IO (JSRef 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
+      ((js_createSVGLength (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createSVGAngle\"]()"
+        js_createSVGAngle :: JSRef SVGSVGElement -> IO (JSRef 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 ((js_createSVGAngle (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createSVGPoint\"]()"
+        js_createSVGPoint :: JSRef SVGSVGElement -> IO (JSRef 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 ((js_createSVGPoint (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createSVGMatrix\"]()"
+        js_createSVGMatrix :: JSRef SVGSVGElement -> IO (JSRef 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
+      ((js_createSVGMatrix (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createSVGRect\"]()"
+        js_createSVGRect :: JSRef SVGSVGElement -> IO (JSRef 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 ((js_createSVGRect (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createSVGTransform\"]()"
+        js_createSVGTransform ::
+        JSRef SVGSVGElement -> IO (JSRef 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
+      ((js_createSVGTransform (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGTransformFromMatrix\"]($2)"
+        js_createSVGTransformFromMatrix ::
+        JSRef SVGSVGElement -> JSRef SVGMatrix -> IO (JSRef 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
+      ((js_createSVGTransformFromMatrix (unSVGSVGElement self)
+          (maybe jsNull pToJSRef matrix))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getElementById\"]($2)"
+        js_getElementById ::
+        JSRef SVGSVGElement -> JSString -> IO (JSRef 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
+      ((js_getElementById (unSVGSVGElement self) (toJSString elementId))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGSVGElement -> IO (JSRef 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 ((js_getX (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGSVGElement -> IO (JSRef 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 ((js_getY (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGSVGElement -> IO (JSRef 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 ((js_getWidth (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGSVGElement -> IO (JSRef 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 ((js_getHeight (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"contentScriptType\"] = $2;"
+        js_setContentScriptType :: JSRef 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 (unSVGSVGElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"contentScriptType\"]"
+        js_getContentScriptType :: JSRef 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 (unSVGSVGElement self)))
+ 
+foreign import javascript unsafe "$1[\"contentStyleType\"] = $2;"
+        js_setContentStyleType :: JSRef 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 (unSVGSVGElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"contentStyleType\"]"
+        js_getContentStyleType :: JSRef 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 (unSVGSVGElement self)))
+ 
+foreign import javascript unsafe "$1[\"viewport\"]" js_getViewport
+        :: JSRef SVGSVGElement -> IO (JSRef 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 ((js_getViewport (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pixelUnitToMillimeterX\"]"
+        js_getPixelUnitToMillimeterX :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"pixelUnitToMillimeterY\"]"
+        js_getPixelUnitToMillimeterY :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"screenPixelToMillimeterX\"]"
+        js_getScreenPixelToMillimeterX :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"screenPixelToMillimeterY\"]"
+        js_getScreenPixelToMillimeterY :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "($1[\"useCurrentView\"] ? 1 : 0)"
+        js_getUseCurrentView :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"currentView\"]"
+        js_getCurrentView :: JSRef SVGSVGElement -> IO (JSRef 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 ((js_getCurrentView (unSVGSVGElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"currentScale\"] = $2;"
+        js_setCurrentScale :: JSRef 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 (unSVGSVGElement self) val)
+ 
+foreign import javascript unsafe "$1[\"currentScale\"]"
+        js_getCurrentScale :: JSRef 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 (unSVGSVGElement self))
+ 
+foreign import javascript unsafe "$1[\"currentTranslate\"]"
+        js_getCurrentTranslate ::
+        JSRef SVGSVGElement -> IO (JSRef 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
+      ((js_getCurrentTranslate (unSVGSVGElement self)) >>= fromJSRef)
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,41 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef SVGScriptElement -> JSRef (Maybe 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 (unSVGScriptElement self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef SVGScriptElement -> IO (JSRef (Maybe 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 (unSVGScriptElement 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,28 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"offset\"]" js_getOffset ::
+        JSRef SVGStopElement -> IO (JSRef 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 ((js_getOffset (unSVGStopElement self)) >>= fromJSRef)
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,110 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unSVGStringList self))
+ 
+foreign import javascript unsafe "$1[\"initialize\"]($2)"
+        js_initialize :: JSRef 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 (unSVGStringList self) (toJSString item)))
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: JSRef 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 (unSVGStringList self) index))
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        JSRef 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 (unSVGStringList self) (toJSString item)
+            index))
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        JSRef 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 (unSVGStringList self) (toJSString item) index))
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem :: JSRef 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 (unSVGStringList self) index))
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem :: JSRef 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 (unSVGStringList self) (toJSString item)))
+ 
+foreign import javascript unsafe "$1[\"numberOfItems\"]"
+        js_getNumberOfItems :: JSRef 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 (unSVGStringList self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unSVGStyleElement self) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unSVGStyleElement self))
+ 
+foreign import javascript unsafe "$1[\"type\"] = $2;" js_setType ::
+        JSRef 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 (unSVGStyleElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unSVGStyleElement self)))
+ 
+foreign import javascript unsafe "$1[\"media\"] = $2;" js_setMedia
+        :: JSRef 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 (unSVGStyleElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        JSRef 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 (unSVGStyleElement self)))
+ 
+foreign import javascript unsafe "$1[\"title\"] = $2;" js_setTitle
+        :: JSRef 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 (unSVGStyleElement self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"title\"]" js_getTitle ::
+        JSRef 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 (unSVGStyleElement 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,62 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"hasExtension\"]($2) ? 1 : 0)" js_hasExtension ::
+        JSRef 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 (unSVGTests self) (toJSString extension))
+ 
+foreign import javascript unsafe "$1[\"requiredFeatures\"]"
+        js_getRequiredFeatures ::
+        JSRef SVGTests -> IO (JSRef 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 ((js_getRequiredFeatures (unSVGTests self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"requiredExtensions\"]"
+        js_getRequiredExtensions ::
+        JSRef SVGTests -> IO (JSRef 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
+      ((js_getRequiredExtensions (unSVGTests self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"systemLanguage\"]"
+        js_getSystemLanguage :: JSRef SVGTests -> IO (JSRef 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 ((js_getSystemLanguage (unSVGTests self)) >>= fromJSRef)
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,186 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getNumberOfChars\"]()"
+        js_getNumberOfChars :: JSRef 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
+         (unSVGTextContentElement (toSVGTextContentElement self)))
+ 
+foreign import javascript unsafe "$1[\"getComputedTextLength\"]()"
+        js_getComputedTextLength :: JSRef 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
+         (unSVGTextContentElement (toSVGTextContentElement self)))
+ 
+foreign import javascript unsafe
+        "$1[\"getSubStringLength\"]($2, $3)" js_getSubStringLength ::
+        JSRef 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
+         (unSVGTextContentElement (toSVGTextContentElement self))
+         offset
+         length)
+ 
+foreign import javascript unsafe
+        "$1[\"getStartPositionOfChar\"]($2)" js_getStartPositionOfChar ::
+        JSRef SVGTextContentElement -> Word -> IO (JSRef 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
+      ((js_getStartPositionOfChar
+          (unSVGTextContentElement (toSVGTextContentElement self))
+          offset)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getEndPositionOfChar\"]($2)"
+        js_getEndPositionOfChar ::
+        JSRef SVGTextContentElement -> Word -> IO (JSRef 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
+      ((js_getEndPositionOfChar
+          (unSVGTextContentElement (toSVGTextContentElement self))
+          offset)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getExtentOfChar\"]($2)"
+        js_getExtentOfChar ::
+        JSRef SVGTextContentElement -> Word -> IO (JSRef 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
+      ((js_getExtentOfChar
+          (unSVGTextContentElement (toSVGTextContentElement self))
+          offset)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getRotationOfChar\"]($2)"
+        js_getRotationOfChar ::
+        JSRef 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
+         (unSVGTextContentElement (toSVGTextContentElement self))
+         offset)
+ 
+foreign import javascript unsafe "$1[\"getCharNumAtPosition\"]($2)"
+        js_getCharNumAtPosition ::
+        JSRef SVGTextContentElement -> JSRef 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
+         (unSVGTextContentElement (toSVGTextContentElement self))
+         (maybe jsNull pToJSRef point))
+ 
+foreign import javascript unsafe "$1[\"selectSubString\"]($2, $3)"
+        js_selectSubString ::
+        JSRef 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
+         (unSVGTextContentElement (toSVGTextContentElement self))
+         offset
+         length)
+pattern LENGTHADJUST_UNKNOWN = 0
+pattern LENGTHADJUST_SPACING = 1
+pattern LENGTHADJUST_SPACINGANDGLYPHS = 2
+ 
+foreign import javascript unsafe "$1[\"textLength\"]"
+        js_getTextLength ::
+        JSRef SVGTextContentElement -> IO (JSRef 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
+      ((js_getTextLength
+          (unSVGTextContentElement (toSVGTextContentElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"lengthAdjust\"]"
+        js_getLengthAdjust ::
+        JSRef SVGTextContentElement -> IO (JSRef 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
+      ((js_getLengthAdjust
+          (unSVGTextContentElement (toSVGTextContentElement self)))
+         >>= fromJSRef)
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,64 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 ::
+        JSRef SVGTextPathElement -> IO (JSRef 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
+      ((js_getStartOffset (unSVGTextPathElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"method\"]" js_getMethod ::
+        JSRef SVGTextPathElement -> IO (JSRef 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 ((js_getMethod (unSVGTextPathElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"spacing\"]" js_getSpacing ::
+        JSRef SVGTextPathElement -> IO (JSRef 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
+      ((js_getSpacing (unSVGTextPathElement self)) >>= fromJSRef)
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,86 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGTextPositioningElement -> IO (JSRef 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
+      ((js_getX
+          (unSVGTextPositioningElement (toSVGTextPositioningElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGTextPositioningElement -> IO (JSRef 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
+      ((js_getY
+          (unSVGTextPositioningElement (toSVGTextPositioningElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"dx\"]" js_getDx ::
+        JSRef SVGTextPositioningElement -> IO (JSRef 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
+      ((js_getDx
+          (unSVGTextPositioningElement (toSVGTextPositioningElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"dy\"]" js_getDy ::
+        JSRef SVGTextPositioningElement -> IO (JSRef 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
+      ((js_getDy
+          (unSVGTextPositioningElement (toSVGTextPositioningElement self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rotate\"]" js_getRotate ::
+        JSRef SVGTextPositioningElement -> IO (JSRef 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
+      ((js_getRotate
+          (unSVGTextPositioningElement (toSVGTextPositioningElement self)))
+         >>= fromJSRef)
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,106 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setMatrix\"]($2)"
+        js_setMatrix :: JSRef SVGTransform -> JSRef 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 (unSVGTransform self) (maybe jsNull pToJSRef matrix))
+ 
+foreign import javascript unsafe "$1[\"setTranslate\"]($2, $3)"
+        js_setTranslate :: JSRef 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 (unSVGTransform self) tx ty)
+ 
+foreign import javascript unsafe "$1[\"setScale\"]($2, $3)"
+        js_setScale :: JSRef 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 (unSVGTransform self) sx sy)
+ 
+foreign import javascript unsafe "$1[\"setRotate\"]($2, $3, $4)"
+        js_setRotate ::
+        JSRef 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 (unSVGTransform self) angle cx cy)
+ 
+foreign import javascript unsafe "$1[\"setSkewX\"]($2)" js_setSkewX
+        :: JSRef 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 (unSVGTransform self) angle)
+ 
+foreign import javascript unsafe "$1[\"setSkewY\"]($2)" js_setSkewY
+        :: JSRef 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 (unSVGTransform 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 ::
+        JSRef 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 (unSVGTransform self))
+ 
+foreign import javascript unsafe "$1[\"matrix\"]" js_getMatrix ::
+        JSRef SVGTransform -> IO (JSRef 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 ((js_getMatrix (unSVGTransform self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"angle\"]" js_getAngle ::
+        JSRef 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 (unSVGTransform 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,148 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unSVGTransformList self))
+ 
+foreign import javascript unsafe "$1[\"initialize\"]($2)"
+        js_initialize ::
+        JSRef SVGTransformList ->
+          JSRef SVGTransform -> IO (JSRef 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
+      ((js_initialize (unSVGTransformList self)
+          (maybe jsNull pToJSRef item))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: JSRef SVGTransformList -> Word -> IO (JSRef 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
+      ((js_getItem (unSVGTransformList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"insertItemBefore\"]($2, $3)"
+        js_insertItemBefore ::
+        JSRef SVGTransformList ->
+          JSRef SVGTransform -> Word -> IO (JSRef 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
+      ((js_insertItemBefore (unSVGTransformList self)
+          (maybe jsNull pToJSRef item)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"replaceItem\"]($2, $3)"
+        js_replaceItem ::
+        JSRef SVGTransformList ->
+          JSRef SVGTransform -> Word -> IO (JSRef 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
+      ((js_replaceItem (unSVGTransformList self)
+          (maybe jsNull pToJSRef item)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem ::
+        JSRef SVGTransformList -> Word -> IO (JSRef 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
+      ((js_removeItem (unSVGTransformList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appendItem\"]($2)"
+        js_appendItem ::
+        JSRef SVGTransformList ->
+          JSRef SVGTransform -> IO (JSRef 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
+      ((js_appendItem (unSVGTransformList self)
+          (maybe jsNull pToJSRef item))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"createSVGTransformFromMatrix\"]($2)"
+        js_createSVGTransformFromMatrix ::
+        JSRef SVGTransformList ->
+          JSRef SVGMatrix -> IO (JSRef 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
+      ((js_createSVGTransformFromMatrix (unSVGTransformList self)
+          (maybe jsNull pToJSRef matrix))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"consolidate\"]()"
+        js_consolidate :: JSRef SVGTransformList -> IO (JSRef 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 ((js_consolidate (unSVGTransformList self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"numberOfItems\"]"
+        js_getNumberOfItems :: JSRef 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 (unSVGTransformList 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,28 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef SVGURIReference -> IO (JSRef 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 ((js_getHref (unSVGURIReference self)) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,51 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef SVGUseElement -> IO (JSRef 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 ((js_getX (unSVGUseElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef SVGUseElement -> IO (JSRef 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 ((js_getY (unSVGUseElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef SVGUseElement -> IO (JSRef 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 ((js_getWidth (unSVGUseElement self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef SVGUseElement -> IO (JSRef 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 ((js_getHeight (unSVGUseElement self)) >>= fromJSRef)
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,29 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"viewTarget\"]"
+        js_getViewTarget ::
+        JSRef SVGViewElement -> IO (JSRef 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 ((js_getViewTarget (unSVGViewElement self)) >>= fromJSRef)
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,98 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"transform\"]"
+        js_getTransform :: JSRef SVGViewSpec -> IO (JSRef 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 ((js_getTransform (unSVGViewSpec self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"viewTarget\"]"
+        js_getViewTarget :: JSRef SVGViewSpec -> IO (JSRef 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 ((js_getViewTarget (unSVGViewSpec self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"viewBoxString\"]"
+        js_getViewBoxString :: JSRef 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 (unSVGViewSpec self)))
+ 
+foreign import javascript unsafe
+        "$1[\"preserveAspectRatioString\"]" js_getPreserveAspectRatioString
+        :: JSRef 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 (unSVGViewSpec self)))
+ 
+foreign import javascript unsafe "$1[\"transformString\"]"
+        js_getTransformString :: JSRef 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 (unSVGViewSpec self)))
+ 
+foreign import javascript unsafe "$1[\"viewTargetString\"]"
+        js_getViewTargetString :: JSRef 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 (unSVGViewSpec self)))
+ 
+foreign import javascript unsafe "$1[\"zoomAndPan\"] = $2;"
+        js_setZoomAndPan :: JSRef 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 (unSVGViewSpec self) val)
+ 
+foreign import javascript unsafe "$1[\"zoomAndPan\"]"
+        js_getZoomAndPan :: JSRef 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 (unSVGViewSpec 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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 :: JSRef 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 (unSVGZoomAndPan self) val)
+ 
+foreign import javascript unsafe "$1[\"zoomAndPan\"]"
+        js_getZoomAndPan :: JSRef 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 (unSVGZoomAndPan 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,66 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"zoomRectScreen\"]"
+        js_getZoomRectScreen :: JSRef SVGZoomEvent -> IO (JSRef 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
+      ((js_getZoomRectScreen (unSVGZoomEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"previousScale\"]"
+        js_getPreviousScale :: JSRef 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 (unSVGZoomEvent self))
+ 
+foreign import javascript unsafe "$1[\"previousTranslate\"]"
+        js_getPreviousTranslate ::
+        JSRef SVGZoomEvent -> IO (JSRef 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
+      ((js_getPreviousTranslate (unSVGZoomEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"newScale\"]" js_getNewScale
+        :: JSRef 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 (unSVGZoomEvent self))
+ 
+foreign import javascript unsafe "$1[\"newTranslate\"]"
+        js_getNewTranslate :: JSRef SVGZoomEvent -> IO (JSRef 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 ((js_getNewTranslate (unSVGZoomEvent self)) >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unScreen self))
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unScreen self))
+ 
+foreign import javascript unsafe "$1[\"colorDepth\"]"
+        js_getColorDepth :: JSRef 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 (unScreen self))
+ 
+foreign import javascript unsafe "$1[\"pixelDepth\"]"
+        js_getPixelDepth :: JSRef 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 (unScreen self))
+ 
+foreign import javascript unsafe "$1[\"availLeft\"]"
+        js_getAvailLeft :: JSRef 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 (unScreen self))
+ 
+foreign import javascript unsafe "$1[\"availTop\"]" js_getAvailTop
+        :: JSRef 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 (unScreen self))
+ 
+foreign import javascript unsafe "$1[\"availHeight\"]"
+        js_getAvailHeight :: JSRef 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 (unScreen self))
+ 
+foreign import javascript unsafe "$1[\"availWidth\"]"
+        js_getAvailWidth :: JSRef 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 (unScreen 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,32 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 :: JSRef 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 (unScriptProcessorNode 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,45 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"title\"]" js_getTitle ::
+        JSRef 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 (unScriptProfile self)))
+ 
+foreign import javascript unsafe "$1[\"uid\"]" js_getUid ::
+        JSRef 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 (unScriptProfile self))
+ 
+foreign import javascript unsafe "$1[\"rootNode\"]" js_getRootNode
+        :: JSRef ScriptProfile -> IO (JSRef 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 ((js_getRootNode (unScriptProfile self)) >>= fromJSRef)
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,73 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"children\"]()" js_children
+        :: JSRef ScriptProfileNode -> IO (JSRef [Maybe ScriptProfileNode])
+
+-- | <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 (unScriptProfileNode self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unScriptProfileNode self))
+ 
+foreign import javascript unsafe "$1[\"functionName\"]"
+        js_getFunctionName :: JSRef 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 (unScriptProfileNode self)))
+ 
+foreign import javascript unsafe "$1[\"url\"]" js_getUrl ::
+        JSRef 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 (unScriptProfileNode self)))
+ 
+foreign import javascript unsafe "$1[\"lineNumber\"]"
+        js_getLineNumber :: JSRef 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 (unScriptProfileNode self))
+ 
+foreign import javascript unsafe "$1[\"columnNumber\"]"
+        js_getColumnNumber :: JSRef 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 (unScriptProfileNode 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,181 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"allowsConnectionTo\"]($2) ? 1 : 0)" js_allowsConnectionTo ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsFontFrom\"]($2) ? 1 : 0)" js_allowsFontFrom ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsFormAction\"]($2) ? 1 : 0)" js_allowsFormAction ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsFrameFrom\"]($2) ? 1 : 0)" js_allowsFrameFrom ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsImageFrom\"]($2) ? 1 : 0)" js_allowsImageFrom ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsMediaFrom\"]($2) ? 1 : 0)" js_allowsMediaFrom ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsObjectFrom\"]($2) ? 1 : 0)" js_allowsObjectFrom ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsPluginType\"]($2) ? 1 : 0)" js_allowsPluginType ::
+        JSRef 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 (unSecurityPolicy self) (toJSString type'))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsScriptFrom\"]($2) ? 1 : 0)" js_allowsScriptFrom ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsStyleFrom\"]($2) ? 1 : 0)" js_allowsStyleFrom ::
+        JSRef 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 (unSecurityPolicy self) (toJSString url))
+ 
+foreign import javascript unsafe "($1[\"allowsEval\"] ? 1 : 0)"
+        js_getAllowsEval :: JSRef 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 (unSecurityPolicy self))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsInlineScript\"] ? 1 : 0)" js_getAllowsInlineScript ::
+        JSRef 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 (unSecurityPolicy self))
+ 
+foreign import javascript unsafe
+        "($1[\"allowsInlineStyle\"] ? 1 : 0)" js_getAllowsInlineStyle ::
+        JSRef 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 (unSecurityPolicy self))
+ 
+foreign import javascript unsafe "($1[\"isActive\"] ? 1 : 0)"
+        js_getIsActive :: JSRef 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 (unSecurityPolicy self))
+ 
+foreign import javascript unsafe "$1[\"reportURIs\"]"
+        js_getReportURIs ::
+        JSRef SecurityPolicy -> IO (JSRef 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 ((js_getReportURIs (unSecurityPolicy self)) >>= fromJSRef)
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,123 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"documentURI\"]"
+        js_getDocumentURI ::
+        JSRef 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 (unSecurityPolicyViolationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"referrer\"]" js_getReferrer
+        :: JSRef 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 (unSecurityPolicyViolationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"blockedURI\"]"
+        js_getBlockedURI ::
+        JSRef 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 (unSecurityPolicyViolationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"violatedDirective\"]"
+        js_getViolatedDirective ::
+        JSRef 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 (unSecurityPolicyViolationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"effectiveDirective\"]"
+        js_getEffectiveDirective ::
+        JSRef 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 (unSecurityPolicyViolationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"originalPolicy\"]"
+        js_getOriginalPolicy ::
+        JSRef 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 (unSecurityPolicyViolationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"sourceFile\"]"
+        js_getSourceFile ::
+        JSRef 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 (unSecurityPolicyViolationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"lineNumber\"]"
+        js_getLineNumber :: JSRef 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 (unSecurityPolicyViolationEvent 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,272 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"collapse\"]($2, $3)"
+        js_collapse :: JSRef Selection -> JSRef 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 (unSelection self)
+         (maybe jsNull (unNode . toNode) node)
+         index)
+ 
+foreign import javascript unsafe "$1[\"collapseToEnd\"]()"
+        js_collapseToEnd :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"collapseToStart\"]()"
+        js_collapseToStart :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"deleteFromDocument\"]()"
+        js_deleteFromDocument :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe
+        "($1[\"containsNode\"]($2,\n$3) ? 1 : 0)" js_containsNode ::
+        JSRef Selection -> JSRef 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 (unSelection self)
+         (maybe jsNull (unNode . toNode) node)
+         allowPartial)
+ 
+foreign import javascript unsafe "$1[\"selectAllChildren\"]($2)"
+        js_selectAllChildren :: JSRef Selection -> JSRef 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 (unSelection self)
+         (maybe jsNull (unNode . toNode) node))
+ 
+foreign import javascript unsafe "$1[\"extend\"]($2, $3)" js_extend
+        :: JSRef Selection -> JSRef 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 (unSelection self) (maybe jsNull (unNode . toNode) node)
+         offset)
+ 
+foreign import javascript unsafe "$1[\"getRangeAt\"]($2)"
+        js_getRangeAt :: JSRef Selection -> Int -> IO (JSRef 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 ((js_getRangeAt (unSelection self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"removeAllRanges\"]()"
+        js_removeAllRanges :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"addRange\"]($2)" js_addRange
+        :: JSRef Selection -> JSRef 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 (unSelection self) (maybe jsNull pToJSRef range))
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: JSRef 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 (unSelection self)))
+ 
+foreign import javascript unsafe "$1[\"modify\"]($2, $3, $4)"
+        js_modify ::
+        JSRef 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 (unSelection self) (toJSString alter)
+         (toJSString direction)
+         (toJSString granularity))
+ 
+foreign import javascript unsafe
+        "$1[\"setBaseAndExtent\"]($2, $3,\n$4, $5)" js_setBaseAndExtent ::
+        JSRef Selection -> JSRef Node -> Int -> JSRef 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 (unSelection self)
+         (maybe jsNull (unNode . toNode) baseNode)
+         baseOffset
+         (maybe jsNull (unNode . toNode) extentNode)
+         extentOffset)
+ 
+foreign import javascript unsafe "$1[\"setPosition\"]($2, $3)"
+        js_setPosition :: JSRef Selection -> JSRef 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 (unSelection self)
+         (maybe jsNull (unNode . toNode) node)
+         offset)
+ 
+foreign import javascript unsafe "$1[\"empty\"]()" js_empty ::
+        JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"anchorNode\"]"
+        js_getAnchorNode :: JSRef Selection -> IO (JSRef 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 ((js_getAnchorNode (unSelection self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"anchorOffset\"]"
+        js_getAnchorOffset :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"focusNode\"]"
+        js_getFocusNode :: JSRef Selection -> IO (JSRef 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 ((js_getFocusNode (unSelection self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"focusOffset\"]"
+        js_getFocusOffset :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "($1[\"isCollapsed\"] ? 1 : 0)"
+        js_getIsCollapsed :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"rangeCount\"]"
+        js_getRangeCount :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"baseNode\"]" js_getBaseNode
+        :: JSRef Selection -> IO (JSRef 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 ((js_getBaseNode (unSelection self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"baseOffset\"]"
+        js_getBaseOffset :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"extentNode\"]"
+        js_getExtentNode :: JSRef Selection -> IO (JSRef 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 ((js_getExtentNode (unSelection self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"extentOffset\"]"
+        js_getExtentOffset :: JSRef 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 (unSelection self))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unSelection 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,179 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"appendBuffer\"]($2)"
+        js_appendBuffer :: JSRef SourceBuffer -> JSRef 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 (unSourceBuffer self)
+         (maybe jsNull (unArrayBuffer . toArrayBuffer) data'))
+ 
+foreign import javascript unsafe "$1[\"appendBuffer\"]($2)"
+        js_appendBufferView ::
+        JSRef SourceBuffer -> JSRef 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 (unSourceBuffer self)
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data'))
+ 
+foreign import javascript unsafe "$1[\"abort\"]()" js_abort ::
+        JSRef 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 (unSourceBuffer self))
+ 
+foreign import javascript unsafe "$1[\"remove\"]($2, $3)" js_remove
+        :: JSRef 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 (unSourceBuffer self) start end)
+ 
+foreign import javascript unsafe "$1[\"mode\"] = $2;" js_setMode ::
+        JSRef SourceBuffer -> JSRef AppendMode -> 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 (unSourceBuffer self) (pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"mode\"]" js_getMode ::
+        JSRef SourceBuffer -> IO (JSRef AppendMode)
+
+-- | <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 (unSourceBuffer self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "($1[\"updating\"] ? 1 : 0)"
+        js_getUpdating :: JSRef 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 (unSourceBuffer self))
+ 
+foreign import javascript unsafe "$1[\"buffered\"]" js_getBuffered
+        :: JSRef SourceBuffer -> IO (JSRef 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 ((js_getBuffered (unSourceBuffer self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"timestampOffset\"] = $2;"
+        js_setTimestampOffset :: JSRef 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 (unSourceBuffer self) val)
+ 
+foreign import javascript unsafe "$1[\"timestampOffset\"]"
+        js_getTimestampOffset :: JSRef 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 (unSourceBuffer self))
+ 
+foreign import javascript unsafe "$1[\"audioTracks\"]"
+        js_getAudioTracks ::
+        JSRef SourceBuffer -> IO (JSRef 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 ((js_getAudioTracks (unSourceBuffer self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"videoTracks\"]"
+        js_getVideoTracks ::
+        JSRef SourceBuffer -> IO (JSRef 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 ((js_getVideoTracks (unSourceBuffer self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"textTracks\"]"
+        js_getTextTracks :: JSRef SourceBuffer -> IO (JSRef 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 ((js_getTextTracks (unSourceBuffer self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appendWindowStart\"] = $2;"
+        js_setAppendWindowStart :: JSRef 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 (unSourceBuffer self) val)
+ 
+foreign import javascript unsafe "$1[\"appendWindowStart\"]"
+        js_getAppendWindowStart :: JSRef 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 (unSourceBuffer self))
+ 
+foreign import javascript unsafe "$1[\"appendWindowEnd\"] = $2;"
+        js_setAppendWindowEnd :: JSRef 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 (unSourceBuffer self) val)
+ 
+foreign import javascript unsafe "$1[\"appendWindowEnd\"]"
+        js_getAppendWindowEnd :: JSRef 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 (unSourceBuffer 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef SourceBufferList -> Word -> IO (JSRef 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 ((js_item (unSourceBufferList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unSourceBufferList 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,46 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"sourceId\"]" js_getSourceId
+        :: JSRef 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 (unSourceInfo self)))
+ 
+foreign import javascript unsafe "$1[\"kind\"]" js_getKind ::
+        JSRef 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 (unSourceInfo self)))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unSourceInfo 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,85 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"speak\"]($2)" js_speak ::
+        JSRef SpeechSynthesis -> JSRef 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 (unSpeechSynthesis self)
+         (maybe jsNull pToJSRef utterance))
+ 
+foreign import javascript unsafe "$1[\"cancel\"]()" js_cancel ::
+        JSRef 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 (unSpeechSynthesis self))
+ 
+foreign import javascript unsafe "$1[\"pause\"]()" js_pause ::
+        JSRef 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 (unSpeechSynthesis self))
+ 
+foreign import javascript unsafe "$1[\"resume\"]()" js_resume ::
+        JSRef 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 (unSpeechSynthesis self))
+ 
+foreign import javascript unsafe "$1[\"getVoices\"]()" js_getVoices
+        :: JSRef SpeechSynthesis -> IO (JSRef [Maybe SpeechSynthesisVoice])
+
+-- | <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 (unSpeechSynthesis self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "($1[\"pending\"] ? 1 : 0)"
+        js_getPending :: JSRef 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 (unSpeechSynthesis self))
+ 
+foreign import javascript unsafe "($1[\"speaking\"] ? 1 : 0)"
+        js_getSpeaking :: JSRef 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 (unSpeechSynthesis self))
+ 
+foreign import javascript unsafe "($1[\"paused\"] ? 1 : 0)"
+        js_getPaused :: JSRef 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 (unSpeechSynthesis 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,47 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"charIndex\"]"
+        js_getCharIndex :: JSRef 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 (unSpeechSynthesisEvent self))
+ 
+foreign import javascript unsafe "$1[\"elapsedTime\"]"
+        js_getElapsedTime :: JSRef 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 (unSpeechSynthesisEvent self))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unSpeechSynthesisEvent 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,185 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"SpeechSynthesisUtterance\"]($1)"
+        js_newSpeechSynthesisUtterance ::
+        JSString -> IO (JSRef 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) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        JSRef 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 (unSpeechSynthesisUtterance self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        JSRef 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 (unSpeechSynthesisUtterance self)))
+ 
+foreign import javascript unsafe "$1[\"lang\"] = $2;" js_setLang ::
+        JSRef 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 (unSpeechSynthesisUtterance self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"lang\"]" js_getLang ::
+        JSRef 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 (unSpeechSynthesisUtterance self)))
+ 
+foreign import javascript unsafe "$1[\"voice\"] = $2;" js_setVoice
+        ::
+        JSRef SpeechSynthesisUtterance ->
+          JSRef 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 (unSpeechSynthesisUtterance self)
+         (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"voice\"]" js_getVoice ::
+        JSRef SpeechSynthesisUtterance -> IO (JSRef 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
+      ((js_getVoice (unSpeechSynthesisUtterance self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"volume\"] = $2;"
+        js_setVolume :: JSRef 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 (unSpeechSynthesisUtterance self) val)
+ 
+foreign import javascript unsafe "$1[\"volume\"]" js_getVolume ::
+        JSRef 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 (unSpeechSynthesisUtterance self))
+ 
+foreign import javascript unsafe "$1[\"rate\"] = $2;" js_setRate ::
+        JSRef 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 (unSpeechSynthesisUtterance self) val)
+ 
+foreign import javascript unsafe "$1[\"rate\"]" js_getRate ::
+        JSRef 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 (unSpeechSynthesisUtterance self))
+ 
+foreign import javascript unsafe "$1[\"pitch\"] = $2;" js_setPitch
+        :: JSRef 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 (unSpeechSynthesisUtterance self) val)
+ 
+foreign import javascript unsafe "$1[\"pitch\"]" js_getPitch ::
+        JSRef 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 (unSpeechSynthesisUtterance 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,70 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"voiceURI\"]" js_getVoiceURI
+        :: JSRef 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 (unSpeechSynthesisVoice self)))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unSpeechSynthesisVoice self)))
+ 
+foreign import javascript unsafe "$1[\"lang\"]" js_getLang ::
+        JSRef 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 (unSpeechSynthesisVoice self)))
+ 
+foreign import javascript unsafe "($1[\"localService\"] ? 1 : 0)"
+        js_getLocalService :: JSRef 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 (unSpeechSynthesisVoice self))
+ 
+foreign import javascript unsafe "($1[\"default\"] ? 1 : 0)"
+        js_getDefault :: JSRef 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 (unSpeechSynthesisVoice 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,75 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"key\"]($2)" js_key ::
+        JSRef Storage -> Word -> IO (JSRef (Maybe 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 (unStorage self) index))
+ 
+foreign import javascript unsafe "$1[\"getItem\"]($2)" js_getItem
+        :: JSRef Storage -> JSString -> IO (JSRef (Maybe 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 (unStorage self) (toJSString key)))
+ 
+foreign import javascript unsafe "$1[\"setItem\"]($2, $3)"
+        js_setItem :: JSRef 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 (unStorage self) (toJSString key) (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"removeItem\"]($2)"
+        js_removeItem :: JSRef 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 (unStorage self) (toJSString key))
+ 
+foreign import javascript unsafe "$1[\"clear\"]()" js_clear ::
+        JSRef 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 (unStorage self))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unStorage 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,49 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ error ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ error ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ error ->
+            fromJSRefUnchecked 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,104 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initStorageEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9)"
+        js_initStorageEvent ::
+        JSRef StorageEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                JSString ->
+                  JSRef (Maybe JSString) ->
+                    JSRef (Maybe JSString) -> JSString -> JSRef 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 (unStorageEvent self) (toJSString typeArg)
+         canBubbleArg
+         cancelableArg
+         (toJSString keyArg)
+         (toMaybeJSString oldValueArg)
+         (toMaybeJSString newValueArg)
+         (toJSString urlArg)
+         (maybe jsNull pToJSRef storageAreaArg))
+ 
+foreign import javascript unsafe "$1[\"key\"]" js_getKey ::
+        JSRef 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 (unStorageEvent self)))
+ 
+foreign import javascript unsafe "$1[\"oldValue\"]" js_getOldValue
+        :: JSRef StorageEvent -> IO (JSRef (Maybe 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 (unStorageEvent self)))
+ 
+foreign import javascript unsafe "$1[\"newValue\"]" js_getNewValue
+        :: JSRef StorageEvent -> IO (JSRef (Maybe 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 (unStorageEvent self)))
+ 
+foreign import javascript unsafe "$1[\"url\"]" js_getUrl ::
+        JSRef 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 (unStorageEvent self)))
+ 
+foreign import javascript unsafe "$1[\"storageArea\"]"
+        js_getStorageArea :: JSRef StorageEvent -> IO (JSRef 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 ((js_getStorageArea (unStorageEvent self)) >>= fromJSRef)
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,62 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"queryUsageAndQuota\"]($2, $3,\n$4)" js_queryUsageAndQuota ::
+        JSRef StorageInfo ->
+          Word ->
+            JSRef StorageUsageCallback -> JSRef 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 (unStorageInfo self) storageType
+         (maybe jsNull pToJSRef usageCallback)
+         (maybe jsNull pToJSRef errorCallback))
+ 
+foreign import javascript unsafe
+        "$1[\"requestQuota\"]($2, $3, $4,\n$5)" js_requestQuota ::
+        JSRef StorageInfo ->
+          Word ->
+            Double ->
+              JSRef StorageQuotaCallback -> JSRef 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 (unStorageInfo self) storageType
+         (fromIntegral newQuotaInBytes)
+         (maybe jsNull pToJSRef quotaCallback)
+         (maybe jsNull pToJSRef 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"queryUsageAndQuota\"]($2, $3)" js_queryUsageAndQuota ::
+        JSRef StorageQuota ->
+          JSRef StorageUsageCallback -> JSRef 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 (unStorageQuota self)
+         (maybe jsNull pToJSRef usageCallback)
+         (maybe jsNull pToJSRef errorCallback))
+ 
+foreign import javascript unsafe "$1[\"requestQuota\"]($2, $3, $4)"
+        js_requestQuota ::
+        JSRef StorageQuota ->
+          Double ->
+            JSRef StorageQuotaCallback -> JSRef 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 (unStorageQuota self)
+         (fromIntegral newQuotaInBytes)
+         (maybe jsNull pToJSRef quotaCallback)
+         (maybe jsNull pToJSRef 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,49 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
+newStorageQuotaCallback ::
+                        (MonadIO m) => (Double -> IO ()) -> m StorageQuotaCallback
+newStorageQuotaCallback callback
+  = liftIO
+      (syncCallback1 ThrowWouldBlock
+         (\ grantedQuotaInBytes ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ grantedQuotaInBytes ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ grantedQuotaInBytes ->
+            fromJSRefUnchecked 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,61 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback2 ThrowWouldBlock
+         (\ currentUsageInBytes currentQuotaInBytes ->
+            fromJSRefUnchecked currentQuotaInBytes >>=
+              \ currentQuotaInBytes' ->
+                fromJSRefUnchecked 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
+      (syncCallback2 ContinueAsync
+         (\ currentUsageInBytes currentQuotaInBytes ->
+            fromJSRefUnchecked currentQuotaInBytes >>=
+              \ currentQuotaInBytes' ->
+                fromJSRefUnchecked 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
+      (asyncCallback2
+         (\ currentUsageInBytes currentQuotaInBytes ->
+            fromJSRefUnchecked currentQuotaInBytes >>=
+              \ currentQuotaInBytes' ->
+                fromJSRefUnchecked 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,49 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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
+      (syncCallback1 ThrowWouldBlock
+         (\ data' ->
+            fromJSRefUnchecked 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
+      (syncCallback1 ContinueAsync
+         (\ data' ->
+            fromJSRefUnchecked 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
+      (asyncCallback1
+         (\ data' ->
+            fromJSRefUnchecked 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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "($1[\"matchMedium\"]($2) ? 1 : 0)" js_matchMedium ::
+        JSRef 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 (unStyleMedia self) (toJSString mediaquery))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unStyleMedia 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,107 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef StyleSheet -> IO (JSRef (Maybe 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 (unStyleSheet (toStyleSheet self))))
+ 
+foreign import javascript unsafe "$1[\"disabled\"] = $2;"
+        js_setDisabled :: JSRef 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 (unStyleSheet (toStyleSheet self)) val)
+ 
+foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
+        js_getDisabled :: JSRef 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 (unStyleSheet (toStyleSheet self)))
+ 
+foreign import javascript unsafe "$1[\"ownerNode\"]"
+        js_getOwnerNode :: JSRef StyleSheet -> IO (JSRef 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
+      ((js_getOwnerNode (unStyleSheet (toStyleSheet self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"parentStyleSheet\"]"
+        js_getParentStyleSheet :: JSRef StyleSheet -> IO (JSRef 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
+      ((js_getParentStyleSheet (unStyleSheet (toStyleSheet self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef StyleSheet -> IO (JSRef (Maybe 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 (unStyleSheet (toStyleSheet self))))
+ 
+foreign import javascript unsafe "$1[\"title\"]" js_getTitle ::
+        JSRef StyleSheet -> IO (JSRef (Maybe 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 (unStyleSheet (toStyleSheet self))))
+ 
+foreign import javascript unsafe "$1[\"media\"]" js_getMedia ::
+        JSRef StyleSheet -> IO (JSRef 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
+      ((js_getMedia (unStyleSheet (toStyleSheet self))) >>= fromJSRef)
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,46 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef StyleSheetList -> Word -> IO (JSRef 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 ((js_item (unStyleSheetList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        JSRef StyleSheetList -> JSString -> IO (JSRef 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
+      ((js__get (unStyleSheetList self) (toJSString name)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unStyleSheetList 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,242 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"encrypt\"]($2, $3, $4)"
+        js_encrypt ::
+        JSRef SubtleCrypto ->
+          JSString ->
+            JSRef CryptoKey -> JSRef [Maybe data'] -> IO (JSRef 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
+      ((toJSRef data' >>=
+          \ data'' ->
+            js_encrypt (unSubtleCrypto self) (toJSString algorithm)
+              (maybe jsNull pToJSRef key)
+              data'')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"decrypt\"]($2, $3, $4)"
+        js_decrypt ::
+        JSRef SubtleCrypto ->
+          JSString ->
+            JSRef CryptoKey -> JSRef [Maybe data'] -> IO (JSRef 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
+      ((toJSRef data' >>=
+          \ data'' ->
+            js_decrypt (unSubtleCrypto self) (toJSString algorithm)
+              (maybe jsNull pToJSRef key)
+              data'')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"sign\"]($2, $3, $4)" js_sign
+        ::
+        JSRef SubtleCrypto ->
+          JSString ->
+            JSRef CryptoKey -> JSRef [Maybe data'] -> IO (JSRef 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
+      ((toJSRef data' >>=
+          \ data'' ->
+            js_sign (unSubtleCrypto self) (toJSString algorithm)
+              (maybe jsNull pToJSRef key)
+              data'')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"verify\"]($2, $3, $4, $5)"
+        js_verify ::
+        JSRef SubtleCrypto ->
+          JSString ->
+            JSRef CryptoKey ->
+              JSRef CryptoOperationData ->
+                JSRef [Maybe data'] -> IO (JSRef 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
+      ((toJSRef data' >>=
+          \ data'' ->
+            js_verify (unSubtleCrypto self) (toJSString algorithm)
+              (maybe jsNull pToJSRef key)
+              (maybe jsNull (unCryptoOperationData . toCryptoOperationData)
+                 signature)
+              data'')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"digest\"]($2, $3)" js_digest
+        ::
+        JSRef SubtleCrypto ->
+          JSString -> JSRef [Maybe data'] -> IO (JSRef 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
+      ((toJSRef data' >>=
+          \ data'' ->
+            js_digest (unSubtleCrypto self) (toJSString algorithm) data'')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"generateKey\"]($2, $3, $4)"
+        js_generateKey ::
+        JSRef SubtleCrypto ->
+          JSString -> Bool -> JSRef [KeyUsage] -> IO (JSRef 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
+      ((toJSRef keyUsages >>=
+          \ keyUsages' ->
+            js_generateKey (unSubtleCrypto self) (toJSString algorithm)
+              extractable
+              keyUsages')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"importKey\"]($2, $3, $4, $5,\n$6)" js_importKey ::
+        JSRef SubtleCrypto ->
+          JSString ->
+            JSRef CryptoOperationData ->
+              JSString -> Bool -> JSRef [KeyUsage] -> IO (JSRef 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
+      ((toJSRef keyUsages >>=
+          \ keyUsages' ->
+            js_importKey (unSubtleCrypto self) (toJSString format)
+              (maybe jsNull (unCryptoOperationData . toCryptoOperationData)
+                 keyData)
+              (toJSString algorithm)
+              extractable
+              keyUsages')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"exportKey\"]($2, $3)"
+        js_exportKey ::
+        JSRef SubtleCrypto ->
+          JSString -> JSRef CryptoKey -> IO (JSRef 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
+      ((js_exportKey (unSubtleCrypto self) (toJSString format)
+          (maybe jsNull pToJSRef key))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"wrapKey\"]($2, $3, $4, $5)"
+        js_wrapKey ::
+        JSRef SubtleCrypto ->
+          JSString ->
+            JSRef CryptoKey ->
+              JSRef CryptoKey -> JSString -> IO (JSRef 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
+      ((js_wrapKey (unSubtleCrypto self) (toJSString format)
+          (maybe jsNull pToJSRef key)
+          (maybe jsNull pToJSRef wrappingKey)
+          (toJSString wrapAlgorithm))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"unwrapKey\"]($2, $3, $4, $5,\n$6, $7, $8)" js_unwrapKey ::
+        JSRef SubtleCrypto ->
+          JSString ->
+            JSRef CryptoOperationData ->
+              JSRef CryptoKey ->
+                JSString ->
+                  JSString -> Bool -> JSRef [KeyUsage] -> IO (JSRef 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
+      ((toJSRef keyUsages >>=
+          \ keyUsages' ->
+            js_unwrapKey (unSubtleCrypto self) (toJSString format)
+              (maybe jsNull (unCryptoOperationData . toCryptoOperationData)
+                 wrappedKey)
+              (maybe jsNull pToJSRef unwrappingKey)
+              (toJSString unwrapAlgorithm)
+              (toJSString unwrappedKeyAlgorithm)
+              extractable
+              keyUsages')
+         >>= fromJSRef)
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,60 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"Text\"]($1)"
+        js_newText :: JSString -> IO (JSRef 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') >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"splitText\"]($2)"
+        js_splitText :: JSRef Text -> Word -> IO (JSRef 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
+      ((js_splitText (unText (toText self)) offset) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"replaceWholeText\"]($2)"
+        js_replaceWholeText :: JSRef Text -> JSString -> IO (JSRef 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
+      ((js_replaceWholeText (unText (toText self)) (toJSString content))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"wholeText\"]"
+        js_getWholeText :: JSRef 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 (unText (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,47 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initTextEvent\"]($2, $3, $4,\n$5, $6)" js_initTextEvent ::
+        JSRef TextEvent ->
+          JSString -> Bool -> Bool -> JSRef 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 (unTextEvent self) (toJSString typeArg)
+         canBubbleArg
+         cancelableArg
+         (maybe jsNull pToJSRef viewArg)
+         (toJSString dataArg))
+ 
+foreign import javascript unsafe "$1[\"data\"]" js_getData ::
+        JSRef 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 (unTextEvent 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unTextMetrics 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,185 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"addCue\"]($2)" js_addCue ::
+        JSRef TextTrack -> JSRef 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 (unTextTrack self)
+         (maybe jsNull (unTextTrackCue . toTextTrackCue) cue))
+ 
+foreign import javascript unsafe "$1[\"removeCue\"]($2)"
+        js_removeCue :: JSRef TextTrack -> JSRef 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 (unTextTrack self)
+         (maybe jsNull (unTextTrackCue . toTextTrackCue) cue))
+ 
+foreign import javascript unsafe "$1[\"addRegion\"]($2)"
+        js_addRegion :: JSRef TextTrack -> JSRef 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 (unTextTrack self) (maybe jsNull pToJSRef region))
+ 
+foreign import javascript unsafe "$1[\"removeRegion\"]($2)"
+        js_removeRegion :: JSRef TextTrack -> JSRef 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 (unTextTrack self) (maybe jsNull pToJSRef region))
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unTextTrack self)))
+ 
+foreign import javascript unsafe "$1[\"kind\"] = $2;" js_setKind ::
+        JSRef TextTrack -> JSRef TextTrackKind -> 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 (unTextTrack self) (pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"kind\"]" js_getKind ::
+        JSRef TextTrack -> IO (JSRef TextTrackKind)
+
+-- | <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 (unTextTrack self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unTextTrack self)))
+ 
+foreign import javascript unsafe "$1[\"language\"] = $2;"
+        js_setLanguage :: JSRef 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 (unTextTrack self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"language\"]" js_getLanguage
+        :: JSRef 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 (unTextTrack self)))
+ 
+foreign import javascript unsafe
+        "$1[\"inBandMetadataTrackDispatchType\"]"
+        js_getInBandMetadataTrackDispatchType ::
+        JSRef 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 (unTextTrack self)))
+ 
+foreign import javascript unsafe "$1[\"mode\"] = $2;" js_setMode ::
+        JSRef TextTrack -> JSRef TextTrackMode -> 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 (unTextTrack self) (pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"mode\"]" js_getMode ::
+        JSRef TextTrack -> IO (JSRef TextTrackMode)
+
+-- | <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 (unTextTrack self)) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"cues\"]" js_getCues ::
+        JSRef TextTrack -> IO (JSRef 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 ((js_getCues (unTextTrack self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"activeCues\"]"
+        js_getActiveCues :: JSRef TextTrack -> IO (JSRef 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 ((js_getActiveCues (unTextTrack self)) >>= fromJSRef)
+
+-- | <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 ::
+        JSRef TextTrack -> IO (JSRef 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 ((js_getRegions (unTextTrack self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"sourceBuffer\"]"
+        js_getSourceBuffer :: JSRef TextTrack -> IO (JSRef 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 ((js_getSourceBuffer (unTextTrack self)) >>= fromJSRef)
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,136 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"TextTrackCue\"]($1,\n$2, $3)" js_newTextTrackCue ::
+        Double -> Double -> JSString -> IO (JSRef 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) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        JSRef TextTrackCue -> IO (JSRef 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
+      ((js_getTrack (unTextTrackCue (toTextTrackCue self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"id\"] = $2;" js_setId ::
+        JSRef 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 (unTextTrackCue (toTextTrackCue self)) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unTextTrackCue (toTextTrackCue self))))
+ 
+foreign import javascript unsafe "$1[\"startTime\"] = $2;"
+        js_setStartTime :: JSRef 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 (unTextTrackCue (toTextTrackCue self)) val)
+ 
+foreign import javascript unsafe "$1[\"startTime\"]"
+        js_getStartTime :: JSRef 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 (unTextTrackCue (toTextTrackCue self)))
+ 
+foreign import javascript unsafe "$1[\"endTime\"] = $2;"
+        js_setEndTime :: JSRef 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 (unTextTrackCue (toTextTrackCue self)) val)
+ 
+foreign import javascript unsafe "$1[\"endTime\"]" js_getEndTime ::
+        JSRef 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 (unTextTrackCue (toTextTrackCue self)))
+ 
+foreign import javascript unsafe "$1[\"pauseOnExit\"] = $2;"
+        js_setPauseOnExit :: JSRef 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 (unTextTrackCue (toTextTrackCue self)) val)
+ 
+foreign import javascript unsafe "($1[\"pauseOnExit\"] ? 1 : 0)"
+        js_getPauseOnExit :: JSRef 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 (unTextTrackCue (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,48 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef TextTrackCueList -> Word -> IO (JSRef 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 ((js_item (unTextTrackCueList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getCueById\"]($2)"
+        js_getCueById ::
+        JSRef TextTrackCueList -> JSString -> IO (JSRef 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
+      ((js_getCueById (unTextTrackCueList self) (toJSString id)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unTextTrackCueList 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,60 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef TextTrackList -> Word -> IO (JSRef 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 ((js_item (unTextTrackList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getTrackById\"]($2)"
+        js_getTrackById ::
+        JSRef TextTrackList -> JSString -> IO (JSRef 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
+      ((js_getTrackById (unTextTrackList self) (toJSString id)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unTextTrackList 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"start\"]($2)" js_start ::
+        JSRef 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 (unTimeRanges self) index)
+ 
+foreign import javascript unsafe "$1[\"end\"]($2)" js_end ::
+        JSRef 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 (unTimeRanges self) index)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unTimeRanges 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,110 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"clientX\"]" js_getClientX ::
+        JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"clientY\"]" js_getClientY ::
+        JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"screenX\"]" js_getScreenX ::
+        JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"screenY\"]" js_getScreenY ::
+        JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"pageX\"]" js_getPageX ::
+        JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"pageY\"]" js_getPageY ::
+        JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"target\"]" js_getTarget ::
+        JSRef Touch -> IO (JSRef 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 ((js_getTarget (unTouch self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"identifier\"]"
+        js_getIdentifier :: JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"webkitRadiusX\"]"
+        js_getWebkitRadiusX :: JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"webkitRadiusY\"]"
+        js_getWebkitRadiusY :: JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"webkitRotationAngle\"]"
+        js_getWebkitRotationAngle :: JSRef 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 (unTouch self))
+ 
+foreign import javascript unsafe "$1[\"webkitForce\"]"
+        js_getWebkitForce :: JSRef 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 (unTouch 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,115 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initTouchEvent\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12, $13, $14)"
+        js_initTouchEvent ::
+        JSRef TouchEvent ->
+          JSRef TouchList ->
+            JSRef TouchList ->
+              JSRef TouchList ->
+                JSString ->
+                  JSRef 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 (unTouchEvent self)
+         (maybe jsNull pToJSRef touches)
+         (maybe jsNull pToJSRef targetTouches)
+         (maybe jsNull pToJSRef changedTouches)
+         (toJSString type')
+         (maybe jsNull pToJSRef view)
+         screenX
+         screenY
+         clientX
+         clientY
+         ctrlKey
+         altKey
+         shiftKey
+         metaKey)
+ 
+foreign import javascript unsafe "$1[\"touches\"]" js_getTouches ::
+        JSRef TouchEvent -> IO (JSRef 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 ((js_getTouches (unTouchEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"targetTouches\"]"
+        js_getTargetTouches :: JSRef TouchEvent -> IO (JSRef 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 ((js_getTargetTouches (unTouchEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"changedTouches\"]"
+        js_getChangedTouches :: JSRef TouchEvent -> IO (JSRef 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 ((js_getChangedTouches (unTouchEvent self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "($1[\"ctrlKey\"] ? 1 : 0)"
+        js_getCtrlKey :: JSRef 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 (unTouchEvent self))
+ 
+foreign import javascript unsafe "($1[\"shiftKey\"] ? 1 : 0)"
+        js_getShiftKey :: JSRef 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 (unTouchEvent self))
+ 
+foreign import javascript unsafe "($1[\"altKey\"] ? 1 : 0)"
+        js_getAltKey :: JSRef 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 (unTouchEvent self))
+ 
+foreign import javascript unsafe "($1[\"metaKey\"] ? 1 : 0)"
+        js_getMetaKey :: JSRef 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 (unTouchEvent 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef TouchList -> Word -> IO (JSRef 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 ((js_item (unTouchList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unTouchList 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,27 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        JSRef TrackEvent -> IO (JSRef 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 ((js_getTrack (unTrackEvent self)) >>= fromJSRef)
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,48 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"propertyName\"]"
+        js_getPropertyName :: JSRef 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 (unTransitionEvent self)))
+ 
+foreign import javascript unsafe "$1[\"elapsedTime\"]"
+        js_getElapsedTime :: JSRef 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 (unTransitionEvent self))
+ 
+foreign import javascript unsafe "$1[\"pseudoElement\"]"
+        js_getPseudoElement :: JSRef 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 (unTransitionEvent 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,132 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"parentNode\"]()"
+        js_parentNode :: JSRef TreeWalker -> IO (JSRef 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 ((js_parentNode (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"firstChild\"]()"
+        js_firstChild :: JSRef TreeWalker -> IO (JSRef 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 ((js_firstChild (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"lastChild\"]()" js_lastChild
+        :: JSRef TreeWalker -> IO (JSRef 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 ((js_lastChild (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"previousSibling\"]()"
+        js_previousSibling :: JSRef TreeWalker -> IO (JSRef 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 ((js_previousSibling (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"nextSibling\"]()"
+        js_nextSibling :: JSRef TreeWalker -> IO (JSRef 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 ((js_nextSibling (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"previousNode\"]()"
+        js_previousNode :: JSRef TreeWalker -> IO (JSRef 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 ((js_previousNode (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"nextNode\"]()" js_nextNode
+        :: JSRef TreeWalker -> IO (JSRef 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 ((js_nextNode (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"root\"]" js_getRoot ::
+        JSRef TreeWalker -> IO (JSRef 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 ((js_getRoot (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"whatToShow\"]"
+        js_getWhatToShow :: JSRef 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 (unTreeWalker self))
+ 
+foreign import javascript unsafe "$1[\"filter\"]" js_getFilter ::
+        JSRef TreeWalker -> IO (JSRef 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 ((js_getFilter (unTreeWalker self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"expandEntityReferences\"] ? 1 : 0)"
+        js_getExpandEntityReferences :: JSRef 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 (unTreeWalker self))
+ 
+foreign import javascript unsafe "$1[\"currentNode\"] = $2;"
+        js_setCurrentNode :: JSRef TreeWalker -> JSRef 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 (unTreeWalker self)
+         (maybe jsNull (unNode . toNode) val))
+ 
+foreign import javascript unsafe "$1[\"currentNode\"]"
+        js_getCurrentNode :: JSRef TreeWalker -> IO (JSRef 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 ((js_getCurrentNode (unTreeWalker self)) >>= fromJSRef)
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,357 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"testLong\"] = $2;"
+        js_setTestLong :: JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testLong\"]" js_getTestLong
+        :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeLong\"] = $2;" js_setTestEnforceRangeLong ::
+        JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeLong\"]"
+        js_getTestEnforceRangeLong :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe "$1[\"testUnsignedLong\"] = $2;"
+        js_setTestUnsignedLong :: JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testUnsignedLong\"]"
+        js_getTestUnsignedLong :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedLong\"] = $2;"
+        js_setTestEnforceRangeUnsignedLong ::
+        JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedLong\"]"
+        js_getTestEnforceRangeUnsignedLong ::
+        JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe "$1[\"testLongLong\"] = $2;"
+        js_setTestLongLong :: JSRef 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 (unTypeConversions self) (fromIntegral val))
+ 
+foreign import javascript unsafe "$1[\"testLongLong\"]"
+        js_getTestLongLong :: JSRef 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 (unTypeConversions self)))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeLongLong\"] = $2;"
+        js_setTestEnforceRangeLongLong ::
+        JSRef 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 (unTypeConversions self)
+         (fromIntegral val))
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeLongLong\"]"
+        js_getTestEnforceRangeLongLong ::
+        JSRef 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 (unTypeConversions self)))
+ 
+foreign import javascript unsafe
+        "$1[\"testUnsignedLongLong\"] = $2;" js_setTestUnsignedLongLong ::
+        JSRef 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 (unTypeConversions self)
+         (fromIntegral val))
+ 
+foreign import javascript unsafe "$1[\"testUnsignedLongLong\"]"
+        js_getTestUnsignedLongLong :: JSRef 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 (unTypeConversions self)))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedLongLong\"] = $2;"
+        js_setTestEnforceRangeUnsignedLongLong ::
+        JSRef 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 (unTypeConversions self)
+         (fromIntegral val))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedLongLong\"]"
+        js_getTestEnforceRangeUnsignedLongLong ::
+        JSRef 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 (unTypeConversions self)))
+ 
+foreign import javascript unsafe "$1[\"testByte\"] = $2;"
+        js_setTestByte :: JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testByte\"]" js_getTestByte
+        :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeByte\"] = $2;" js_setTestEnforceRangeByte ::
+        JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeByte\"]"
+        js_getTestEnforceRangeByte :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe "$1[\"testOctet\"] = $2;"
+        js_setTestOctet :: JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testOctet\"]"
+        js_getTestOctet :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeOctet\"] = $2;" js_setTestEnforceRangeOctet
+        :: JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeOctet\"]"
+        js_getTestEnforceRangeOctet :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe "$1[\"testShort\"] = $2;"
+        js_setTestShort :: JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testShort\"]"
+        js_getTestShort :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeShort\"] = $2;" js_setTestEnforceRangeShort
+        :: JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testEnforceRangeShort\"]"
+        js_getTestEnforceRangeShort :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe "$1[\"testUnsignedShort\"] = $2;"
+        js_setTestUnsignedShort :: JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe "$1[\"testUnsignedShort\"]"
+        js_getTestUnsignedShort :: JSRef 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 (unTypeConversions self))
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedShort\"] = $2;"
+        js_setTestEnforceRangeUnsignedShort ::
+        JSRef 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 (unTypeConversions self) val)
+ 
+foreign import javascript unsafe
+        "$1[\"testEnforceRangeUnsignedShort\"]"
+        js_getTestEnforceRangeUnsignedShort ::
+        JSRef 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 (unTypeConversions 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,104 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initUIEvent\"]($2, $3, $4,\n$5, $6)" js_initUIEvent ::
+        JSRef UIEvent ->
+          JSString -> Bool -> Bool -> JSRef 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 (unUIEvent (toUIEvent self)) (toJSString type')
+         canBubble
+         cancelable
+         (maybe jsNull pToJSRef view)
+         detail)
+ 
+foreign import javascript unsafe "$1[\"view\"]" js_getView ::
+        JSRef UIEvent -> IO (JSRef 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 ((js_getView (unUIEvent (toUIEvent self))) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"detail\"]" js_getDetail ::
+        JSRef 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 (unUIEvent (toUIEvent self)))
+ 
+foreign import javascript unsafe "$1[\"keyCode\"]" js_getKeyCode ::
+        JSRef 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 (unUIEvent (toUIEvent self)))
+ 
+foreign import javascript unsafe "$1[\"charCode\"]" js_getCharCode
+        :: JSRef 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 (unUIEvent (toUIEvent self)))
+ 
+foreign import javascript unsafe "$1[\"layerX\"]" js_getLayerX ::
+        JSRef 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 (unUIEvent (toUIEvent self)))
+ 
+foreign import javascript unsafe "$1[\"layerY\"]" js_getLayerY ::
+        JSRef 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 (unUIEvent (toUIEvent self)))
+ 
+foreign import javascript unsafe "$1[\"pageX\"]" js_getPageX ::
+        JSRef 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 (unUIEvent (toUIEvent self)))
+ 
+foreign import javascript unsafe "$1[\"pageY\"]" js_getPageY ::
+        JSRef 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 (unUIEvent (toUIEvent self)))
+ 
+foreign import javascript unsafe "$1[\"which\"]" js_getWhich ::
+        JSRef 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 (unUIEvent (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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"receiver\"]" js_getReceiver
+        :: JSRef UIRequestEvent -> IO (JSRef 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 ((js_getReceiver (unUIRequestEvent self)) >>= fromJSRef)
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,104 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"URL\"]($1)"
+        js_newURL :: JSString -> IO (JSRef 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) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "new window[\"URL\"]($1, $2)"
+        js_newURL' :: JSString -> JSString -> IO (JSRef 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) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "new window[\"URL\"]($1, $2)"
+        js_newURL'' :: JSString -> JSRef URL -> IO (JSRef 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) (maybe jsNull pToJSRef base) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"createObjectURL\"]($2)"
+        js_createObjectURL ::
+        JSRef URL -> JSRef Blob -> IO (JSRef (Maybe 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 (unURL self)
+            (maybe jsNull (unBlob . toBlob) blob)))
+ 
+foreign import javascript unsafe "$1[\"revokeObjectURL\"]($2)"
+        js_revokeObjectURL :: JSRef 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 (unURL self) (toJSString url))
+ 
+foreign import javascript unsafe "$1[\"createObjectURL\"]($2)"
+        js_createObjectURLSource ::
+        JSRef URL -> JSRef MediaSource -> IO (JSRef (Maybe 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 (unURL self)
+            (maybe jsNull pToJSRef source)))
+ 
+foreign import javascript unsafe "$1[\"createObjectURL\"]($2)"
+        js_createObjectURLStream ::
+        JSRef URL -> JSRef MediaStream -> IO (JSRef (Maybe 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 (unURL self)
+            (maybe jsNull pToJSRef 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,223 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: JSRef 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"href\"] = $2;" js_setHref ::
+        JSRef 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 (unURLUtils self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"origin\"]" js_getOrigin ::
+        JSRef 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"protocol\"] = $2;"
+        js_setProtocol :: JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"username\"] = $2;"
+        js_setUsername :: JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"username\"]" js_getUsername
+        :: JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"password\"] = $2;"
+        js_setPassword :: JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"password\"]" js_getPassword
+        :: JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"host\"] = $2;" js_setHost ::
+        JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"host\"]" js_getHost ::
+        JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"hostname\"] = $2;"
+        js_setHostname :: JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"hostname\"]" js_getHostname
+        :: JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"port\"] = $2;" js_setPort ::
+        JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"port\"]" js_getPort ::
+        JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"pathname\"] = $2;"
+        js_setPathname :: JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"pathname\"]" js_getPathname
+        :: JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"search\"] = $2;"
+        js_setSearch :: JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"search\"]" js_getSearch ::
+        JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils self)))
+ 
+foreign import javascript unsafe "$1[\"hash\"] = $2;" js_setHash ::
+        JSRef URLUtils -> JSRef (Maybe 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 (unURLUtils self) (toMaybeJSString val))
+ 
+foreign import javascript unsafe "$1[\"hash\"]" js_getHash ::
+        JSRef URLUtils -> IO (JSRef (Maybe 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 (unURLUtils 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,33 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2)"
+        js_postMessage ::
+        JSRef UserMessageHandler -> JSRef 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 (unUserMessageHandler self)
+         (maybe jsNull (unSerializedScriptValue . 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,170 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"VTTCue\"]($1, $2, $3)" js_newVTTCue ::
+        Double -> Double -> JSString -> IO (JSRef 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) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"getCueAsHTML\"]()"
+        js_getCueAsHTML :: JSRef VTTCue -> IO (JSRef 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 ((js_getCueAsHTML (unVTTCue self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"vertical\"] = $2;"
+        js_setVertical :: JSRef 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 (unVTTCue self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"vertical\"]" js_getVertical
+        :: JSRef 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 (unVTTCue self)))
+ 
+foreign import javascript unsafe "$1[\"snapToLines\"] = $2;"
+        js_setSnapToLines :: JSRef 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 (unVTTCue self) val)
+ 
+foreign import javascript unsafe "($1[\"snapToLines\"] ? 1 : 0)"
+        js_getSnapToLines :: JSRef 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 (unVTTCue self))
+ 
+foreign import javascript unsafe "$1[\"line\"] = $2;" js_setLine ::
+        JSRef 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 (unVTTCue self) val)
+ 
+foreign import javascript unsafe "$1[\"line\"]" js_getLine ::
+        JSRef 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 (unVTTCue self))
+ 
+foreign import javascript unsafe "$1[\"position\"] = $2;"
+        js_setPosition :: JSRef 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 (unVTTCue self) val)
+ 
+foreign import javascript unsafe "$1[\"position\"]" js_getPosition
+        :: JSRef 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 (unVTTCue self))
+ 
+foreign import javascript unsafe "$1[\"size\"] = $2;" js_setSize ::
+        JSRef 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 (unVTTCue self) val)
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        JSRef 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 (unVTTCue self))
+ 
+foreign import javascript unsafe "$1[\"align\"] = $2;" js_setAlign
+        :: JSRef 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 (unVTTCue self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"align\"]" js_getAlign ::
+        JSRef 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 (unVTTCue self)))
+ 
+foreign import javascript unsafe "$1[\"text\"] = $2;" js_setText ::
+        JSRef 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 (unVTTCue self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"text\"]" js_getText ::
+        JSRef 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 (unVTTCue self)))
+ 
+foreign import javascript unsafe "$1[\"regionId\"] = $2;"
+        js_setRegionId :: JSRef 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 (unVTTCue self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"regionId\"]" js_getRegionId
+        :: JSRef 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 (unVTTCue 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,168 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"VTTRegion\"]()"
+        js_newVTTRegion :: IO (JSRef VTTRegion)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation> 
+newVTTRegion :: (MonadIO m) => m VTTRegion
+newVTTRegion = liftIO (js_newVTTRegion >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"track\"]" js_getTrack ::
+        JSRef VTTRegion -> IO (JSRef 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 ((js_getTrack (unVTTRegion self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"id\"] = $2;" js_setId ::
+        JSRef 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 (unVTTRegion self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unVTTRegion self)))
+ 
+foreign import javascript unsafe "$1[\"width\"] = $2;" js_setWidth
+        :: JSRef 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 (unVTTRegion self) val)
+ 
+foreign import javascript unsafe "$1[\"width\"]" js_getWidth ::
+        JSRef 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 (unVTTRegion self))
+ 
+foreign import javascript unsafe "$1[\"height\"] = $2;"
+        js_setHeight :: JSRef 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 (unVTTRegion self) val)
+ 
+foreign import javascript unsafe "$1[\"height\"]" js_getHeight ::
+        JSRef 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 (unVTTRegion self))
+ 
+foreign import javascript unsafe "$1[\"regionAnchorX\"] = $2;"
+        js_setRegionAnchorX :: JSRef 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 (unVTTRegion self) val)
+ 
+foreign import javascript unsafe "$1[\"regionAnchorX\"]"
+        js_getRegionAnchorX :: JSRef 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 (unVTTRegion self))
+ 
+foreign import javascript unsafe "$1[\"regionAnchorY\"] = $2;"
+        js_setRegionAnchorY :: JSRef 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 (unVTTRegion self) val)
+ 
+foreign import javascript unsafe "$1[\"regionAnchorY\"]"
+        js_getRegionAnchorY :: JSRef 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 (unVTTRegion self))
+ 
+foreign import javascript unsafe "$1[\"viewportAnchorX\"] = $2;"
+        js_setViewportAnchorX :: JSRef 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 (unVTTRegion self) val)
+ 
+foreign import javascript unsafe "$1[\"viewportAnchorX\"]"
+        js_getViewportAnchorX :: JSRef 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 (unVTTRegion self))
+ 
+foreign import javascript unsafe "$1[\"viewportAnchorY\"] = $2;"
+        js_setViewportAnchorY :: JSRef 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 (unVTTRegion self) val)
+ 
+foreign import javascript unsafe "$1[\"viewportAnchorY\"]"
+        js_getViewportAnchorY :: JSRef 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 (unVTTRegion self))
+ 
+foreign import javascript unsafe "$1[\"scroll\"] = $2;"
+        js_setScroll :: JSRef 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 (unVTTRegion self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"scroll\"]" js_getScroll ::
+        JSRef 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 (unVTTRegion 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,47 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef VTTRegionList -> Word -> IO (JSRef 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 ((js_item (unVTTRegionList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getRegionById\"]($2)"
+        js_getRegionById ::
+        JSRef VTTRegionList -> JSString -> IO (JSRef 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
+      ((js_getRegionById (unVTTRegionList self) (toJSString id)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unVTTRegionList 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,102 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "($1[\"valueMissing\"] ? 1 : 0)"
+        js_getValueMissing :: JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe "($1[\"typeMismatch\"] ? 1 : 0)"
+        js_getTypeMismatch :: JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe
+        "($1[\"patternMismatch\"] ? 1 : 0)" js_getPatternMismatch ::
+        JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe "($1[\"tooLong\"] ? 1 : 0)"
+        js_getTooLong :: JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe "($1[\"rangeUnderflow\"] ? 1 : 0)"
+        js_getRangeUnderflow :: JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe "($1[\"rangeOverflow\"] ? 1 : 0)"
+        js_getRangeOverflow :: JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe "($1[\"stepMismatch\"] ? 1 : 0)"
+        js_getStepMismatch :: JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe "($1[\"badInput\"] ? 1 : 0)"
+        js_getBadInput :: JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe "($1[\"customError\"] ? 1 : 0)"
+        js_getCustomError :: JSRef 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 (unValidityState self))
+ 
+foreign import javascript unsafe "($1[\"valid\"] ? 1 : 0)"
+        js_getValid :: JSRef 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 (unValidityState 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,67 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"creationTime\"]"
+        js_getCreationTime :: JSRef 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 (unVideoPlaybackQuality self))
+ 
+foreign import javascript unsafe "$1[\"totalVideoFrames\"]"
+        js_getTotalVideoFrames :: JSRef 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 (unVideoPlaybackQuality self))
+ 
+foreign import javascript unsafe "$1[\"droppedVideoFrames\"]"
+        js_getDroppedVideoFrames :: JSRef 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 (unVideoPlaybackQuality self))
+ 
+foreign import javascript unsafe "$1[\"corruptedVideoFrames\"]"
+        js_getCorruptedVideoFrames :: JSRef 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 (unVideoPlaybackQuality self))
+ 
+foreign import javascript unsafe "$1[\"totalFrameDelay\"]"
+        js_getTotalFrameDelay :: JSRef 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 (unVideoPlaybackQuality 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,33 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"VideoStreamTrack\"]($1)" js_newVideoStreamTrack ::
+        JSRef Dictionary -> IO (JSRef 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
+         (maybe jsNull (unDictionary . toDictionary) videoConstraints)
+         >>= fromJSRefUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"id\"]" js_getId ::
+        JSRef 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 (unVideoTrack self)))
+ 
+foreign import javascript unsafe "$1[\"kind\"] = $2;" js_setKind ::
+        JSRef 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 (unVideoTrack self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"kind\"]" js_getKind ::
+        JSRef 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 (unVideoTrack self)))
+ 
+foreign import javascript unsafe "$1[\"label\"]" js_getLabel ::
+        JSRef 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 (unVideoTrack self)))
+ 
+foreign import javascript unsafe "$1[\"language\"] = $2;"
+        js_setLanguage :: JSRef 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 (unVideoTrack self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"language\"]" js_getLanguage
+        :: JSRef 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 (unVideoTrack self)))
+ 
+foreign import javascript unsafe "$1[\"selected\"] = $2;"
+        js_setSelected :: JSRef 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 (unVideoTrack self) val)
+ 
+foreign import javascript unsafe "($1[\"selected\"] ? 1 : 0)"
+        js_getSelected :: JSRef 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 (unVideoTrack self))
+ 
+foreign import javascript unsafe "$1[\"sourceBuffer\"]"
+        js_getSourceBuffer :: JSRef VideoTrack -> IO (JSRef 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 ((js_getSourceBuffer (unVideoTrack self)) >>= fromJSRef)
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,70 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"item\"]($2)" js_item ::
+        JSRef VideoTrackList -> Word -> IO (JSRef 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 ((js_item (unVideoTrackList self) index) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getTrackById\"]($2)"
+        js_getTrackById ::
+        JSRef VideoTrackList -> JSString -> IO (JSRef 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
+      ((js_getTrackById (unVideoTrackList self) (toJSString id)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unVideoTrackList self))
+ 
+foreign import javascript unsafe "$1[\"selectedIndex\"]"
+        js_getSelectedIndex :: JSRef 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 (unVideoTrackList 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,33 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
+newVoidCallback :: (MonadIO m) => IO () -> m VoidCallback
+newVoidCallback callback
+  = liftIO (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 (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 (asyncCallback callback)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms, 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"curve\"] = $2;" js_setCurve
+        :: JSRef WaveShaperNode -> JSRef 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 (unWaveShaperNode self)
+         (maybe jsNull (unFloat32Array . toFloat32Array) val))
+ 
+foreign import javascript unsafe "$1[\"curve\"]" js_getCurve ::
+        JSRef WaveShaperNode -> IO (JSRef 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 ((js_getCurve (unWaveShaperNode self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"oversample\"] = $2;"
+        js_setOversample ::
+        JSRef WaveShaperNode -> JSRef OverSampleType -> 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 (unWaveShaperNode self) (pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"oversample\"]"
+        js_getOversample ::
+        JSRef WaveShaperNode -> IO (JSRef OverSampleType)
+
+-- | <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 (unWaveShaperNode self)) >>= fromJSRefUnchecked)
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,2148 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"copyBufferSubData\"]($2, $3,\n$4, $5, $6)"
+        js_copyBufferSubData ::
+        JSRef 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 (unWebGL2RenderingContext self) readTarget
+         writeTarget
+         (fromIntegral readOffset)
+         (fromIntegral writeOffset)
+         (fromIntegral size))
+ 
+foreign import javascript unsafe
+        "$1[\"getBufferSubData\"]($2, $3,\n$4)" js_getBufferSubDataView ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> Double -> JSRef 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 (unWebGL2RenderingContext self) target
+         (fromIntegral offset)
+         (maybe jsNull (unArrayBufferView . toArrayBufferView)
+            returnedData))
+ 
+foreign import javascript unsafe
+        "$1[\"getBufferSubData\"]($2, $3,\n$4)" js_getBufferSubData ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> Double -> JSRef 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 (unWebGL2RenderingContext self) target
+         (fromIntegral offset)
+         (maybe jsNull (unArrayBuffer . toArrayBuffer) returnedData))
+ 
+foreign import javascript unsafe
+        "$1[\"getFramebufferAttachmentParameter\"]($2,\n$3, $4)"
+        js_getFramebufferAttachmentParameter ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLenum -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFramebufferAttachmentParameter Mozilla WebGL2RenderingContext.getFramebufferAttachmentParameter documentation> 
+getFramebufferAttachmentParameter ::
+                                  (MonadIO m) =>
+                                    WebGL2RenderingContext ->
+                                      GLenum -> GLenum -> GLenum -> m (JSRef a)
+getFramebufferAttachmentParameter self target attachment pname
+  = liftIO
+      (js_getFramebufferAttachmentParameter
+         (unWebGL2RenderingContext self)
+         target
+         attachment
+         pname)
+ 
+foreign import javascript unsafe
+        "$1[\"blitFramebuffer\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11)"
+        js_blitFramebuffer ::
+        JSRef 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 (unWebGL2RenderingContext 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 ::
+        JSRef 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 (unWebGL2RenderingContext self) target
+         attachment
+         texture
+         level
+         layer)
+ 
+foreign import javascript unsafe
+        "$1[\"getInternalformatParameter\"]($2,\n$3, $4)"
+        js_getInternalformatParameter ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLenum -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getInternalformatParameter Mozilla WebGL2RenderingContext.getInternalformatParameter documentation> 
+getInternalformatParameter ::
+                           (MonadIO m) =>
+                             WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m (JSRef a)
+getInternalformatParameter self target internalformat pname
+  = liftIO
+      (js_getInternalformatParameter (unWebGL2RenderingContext self)
+         target
+         internalformat
+         pname)
+ 
+foreign import javascript unsafe
+        "$1[\"invalidateFramebuffer\"]($2,\n$3)" js_invalidateFramebuffer
+        ::
+        JSRef WebGL2RenderingContext -> GLenum -> JSRef [GLenum] -> 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
+      (toJSRef attachments >>=
+         \ attachments' ->
+           js_invalidateFramebuffer (unWebGL2RenderingContext self) target
+             attachments')
+ 
+foreign import javascript unsafe
+        "$1[\"invalidateSubFramebuffer\"]($2,\n$3, $4, $5, $6, $7)"
+        js_invalidateSubFramebuffer ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            JSRef [GLenum] -> 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
+      (toJSRef attachments >>=
+         \ attachments' ->
+           js_invalidateSubFramebuffer (unWebGL2RenderingContext self) target
+             attachments'
+         x
+         y
+         width
+         height)
+ 
+foreign import javascript unsafe "$1[\"readBuffer\"]($2)"
+        js_readBuffer :: JSRef 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 (unWebGL2RenderingContext self) src)
+ 
+foreign import javascript unsafe
+        "$1[\"renderbufferStorageMultisample\"]($2,\n$3, $4, $5, $6)"
+        js_renderbufferStorageMultisample ::
+        JSRef 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 (unWebGL2RenderingContext self)
+         target
+         samples
+         internalformat
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"texStorage2D\"]($2, $3, $4,\n$5, $6)" js_texStorage2D ::
+        JSRef 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 (unWebGL2RenderingContext self) target levels
+         internalformat
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "$1[\"texStorage3D\"]($2, $3, $4,\n$5, $6, $7)" js_texStorage3D ::
+        JSRef 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 (unWebGL2RenderingContext 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 ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLsizei ->
+                  GLsizei ->
+                    GLsizei ->
+                      GLint -> GLenum -> GLenum -> JSRef 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 (unWebGL2RenderingContext self) target level
+         internalformat
+         width
+         height
+         depth
+         border
+         format
+         type'
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) pixels))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12)"
+        js_texSubImage3DView ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint ->
+                    GLsizei ->
+                      GLsizei ->
+                        GLsizei -> GLenum -> GLenum -> JSRef 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 (unWebGL2RenderingContext self) target level
+         xoffset
+         yoffset
+         zoffset
+         width
+         height
+         depth
+         format
+         type'
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) pixels))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_texSubImage3DData ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLint -> GLenum -> GLenum -> JSRef 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 (unWebGL2RenderingContext self) target level
+         xoffset
+         yoffset
+         zoffset
+         format
+         type'
+         (maybe jsNull pToJSRef source))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_texSubImage3D ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint -> GLenum -> GLenum -> JSRef 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 (unWebGL2RenderingContext self) target level
+         xoffset
+         yoffset
+         zoffset
+         format
+         type'
+         (maybe jsNull pToJSRef source))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_texSubImage3DCanvas ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint -> GLenum -> GLenum -> JSRef 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 (unWebGL2RenderingContext self) target
+         level
+         xoffset
+         yoffset
+         zoffset
+         format
+         type'
+         (maybe jsNull pToJSRef source))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_texSubImage3DVideo ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint -> GLenum -> GLenum -> JSRef 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 (unWebGL2RenderingContext self) target level
+         xoffset
+         yoffset
+         zoffset
+         format
+         type'
+         (maybe jsNull pToJSRef source))
+ 
+foreign import javascript unsafe
+        "$1[\"copyTexSubImage3D\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10)"
+        js_copyTexSubImage3D ::
+        JSRef 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 (unWebGL2RenderingContext 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 ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLenum ->
+                GLsizei ->
+                  GLsizei ->
+                    GLsizei -> GLint -> GLsizei -> JSRef 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 (unWebGL2RenderingContext self) target
+         level
+         internalformat
+         width
+         height
+         depth
+         border
+         imageSize
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data'))
+ 
+foreign import javascript unsafe
+        "$1[\"compressedTexSubImage3D\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10,\n$11, $12)"
+        js_compressedTexSubImage3D ::
+        JSRef WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint ->
+                    GLsizei ->
+                      GLsizei ->
+                        GLsizei -> GLenum -> GLsizei -> JSRef 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 (unWebGL2RenderingContext self) target
+         level
+         xoffset
+         yoffset
+         zoffset
+         width
+         height
+         depth
+         format
+         imageSize
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data'))
+ 
+foreign import javascript unsafe
+        "$1[\"getFragDataLocation\"]($2,\n$3)" js_getFragDataLocation ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef program)
+         (toJSString name))
+ 
+foreign import javascript unsafe "$1[\"uniform1ui\"]($2, $3)"
+        js_uniform1ui ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         v0)
+ 
+foreign import javascript unsafe "$1[\"uniform2ui\"]($2, $3, $4)"
+        js_uniform2ui ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         v0
+         v1)
+ 
+foreign import javascript unsafe
+        "$1[\"uniform3ui\"]($2, $3, $4, $5)" js_uniform3ui ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         v0
+         v1
+         v2)
+ 
+foreign import javascript unsafe
+        "$1[\"uniform4ui\"]($2, $3, $4, $5,\n$6)" js_uniform4ui ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         v0
+         v1
+         v2
+         v3)
+ 
+foreign import javascript unsafe "$1[\"uniform1uiv\"]($2, $3)"
+        js_uniform1uiv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unUint32Array . toUint32Array) value))
+ 
+foreign import javascript unsafe "$1[\"uniform2uiv\"]($2, $3)"
+        js_uniform2uiv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unUint32Array . toUint32Array) value))
+ 
+foreign import javascript unsafe "$1[\"uniform3uiv\"]($2, $3)"
+        js_uniform3uiv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unUint32Array . toUint32Array) value))
+ 
+foreign import javascript unsafe "$1[\"uniform4uiv\"]($2, $3)"
+        js_uniform4uiv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unUint32Array . toUint32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix2x3fv\"]($2, $3,\n$4)" js_uniformMatrix2x3fv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix3x2fv\"]($2, $3,\n$4)" js_uniformMatrix3x2fv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix2x4fv\"]($2, $3,\n$4)" js_uniformMatrix2x4fv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix4x2fv\"]($2, $3,\n$4)" js_uniformMatrix4x2fv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix3x4fv\"]($2, $3,\n$4)" js_uniformMatrix3x4fv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix4x3fv\"]($2, $3,\n$4)" js_uniformMatrix4x3fv ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttribI4i\"]($2, $3,\n$4, $5, $6)" js_vertexAttribI4i
+        ::
+        JSRef 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 (unWebGL2RenderingContext self) index x y z w)
+ 
+foreign import javascript unsafe "$1[\"vertexAttribI4iv\"]($2, $3)"
+        js_vertexAttribI4iv ::
+        JSRef WebGL2RenderingContext -> GLuint -> JSRef 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 (unWebGL2RenderingContext self) index
+         (maybe jsNull (unInt32Array . toInt32Array) v))
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttribI4ui\"]($2, $3,\n$4, $5, $6)" js_vertexAttribI4ui
+        ::
+        JSRef 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 (unWebGL2RenderingContext self) index x y z w)
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttribI4uiv\"]($2, $3)" js_vertexAttribI4uiv ::
+        JSRef WebGL2RenderingContext ->
+          GLuint -> JSRef 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 (unWebGL2RenderingContext self) index
+         (maybe jsNull (unUint32Array . toUint32Array) v))
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttribIPointer\"]($2,\n$3, $4, $5, $6)"
+        js_vertexAttribIPointer ::
+        JSRef 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 (unWebGL2RenderingContext self) index size
+         type'
+         stride
+         (fromIntegral offset))
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttribDivisor\"]($2,\n$3)" js_vertexAttribDivisor ::
+        JSRef 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 (unWebGL2RenderingContext self) index
+         divisor)
+ 
+foreign import javascript unsafe
+        "$1[\"drawArraysInstanced\"]($2,\n$3, $4, $5)"
+        js_drawArraysInstanced ::
+        JSRef 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 (unWebGL2RenderingContext self) mode first
+         count
+         instanceCount)
+ 
+foreign import javascript unsafe
+        "$1[\"drawElementsInstanced\"]($2,\n$3, $4, $5, $6)"
+        js_drawElementsInstanced ::
+        JSRef 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 (unWebGL2RenderingContext self) mode
+         count
+         type'
+         (fromIntegral offset)
+         instanceCount)
+ 
+foreign import javascript unsafe
+        "$1[\"drawRangeElements\"]($2, $3,\n$4, $5, $6, $7)"
+        js_drawRangeElements ::
+        JSRef 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 (unWebGL2RenderingContext self) mode start
+         end
+         count
+         type'
+         (fromIntegral offset))
+ 
+foreign import javascript unsafe "$1[\"drawBuffers\"]($2)"
+        js_drawBuffers ::
+        JSRef WebGL2RenderingContext -> JSRef [GLenum] -> 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
+      (toJSRef buffers >>=
+         \ buffers' ->
+           js_drawBuffers (unWebGL2RenderingContext self) buffers')
+ 
+foreign import javascript unsafe
+        "$1[\"clearBufferiv\"]($2, $3, $4)" js_clearBufferiv ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLint -> JSRef 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 (unWebGL2RenderingContext self) buffer drawbuffer
+         (maybe jsNull (unInt32Array . toInt32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"clearBufferuiv\"]($2, $3, $4)" js_clearBufferuiv ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLint -> JSRef 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 (unWebGL2RenderingContext self) buffer
+         drawbuffer
+         (maybe jsNull (unUint32Array . toUint32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"clearBufferfv\"]($2, $3, $4)" js_clearBufferfv ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLint -> JSRef 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 (unWebGL2RenderingContext self) buffer drawbuffer
+         (maybe jsNull (unFloat32Array . toFloat32Array) value))
+ 
+foreign import javascript unsafe
+        "$1[\"clearBufferfi\"]($2, $3, $4,\n$5)" js_clearBufferfi ::
+        JSRef 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 (unWebGL2RenderingContext self) buffer drawbuffer
+         depth
+         stencil)
+ 
+foreign import javascript unsafe "$1[\"createQuery\"]()"
+        js_createQuery ::
+        JSRef WebGL2RenderingContext -> IO (JSRef 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
+      ((js_createQuery (unWebGL2RenderingContext self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteQuery\"]($2)"
+        js_deleteQuery ::
+        JSRef WebGL2RenderingContext -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef query))
+ 
+foreign import javascript unsafe "$1[\"isQuery\"]($2)" js_isQuery
+        :: JSRef WebGL2RenderingContext -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef query))
+ 
+foreign import javascript unsafe "$1[\"beginQuery\"]($2, $3)"
+        js_beginQuery ::
+        JSRef WebGL2RenderingContext -> GLenum -> JSRef 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 (unWebGL2RenderingContext self) target
+         (maybe jsNull pToJSRef query))
+ 
+foreign import javascript unsafe "$1[\"endQuery\"]($2)" js_endQuery
+        :: JSRef 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 (unWebGL2RenderingContext self) target)
+ 
+foreign import javascript unsafe "$1[\"getQuery\"]($2, $3)"
+        js_getQuery ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLenum -> IO (JSRef 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
+      ((js_getQuery (unWebGL2RenderingContext self) target pname) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getQueryParameter\"]($2, $3)" js_getQueryParameter ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLQuery -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQueryParameter Mozilla WebGL2RenderingContext.getQueryParameter documentation> 
+getQueryParameter ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext -> Maybe WebGLQuery -> GLenum -> m (JSRef a)
+getQueryParameter self query pname
+  = liftIO
+      (js_getQueryParameter (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef query)
+         pname)
+ 
+foreign import javascript unsafe "$1[\"createSampler\"]()"
+        js_createSampler ::
+        JSRef WebGL2RenderingContext -> IO (JSRef 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
+      ((js_createSampler (unWebGL2RenderingContext self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteSampler\"]($2)"
+        js_deleteSampler ::
+        JSRef WebGL2RenderingContext -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sampler))
+ 
+foreign import javascript unsafe "$1[\"isSampler\"]($2)"
+        js_isSampler ::
+        JSRef WebGL2RenderingContext -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sampler))
+ 
+foreign import javascript unsafe "$1[\"bindSampler\"]($2, $3)"
+        js_bindSampler ::
+        JSRef WebGL2RenderingContext ->
+          GLuint -> JSRef 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 (unWebGL2RenderingContext self) unit
+         (maybe jsNull pToJSRef sampler))
+ 
+foreign import javascript unsafe
+        "$1[\"samplerParameteri\"]($2, $3,\n$4)" js_samplerParameteri ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sampler)
+         pname
+         param)
+ 
+foreign import javascript unsafe
+        "$1[\"samplerParameterf\"]($2, $3,\n$4)" js_samplerParameterf ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sampler)
+         pname
+         param)
+ 
+foreign import javascript unsafe
+        "$1[\"getSamplerParameter\"]($2,\n$3)" js_getSamplerParameter ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLSampler -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSamplerParameter Mozilla WebGL2RenderingContext.getSamplerParameter documentation> 
+getSamplerParameter ::
+                    (MonadIO m) =>
+                      WebGL2RenderingContext ->
+                        Maybe WebGLSampler -> GLenum -> m (JSRef a)
+getSamplerParameter self sampler pname
+  = liftIO
+      (js_getSamplerParameter (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sampler)
+         pname)
+ 
+foreign import javascript unsafe "$1[\"fenceSync\"]($2, $3)"
+        js_fenceSync ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLbitfield -> IO (JSRef 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
+      ((js_fenceSync (unWebGL2RenderingContext self) condition flags) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"isSync\"]($2)" js_isSync ::
+        JSRef WebGL2RenderingContext -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sync))
+ 
+foreign import javascript unsafe "$1[\"deleteSync\"]($2)"
+        js_deleteSync ::
+        JSRef WebGL2RenderingContext -> JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sync))
+ 
+foreign import javascript unsafe
+        "$1[\"clientWaitSync\"]($2, $3, $4)" js_clientWaitSync ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sync)
+         flags
+         (fromIntegral timeout))
+ 
+foreign import javascript unsafe "$1[\"waitSync\"]($2, $3, $4)"
+        js_waitSync ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sync)
+         flags
+         (fromIntegral timeout))
+ 
+foreign import javascript unsafe "$1[\"getSyncParameter\"]($2, $3)"
+        js_getSyncParameter ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLSync -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSyncParameter Mozilla WebGL2RenderingContext.getSyncParameter documentation> 
+getSyncParameter ::
+                 (MonadIO m) =>
+                   WebGL2RenderingContext -> Maybe WebGLSync -> GLenum -> m (JSRef a)
+getSyncParameter self sync pname
+  = liftIO
+      (js_getSyncParameter (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef sync)
+         pname)
+ 
+foreign import javascript unsafe
+        "$1[\"createTransformFeedback\"]()" js_createTransformFeedback ::
+        JSRef WebGL2RenderingContext -> IO (JSRef 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
+      ((js_createTransformFeedback (unWebGL2RenderingContext self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"deleteTransformFeedback\"]($2)" js_deleteTransformFeedback ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef id))
+ 
+foreign import javascript unsafe "$1[\"isTransformFeedback\"]($2)"
+        js_isTransformFeedback ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef id))
+ 
+foreign import javascript unsafe
+        "$1[\"bindTransformFeedback\"]($2,\n$3)" js_bindTransformFeedback
+        ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> JSRef 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 (unWebGL2RenderingContext self) target
+         (maybe jsNull pToJSRef id))
+ 
+foreign import javascript unsafe
+        "$1[\"beginTransformFeedback\"]($2)" js_beginTransformFeedback ::
+        JSRef 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 (unWebGL2RenderingContext self)
+         primitiveMode)
+ 
+foreign import javascript unsafe "$1[\"endTransformFeedback\"]()"
+        js_endTransformFeedback :: JSRef 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 (unWebGL2RenderingContext self))
+ 
+foreign import javascript unsafe
+        "$1[\"transformFeedbackVaryings\"]($2,\n$3, $4)"
+        js_transformFeedbackVaryings ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLProgram -> JSRef [varyings] -> 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
+      (toJSRef varyings >>=
+         \ varyings' ->
+           js_transformFeedbackVaryings (unWebGL2RenderingContext self)
+             (maybe jsNull pToJSRef program)
+             varyings'
+         bufferMode)
+ 
+foreign import javascript unsafe
+        "$1[\"getTransformFeedbackVarying\"]($2,\n$3)"
+        js_getTransformFeedbackVarying ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLProgram -> GLuint -> IO (JSRef 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
+      ((js_getTransformFeedbackVarying (unWebGL2RenderingContext self)
+          (maybe jsNull pToJSRef program)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"pauseTransformFeedback\"]()"
+        js_pauseTransformFeedback :: JSRef 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 (unWebGL2RenderingContext self))
+ 
+foreign import javascript unsafe
+        "$1[\"resumeTransformFeedback\"]()" js_resumeTransformFeedback ::
+        JSRef 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 (unWebGL2RenderingContext self))
+ 
+foreign import javascript unsafe
+        "$1[\"bindBufferBase\"]($2, $3, $4)" js_bindBufferBase ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLuint -> JSRef 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 (unWebGL2RenderingContext self) target index
+         (maybe jsNull pToJSRef buffer))
+ 
+foreign import javascript unsafe
+        "$1[\"bindBufferRange\"]($2, $3,\n$4, $5, $6)" js_bindBufferRange
+        ::
+        JSRef WebGL2RenderingContext ->
+          GLenum -> GLuint -> JSRef 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 (unWebGL2RenderingContext self) target index
+         (maybe jsNull pToJSRef buffer)
+         (fromIntegral offset)
+         (fromIntegral size))
+ 
+foreign import javascript unsafe
+        "$1[\"getIndexedParameter\"]($2,\n$3)" js_getIndexedParameter ::
+        JSRef WebGL2RenderingContext -> GLenum -> GLuint -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getIndexedParameter Mozilla WebGL2RenderingContext.getIndexedParameter documentation> 
+getIndexedParameter ::
+                    (MonadIO m) =>
+                      WebGL2RenderingContext -> GLenum -> GLuint -> m (JSRef a)
+getIndexedParameter self target index
+  = liftIO
+      (js_getIndexedParameter (unWebGL2RenderingContext self) target
+         index)
+ 
+foreign import javascript unsafe
+        "$1[\"getUniformIndices\"]($2, $3)" js_getUniformIndices ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLProgram ->
+            JSRef [uniformNames] -> IO (JSRef 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
+      ((toJSRef uniformNames >>=
+          \ uniformNames' ->
+            js_getUniformIndices (unWebGL2RenderingContext self)
+              (maybe jsNull pToJSRef program)
+              uniformNames')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getActiveUniforms\"]($2, $3,\n$4)" js_getActiveUniforms ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLProgram ->
+            JSRef Uint32Array -> GLenum -> IO (JSRef 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
+      ((js_getActiveUniforms (unWebGL2RenderingContext self)
+          (maybe jsNull pToJSRef program)
+          (maybe jsNull (unUint32Array . toUint32Array) uniformIndices)
+          pname)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getUniformBlockIndex\"]($2,\n$3)" js_getUniformBlockIndex ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef program)
+         (toJSString uniformBlockName))
+ 
+foreign import javascript unsafe
+        "$1[\"getActiveUniformBlockParameter\"]($2,\n$3, $4)"
+        js_getActiveUniformBlockParameter ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLProgram -> GLuint -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockParameter Mozilla WebGL2RenderingContext.getActiveUniformBlockParameter documentation> 
+getActiveUniformBlockParameter ::
+                               (MonadIO m) =>
+                                 WebGL2RenderingContext ->
+                                   Maybe WebGLProgram -> GLuint -> GLenum -> m (JSRef a)
+getActiveUniformBlockParameter self program uniformBlockIndex pname
+  = liftIO
+      (js_getActiveUniformBlockParameter (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef program)
+         uniformBlockIndex
+         pname)
+ 
+foreign import javascript unsafe
+        "$1[\"getActiveUniformBlockName\"]($2,\n$3)"
+        js_getActiveUniformBlockName ::
+        JSRef WebGL2RenderingContext ->
+          JSRef WebGLProgram -> GLuint -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockName Mozilla WebGL2RenderingContext.getActiveUniformBlockName documentation> 
+getActiveUniformBlockName ::
+                          (MonadIO m) =>
+                            WebGL2RenderingContext ->
+                              Maybe WebGLProgram -> GLuint -> m (JSRef a)
+getActiveUniformBlockName self program uniformBlockIndex
+  = liftIO
+      (js_getActiveUniformBlockName (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef program)
+         uniformBlockIndex)
+ 
+foreign import javascript unsafe
+        "$1[\"uniformBlockBinding\"]($2,\n$3, $4)" js_uniformBlockBinding
+        ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef program)
+         uniformBlockIndex
+         uniformBlockBinding)
+ 
+foreign import javascript unsafe "$1[\"createVertexArray\"]()"
+        js_createVertexArray ::
+        JSRef WebGL2RenderingContext -> IO (JSRef 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
+      ((js_createVertexArray (unWebGL2RenderingContext self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"deleteVertexArray\"]($2)"
+        js_deleteVertexArray ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef vertexArray))
+ 
+foreign import javascript unsafe "$1[\"isVertexArray\"]($2)"
+        js_isVertexArray ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef vertexArray))
+ 
+foreign import javascript unsafe "$1[\"bindVertexArray\"]($2)"
+        js_bindVertexArray ::
+        JSRef WebGL2RenderingContext ->
+          JSRef 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 (unWebGL2RenderingContext self)
+         (maybe jsNull pToJSRef 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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"size\"]" js_getSize ::
+        JSRef 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 (unWebGLActiveInfo self))
+ 
+foreign import javascript unsafe "$1[\"type\"]" js_getType ::
+        JSRef 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 (unWebGLActiveInfo self))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unWebGLActiveInfo 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,135 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"alpha\"] = $2;" js_setAlpha
+        :: JSRef 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 (unWebGLContextAttributes self) val)
+ 
+foreign import javascript unsafe "($1[\"alpha\"] ? 1 : 0)"
+        js_getAlpha :: JSRef 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 (unWebGLContextAttributes self))
+ 
+foreign import javascript unsafe "$1[\"depth\"] = $2;" js_setDepth
+        :: JSRef 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 (unWebGLContextAttributes self) val)
+ 
+foreign import javascript unsafe "($1[\"depth\"] ? 1 : 0)"
+        js_getDepth :: JSRef 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 (unWebGLContextAttributes self))
+ 
+foreign import javascript unsafe "$1[\"stencil\"] = $2;"
+        js_setStencil :: JSRef 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 (unWebGLContextAttributes self) val)
+ 
+foreign import javascript unsafe "($1[\"stencil\"] ? 1 : 0)"
+        js_getStencil :: JSRef 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 (unWebGLContextAttributes self))
+ 
+foreign import javascript unsafe "$1[\"antialias\"] = $2;"
+        js_setAntialias :: JSRef 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 (unWebGLContextAttributes self) val)
+ 
+foreign import javascript unsafe "($1[\"antialias\"] ? 1 : 0)"
+        js_getAntialias :: JSRef 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 (unWebGLContextAttributes self))
+ 
+foreign import javascript unsafe "$1[\"premultipliedAlpha\"] = $2;"
+        js_setPremultipliedAlpha ::
+        JSRef 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 (unWebGLContextAttributes self) val)
+ 
+foreign import javascript unsafe
+        "($1[\"premultipliedAlpha\"] ? 1 : 0)" js_getPremultipliedAlpha ::
+        JSRef 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 (unWebGLContextAttributes self))
+ 
+foreign import javascript unsafe
+        "$1[\"preserveDrawingBuffer\"] = $2;" js_setPreserveDrawingBuffer
+        :: JSRef 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 (unWebGLContextAttributes self) val)
+ 
+foreign import javascript unsafe
+        "($1[\"preserveDrawingBuffer\"] ? 1 : 0)"
+        js_getPreserveDrawingBuffer ::
+        JSRef 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 (unWebGLContextAttributes 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,29 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"statusMessage\"]"
+        js_getStatusMessage :: JSRef 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 (unWebGLContextEvent 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,35 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"getTranslatedShaderSource\"]($2)"
+        js_getTranslatedShaderSource ::
+        JSRef WebGLDebugShaders ->
+          JSRef WebGLShader -> IO (JSRef (Maybe 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 (unWebGLDebugShaders self)
+            (maybe jsNull pToJSRef 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,84 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"drawBuffersWEBGL\"]($2)"
+        js_drawBuffersWEBGL ::
+        JSRef WebGLDrawBuffers -> JSRef [GLenum] -> 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
+      (toJSRef buffers >>=
+         \ buffers' ->
+           js_drawBuffersWEBGL (unWebGLDrawBuffers 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,35 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"loseContext\"]()"
+        js_loseContext :: JSRef 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 (unWebGLLoseContext self))
+ 
+foreign import javascript unsafe "$1[\"restoreContext\"]()"
+        js_restoreContext :: JSRef 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 (unWebGLLoseContext 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,3119 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"activeTexture\"]($2)"
+        js_activeTexture ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         texture)
+ 
+foreign import javascript unsafe "$1[\"attachShader\"]($2, $3)"
+        js_attachShader ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLProgram -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program)
+         (maybe jsNull pToJSRef shader))
+ 
+foreign import javascript unsafe
+        "$1[\"bindAttribLocation\"]($2, $3,\n$4)" js_bindAttribLocation ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program)
+         index
+         (toJSString name))
+ 
+foreign import javascript unsafe "$1[\"bindBuffer\"]($2, $3)"
+        js_bindBuffer ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (maybe jsNull pToJSRef buffer))
+ 
+foreign import javascript unsafe "$1[\"bindFramebuffer\"]($2, $3)"
+        js_bindFramebuffer ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (maybe jsNull pToJSRef framebuffer))
+ 
+foreign import javascript unsafe "$1[\"bindRenderbuffer\"]($2, $3)"
+        js_bindRenderbuffer ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (maybe jsNull pToJSRef renderbuffer))
+ 
+foreign import javascript unsafe "$1[\"bindTexture\"]($2, $3)"
+        js_bindTexture ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (maybe jsNull pToJSRef texture))
+ 
+foreign import javascript unsafe
+        "$1[\"blendColor\"]($2, $3, $4, $5)" js_blendColor ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         red
+         green
+         blue
+         alpha)
+ 
+foreign import javascript unsafe "$1[\"blendEquation\"]($2)"
+        js_blendEquation ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         mode)
+ 
+foreign import javascript unsafe
+        "$1[\"blendEquationSeparate\"]($2,\n$3)" js_blendEquationSeparate
+        :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         modeRGB
+         modeAlpha)
+ 
+foreign import javascript unsafe "$1[\"blendFunc\"]($2, $3)"
+        js_blendFunc ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         sfactor
+         dfactor)
+ 
+foreign import javascript unsafe
+        "$1[\"blendFuncSeparate\"]($2, $3,\n$4, $5)" js_blendFuncSeparate
+        ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         srcRGB
+         dstRGB
+         srcAlpha
+         dstAlpha)
+ 
+foreign import javascript unsafe "$1[\"bufferData\"]($2, $3, $4)"
+        js_bufferData ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (maybe jsNull (unArrayBuffer . toArrayBuffer) data')
+         usage)
+ 
+foreign import javascript unsafe "$1[\"bufferData\"]($2, $3, $4)"
+        js_bufferDataView ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data')
+         usage)
+ 
+foreign import javascript unsafe "$1[\"bufferData\"]($2, $3, $4)"
+        js_bufferDataPtr ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (fromIntegral size)
+         usage)
+ 
+foreign import javascript unsafe
+        "$1[\"bufferSubData\"]($2, $3, $4)" js_bufferSubData ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> Double -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (fromIntegral offset)
+         (maybe jsNull (unArrayBuffer . toArrayBuffer) data'))
+ 
+foreign import javascript unsafe
+        "$1[\"bufferSubData\"]($2, $3, $4)" js_bufferSubDataView ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> Double -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         (fromIntegral offset)
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data'))
+ 
+foreign import javascript unsafe
+        "$1[\"checkFramebufferStatus\"]($2)" js_checkFramebufferStatus ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target)
+ 
+foreign import javascript unsafe "$1[\"clear\"]($2)" js_clear ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         mask)
+ 
+foreign import javascript unsafe
+        "$1[\"clearColor\"]($2, $3, $4, $5)" js_clearColor ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         red
+         green
+         blue
+         alpha)
+ 
+foreign import javascript unsafe "$1[\"clearDepth\"]($2)"
+        js_clearDepth ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         depth)
+ 
+foreign import javascript unsafe "$1[\"clearStencil\"]($2)"
+        js_clearStencil ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         s)
+ 
+foreign import javascript unsafe
+        "$1[\"colorMask\"]($2, $3, $4, $5)" js_colorMask ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         red
+         green
+         blue
+         alpha)
+ 
+foreign import javascript unsafe "$1[\"compileShader\"]($2)"
+        js_compileShader ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef shader))
+ 
+foreign import javascript unsafe
+        "$1[\"compressedTexImage2D\"]($2,\n$3, $4, $5, $6, $7, $8)"
+        js_compressedTexImage2D ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum ->
+                GLsizei -> GLsizei -> GLint -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         internalformat
+         width
+         height
+         border
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data'))
+ 
+foreign import javascript unsafe
+        "$1[\"compressedTexSubImage2D\"]($2,\n$3, $4, $5, $6, $7, $8, $9)"
+        js_compressedTexSubImage2D ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLsizei -> GLsizei -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         xoffset
+         yoffset
+         width
+         height
+         format
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data'))
+ 
+foreign import javascript unsafe
+        "$1[\"copyTexImage2D\"]($2, $3, $4,\n$5, $6, $7, $8, $9)"
+        js_copyTexImage2D ::
+        JSRef 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
+         (unWebGLRenderingContextBase (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 ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         xoffset
+         yoffset
+         x
+         y
+         width
+         height)
+ 
+foreign import javascript unsafe "$1[\"createBuffer\"]()"
+        js_createBuffer ::
+        JSRef WebGLRenderingContextBase -> IO (JSRef 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
+      ((js_createBuffer
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createFramebuffer\"]()"
+        js_createFramebuffer ::
+        JSRef WebGLRenderingContextBase -> IO (JSRef 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
+      ((js_createFramebuffer
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createProgram\"]()"
+        js_createProgram ::
+        JSRef WebGLRenderingContextBase -> IO (JSRef 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
+      ((js_createProgram
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createRenderbuffer\"]()"
+        js_createRenderbuffer ::
+        JSRef WebGLRenderingContextBase -> IO (JSRef 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
+      ((js_createRenderbuffer
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createShader\"]($2)"
+        js_createShader ::
+        JSRef WebGLRenderingContextBase -> GLenum -> IO (JSRef 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
+      ((js_createShader
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+          type')
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createTexture\"]()"
+        js_createTexture ::
+        JSRef WebGLRenderingContextBase -> IO (JSRef 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
+      ((js_createTexture
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"cullFace\"]($2)" js_cullFace
+        :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         mode)
+ 
+foreign import javascript unsafe "$1[\"deleteBuffer\"]($2)"
+        js_deleteBuffer ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef buffer))
+ 
+foreign import javascript unsafe "$1[\"deleteFramebuffer\"]($2)"
+        js_deleteFramebuffer ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef framebuffer))
+ 
+foreign import javascript unsafe "$1[\"deleteProgram\"]($2)"
+        js_deleteProgram ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program))
+ 
+foreign import javascript unsafe "$1[\"deleteRenderbuffer\"]($2)"
+        js_deleteRenderbuffer ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef renderbuffer))
+ 
+foreign import javascript unsafe "$1[\"deleteShader\"]($2)"
+        js_deleteShader ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef shader))
+ 
+foreign import javascript unsafe "$1[\"deleteTexture\"]($2)"
+        js_deleteTexture ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef texture))
+ 
+foreign import javascript unsafe "$1[\"depthFunc\"]($2)"
+        js_depthFunc :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         func)
+ 
+foreign import javascript unsafe "$1[\"depthMask\"]($2)"
+        js_depthMask ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         flag)
+ 
+foreign import javascript unsafe "$1[\"depthRange\"]($2, $3)"
+        js_depthRange ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         zNear
+         zFar)
+ 
+foreign import javascript unsafe "$1[\"detachShader\"]($2, $3)"
+        js_detachShader ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLProgram -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program)
+         (maybe jsNull pToJSRef shader))
+ 
+foreign import javascript unsafe "$1[\"disable\"]($2)" js_disable
+        :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         cap)
+ 
+foreign import javascript unsafe
+        "$1[\"disableVertexAttribArray\"]($2)" js_disableVertexAttribArray
+        :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         index)
+ 
+foreign import javascript unsafe "$1[\"drawArrays\"]($2, $3, $4)"
+        js_drawArrays ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         mode
+         first
+         count)
+ 
+foreign import javascript unsafe
+        "$1[\"drawElements\"]($2, $3, $4,\n$5)" js_drawElements ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         mode
+         count
+         type'
+         (fromIntegral offset))
+ 
+foreign import javascript unsafe "$1[\"enable\"]($2)" js_enable ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         cap)
+ 
+foreign import javascript unsafe
+        "$1[\"enableVertexAttribArray\"]($2)" js_enableVertexAttribArray ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         index)
+ 
+foreign import javascript unsafe "$1[\"finish\"]()" js_finish ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$1[\"flush\"]()" js_flush ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe
+        "$1[\"framebufferRenderbuffer\"]($2,\n$3, $4, $5)"
+        js_framebufferRenderbuffer ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         attachment
+         renderbuffertarget
+         (maybe jsNull pToJSRef renderbuffer))
+ 
+foreign import javascript unsafe
+        "$1[\"framebufferTexture2D\"]($2,\n$3, $4, $5, $6)"
+        js_framebufferTexture2D ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         attachment
+         textarget
+         (maybe jsNull pToJSRef texture)
+         level)
+ 
+foreign import javascript unsafe "$1[\"frontFace\"]($2)"
+        js_frontFace :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         mode)
+ 
+foreign import javascript unsafe "$1[\"generateMipmap\"]($2)"
+        js_generateMipmap ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target)
+ 
+foreign import javascript unsafe "$1[\"getActiveAttrib\"]($2, $3)"
+        js_getActiveAttrib ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLProgram -> GLuint -> IO (JSRef 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
+      ((js_getActiveAttrib
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+          (maybe jsNull pToJSRef program)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getActiveUniform\"]($2, $3)"
+        js_getActiveUniform ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLProgram -> GLuint -> IO (JSRef 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
+      ((js_getActiveUniform
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+          (maybe jsNull pToJSRef program)
+          index)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getAttachedShaders\"]($2)"
+        js_getAttachedShaders ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program))
+ 
+foreign import javascript unsafe
+        "$1[\"getAttribLocation\"]($2, $3)" js_getAttribLocation ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program)
+         (toJSString name))
+ 
+foreign import javascript unsafe
+        "$1[\"getBufferParameter\"]($2, $3)" js_getBufferParameter ::
+        JSRef WebGLRenderingContextBase -> GLenum -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getBufferParameter Mozilla WebGLRenderingContextBase.getBufferParameter documentation> 
+getBufferParameter ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self -> GLenum -> GLenum -> m (JSRef a)
+getBufferParameter self target pname
+  = liftIO
+      (js_getBufferParameter
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         pname)
+ 
+foreign import javascript unsafe "$1[\"getContextAttributes\"]()"
+        js_getContextAttributes ::
+        JSRef WebGLRenderingContextBase ->
+          IO (JSRef 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
+      ((js_getContextAttributes
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getError\"]()" js_getError
+        :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$1[\"getExtension\"]($2)"
+        js_getExtension ::
+        JSRef WebGLRenderingContextBase -> JSString -> IO (JSRef a)
+
+-- | <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 (JSRef a)
+getExtension self name
+  = liftIO
+      (js_getExtension
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (toJSString name))
+ 
+foreign import javascript unsafe
+        "$1[\"getFramebufferAttachmentParameter\"]($2,\n$3, $4)"
+        js_getFramebufferAttachmentParameter ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLenum -> IO (JSRef a)
+
+-- | <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 (JSRef a)
+getFramebufferAttachmentParameter self target attachment pname
+  = liftIO
+      (js_getFramebufferAttachmentParameter
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         attachment
+         pname)
+ 
+foreign import javascript unsafe "$1[\"getParameter\"]($2)"
+        js_getParameter ::
+        JSRef WebGLRenderingContextBase -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getParameter Mozilla WebGLRenderingContextBase.getParameter documentation> 
+getParameter ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> GLenum -> m (JSRef a)
+getParameter self pname
+  = liftIO
+      (js_getParameter
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         pname)
+ 
+foreign import javascript unsafe
+        "$1[\"getProgramParameter\"]($2,\n$3)" js_getProgramParameter ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLProgram -> GLenum -> IO (JSRef a)
+
+-- | <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 (JSRef a)
+getProgramParameter self program pname
+  = liftIO
+      (js_getProgramParameter
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program)
+         pname)
+ 
+foreign import javascript unsafe "$1[\"getProgramInfoLog\"]($2)"
+        js_getProgramInfoLog ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLProgram -> IO (JSRef (Maybe 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
+            (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+            (maybe jsNull pToJSRef program)))
+ 
+foreign import javascript unsafe
+        "$1[\"getRenderbufferParameter\"]($2,\n$3)"
+        js_getRenderbufferParameter ::
+        JSRef WebGLRenderingContextBase -> GLenum -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getRenderbufferParameter Mozilla WebGLRenderingContextBase.getRenderbufferParameter documentation> 
+getRenderbufferParameter ::
+                         (MonadIO m, IsWebGLRenderingContextBase self) =>
+                           self -> GLenum -> GLenum -> m (JSRef a)
+getRenderbufferParameter self target pname
+  = liftIO
+      (js_getRenderbufferParameter
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         pname)
+ 
+foreign import javascript unsafe
+        "$1[\"getShaderParameter\"]($2, $3)" js_getShaderParameter ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLShader -> GLenum -> IO (JSRef a)
+
+-- | <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 (JSRef a)
+getShaderParameter self shader pname
+  = liftIO
+      (js_getShaderParameter
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef shader)
+         pname)
+ 
+foreign import javascript unsafe "$1[\"getShaderInfoLog\"]($2)"
+        js_getShaderInfoLog ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLShader -> IO (JSRef (Maybe 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
+            (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+            (maybe jsNull pToJSRef shader)))
+ 
+foreign import javascript unsafe
+        "$1[\"getShaderPrecisionFormat\"]($2,\n$3)"
+        js_getShaderPrecisionFormat ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum -> GLenum -> IO (JSRef 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
+      ((js_getShaderPrecisionFormat
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+          shadertype
+          precisiontype)
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getShaderSource\"]($2)"
+        js_getShaderSource ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLShader -> IO (JSRef (Maybe 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
+            (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+            (maybe jsNull pToJSRef shader)))
+ 
+foreign import javascript unsafe "$1[\"getSupportedExtensions\"]()"
+        js_getSupportedExtensions ::
+        JSRef WebGLRenderingContextBase -> IO (JSRef [result])
+
+-- | <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
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"getTexParameter\"]($2, $3)"
+        js_getTexParameter ::
+        JSRef WebGLRenderingContextBase -> GLenum -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getTexParameter Mozilla WebGLRenderingContextBase.getTexParameter documentation> 
+getTexParameter ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self -> GLenum -> GLenum -> m (JSRef a)
+getTexParameter self target pname
+  = liftIO
+      (js_getTexParameter
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         pname)
+ 
+foreign import javascript unsafe "$1[\"getUniform\"]($2, $3)"
+        js_getUniform ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLProgram -> JSRef WebGLUniformLocation -> IO (JSRef a)
+
+-- | <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 (JSRef a)
+getUniform self program location
+  = liftIO
+      (js_getUniform
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program)
+         (maybe jsNull pToJSRef location))
+ 
+foreign import javascript unsafe
+        "$1[\"getUniformLocation\"]($2, $3)" js_getUniformLocation ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLProgram -> JSString -> IO (JSRef 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
+      ((js_getUniformLocation
+          (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+          (maybe jsNull pToJSRef program)
+          (toJSString name))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getVertexAttrib\"]($2, $3)"
+        js_getVertexAttrib ::
+        JSRef WebGLRenderingContextBase -> GLuint -> GLenum -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttrib Mozilla WebGLRenderingContextBase.getVertexAttrib documentation> 
+getVertexAttrib ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self -> GLuint -> GLenum -> m (JSRef a)
+getVertexAttrib self index pname
+  = liftIO
+      (js_getVertexAttrib
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         index
+         pname)
+ 
+foreign import javascript unsafe
+        "$1[\"getVertexAttribOffset\"]($2,\n$3)" js_getVertexAttribOffset
+        :: JSRef 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
+            (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+            index
+            pname))
+ 
+foreign import javascript unsafe "$1[\"hint\"]($2, $3)" js_hint ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         mode)
+ 
+foreign import javascript unsafe "$1[\"isBuffer\"]($2)" js_isBuffer
+        ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef buffer))
+ 
+foreign import javascript unsafe "$1[\"isContextLost\"]()"
+        js_isContextLost :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$1[\"isEnabled\"]($2)"
+        js_isEnabled ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         cap)
+ 
+foreign import javascript unsafe "$1[\"isFramebuffer\"]($2)"
+        js_isFramebuffer ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef framebuffer))
+ 
+foreign import javascript unsafe "$1[\"isProgram\"]($2)"
+        js_isProgram ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program))
+ 
+foreign import javascript unsafe "$1[\"isRenderbuffer\"]($2)"
+        js_isRenderbuffer ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef renderbuffer))
+ 
+foreign import javascript unsafe "$1[\"isShader\"]($2)" js_isShader
+        ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef shader))
+ 
+foreign import javascript unsafe "$1[\"isTexture\"]($2)"
+        js_isTexture ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef texture))
+ 
+foreign import javascript unsafe "$1[\"lineWidth\"]($2)"
+        js_lineWidth :: JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         width)
+ 
+foreign import javascript unsafe "$1[\"linkProgram\"]($2)"
+        js_linkProgram ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program))
+ 
+foreign import javascript unsafe "$1[\"pixelStorei\"]($2, $3)"
+        js_pixelStorei ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         pname
+         param)
+ 
+foreign import javascript unsafe "$1[\"polygonOffset\"]($2, $3)"
+        js_polygonOffset ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         factor
+         units)
+ 
+foreign import javascript unsafe
+        "$1[\"readPixels\"]($2, $3, $4, $5,\n$6, $7, $8)" js_readPixels ::
+        JSRef WebGLRenderingContextBase ->
+          GLint ->
+            GLint ->
+              GLsizei ->
+                GLsizei -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         x
+         y
+         width
+         height
+         format
+         type'
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) pixels))
+ 
+foreign import javascript unsafe "$1[\"releaseShaderCompiler\"]()"
+        js_releaseShaderCompiler ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe
+        "$1[\"renderbufferStorage\"]($2,\n$3, $4, $5)"
+        js_renderbufferStorage ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         internalformat
+         width
+         height)
+ 
+foreign import javascript unsafe "$1[\"sampleCoverage\"]($2, $3)"
+        js_sampleCoverage ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         value
+         invert)
+ 
+foreign import javascript unsafe "$1[\"scissor\"]($2, $3, $4, $5)"
+        js_scissor ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         x
+         y
+         width
+         height)
+ 
+foreign import javascript unsafe "$1[\"shaderSource\"]($2, $3)"
+        js_shaderSource ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef shader)
+         (toJSString string))
+ 
+foreign import javascript unsafe "$1[\"stencilFunc\"]($2, $3, $4)"
+        js_stencilFunc ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         func
+         ref
+         mask)
+ 
+foreign import javascript unsafe
+        "$1[\"stencilFuncSeparate\"]($2,\n$3, $4, $5)"
+        js_stencilFuncSeparate ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         face
+         func
+         ref
+         mask)
+ 
+foreign import javascript unsafe "$1[\"stencilMask\"]($2)"
+        js_stencilMask ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         mask)
+ 
+foreign import javascript unsafe
+        "$1[\"stencilMaskSeparate\"]($2,\n$3)" js_stencilMaskSeparate ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         face
+         mask)
+ 
+foreign import javascript unsafe "$1[\"stencilOp\"]($2, $3, $4)"
+        js_stencilOp ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         fail
+         zfail
+         zpass)
+ 
+foreign import javascript unsafe
+        "$1[\"stencilOpSeparate\"]($2, $3,\n$4, $5)" js_stencilOpSeparate
+        ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         face
+         fail
+         zfail
+         zpass)
+ 
+foreign import javascript unsafe
+        "$1[\"texParameterf\"]($2, $3, $4)" js_texParameterf ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         pname
+         param)
+ 
+foreign import javascript unsafe
+        "$1[\"texParameteri\"]($2, $3, $4)" js_texParameteri ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         pname
+         param)
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10)"
+        js_texImage2DView ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum ->
+                GLsizei ->
+                  GLsizei ->
+                    GLint -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         internalformat
+         width
+         height
+         border
+         format
+         type'
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) pixels))
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2DData ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint -> GLenum -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         internalformat
+         format
+         type'
+         (maybe jsNull pToJSRef pixels))
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2D ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         internalformat
+         format
+         type'
+         (maybe jsNull pToJSRef image))
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2DCanvas
+        ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         internalformat
+         format
+         type'
+         (maybe jsNull pToJSRef canvas))
+ 
+foreign import javascript unsafe
+        "$1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7)" js_texImage2DVideo ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         internalformat
+         format
+         type'
+         (maybe jsNull pToJSRef video))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10)"
+        js_texSubImage2DView ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLsizei ->
+                    GLsizei -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         xoffset
+         yoffset
+         width
+         height
+         format
+         type'
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) pixels))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_texSubImage2DData ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint -> GLint -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybe jsNull pToJSRef pixels))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_texSubImage2D ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybe jsNull pToJSRef image))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_texSubImage2DCanvas ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybe jsNull pToJSRef canvas))
+ 
+foreign import javascript unsafe
+        "$1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8)"
+        js_texSubImage2DVideo ::
+        JSRef WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLenum -> GLenum -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         target
+         level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybe jsNull pToJSRef video))
+ 
+foreign import javascript unsafe "$1[\"uniform1f\"]($2, $3)"
+        js_uniform1f ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         x)
+ 
+foreign import javascript unsafe "$1[\"uniform1fv\"]($2, $3)"
+        js_uniform1fv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unFloat32Array . toFloat32Array) v))
+ 
+foreign import javascript unsafe "$1[\"uniform1i\"]($2, $3)"
+        js_uniform1i ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         x)
+ 
+foreign import javascript unsafe "$1[\"uniform1iv\"]($2, $3)"
+        js_uniform1iv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unInt32Array . toInt32Array) v))
+ 
+foreign import javascript unsafe "$1[\"uniform2f\"]($2, $3, $4)"
+        js_uniform2f ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         x
+         y)
+ 
+foreign import javascript unsafe "$1[\"uniform2fv\"]($2, $3)"
+        js_uniform2fv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unFloat32Array . toFloat32Array) v))
+ 
+foreign import javascript unsafe "$1[\"uniform2i\"]($2, $3, $4)"
+        js_uniform2i ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         x
+         y)
+ 
+foreign import javascript unsafe "$1[\"uniform2iv\"]($2, $3)"
+        js_uniform2iv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unInt32Array . toInt32Array) v))
+ 
+foreign import javascript unsafe
+        "$1[\"uniform3f\"]($2, $3, $4, $5)" js_uniform3f ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         x
+         y
+         z)
+ 
+foreign import javascript unsafe "$1[\"uniform3fv\"]($2, $3)"
+        js_uniform3fv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unFloat32Array . toFloat32Array) v))
+ 
+foreign import javascript unsafe
+        "$1[\"uniform3i\"]($2, $3, $4, $5)" js_uniform3i ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         x
+         y
+         z)
+ 
+foreign import javascript unsafe "$1[\"uniform3iv\"]($2, $3)"
+        js_uniform3iv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unInt32Array . toInt32Array) v))
+ 
+foreign import javascript unsafe
+        "$1[\"uniform4f\"]($2, $3, $4, $5,\n$6)" js_uniform4f ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         x
+         y
+         z
+         w)
+ 
+foreign import javascript unsafe "$1[\"uniform4fv\"]($2, $3)"
+        js_uniform4fv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unFloat32Array . toFloat32Array) v))
+ 
+foreign import javascript unsafe
+        "$1[\"uniform4i\"]($2, $3, $4, $5,\n$6)" js_uniform4i ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         x
+         y
+         z
+         w)
+ 
+foreign import javascript unsafe "$1[\"uniform4iv\"]($2, $3)"
+        js_uniform4iv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         (maybe jsNull (unInt32Array . toInt32Array) v))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix2fv\"]($2, $3,\n$4)" js_uniformMatrix2fv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) array))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix3fv\"]($2, $3,\n$4)" js_uniformMatrix3fv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) array))
+ 
+foreign import javascript unsafe
+        "$1[\"uniformMatrix4fv\"]($2, $3,\n$4)" js_uniformMatrix4fv ::
+        JSRef WebGLRenderingContextBase ->
+          JSRef WebGLUniformLocation ->
+            GLboolean -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef location)
+         transpose
+         (maybe jsNull (unFloat32Array . toFloat32Array) array))
+ 
+foreign import javascript unsafe "$1[\"useProgram\"]($2)"
+        js_useProgram ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program))
+ 
+foreign import javascript unsafe "$1[\"validateProgram\"]($2)"
+        js_validateProgram ::
+        JSRef WebGLRenderingContextBase -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         (maybe jsNull pToJSRef program))
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib1f\"]($2, $3)"
+        js_vertexAttrib1f ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         x)
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib1fv\"]($2, $3)"
+        js_vertexAttrib1fv ::
+        JSRef WebGLRenderingContextBase ->
+          GLuint -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         (maybe jsNull (unFloat32Array . toFloat32Array) values))
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttrib2f\"]($2, $3, $4)" js_vertexAttrib2f ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         x
+         y)
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib2fv\"]($2, $3)"
+        js_vertexAttrib2fv ::
+        JSRef WebGLRenderingContextBase ->
+          GLuint -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         (maybe jsNull (unFloat32Array . toFloat32Array) values))
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttrib3f\"]($2, $3, $4,\n$5)" js_vertexAttrib3f ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         x
+         y
+         z)
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib3fv\"]($2, $3)"
+        js_vertexAttrib3fv ::
+        JSRef WebGLRenderingContextBase ->
+          GLuint -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         (maybe jsNull (unFloat32Array . toFloat32Array) values))
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttrib4f\"]($2, $3, $4,\n$5, $6)" js_vertexAttrib4f ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         x
+         y
+         z
+         w)
+ 
+foreign import javascript unsafe "$1[\"vertexAttrib4fv\"]($2, $3)"
+        js_vertexAttrib4fv ::
+        JSRef WebGLRenderingContextBase ->
+          GLuint -> JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         (maybe jsNull (unFloat32Array . toFloat32Array) values))
+ 
+foreign import javascript unsafe
+        "$1[\"vertexAttribPointer\"]($2,\n$3, $4, $5, $6, $7)"
+        js_vertexAttribPointer ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self))
+         indx
+         size
+         type'
+         normalized
+         stride
+         (fromIntegral offset))
+ 
+foreign import javascript unsafe "$1[\"viewport\"]($2, $3, $4, $5)"
+        js_viewport ::
+        JSRef 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
+         (unWebGLRenderingContextBase (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 ::
+        JSRef 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
+         (unWebGLRenderingContextBase (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "$1[\"drawingBufferHeight\"]"
+        js_getDrawingBufferHeight ::
+        JSRef 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
+         (unWebGLRenderingContextBase (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,44 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"rangeMin\"]" js_getRangeMin
+        :: JSRef 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 (unWebGLShaderPrecisionFormat self))
+ 
+foreign import javascript unsafe "$1[\"rangeMax\"]" js_getRangeMax
+        :: JSRef 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 (unWebGLShaderPrecisionFormat self))
+ 
+foreign import javascript unsafe "$1[\"precision\"]"
+        js_getPrecision :: JSRef 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 (unWebGLShaderPrecisionFormat 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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"animationName\"]"
+        js_getAnimationName :: JSRef 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 (unWebKitAnimationEvent self)))
+ 
+foreign import javascript unsafe "$1[\"elapsedTime\"]"
+        js_getElapsedTime :: JSRef 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 (unWebKitAnimationEvent 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,54 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        JSRef WebKitCSSFilterValue -> Word -> IO (JSRef 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
+      ((js__get (unWebKitCSSFilterValue self) index) >>= fromJSRef)
+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 :: JSRef 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 (unWebKitCSSFilterValue 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,477 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"WebKitCSSMatrix\"]($1)" js_newWebKitCSSMatrix ::
+        JSString -> IO (JSRef 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) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"setMatrixValue\"]($2)"
+        js_setMatrixValue :: JSRef 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 (unWebKitCSSMatrix self) (toJSString string))
+ 
+foreign import javascript unsafe "$1[\"multiply\"]($2)" js_multiply
+        ::
+        JSRef WebKitCSSMatrix ->
+          JSRef WebKitCSSMatrix -> IO (JSRef 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
+      ((js_multiply (unWebKitCSSMatrix self)
+          (maybe jsNull pToJSRef secondMatrix))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"inverse\"]()" js_inverse ::
+        JSRef WebKitCSSMatrix -> IO (JSRef 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 ((js_inverse (unWebKitCSSMatrix self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"translate\"]($2, $3, $4)"
+        js_translate ::
+        JSRef WebKitCSSMatrix ->
+          Double -> Double -> Double -> IO (JSRef 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
+      ((js_translate (unWebKitCSSMatrix self) x y z) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"scale\"]($2, $3, $4)"
+        js_scale ::
+        JSRef WebKitCSSMatrix ->
+          Double -> Double -> Double -> IO (JSRef 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
+      ((js_scale (unWebKitCSSMatrix self) scaleX scaleY scaleZ) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"rotate\"]($2, $3, $4)"
+        js_rotate ::
+        JSRef WebKitCSSMatrix ->
+          Double -> Double -> Double -> IO (JSRef 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
+      ((js_rotate (unWebKitCSSMatrix self) rotX rotY rotZ) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"rotateAxisAngle\"]($2, $3,\n$4, $5)" js_rotateAxisAngle ::
+        JSRef WebKitCSSMatrix ->
+          Double -> Double -> Double -> Double -> IO (JSRef 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
+      ((js_rotateAxisAngle (unWebKitCSSMatrix self) x y z angle) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"skewX\"]($2)" js_skewX ::
+        JSRef WebKitCSSMatrix -> Double -> IO (JSRef 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 ((js_skewX (unWebKitCSSMatrix self) angle) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"skewY\"]($2)" js_skewY ::
+        JSRef WebKitCSSMatrix -> Double -> IO (JSRef 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 ((js_skewY (unWebKitCSSMatrix self) angle) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: JSRef 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 (unWebKitCSSMatrix self)))
+ 
+foreign import javascript unsafe "$1[\"a\"] = $2;" js_setA ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"a\"]" js_getA ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"b\"] = $2;" js_setB ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"b\"]" js_getB ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"c\"] = $2;" js_setC ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"c\"]" js_getC ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"d\"] = $2;" js_setD ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"d\"]" js_getD ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"e\"] = $2;" js_setE ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"e\"]" js_getE ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"f\"] = $2;" js_setF ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"f\"]" js_getF ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m11\"] = $2;" js_setM11 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m11\"]" js_getM11 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m12\"] = $2;" js_setM12 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m12\"]" js_getM12 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m13\"] = $2;" js_setM13 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m13\"]" js_getM13 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m14\"] = $2;" js_setM14 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m14\"]" js_getM14 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m21\"] = $2;" js_setM21 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m21\"]" js_getM21 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m22\"] = $2;" js_setM22 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m22\"]" js_getM22 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m23\"] = $2;" js_setM23 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m23\"]" js_getM23 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m24\"] = $2;" js_setM24 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m24\"]" js_getM24 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m31\"] = $2;" js_setM31 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m31\"]" js_getM31 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m32\"] = $2;" js_setM32 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m32\"]" js_getM32 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m33\"] = $2;" js_setM33 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m33\"]" js_getM33 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m34\"] = $2;" js_setM34 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m34\"]" js_getM34 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m41\"] = $2;" js_setM41 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m41\"]" js_getM41 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m42\"] = $2;" js_setM42 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m42\"]" js_getM42 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m43\"] = $2;" js_setM43 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m43\"]" js_getM43 ::
+        JSRef 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 (unWebKitCSSMatrix self))
+ 
+foreign import javascript unsafe "$1[\"m44\"] = $2;" js_setM44 ::
+        JSRef 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 (unWebKitCSSMatrix self) val)
+ 
+foreign import javascript unsafe "$1[\"m44\"]" js_getM44 ::
+        JSRef 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 (unWebKitCSSMatrix 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,29 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"cssRules\"]" js_getCssRules
+        :: JSRef WebKitCSSRegionRule -> IO (JSRef 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
+      ((js_getCssRules (unWebKitCSSRegionRule self)) >>= fromJSRef)
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,68 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"_get\"]($2)" js__get ::
+        JSRef WebKitCSSTransformValue -> Word -> IO (JSRef 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
+      ((js__get (unWebKitCSSTransformValue self) index) >>= fromJSRef)
+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 :: JSRef 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 (unWebKitCSSTransformValue 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,30 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"style\"]" js_getStyle ::
+        JSRef WebKitCSSViewportRule -> IO (JSRef 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
+      ((js_getStyle (unWebKitCSSViewportRule self)) >>= fromJSRef)
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,76 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"getRegionsByContent\"]($2)"
+        js_getRegionsByContent ::
+        JSRef WebKitNamedFlow -> JSRef Node -> IO (JSRef 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
+      ((js_getRegionsByContent (unWebKitNamedFlow self)
+          (maybe jsNull (unNode . toNode) contentNode))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getRegions\"]()"
+        js_getRegions :: JSRef WebKitNamedFlow -> IO (JSRef 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 ((js_getRegions (unWebKitNamedFlow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getContent\"]()"
+        js_getContent :: JSRef WebKitNamedFlow -> IO (JSRef 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 ((js_getContent (unWebKitNamedFlow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unWebKitNamedFlow self)))
+ 
+foreign import javascript unsafe "($1[\"overset\"] ? 1 : 0)"
+        js_getOverset :: JSRef 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 (unWebKitNamedFlow self))
+ 
+foreign import javascript unsafe "$1[\"firstEmptyRegionIndex\"]"
+        js_getFirstEmptyRegionIndex :: JSRef 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 (unWebKitNamedFlow 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,31 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"messageHandlers\"]"
+        js_getMessageHandlers ::
+        JSRef WebKitNamespace -> IO (JSRef 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
+      ((js_getMessageHandlers (unWebKitNamespace self)) >>= fromJSRef)
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,35 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"availability\"]"
+        js_getAvailability ::
+        JSRef 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
+            (unWebKitPlaybackTargetAvailabilityEvent 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,64 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"WebKitPoint\"]()"
+        js_newWebKitPoint :: IO (JSRef WebKitPoint)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
+newWebKitPoint :: (MonadIO m) => m WebKitPoint
+newWebKitPoint = liftIO (js_newWebKitPoint >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "new window[\"WebKitPoint\"]($1,\n$2)" js_newWebKitPoint' ::
+        Float -> Float -> IO (JSRef 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 >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"x\"] = $2;" js_setX ::
+        JSRef 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 (unWebKitPoint self) val)
+ 
+foreign import javascript unsafe "$1[\"x\"]" js_getX ::
+        JSRef 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 (unWebKitPoint self))
+ 
+foreign import javascript unsafe "$1[\"y\"] = $2;" js_setY ::
+        JSRef 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 (unWebKitPoint self) val)
+ 
+foreign import javascript unsafe "$1[\"y\"]" js_getY ::
+        JSRef 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 (unWebKitPoint 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,53 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"propertyName\"]"
+        js_getPropertyName :: JSRef 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 (unWebKitTransitionEvent self)))
+ 
+foreign import javascript unsafe "$1[\"elapsedTime\"]"
+        js_getElapsedTime :: JSRef 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 (unWebKitTransitionEvent self))
+ 
+foreign import javascript unsafe "$1[\"pseudoElement\"]"
+        js_getPseudoElement :: JSRef 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 (unWebKitTransitionEvent 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,188 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "new window[\"WebSocket\"]($1, $2)" js_newWebSocket ::
+        JSString -> JSRef (Maybe [protocols]) -> IO (JSRef 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
+      (toJSRef protocols >>=
+         \ protocols' -> js_newWebSocket (toJSString url) protocols'
+         >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe
+        "new window[\"WebSocket\"]($1, $2)" js_newWebSocket' ::
+        JSString -> JSString -> IO (JSRef 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) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_send ::
+        JSRef WebSocket -> JSRef 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 (unWebSocket self)
+         (maybe jsNull (unArrayBuffer . toArrayBuffer) data'))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendView ::
+        JSRef WebSocket -> JSRef 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 (unWebSocket self)
+         (maybe jsNull (unArrayBufferView . toArrayBufferView) data'))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendBlob ::
+        JSRef WebSocket -> JSRef 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 (unWebSocket self)
+         (maybe jsNull (unBlob . toBlob) data'))
+ 
+foreign import javascript unsafe "$1[\"send\"]($2)" js_sendString
+        :: JSRef 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 (unWebSocket self) (toJSString data'))
+ 
+foreign import javascript unsafe "$1[\"close\"]($2, $3)" js_close
+        :: JSRef 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 (unWebSocket self) code (toJSString reason))
+pattern CONNECTING = 0
+pattern OPEN = 1
+pattern CLOSING = 2
+pattern CLOSED = 3
+ 
+foreign import javascript unsafe "$1[\"url\"]" js_getUrl ::
+        JSRef 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 (unWebSocket self)))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unWebSocket self))
+ 
+foreign import javascript unsafe "$1[\"bufferedAmount\"]"
+        js_getBufferedAmount :: JSRef 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 (unWebSocket 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 Event
+closeEvent = unsafeEventName (toJSString "close")
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: JSRef WebSocket -> IO (JSRef (Maybe 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 (unWebSocket self)))
+ 
+foreign import javascript unsafe "$1[\"extensions\"]"
+        js_getExtensions :: JSRef WebSocket -> IO (JSRef (Maybe 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 (unWebSocket self)))
+ 
+foreign import javascript unsafe "$1[\"binaryType\"] = $2;"
+        js_setBinaryType :: JSRef 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 (unWebSocket self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"binaryType\"]"
+        js_getBinaryType :: JSRef 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 (unWebSocket 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,124 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"initWebKitWheelEvent\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10,\n$11, $12)"
+        js_initWebKitWheelEvent ::
+        JSRef WheelEvent ->
+          Int ->
+            Int ->
+              JSRef 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 (unWheelEvent self) wheelDeltaX
+         wheelDeltaY
+         (maybe jsNull pToJSRef 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 ::
+        JSRef 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 (unWheelEvent self))
+ 
+foreign import javascript unsafe "$1[\"deltaY\"]" js_getDeltaY ::
+        JSRef 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 (unWheelEvent self))
+ 
+foreign import javascript unsafe "$1[\"deltaZ\"]" js_getDeltaZ ::
+        JSRef 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 (unWheelEvent self))
+ 
+foreign import javascript unsafe "$1[\"deltaMode\"]"
+        js_getDeltaMode :: JSRef 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 (unWheelEvent self))
+ 
+foreign import javascript unsafe "$1[\"wheelDeltaX\"]"
+        js_getWheelDeltaX :: JSRef 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 (unWheelEvent self))
+ 
+foreign import javascript unsafe "$1[\"wheelDeltaY\"]"
+        js_getWheelDeltaY :: JSRef 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 (unWheelEvent self))
+ 
+foreign import javascript unsafe "$1[\"wheelDelta\"]"
+        js_getWheelDelta :: JSRef 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 (unWheelEvent self))
+ 
+foreign import javascript unsafe
+        "($1[\"webkitDirectionInvertedFromDevice\"] ? 1 : 0)"
+        js_getWebkitDirectionInvertedFromDevice ::
+        JSRef 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 (unWheelEvent 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,1273 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe
+        "$1[\"openDatabase\"]($2, $3, $4,\n$5, $6)" js_openDatabase ::
+        JSRef Window ->
+          JSString ->
+            JSString ->
+              JSString -> Word -> JSRef DatabaseCallback -> IO (JSRef 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
+      ((js_openDatabase (unWindow self) (toJSString name)
+          (toJSString version)
+          (toJSString displayName)
+          estimatedSize
+          (maybe jsNull pToJSRef creationCallback))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getSelection\"]()"
+        js_getSelection :: JSRef Window -> IO (JSRef 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 ((js_getSelection (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"focus\"]()" js_focus ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"blur\"]()" js_blur ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"print\"]()" js_print ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"stop\"]()" js_stop ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"open\"]($2, $3, $4)" js_open
+        ::
+        JSRef Window ->
+          JSString -> JSString -> JSString -> IO (JSRef 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
+      ((js_open (unWindow self) (toJSString url) (toJSString name)
+          (toJSString options))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"showModalDialog\"]($2, $3,\n$4)" js_showModalDialog ::
+        JSRef Window -> JSString -> JSRef a -> JSString -> IO (JSRef a)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
+showModalDialog ::
+                (MonadIO m, ToJSString url, ToJSString featureArgs) =>
+                  Window -> url -> JSRef a -> featureArgs -> m (JSRef a)
+showModalDialog self url dialogArgs featureArgs
+  = liftIO
+      (js_showModalDialog (unWindow self) (toJSString url) dialogArgs
+         (toJSString featureArgs))
+ 
+foreign import javascript unsafe "$1[\"alert\"]($2)" js_alert ::
+        JSRef 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 (unWindow self) (toJSString message))
+ 
+foreign import javascript unsafe "($1[\"confirm\"]($2) ? 1 : 0)"
+        js_confirm :: JSRef 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 (unWindow self) (toJSString message))
+ 
+foreign import javascript unsafe "$1[\"prompt\"]($2, $3)" js_prompt
+        ::
+        JSRef Window ->
+          JSString -> JSRef (Maybe JSString) -> IO (JSRef (Maybe 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 (unWindow self) (toJSString message)
+            (toMaybeJSString defaultValue)))
+ 
+foreign import javascript unsafe
+        "($1[\"find\"]($2, $3, $4, $5, $6,\n$7, $8) ? 1 : 0)" js_find ::
+        JSRef 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 (unWindow self) (toJSString string) caseSensitive
+         backwards
+         wrap
+         wholeWord
+         searchInFrames
+         showDialog)
+ 
+foreign import javascript unsafe "$1[\"scrollBy\"]($2, $3)"
+        js_scrollBy :: JSRef 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 (unWindow self) x y)
+ 
+foreign import javascript unsafe "$1[\"scrollTo\"]($2, $3)"
+        js_scrollTo :: JSRef 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 (unWindow self) x y)
+ 
+foreign import javascript unsafe "$1[\"scroll\"]($2, $3)" js_scroll
+        :: JSRef 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 (unWindow self) x y)
+ 
+foreign import javascript unsafe "$1[\"moveBy\"]($2, $3)" js_moveBy
+        :: JSRef 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 (unWindow self) x y)
+ 
+foreign import javascript unsafe "$1[\"moveTo\"]($2, $3)" js_moveTo
+        :: JSRef 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 (unWindow self) x y)
+ 
+foreign import javascript unsafe "$1[\"resizeBy\"]($2, $3)"
+        js_resizeBy :: JSRef 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 (unWindow self) x y)
+ 
+foreign import javascript unsafe "$1[\"resizeTo\"]($2, $3)"
+        js_resizeTo :: JSRef 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 (unWindow self) width height)
+ 
+foreign import javascript unsafe "$1[\"matchMedia\"]($2)"
+        js_matchMedia ::
+        JSRef Window -> JSString -> IO (JSRef 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
+      ((js_matchMedia (unWindow self) (toJSString query)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"getComputedStyle\"]($2, $3)"
+        js_getComputedStyle ::
+        JSRef Window ->
+          JSRef Element ->
+            JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_getComputedStyle (unWindow self)
+          (maybe jsNull (unElement . toElement) element)
+          (toMaybeJSString pseudoElement))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"getMatchedCSSRules\"]($2, $3)" js_getMatchedCSSRules ::
+        JSRef Window ->
+          JSRef Element -> JSRef (Maybe JSString) -> IO (JSRef 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
+      ((js_getMatchedCSSRules (unWindow self)
+          (maybe jsNull (unElement . toElement) element)
+          (toMaybeJSString pseudoElement))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitConvertPointFromPageToNode\"]($2,\n$3)"
+        js_webkitConvertPointFromPageToNode ::
+        JSRef Window ->
+          JSRef Node -> JSRef WebKitPoint -> IO (JSRef 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
+      ((js_webkitConvertPointFromPageToNode (unWindow self)
+          (maybe jsNull (unNode . toNode) node)
+          (maybe jsNull pToJSRef p))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitConvertPointFromNodeToPage\"]($2,\n$3)"
+        js_webkitConvertPointFromNodeToPage ::
+        JSRef Window ->
+          JSRef Node -> JSRef WebKitPoint -> IO (JSRef 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
+      ((js_webkitConvertPointFromNodeToPage (unWindow self)
+          (maybe jsNull (unNode . toNode) node)
+          (maybe jsNull pToJSRef p))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2, $3, $4)"
+        js_postMessage ::
+        JSRef Window ->
+          JSRef SerializedScriptValue -> JSString -> JSRef 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 (unWindow self)
+         (maybe jsNull (unSerializedScriptValue . toSerializedScriptValue)
+            message)
+         (toJSString targetOrigin)
+         (maybe jsNull (unArray . toArray) messagePorts))
+ 
+foreign import javascript unsafe
+        "$1[\"requestAnimationFrame\"]($2)" js_requestAnimationFrame ::
+        JSRef Window -> JSRef 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 (unWindow self)
+         (maybe jsNull pToJSRef callback))
+ 
+foreign import javascript unsafe "$1[\"cancelAnimationFrame\"]($2)"
+        js_cancelAnimationFrame :: JSRef 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 (unWindow self) id)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitRequestAnimationFrame\"]($2)"
+        js_webkitRequestAnimationFrame ::
+        JSRef Window -> JSRef 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 (unWindow self)
+         (maybe jsNull pToJSRef callback))
+ 
+foreign import javascript unsafe
+        "$1[\"webkitCancelAnimationFrame\"]($2)"
+        js_webkitCancelAnimationFrame :: JSRef 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 (unWindow self) id)
+ 
+foreign import javascript unsafe
+        "$1[\"webkitCancelRequestAnimationFrame\"]($2)"
+        js_webkitCancelRequestAnimationFrame ::
+        JSRef 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 (unWindow self) id)
+ 
+foreign import javascript unsafe "$1[\"captureEvents\"]()"
+        js_captureEvents :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"releaseEvents\"]()"
+        js_releaseEvents :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"webkitIndexedDB\"]"
+        js_getWebkitIndexedDB :: JSRef Window -> IO (JSRef 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 ((js_getWebkitIndexedDB (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"indexedDB\"]"
+        js_getIndexedDB :: JSRef Window -> IO (JSRef 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 ((js_getIndexedDB (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"webkitStorageInfo\"]"
+        js_getWebkitStorageInfo :: JSRef Window -> IO (JSRef 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 ((js_getWebkitStorageInfo (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"speechSynthesis\"]"
+        js_getSpeechSynthesis :: JSRef Window -> IO (JSRef 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 ((js_getSpeechSynthesis (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"screen\"]" js_getScreen ::
+        JSRef Window -> IO (JSRef 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 ((js_getScreen (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"history\"]" js_getHistory ::
+        JSRef Window -> IO (JSRef 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 ((js_getHistory (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"locationbar\"]"
+        js_getLocationbar :: JSRef Window -> IO (JSRef 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 ((js_getLocationbar (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"menubar\"]" js_getMenubar ::
+        JSRef Window -> IO (JSRef 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 ((js_getMenubar (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"personalbar\"]"
+        js_getPersonalbar :: JSRef Window -> IO (JSRef 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 ((js_getPersonalbar (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"scrollbars\"]"
+        js_getScrollbars :: JSRef Window -> IO (JSRef 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 ((js_getScrollbars (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"statusbar\"]"
+        js_getStatusbar :: JSRef Window -> IO (JSRef 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 ((js_getStatusbar (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"toolbar\"]" js_getToolbar ::
+        JSRef Window -> IO (JSRef 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 ((js_getToolbar (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"navigator\"]"
+        js_getNavigator :: JSRef Window -> IO (JSRef 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 ((js_getNavigator (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"clientInformation\"]"
+        js_getClientInformation :: JSRef Window -> IO (JSRef 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 ((js_getClientInformation (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"crypto\"]" js_getCrypto ::
+        JSRef Window -> IO (JSRef 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 ((js_getCrypto (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"location\"] = $2;"
+        js_setLocation :: JSRef Window -> JSRef 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 (unWindow self) (maybe jsNull pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"location\"]" js_getLocation
+        :: JSRef Window -> IO (JSRef 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 ((js_getLocation (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"event\"]" js_getEvent ::
+        JSRef Window -> IO (JSRef 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 ((js_getEvent (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"frameElement\"]"
+        js_getFrameElement :: JSRef Window -> IO (JSRef 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 ((js_getFrameElement (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"offscreenBuffering\"] ? 1 : 0)" js_getOffscreenBuffering ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"outerHeight\"]"
+        js_getOuterHeight :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"outerWidth\"]"
+        js_getOuterWidth :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"innerHeight\"]"
+        js_getInnerHeight :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"innerWidth\"]"
+        js_getInnerWidth :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"screenX\"]" js_getScreenX ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"screenY\"]" js_getScreenY ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"screenLeft\"]"
+        js_getScreenLeft :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"screenTop\"]"
+        js_getScreenTop :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"scrollX\"]" js_getScrollX ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"scrollY\"]" js_getScrollY ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"pageXOffset\"]"
+        js_getPageXOffset :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"pageYOffset\"]"
+        js_getPageYOffset :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "($1[\"closed\"] ? 1 : 0)"
+        js_getClosed :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"name\"] = $2;" js_setName ::
+        JSRef 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 (unWindow self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"name\"]" js_getName ::
+        JSRef 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 (unWindow self)))
+ 
+foreign import javascript unsafe "$1[\"status\"] = $2;"
+        js_setStatus :: JSRef 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 (unWindow self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"status\"]" js_getStatus ::
+        JSRef 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 (unWindow self)))
+ 
+foreign import javascript unsafe "$1[\"defaultStatus\"] = $2;"
+        js_setDefaultStatus :: JSRef 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 (unWindow self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"defaultStatus\"]"
+        js_getDefaultStatus :: JSRef 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 (unWindow self)))
+ 
+foreign import javascript unsafe "$1[\"defaultstatus\"] = $2;"
+        js_setDefaultstatus :: JSRef 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 (unWindow self) (toJSString val))
+ 
+foreign import javascript unsafe "$1[\"defaultstatus\"]"
+        js_getDefaultstatus :: JSRef 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 (unWindow self)))
+ 
+foreign import javascript unsafe "$1[\"self\"]" js_getSelf ::
+        JSRef Window -> IO (JSRef 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 ((js_getSelf (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"window\"]" js_getWindow ::
+        JSRef Window -> IO (JSRef 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 ((js_getWindow (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"frames\"]" js_getFrames ::
+        JSRef Window -> IO (JSRef 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 ((js_getFrames (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"opener\"]" js_getOpener ::
+        JSRef Window -> IO (JSRef 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 ((js_getOpener (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"parent\"]" js_getParent ::
+        JSRef Window -> IO (JSRef 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 ((js_getParent (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"top\"]" js_getTop ::
+        JSRef Window -> IO (JSRef 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 ((js_getTop (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"document\"]" js_getDocument
+        :: JSRef Window -> IO (JSRef 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 ((js_getDocument (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"styleMedia\"]"
+        js_getStyleMedia :: JSRef Window -> IO (JSRef 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 ((js_getStyleMedia (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"devicePixelRatio\"]"
+        js_getDevicePixelRatio :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"applicationCache\"]"
+        js_getApplicationCache ::
+        JSRef Window -> IO (JSRef 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 ((js_getApplicationCache (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"sessionStorage\"]"
+        js_getSessionStorage :: JSRef Window -> IO (JSRef 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 ((js_getSessionStorage (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"localStorage\"]"
+        js_getLocalStorage :: JSRef Window -> IO (JSRef 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 ((js_getLocalStorage (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"orientation\"]"
+        js_getOrientation :: JSRef 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 (unWindow self))
+ 
+foreign import javascript unsafe "$1[\"performance\"]"
+        js_getPerformance :: JSRef Window -> IO (JSRef 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 ((js_getPerformance (unWindow self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"CSS\"]" js_getCSS ::
+        JSRef Window -> IO (JSRef 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 ((js_getCSS (unWindow self)) >>= fromJSRef)
+
+-- | <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,43 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"atob\"]($2)" js_atob ::
+        JSRef 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 (unWindowBase64 self) (toJSString string)))
+ 
+foreign import javascript unsafe "$1[\"btoa\"]($2)" js_btoa ::
+        JSRef 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 (unWindowBase64 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,54 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"setTimeout\"]($2, $3)"
+        js_setTimeout :: JSRef WindowTimers -> JSRef a -> Int -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout Mozilla WindowTimers.setTimeout documentation> 
+setTimeout ::
+           (MonadIO m) => WindowTimers -> JSRef a -> Int -> m Int
+setTimeout self handler timeout
+  = liftIO (js_setTimeout (unWindowTimers self) handler timeout)
+ 
+foreign import javascript unsafe "$1[\"clearTimeout\"]($2)"
+        js_clearTimeout :: JSRef 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 (unWindowTimers self) handle)
+ 
+foreign import javascript unsafe "$1[\"setInterval\"]($2, $3)"
+        js_setInterval :: JSRef WindowTimers -> JSRef a -> Int -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setInterval Mozilla WindowTimers.setInterval documentation> 
+setInterval ::
+            (MonadIO m) => WindowTimers -> JSRef a -> Int -> m Int
+setInterval self handler timeout
+  = liftIO (js_setInterval (unWindowTimers self) handler timeout)
+ 
+foreign import javascript unsafe "$1[\"clearInterval\"]($2)"
+        js_clearInterval :: JSRef 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 (unWindowTimers 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,57 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"Worker\"]($1)"
+        js_newWorker :: JSString -> IO (JSRef 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) >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"postMessage\"]($2, $3)"
+        js_postMessage ::
+        JSRef Worker -> JSRef SerializedScriptValue -> JSRef 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 (unWorker self)
+         (maybe jsNull (unSerializedScriptValue . toSerializedScriptValue)
+            message)
+         (maybe jsNull (unArray . toArray) messagePorts))
+ 
+foreign import javascript unsafe "$1[\"terminate\"]()" js_terminate
+        :: JSRef 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 (unWorker 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,96 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"close\"]()" js_close ::
+        JSRef 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 (unWorkerGlobalScope (toWorkerGlobalScope self)))
+ 
+foreign import javascript unsafe "$1[\"importScripts\"]()"
+        js_importScripts :: JSRef 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 (unWorkerGlobalScope (toWorkerGlobalScope self)))
+ 
+foreign import javascript unsafe "$1[\"self\"]" js_getSelf ::
+        JSRef WorkerGlobalScope -> IO (JSRef 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
+      ((js_getSelf (unWorkerGlobalScope (toWorkerGlobalScope self))) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"location\"]" js_getLocation
+        :: JSRef WorkerGlobalScope -> IO (JSRef 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
+      ((js_getLocation (unWorkerGlobalScope (toWorkerGlobalScope self)))
+         >>= fromJSRef)
+
+-- | <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 ::
+        JSRef WorkerGlobalScope -> IO (JSRef 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
+      ((js_getNavigator (unWorkerGlobalScope (toWorkerGlobalScope self)))
+         >>= fromJSRef)
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,106 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"toString\"]()" js_toString
+        :: JSRef 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 (unWorkerLocation self)))
+ 
+foreign import javascript unsafe "$1[\"href\"]" js_getHref ::
+        JSRef 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 (unWorkerLocation self)))
+ 
+foreign import javascript unsafe "$1[\"protocol\"]" js_getProtocol
+        :: JSRef 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 (unWorkerLocation self)))
+ 
+foreign import javascript unsafe "$1[\"host\"]" js_getHost ::
+        JSRef 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 (unWorkerLocation self)))
+ 
+foreign import javascript unsafe "$1[\"hostname\"]" js_getHostname
+        :: JSRef 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 (unWorkerLocation self)))
+ 
+foreign import javascript unsafe "$1[\"port\"]" js_getPort ::
+        JSRef 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 (unWorkerLocation self)))
+ 
+foreign import javascript unsafe "$1[\"pathname\"]" js_getPathname
+        :: JSRef 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 (unWorkerLocation self)))
+ 
+foreign import javascript unsafe "$1[\"search\"]" js_getSearch ::
+        JSRef 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 (unWorkerLocation self)))
+ 
+foreign import javascript unsafe "$1[\"hash\"]" js_getHash ::
+        JSRef 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 (unWorkerLocation 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,94 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"webkitTemporaryStorage\"]"
+        js_getWebkitTemporaryStorage ::
+        JSRef WorkerNavigator -> IO (JSRef 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
+      ((js_getWebkitTemporaryStorage (unWorkerNavigator self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"webkitPersistentStorage\"]"
+        js_getWebkitPersistentStorage ::
+        JSRef WorkerNavigator -> IO (JSRef 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
+      ((js_getWebkitPersistentStorage (unWorkerNavigator self)) >>=
+         fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"appName\"]" js_getAppName ::
+        JSRef 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 (unWorkerNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"appVersion\"]"
+        js_getAppVersion :: JSRef 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 (unWorkerNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"platform\"]" js_getPlatform
+        :: JSRef 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 (unWorkerNavigator self)))
+ 
+foreign import javascript unsafe "$1[\"userAgent\"]"
+        js_getUserAgent :: JSRef 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 (unWorkerNavigator self)))
+ 
+foreign import javascript unsafe "($1[\"onLine\"] ? 1 : 0)"
+        js_getOnLine :: JSRef 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 (unWorkerNavigator 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,290 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"XMLHttpRequest\"]()"
+        js_newXMLHttpRequest :: IO (JSRef XMLHttpRequest)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation> 
+newXMLHttpRequest :: (MonadIO m) => m XMLHttpRequest
+newXMLHttpRequest
+  = liftIO (js_newXMLHttpRequest >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"open\"]($2, $3, $4, $5, $6)"
+        js_open ::
+        JSRef 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 (unXMLHttpRequest self) (toJSString method)
+         (toJSString url)
+         async
+         (toJSString user)
+         (toJSString password))
+ 
+foreign import javascript unsafe "$1[\"setRequestHeader\"]($2, $3)"
+        js_setRequestHeader ::
+        JSRef 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 (unXMLHttpRequest self) (toJSString header)
+         (toJSString value))
+ 
+foreign import javascript unsafe "$1[\"send\"]()" js_send ::
+        JSRef 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 (unXMLHttpRequest self))
+ 
+foreign import javascript unsafe "$1[\"abort\"]()" js_abort ::
+        JSRef 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 (unXMLHttpRequest self))
+ 
+foreign import javascript unsafe "$1[\"getAllResponseHeaders\"]()"
+        js_getAllResponseHeaders ::
+        JSRef XMLHttpRequest -> IO (JSRef (Maybe 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 (unXMLHttpRequest self)))
+ 
+foreign import javascript unsafe "$1[\"getResponseHeader\"]($2)"
+        js_getResponseHeader ::
+        JSRef XMLHttpRequest -> JSString -> IO (JSRef (Maybe 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 (unXMLHttpRequest self) (toJSString header)))
+ 
+foreign import javascript unsafe "$1[\"overrideMimeType\"]($2)"
+        js_overrideMimeType :: JSRef 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 (unXMLHttpRequest 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 :: JSRef 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 (unXMLHttpRequest self) val)
+ 
+foreign import javascript unsafe "$1[\"timeout\"]" js_getTimeout ::
+        JSRef 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 (unXMLHttpRequest self))
+ 
+foreign import javascript unsafe "$1[\"readyState\"]"
+        js_getReadyState :: JSRef 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 (unXMLHttpRequest self))
+ 
+foreign import javascript unsafe "$1[\"withCredentials\"] = $2;"
+        js_setWithCredentials :: JSRef 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 (unXMLHttpRequest self) val)
+ 
+foreign import javascript unsafe
+        "($1[\"withCredentials\"] ? 1 : 0)" js_getWithCredentials ::
+        JSRef 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 (unXMLHttpRequest self))
+ 
+foreign import javascript unsafe "$1[\"upload\"]" js_getUpload ::
+        JSRef XMLHttpRequest -> IO (JSRef 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 ((js_getUpload (unXMLHttpRequest self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"responseText\"]"
+        js_getResponseText ::
+        JSRef XMLHttpRequest -> IO (JSRef (Maybe 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 (unXMLHttpRequest self)))
+ 
+foreign import javascript unsafe "$1[\"responseXML\"]"
+        js_getResponseXML :: JSRef XMLHttpRequest -> IO (JSRef 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
+      ((js_getResponseXML (unXMLHttpRequest self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"responseType\"] = $2;"
+        js_setResponseType ::
+        JSRef XMLHttpRequest -> JSRef XMLHttpRequestResponseType -> 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 (unXMLHttpRequest self) (pToJSRef val))
+ 
+foreign import javascript unsafe "$1[\"responseType\"]"
+        js_getResponseType ::
+        JSRef XMLHttpRequest -> IO (JSRef XMLHttpRequestResponseType)
+
+-- | <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 (unXMLHttpRequest self)) >>=
+         fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"response\"]" js_getResponse
+        :: JSRef XMLHttpRequest -> IO (JSRef 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 ((js_getResponse (unXMLHttpRequest self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"status\"]" js_getStatus ::
+        JSRef 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 (unXMLHttpRequest self))
+ 
+foreign import javascript unsafe "$1[\"statusText\"]"
+        js_getStatusText :: JSRef 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 (unXMLHttpRequest self)))
+ 
+foreign import javascript unsafe "$1[\"responseURL\"]"
+        js_getResponseURL :: JSRef 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 (unXMLHttpRequest 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,40 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"position\"]" js_getPosition
+        :: JSRef 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 (unXMLHttpRequestProgressEvent self)))
+ 
+foreign import javascript unsafe "$1[\"totalSize\"]"
+        js_getTotalSize :: JSRef 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 (unXMLHttpRequestProgressEvent 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.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,42 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"XMLSerializer\"]()"
+        js_newXMLSerializer :: IO (JSRef XMLSerializer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation> 
+newXMLSerializer :: (MonadIO m) => m XMLSerializer
+newXMLSerializer
+  = liftIO (js_newXMLSerializer >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"serializeToString\"]($2)"
+        js_serializeToString ::
+        JSRef XMLSerializer -> JSRef 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 (unXMLSerializer self)
+            (maybe jsNull (unNode . 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,85 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"XPathEvaluator\"]()"
+        js_newXPathEvaluator :: IO (JSRef XPathEvaluator)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation> 
+newXPathEvaluator :: (MonadIO m) => m XPathEvaluator
+newXPathEvaluator
+  = liftIO (js_newXPathEvaluator >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"createExpression\"]($2, $3)"
+        js_createExpression ::
+        JSRef XPathEvaluator ->
+          JSString -> JSRef XPathNSResolver -> IO (JSRef 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
+      ((js_createExpression (unXPathEvaluator self)
+          (toJSString expression)
+          (maybe jsNull pToJSRef resolver))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"createNSResolver\"]($2)"
+        js_createNSResolver ::
+        JSRef XPathEvaluator -> JSRef Node -> IO (JSRef 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
+      ((js_createNSResolver (unXPathEvaluator self)
+          (maybe jsNull (unNode . toNode) nodeResolver))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "$1[\"evaluate\"]($2, $3, $4, $5,\n$6)" js_evaluate ::
+        JSRef XPathEvaluator ->
+          JSString ->
+            JSRef Node ->
+              JSRef XPathNSResolver ->
+                Word -> JSRef XPathResult -> IO (JSRef 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
+      ((js_evaluate (unXPathEvaluator self) (toJSString expression)
+          (maybe jsNull (unNode . toNode) contextNode)
+          (maybe jsNull pToJSRef resolver)
+          type'
+          (maybe jsNull pToJSRef inResult))
+         >>= fromJSRef)
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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"evaluate\"]($2, $3, $4)"
+        js_evaluate ::
+        JSRef XPathExpression ->
+          JSRef Node -> Word -> JSRef XPathResult -> IO (JSRef 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
+      ((js_evaluate (unXPathExpression self)
+          (maybe jsNull (unNode . toNode) contextNode)
+          type'
+          (maybe jsNull pToJSRef inResult))
+         >>= fromJSRef)
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,33 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"lookupNamespaceURI\"]($2)"
+        js_lookupNamespaceURI ::
+        JSRef XPathNSResolver -> JSString -> IO (JSRef (Maybe 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 (unXPathNSResolver 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,117 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "$1[\"iterateNext\"]()"
+        js_iterateNext :: JSRef XPathResult -> IO (JSRef 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 ((js_iterateNext (unXPathResult self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"snapshotItem\"]($2)"
+        js_snapshotItem :: JSRef XPathResult -> Word -> IO (JSRef 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
+      ((js_snapshotItem (unXPathResult self) index) >>= fromJSRef)
+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 :: JSRef 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 (unXPathResult self))
+ 
+foreign import javascript unsafe "$1[\"numberValue\"]"
+        js_getNumberValue :: JSRef 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 (unXPathResult self))
+ 
+foreign import javascript unsafe "$1[\"stringValue\"]"
+        js_getStringValue :: JSRef 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 (unXPathResult self)))
+ 
+foreign import javascript unsafe "($1[\"booleanValue\"] ? 1 : 0)"
+        js_getBooleanValue :: JSRef 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 (unXPathResult self))
+ 
+foreign import javascript unsafe "$1[\"singleNodeValue\"]"
+        js_getSingleNodeValue :: JSRef XPathResult -> IO (JSRef 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
+      ((js_getSingleNodeValue (unXPathResult self)) >>= fromJSRef)
+ 
+foreign import javascript unsafe
+        "($1[\"invalidIteratorState\"] ? 1 : 0)" js_getInvalidIteratorState
+        :: JSRef 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 (unXPathResult self))
+ 
+foreign import javascript unsafe "$1[\"snapshotLength\"]"
+        js_getSnapshotLength :: JSRef 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 (unXPathResult 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,134 @@
+{-# 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 (JSRef(..), JSString, castRef)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.Enums
+ 
+foreign import javascript unsafe "new window[\"XSLTProcessor\"]()"
+        js_newXSLTProcessor :: IO (JSRef XSLTProcessor)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation> 
+newXSLTProcessor :: (MonadIO m) => m XSLTProcessor
+newXSLTProcessor
+  = liftIO (js_newXSLTProcessor >>= fromJSRefUnchecked)
+ 
+foreign import javascript unsafe "$1[\"importStylesheet\"]($2)"
+        js_importStylesheet :: JSRef XSLTProcessor -> JSRef 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 (unXSLTProcessor self)
+         (maybe jsNull (unNode . toNode) stylesheet))
+ 
+foreign import javascript unsafe
+        "$1[\"transformToFragment\"]($2,\n$3)" js_transformToFragment ::
+        JSRef XSLTProcessor ->
+          JSRef Node -> JSRef Document -> IO (JSRef 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
+      ((js_transformToFragment (unXSLTProcessor self)
+          (maybe jsNull (unNode . toNode) source)
+          (maybe jsNull (unDocument . toDocument) docVal))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"transformToDocument\"]($2)"
+        js_transformToDocument ::
+        JSRef XSLTProcessor -> JSRef Node -> IO (JSRef 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
+      ((js_transformToDocument (unXSLTProcessor self)
+          (maybe jsNull (unNode . toNode) source))
+         >>= fromJSRef)
+ 
+foreign import javascript unsafe "$1[\"setParameter\"]($2, $3, $4)"
+        js_setParameter ::
+        JSRef 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 (unXSLTProcessor self) (toJSString namespaceURI)
+         (toJSString localName)
+         (toJSString value))
+ 
+foreign import javascript unsafe "$1[\"getParameter\"]($2, $3)"
+        js_getParameter ::
+        JSRef XSLTProcessor ->
+          JSString -> JSString -> IO (JSRef (Maybe 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 (unXSLTProcessor self) (toJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe "$1[\"removeParameter\"]($2, $3)"
+        js_removeParameter ::
+        JSRef 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 (unXSLTProcessor self)
+         (toJSString namespaceURI)
+         (toJSString localName))
+ 
+foreign import javascript unsafe "$1[\"clearParameters\"]()"
+        js_clearParameters :: JSRef 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 (unXSLTProcessor self))
+ 
+foreign import javascript unsafe "$1[\"reset\"]()" js_reset ::
+        JSRef 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 (unXSLTProcessor 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,36 @@
+{-# 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 (JSRef(..))
+import GHCJS.Foreign (jsNull)
+import GHCJS.Marshal.Pure (pFromJSRef)
+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 ::
+        JSRef Geolocation -> JSRef 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 (unGeolocation self) (maybe jsNull unPositionOptions options) s# of
+          (# s2#, False, error #) -> (# s2#, Left  (PositionError (JSRef error)) #)
+          (# s2#, True,  pos   #) -> (# s2#, Right (Geoposition   (JSRef 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 (JSRef)
+import GHCJS.Marshal (fromJSRefUnchecked)
+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 :: JSRef MediaStreamTrack -> IO (JSRef ([Maybe SourceInfo]))
+
+-- | <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 (unMediaStreamTrack (toMediaStreamTrack self)) >>= fromJSRefUnchecked
+
+
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,35 @@
+{-# 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 (JSRef(..))
+import GHCJS.Foreign (jsNull)
+import GHCJS.Marshal (fromJSRef, fromJSRefUnchecked)
+import GHCJS.Foreign.Callback (releaseCallback)
+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 ::
+        JSRef Navigator -> JSRef 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 (unNavigator self) (maybe jsNull unDictionary options) s# of
+          (# s2#, False, error #) -> (# s2#, Left  (NavigatorUserMediaError (JSRef error)) #)
+          (# s2#, True,  ms    #) -> (# s2#, Right (MediaStream             (JSRef 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,110 @@
+{-# 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 (JSRef(..))
+import GHCJS.Foreign (jsNull)
+import GHCJS.Marshal (fromJSRef)
+import GHCJS.Marshal.Pure (pToJSRef, pFromJSRef)
+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 ::
+    JSRef RTCPeerConnection -> JSRef 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 (unRTCPeerConnection self) (maybe jsNull unDictionary offerOptions) s# of
+        (# s2#, False, error #) -> (# s2#, Left  (DOMError              (JSRef error)) #)
+        (# s2#, True,  d     #) -> (# s2#, Right (RTCSessionDescription (JSRef 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 ::
+    JSRef RTCPeerConnection -> JSRef Dictionary -> JSRef 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 (unRTCPeerConnection self) (maybe jsNull unDictionary answerOptions) s# of
+        (# s2#, False, error #) -> (# s2#, Left  (DOMError              (JSRef error)) #)
+        (# s2#, True,  d     #) -> (# s2#, Right (RTCSessionDescription (JSRef 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 ::
+    JSRef RTCPeerConnection -> JSRef RTCSessionDescription -> IO (JSRef 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 $
+    js_setLocalDescription (unRTCPeerConnection self) (pToJSRef description) >>= fromJSRef
+
+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 ::
+    JSRef RTCPeerConnection -> JSRef RTCSessionDescription -> IO (JSRef 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 $
+    js_setRemoteDescription (unRTCPeerConnection self) (pToJSRef description) >>= fromJSRef
+
+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 ::
+    JSRef RTCPeerConnection -> JSRef RTCIceCandidate -> IO (JSRef 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 $
+    js_addIceCandidate (unRTCPeerConnection self) (pToJSRef candidate) >>= fromJSRef
+
+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 ::
+    JSRef RTCPeerConnection -> JSRef 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 RTCStatsReport)
+getStats' self selector = liftIO . IO $ \s# ->
+    case js_getStats (unRTCPeerConnection self) (maybe jsNull (unMediaStreamTrack . toMediaStreamTrack) selector) s# of
+        (# s2#, False, error #) -> (# s2#, Left  (DOMError       (JSRef error)) #)
+        (# s2#, True,  stats #) -> (# s2#, Right (RTCStatsReport (JSRef stats)) #)
+
+getStats :: (MonadIO m, IsMediaStreamTrack selector) => RTCPeerConnection -> Maybe selector -> m RTCStatsReport
+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,43 @@
+{-# 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 (JSRef(..))
+import GHCJS.Types (JSString)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Marshal (fromJSRefUnchecked)
+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 :: JSRef SQLTransaction -> JSString -> JSRef 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 (unSQLTransaction self) (toJSString sqlStatement) (maybe jsNull (unObjectArray . toObjectArray) arguments) s# of
+          (# s2#, False, error #) -> (# s2#, Left  (SQLError     (JSRef error)) #)
+          (# s2#, True,  rs    #) -> (# s2#, Right (SQLResultSet (JSRef 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,29 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Window (
+    module Generated
+  , js_openDatabase
+  , openDatabase
+) where
+
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.Types (JSRef, JSString)
+import GHCJS.Marshal (fromJSRefUnchecked)
+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 ::
+        JSRef Window -> JSString -> JSString -> JSString -> Word -> IO (JSRef 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
+        (unWindow self)
+        (toJSString name)
+        (toJSString version)
+        (toJSString displayName)
+        estimatedSize >>= fromJSRefUnchecked
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 (JSRef, castRef)
+import GHCJS.Marshal.Internal (PToJSRef(..))
+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 :: JSRef XMLHttpRequest -> JSRef () -> 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 (unXMLHttpRequest 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 (unXMLHttpRequest self) (castRef $ pToJSRef 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 (unXMLHttpRequest self) (castRef . 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 (unXMLHttpRequest self) (castRef . 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 (unXMLHttpRequest self) (castRef . 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 (unXMLHttpRequest self) (castRef $ unFormData formData) >>= throwXHRError
diff --git a/src/GHCJS/DOM/KeyboardEvent.hs b/src/GHCJS/DOM/KeyboardEvent.hs
--- a/src/GHCJS/DOM/KeyboardEvent.hs
+++ b/src/GHCJS/DOM/KeyboardEvent.hs
@@ -1,159 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.KeyboardEvent (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.KeyboardEvent
-       (ghcjs_dom_keyboard_event_get_modifier_state,
-        keyboardEventGetModifierState,
-        ghcjs_dom_keyboard_event_init_keyboard_event,
-        keyboardEventInitKeyboardEvent, cKEY_LOCATION_STANDARD,
-        cKEY_LOCATION_LEFT, cKEY_LOCATION_RIGHT, cKEY_LOCATION_NUMPAD,
-        ghcjs_dom_keyboard_event_get_key_identifier,
-        keyboardEventGetKeyIdentifier,
-        ghcjs_dom_keyboard_event_get_key_location,
-        keyboardEventGetKeyLocation, ghcjs_dom_keyboard_event_get_ctrl_key,
-        keyboardEventGetCtrlKey, ghcjs_dom_keyboard_event_get_shift_key,
-        keyboardEventGetShiftKey, ghcjs_dom_keyboard_event_get_alt_key,
-        keyboardEventGetAltKey, ghcjs_dom_keyboard_event_get_meta_key,
-        keyboardEventGetMetaKey,
-        ghcjs_dom_keyboard_event_get_alt_graph_key,
-        keyboardEventGetAltGraphKey, KeyboardEvent, IsKeyboardEvent,
-        castToKeyboardEvent, gTypeKeyboardEvent, toKeyboardEvent)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"getModifierState\"]($2) ? 1 : 0)"
-        ghcjs_dom_keyboard_event_get_modifier_state ::
-        JSRef KeyboardEvent -> JSString -> IO Bool
- 
-keyboardEventGetModifierState ::
-                              (IsKeyboardEvent self, ToJSString keyIdentifierArg) =>
-                                self -> keyIdentifierArg -> IO Bool
-keyboardEventGetModifierState self keyIdentifierArg
-  = ghcjs_dom_keyboard_event_get_modifier_state
-      (unKeyboardEvent (toKeyboardEvent self))
-      (toJSString keyIdentifierArg)
- 
-foreign import javascript unsafe
-        "$1[\"initKeyboardEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11, $12)"
-        ghcjs_dom_keyboard_event_init_keyboard_event ::
-        JSRef KeyboardEvent ->
-          JSString ->
-            Bool ->
-              Bool ->
-                JSRef DOMWindow ->
-                  JSString -> Word -> Bool -> Bool -> Bool -> Bool -> Bool -> IO ()
- 
-keyboardEventInitKeyboardEvent ::
-                               (IsKeyboardEvent self, ToJSString type', IsDOMWindow view,
-                                ToJSString keyIdentifier) =>
-                                 self ->
-                                   type' ->
-                                     Bool ->
-                                       Bool ->
-                                         Maybe view ->
-                                           keyIdentifier ->
-                                             Word -> Bool -> Bool -> Bool -> Bool -> Bool -> IO ()
-keyboardEventInitKeyboardEvent self type' canBubble cancelable view
-  keyIdentifier location ctrlKey altKey shiftKey metaKey altGraphKey
-  = ghcjs_dom_keyboard_event_init_keyboard_event
-      (unKeyboardEvent (toKeyboardEvent self))
-      (toJSString type')
-      canBubble
-      cancelable
-      (maybe jsNull (unDOMWindow . toDOMWindow) view)
-      (toJSString keyIdentifier)
-      location
-      ctrlKey
-      altKey
-      shiftKey
-      metaKey
-      altGraphKey
-cKEY_LOCATION_STANDARD = 0
-cKEY_LOCATION_LEFT = 1
-cKEY_LOCATION_RIGHT = 2
-cKEY_LOCATION_NUMPAD = 3
- 
-foreign import javascript unsafe "$1[\"keyIdentifier\"]"
-        ghcjs_dom_keyboard_event_get_key_identifier ::
-        JSRef KeyboardEvent -> IO JSString
- 
-keyboardEventGetKeyIdentifier ::
-                              (IsKeyboardEvent self, FromJSString result) => self -> IO result
-keyboardEventGetKeyIdentifier self
-  = fromJSString <$>
-      (ghcjs_dom_keyboard_event_get_key_identifier
-         (unKeyboardEvent (toKeyboardEvent self)))
- 
-foreign import javascript unsafe "$1[\"keyLocation\"]"
-        ghcjs_dom_keyboard_event_get_key_location ::
-        JSRef KeyboardEvent -> IO Word
- 
-keyboardEventGetKeyLocation ::
-                            (IsKeyboardEvent self) => self -> IO Word
-keyboardEventGetKeyLocation self
-  = ghcjs_dom_keyboard_event_get_key_location
-      (unKeyboardEvent (toKeyboardEvent self))
- 
-foreign import javascript unsafe "($1[\"ctrlKey\"] ? 1 : 0)"
-        ghcjs_dom_keyboard_event_get_ctrl_key ::
-        JSRef KeyboardEvent -> IO Bool
- 
-keyboardEventGetCtrlKey ::
-                        (IsKeyboardEvent self) => self -> IO Bool
-keyboardEventGetCtrlKey self
-  = ghcjs_dom_keyboard_event_get_ctrl_key
-      (unKeyboardEvent (toKeyboardEvent self))
- 
-foreign import javascript unsafe "($1[\"shiftKey\"] ? 1 : 0)"
-        ghcjs_dom_keyboard_event_get_shift_key ::
-        JSRef KeyboardEvent -> IO Bool
- 
-keyboardEventGetShiftKey ::
-                         (IsKeyboardEvent self) => self -> IO Bool
-keyboardEventGetShiftKey self
-  = ghcjs_dom_keyboard_event_get_shift_key
-      (unKeyboardEvent (toKeyboardEvent self))
- 
-foreign import javascript unsafe "($1[\"altKey\"] ? 1 : 0)"
-        ghcjs_dom_keyboard_event_get_alt_key ::
-        JSRef KeyboardEvent -> IO Bool
- 
-keyboardEventGetAltKey :: (IsKeyboardEvent self) => self -> IO Bool
-keyboardEventGetAltKey self
-  = ghcjs_dom_keyboard_event_get_alt_key
-      (unKeyboardEvent (toKeyboardEvent self))
- 
-foreign import javascript unsafe "($1[\"metaKey\"] ? 1 : 0)"
-        ghcjs_dom_keyboard_event_get_meta_key ::
-        JSRef KeyboardEvent -> IO Bool
- 
-keyboardEventGetMetaKey ::
-                        (IsKeyboardEvent self) => self -> IO Bool
-keyboardEventGetMetaKey self
-  = ghcjs_dom_keyboard_event_get_meta_key
-      (unKeyboardEvent (toKeyboardEvent self))
- 
-foreign import javascript unsafe "($1[\"altGraphKey\"] ? 1 : 0)"
-        ghcjs_dom_keyboard_event_get_alt_graph_key ::
-        JSRef KeyboardEvent -> IO Bool
- 
-keyboardEventGetAltGraphKey ::
-                            (IsKeyboardEvent self) => self -> IO Bool
-keyboardEventGetAltGraphKey self
-  = ghcjs_dom_keyboard_event_get_alt_graph_key
-      (unKeyboardEvent (toKeyboardEvent self))
+  module GHCJS.DOM.JSFFI.Generated.KeyboardEvent
 #else
-module GHCJS.DOM.KeyboardEvent (
   module Graphics.UI.Gtk.WebKit.DOM.KeyboardEvent
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.KeyboardEvent
+#else
 import Graphics.UI.Gtk.WebKit.DOM.KeyboardEvent
 #endif
diff --git a/src/GHCJS/DOM/Location.hs b/src/GHCJS/DOM/Location.hs
--- a/src/GHCJS/DOM/Location.hs
+++ b/src/GHCJS/DOM/Location.hs
@@ -1,44 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Location (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Location
-       (ghcjs_dom_location_get_origin, locationGetOrigin,
-        ghcjs_dom_location_get_ancestor_origins,
-        locationGetAncestorOrigins, Location, IsLocation, castToLocation,
-        gTypeLocation, toLocation)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"origin\"]"
-        ghcjs_dom_location_get_origin :: JSRef Location -> IO JSString
- 
-locationGetOrigin ::
-                  (IsLocation self, FromJSString result) => self -> IO result
-locationGetOrigin self
-  = fromJSString <$>
-      (ghcjs_dom_location_get_origin (unLocation (toLocation self)))
- 
-foreign import javascript unsafe "$1[\"ancestorOrigins\"]"
-        ghcjs_dom_location_get_ancestor_origins ::
-        JSRef Location -> IO (JSRef DOMStringList)
- 
-locationGetAncestorOrigins ::
-                           (IsLocation self) => self -> IO (Maybe DOMStringList)
-locationGetAncestorOrigins self
-  = fmap DOMStringList . maybeJSNull <$>
-      (ghcjs_dom_location_get_ancestor_origins
-         (unLocation (toLocation self)))
+  module GHCJS.DOM.JSFFI.Generated.Location
 #else
-module GHCJS.DOM.Location (
   module Graphics.UI.Gtk.WebKit.DOM.Location
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Location
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Location
 #endif
diff --git a/src/GHCJS/DOM/MallocStatistics.hs b/src/GHCJS/DOM/MallocStatistics.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MallocStatistics.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MallocStatistics (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MallocStatistics
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MallocStatistics
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaController.hs b/src/GHCJS/DOM/MediaController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaController.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaController (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaController
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaController
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaControlsHost.hs b/src/GHCJS/DOM/MediaControlsHost.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaControlsHost.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaControlsHost (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaControlsHost
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaControlsHost
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaElementAudioSourceNode.hs b/src/GHCJS/DOM/MediaElementAudioSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaElementAudioSourceNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaElementAudioSourceNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaError.hs b/src/GHCJS/DOM/MediaError.hs
--- a/src/GHCJS/DOM/MediaError.hs
+++ b/src/GHCJS/DOM/MediaError.hs
@@ -1,35 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaError (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.MediaError
-       (cMEDIA_ERR_ABORTED, cMEDIA_ERR_NETWORK, cMEDIA_ERR_DECODE,
-        cMEDIA_ERR_SRC_NOT_SUPPORTED, ghcjs_dom_media_error_get_code,
-        mediaErrorGetCode, MediaError, IsMediaError, castToMediaError,
-        gTypeMediaError, toMediaError)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
-cMEDIA_ERR_ABORTED = 1
-cMEDIA_ERR_NETWORK = 2
-cMEDIA_ERR_DECODE = 3
-cMEDIA_ERR_SRC_NOT_SUPPORTED = 4
- 
-foreign import javascript unsafe "$1[\"code\"]"
-        ghcjs_dom_media_error_get_code :: JSRef MediaError -> IO Word
- 
-mediaErrorGetCode :: (IsMediaError self) => self -> IO Word
-mediaErrorGetCode self
-  = ghcjs_dom_media_error_get_code (unMediaError (toMediaError self))
+  module GHCJS.DOM.JSFFI.Generated.MediaError
 #else
-module GHCJS.DOM.MediaError (
   module Graphics.UI.Gtk.WebKit.DOM.MediaError
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaError
+#else
 import Graphics.UI.Gtk.WebKit.DOM.MediaError
 #endif
diff --git a/src/GHCJS/DOM/MediaKeyError.hs b/src/GHCJS/DOM/MediaKeyError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaKeyError.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaKeyError (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaKeyError
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaKeyError
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaKeyEvent.hs b/src/GHCJS/DOM/MediaKeyEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaKeyEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaKeyEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaKeyEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaKeyEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaKeyMessageEvent.hs b/src/GHCJS/DOM/MediaKeyMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaKeyMessageEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaKeyMessageEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaKeyNeededEvent.hs b/src/GHCJS/DOM/MediaKeyNeededEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaKeyNeededEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaKeyNeededEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaKeyNeededEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaKeyNeededEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaKeySession.hs b/src/GHCJS/DOM/MediaKeySession.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaKeySession.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaKeySession (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaKeySession
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaKeySession
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaKeys.hs b/src/GHCJS/DOM/MediaKeys.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaKeys.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaKeys (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaKeys
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaKeys
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaList.hs b/src/GHCJS/DOM/MediaList.hs
--- a/src/GHCJS/DOM/MediaList.hs
+++ b/src/GHCJS/DOM/MediaList.hs
@@ -1,90 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.MediaList
-       (ghcjs_dom_media_list_item, mediaListItem,
-        ghcjs_dom_media_list_delete_medium, mediaListDeleteMedium,
-        ghcjs_dom_media_list_append_medium, mediaListAppendMedium,
-        ghcjs_dom_media_list_set_media_text, mediaListSetMediaText,
-        ghcjs_dom_media_list_get_media_text, mediaListGetMediaText,
-        ghcjs_dom_media_list_get_length, mediaListGetLength, MediaList,
-        IsMediaList, castToMediaList, gTypeMediaList, toMediaList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_media_list_item :: JSRef MediaList -> Word -> IO JSString
- 
-mediaListItem ::
-              (IsMediaList self, FromJSString result) =>
-                self -> Word -> IO result
-mediaListItem self index
-  = fromJSString <$>
-      (ghcjs_dom_media_list_item (unMediaList (toMediaList self)) index)
- 
-foreign import javascript unsafe "$1[\"deleteMedium\"]($2)"
-        ghcjs_dom_media_list_delete_medium ::
-        JSRef MediaList -> JSString -> IO ()
- 
-mediaListDeleteMedium ::
-                      (IsMediaList self, ToJSString oldMedium) =>
-                        self -> oldMedium -> IO ()
-mediaListDeleteMedium self oldMedium
-  = ghcjs_dom_media_list_delete_medium
-      (unMediaList (toMediaList self))
-      (toJSString oldMedium)
- 
-foreign import javascript unsafe "$1[\"appendMedium\"]($2)"
-        ghcjs_dom_media_list_append_medium ::
-        JSRef MediaList -> JSString -> IO ()
- 
-mediaListAppendMedium ::
-                      (IsMediaList self, ToJSString newMedium) =>
-                        self -> newMedium -> IO ()
-mediaListAppendMedium self newMedium
-  = ghcjs_dom_media_list_append_medium
-      (unMediaList (toMediaList self))
-      (toJSString newMedium)
- 
-foreign import javascript unsafe "$1[\"mediaText\"] = $2;"
-        ghcjs_dom_media_list_set_media_text ::
-        JSRef MediaList -> JSString -> IO ()
- 
-mediaListSetMediaText ::
-                      (IsMediaList self, ToJSString val) => self -> val -> IO ()
-mediaListSetMediaText self val
-  = ghcjs_dom_media_list_set_media_text
-      (unMediaList (toMediaList self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"mediaText\"]"
-        ghcjs_dom_media_list_get_media_text ::
-        JSRef MediaList -> IO JSString
- 
-mediaListGetMediaText ::
-                      (IsMediaList self, FromJSString result) => self -> IO result
-mediaListGetMediaText self
-  = fromJSString <$>
-      (ghcjs_dom_media_list_get_media_text
-         (unMediaList (toMediaList self)))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_media_list_get_length :: JSRef MediaList -> IO Word
- 
-mediaListGetLength :: (IsMediaList self) => self -> IO Word
-mediaListGetLength self
-  = ghcjs_dom_media_list_get_length (unMediaList (toMediaList self))
+  module GHCJS.DOM.JSFFI.Generated.MediaList
 #else
-module GHCJS.DOM.MediaList (
   module Graphics.UI.Gtk.WebKit.DOM.MediaList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.MediaList
 #endif
diff --git a/src/GHCJS/DOM/MediaQueryList.hs b/src/GHCJS/DOM/MediaQueryList.hs
--- a/src/GHCJS/DOM/MediaQueryList.hs
+++ b/src/GHCJS/DOM/MediaQueryList.hs
@@ -1,45 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaQueryList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.MediaQueryList
-       (ghcjs_dom_media_query_list_get_media, mediaQueryListGetMedia,
-        ghcjs_dom_media_query_list_get_matches, mediaQueryListGetMatches,
-        MediaQueryList, IsMediaQueryList, castToMediaQueryList,
-        gTypeMediaQueryList, toMediaQueryList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"media\"]"
-        ghcjs_dom_media_query_list_get_media ::
-        JSRef MediaQueryList -> IO JSString
- 
-mediaQueryListGetMedia ::
-                       (IsMediaQueryList self, FromJSString result) => self -> IO result
-mediaQueryListGetMedia self
-  = fromJSString <$>
-      (ghcjs_dom_media_query_list_get_media
-         (unMediaQueryList (toMediaQueryList self)))
- 
-foreign import javascript unsafe "($1[\"matches\"] ? 1 : 0)"
-        ghcjs_dom_media_query_list_get_matches ::
-        JSRef MediaQueryList -> IO Bool
- 
-mediaQueryListGetMatches ::
-                         (IsMediaQueryList self) => self -> IO Bool
-mediaQueryListGetMatches self
-  = ghcjs_dom_media_query_list_get_matches
-      (unMediaQueryList (toMediaQueryList self))
+  module GHCJS.DOM.JSFFI.Generated.MediaQueryList
 #else
-module GHCJS.DOM.MediaQueryList (
   module Graphics.UI.Gtk.WebKit.DOM.MediaQueryList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaQueryList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.MediaQueryList
 #endif
diff --git a/src/GHCJS/DOM/MediaQueryListListener.hs b/src/GHCJS/DOM/MediaQueryListListener.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaQueryListListener.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaQueryListListener (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaQueryListListener
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaQueryListListener
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaSource.hs b/src/GHCJS/DOM/MediaSource.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaSource.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaSource (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaSource
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaSource
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaSourceStates.hs b/src/GHCJS/DOM/MediaSourceStates.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaSourceStates.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaSourceStates (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaSourceStates
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaSourceStates
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaStream.hs b/src/GHCJS/DOM/MediaStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaStream.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaStream (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaStream
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaStream
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaStreamAudioDestinationNode.hs b/src/GHCJS/DOM/MediaStreamAudioDestinationNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaStreamAudioDestinationNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaStreamAudioDestinationNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaStreamAudioSourceNode.hs b/src/GHCJS/DOM/MediaStreamAudioSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaStreamAudioSourceNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaStreamAudioSourceNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaStreamEvent.hs b/src/GHCJS/DOM/MediaStreamEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaStreamEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaStreamEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaStreamEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaStreamEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaStreamTrack.hs b/src/GHCJS/DOM/MediaStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaStreamTrack.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaStreamTrack (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.MediaStreamTrack
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.MediaStreamTrack
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaStreamTrackEvent.hs b/src/GHCJS/DOM/MediaStreamTrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaStreamTrackEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaStreamTrackEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaStreamTrackSourcesCallback.hs b/src/GHCJS/DOM/MediaStreamTrackSourcesCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaStreamTrackSourcesCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaStreamTrackSourcesCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackSourcesCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaStreamTrackSourcesCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/MediaTrackConstraints.hs b/src/GHCJS/DOM/MediaTrackConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MediaTrackConstraints.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MediaTrackConstraints (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MediaTrackConstraints
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MediaTrackConstraints
+#else
+#endif
diff --git a/src/GHCJS/DOM/MemoryInfo.hs b/src/GHCJS/DOM/MemoryInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MemoryInfo.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MemoryInfo (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MemoryInfo
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MemoryInfo
+#else
+#endif
diff --git a/src/GHCJS/DOM/MessageChannel.hs b/src/GHCJS/DOM/MessageChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MessageChannel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MessageChannel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MessageChannel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MessageChannel
+#else
+#endif
diff --git a/src/GHCJS/DOM/MessageEvent.hs b/src/GHCJS/DOM/MessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MessageEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MessageEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MessageEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MessageEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/MessagePort.hs b/src/GHCJS/DOM/MessagePort.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MessagePort.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MessagePort (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MessagePort
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MessagePort
+#else
+#endif
diff --git a/src/GHCJS/DOM/MimeType.hs b/src/GHCJS/DOM/MimeType.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MimeType.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MimeType (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MimeType
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.MimeType
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MimeType
+#else
+import Graphics.UI.Gtk.WebKit.DOM.MimeType
+#endif
diff --git a/src/GHCJS/DOM/MimeTypeArray.hs b/src/GHCJS/DOM/MimeTypeArray.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MimeTypeArray.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MimeTypeArray (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MimeTypeArray
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.MimeTypeArray
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MimeTypeArray
+#else
+import Graphics.UI.Gtk.WebKit.DOM.MimeTypeArray
+#endif
diff --git a/src/GHCJS/DOM/MouseEvent.hs b/src/GHCJS/DOM/MouseEvent.hs
--- a/src/GHCJS/DOM/MouseEvent.hs
+++ b/src/GHCJS/DOM/MouseEvent.hs
@@ -1,244 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.MouseEvent (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.MouseEvent
-       (ghcjs_dom_mouse_event_init_mouse_event, mouseEventInitMouseEvent,
-        ghcjs_dom_mouse_event_get_screen_x, mouseEventGetScreenX,
-        ghcjs_dom_mouse_event_get_screen_y, mouseEventGetScreenY,
-        ghcjs_dom_mouse_event_get_client_x, mouseEventGetClientX,
-        ghcjs_dom_mouse_event_get_client_y, mouseEventGetClientY,
-        ghcjs_dom_mouse_event_get_ctrl_key, mouseEventGetCtrlKey,
-        ghcjs_dom_mouse_event_get_shift_key, mouseEventGetShiftKey,
-        ghcjs_dom_mouse_event_get_alt_key, mouseEventGetAltKey,
-        ghcjs_dom_mouse_event_get_meta_key, mouseEventGetMetaKey,
-        ghcjs_dom_mouse_event_get_button, mouseEventGetButton,
-        ghcjs_dom_mouse_event_get_related_target,
-        mouseEventGetRelatedTarget, ghcjs_dom_mouse_event_get_movement_x,
-        mouseEventGetMovementX, ghcjs_dom_mouse_event_get_movement_y,
-        mouseEventGetMovementY, ghcjs_dom_mouse_event_get_offset_x,
-        mouseEventGetOffsetX, ghcjs_dom_mouse_event_get_offset_y,
-        mouseEventGetOffsetY, ghcjs_dom_mouse_event_get_x, mouseEventGetX,
-        ghcjs_dom_mouse_event_get_y, mouseEventGetY,
-        ghcjs_dom_mouse_event_get_from_element, mouseEventGetFromElement,
-        ghcjs_dom_mouse_event_get_to_element, mouseEventGetToElement,
-        MouseEvent, IsMouseEvent, castToMouseEvent, gTypeMouseEvent,
-        toMouseEvent)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-
- 
-foreign import javascript unsafe
-        "$1[\"initMouseEvent\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12, $13, $14, $15, $16)"
-        ghcjs_dom_mouse_event_init_mouse_event ::
-        JSRef MouseEvent ->
-          JSString ->
-            Bool ->
-              Bool ->
-                JSRef DOMWindow ->
-                  Int ->
-                    Int ->
-                      Int ->
-                        Int ->
-                          Int ->
-                            Bool -> Bool -> Bool -> Bool -> Word -> JSRef EventTarget -> IO ()
- 
-mouseEventInitMouseEvent ::
-                         (IsMouseEvent self, ToJSString type', IsDOMWindow view,
-                          IsEventTarget relatedTarget) =>
-                           self ->
-                             type' ->
-                               Bool ->
-                                 Bool ->
-                                   Maybe view ->
-                                     Int ->
-                                       Int ->
-                                         Int ->
-                                           Int ->
-                                             Int ->
-                                               Bool ->
-                                                 Bool ->
-                                                   Bool ->
-                                                     Bool -> Word -> Maybe relatedTarget -> IO ()
-mouseEventInitMouseEvent self type' canBubble cancelable view
-  detail screenX screenY clientX clientY ctrlKey altKey shiftKey
-  metaKey button relatedTarget
-  = ghcjs_dom_mouse_event_init_mouse_event
-      (unMouseEvent (toMouseEvent self))
-      (toJSString type')
-      canBubble
-      cancelable
-      (maybe jsNull (unDOMWindow . toDOMWindow) view)
-      detail
-      screenX
-      screenY
-      clientX
-      clientY
-      ctrlKey
-      altKey
-      shiftKey
-      metaKey
-      button
-      (maybe jsNull (unEventTarget . toEventTarget) relatedTarget)
- 
-foreign import javascript unsafe "$1[\"screenX\"]"
-        ghcjs_dom_mouse_event_get_screen_x :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetScreenX :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetScreenX self
-  = ghcjs_dom_mouse_event_get_screen_x
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"screenY\"]"
-        ghcjs_dom_mouse_event_get_screen_y :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetScreenY :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetScreenY self
-  = ghcjs_dom_mouse_event_get_screen_y
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"clientX\"]"
-        ghcjs_dom_mouse_event_get_client_x :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetClientX :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetClientX self
-  = ghcjs_dom_mouse_event_get_client_x
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"clientY\"]"
-        ghcjs_dom_mouse_event_get_client_y :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetClientY :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetClientY self
-  = ghcjs_dom_mouse_event_get_client_y
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "($1[\"ctrlKey\"] ? 1 : 0)"
-        ghcjs_dom_mouse_event_get_ctrl_key :: JSRef MouseEvent -> IO Bool
- 
-mouseEventGetCtrlKey :: (IsMouseEvent self) => self -> IO Bool
-mouseEventGetCtrlKey self
-  = ghcjs_dom_mouse_event_get_ctrl_key
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "($1[\"shiftKey\"] ? 1 : 0)"
-        ghcjs_dom_mouse_event_get_shift_key :: JSRef MouseEvent -> IO Bool
- 
-mouseEventGetShiftKey :: (IsMouseEvent self) => self -> IO Bool
-mouseEventGetShiftKey self
-  = ghcjs_dom_mouse_event_get_shift_key
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "($1[\"altKey\"] ? 1 : 0)"
-        ghcjs_dom_mouse_event_get_alt_key :: JSRef MouseEvent -> IO Bool
- 
-mouseEventGetAltKey :: (IsMouseEvent self) => self -> IO Bool
-mouseEventGetAltKey self
-  = ghcjs_dom_mouse_event_get_alt_key
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "($1[\"metaKey\"] ? 1 : 0)"
-        ghcjs_dom_mouse_event_get_meta_key :: JSRef MouseEvent -> IO Bool
- 
-mouseEventGetMetaKey :: (IsMouseEvent self) => self -> IO Bool
-mouseEventGetMetaKey self
-  = ghcjs_dom_mouse_event_get_meta_key
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"button\"]"
-        ghcjs_dom_mouse_event_get_button :: JSRef MouseEvent -> IO Word
- 
-mouseEventGetButton :: (IsMouseEvent self) => self -> IO Word
-mouseEventGetButton self
-  = ghcjs_dom_mouse_event_get_button
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"relatedTarget\"]"
-        ghcjs_dom_mouse_event_get_related_target ::
-        JSRef MouseEvent -> IO (JSRef EventTarget)
- 
-mouseEventGetRelatedTarget ::
-                           (IsMouseEvent self) => self -> IO (Maybe EventTarget)
-mouseEventGetRelatedTarget self
-  = fmap EventTarget . maybeJSNull <$>
-      (ghcjs_dom_mouse_event_get_related_target
-         (unMouseEvent (toMouseEvent self)))
- 
-foreign import javascript unsafe "$1[\"movementX\"]"
-        ghcjs_dom_mouse_event_get_movement_x :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetMovementX :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetMovementX self
-  = ghcjs_dom_mouse_event_get_movement_x
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"movementY\"]"
-        ghcjs_dom_mouse_event_get_movement_y :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetMovementY :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetMovementY self
-  = ghcjs_dom_mouse_event_get_movement_y
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"offsetX\"]"
-        ghcjs_dom_mouse_event_get_offset_x :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetOffsetX :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetOffsetX self
-  = ghcjs_dom_mouse_event_get_offset_x
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"offsetY\"]"
-        ghcjs_dom_mouse_event_get_offset_y :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetOffsetY :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetOffsetY self
-  = ghcjs_dom_mouse_event_get_offset_y
-      (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"x\"]"
-        ghcjs_dom_mouse_event_get_x :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetX :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetX self
-  = ghcjs_dom_mouse_event_get_x (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"y\"]"
-        ghcjs_dom_mouse_event_get_y :: JSRef MouseEvent -> IO Int
- 
-mouseEventGetY :: (IsMouseEvent self) => self -> IO Int
-mouseEventGetY self
-  = ghcjs_dom_mouse_event_get_y (unMouseEvent (toMouseEvent self))
- 
-foreign import javascript unsafe "$1[\"fromElement\"]"
-        ghcjs_dom_mouse_event_get_from_element ::
-        JSRef MouseEvent -> IO (JSRef Node)
- 
-mouseEventGetFromElement ::
-                         (IsMouseEvent self) => self -> IO (Maybe Node)
-mouseEventGetFromElement self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_mouse_event_get_from_element
-         (unMouseEvent (toMouseEvent self)))
- 
-foreign import javascript unsafe "$1[\"toElement\"]"
-        ghcjs_dom_mouse_event_get_to_element ::
-        JSRef MouseEvent -> IO (JSRef Node)
- 
-mouseEventGetToElement ::
-                       (IsMouseEvent self) => self -> IO (Maybe Node)
-mouseEventGetToElement self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_mouse_event_get_to_element
-         (unMouseEvent (toMouseEvent self)))
+  module GHCJS.DOM.JSFFI.Generated.MouseEvent
 #else
-module GHCJS.DOM.MouseEvent (
   module Graphics.UI.Gtk.WebKit.DOM.MouseEvent
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MouseEvent
+#else
 import Graphics.UI.Gtk.WebKit.DOM.MouseEvent
 #endif
diff --git a/src/GHCJS/DOM/MutationEvent.hs b/src/GHCJS/DOM/MutationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MutationEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MutationEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MutationEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MutationEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/MutationObserver.hs b/src/GHCJS/DOM/MutationObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MutationObserver.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MutationObserver (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MutationObserver
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MutationObserver
+#else
+#endif
diff --git a/src/GHCJS/DOM/MutationRecord.hs b/src/GHCJS/DOM/MutationRecord.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/MutationRecord.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.MutationRecord (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.MutationRecord
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.MutationRecord
+#else
+#endif
diff --git a/src/GHCJS/DOM/NamedNodeMap.hs b/src/GHCJS/DOM/NamedNodeMap.hs
--- a/src/GHCJS/DOM/NamedNodeMap.hs
+++ b/src/GHCJS/DOM/NamedNodeMap.hs
@@ -1,136 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.NamedNodeMap (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.NamedNodeMap
-       (ghcjs_dom_named_node_map_get_named_item, namedNodeMapGetNamedItem,
-        ghcjs_dom_named_node_map_set_named_item, namedNodeMapSetNamedItem,
-        ghcjs_dom_named_node_map_remove_named_item,
-        namedNodeMapRemoveNamedItem, ghcjs_dom_named_node_map_item,
-        namedNodeMapItem, ghcjs_dom_named_node_map_get_named_item_ns,
-        namedNodeMapGetNamedItemNS,
-        ghcjs_dom_named_node_map_set_named_item_ns,
-        namedNodeMapSetNamedItemNS,
-        ghcjs_dom_named_node_map_remove_named_item_ns,
-        namedNodeMapRemoveNamedItemNS, ghcjs_dom_named_node_map_get_length,
-        namedNodeMapGetLength, NamedNodeMap, IsNamedNodeMap,
-        castToNamedNodeMap, gTypeNamedNodeMap, toNamedNodeMap)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"getNamedItem\"]($2)"
-        ghcjs_dom_named_node_map_get_named_item ::
-        JSRef NamedNodeMap -> JSString -> IO (JSRef Node)
- 
-namedNodeMapGetNamedItem ::
-                         (IsNamedNodeMap self, ToJSString name) =>
-                           self -> name -> IO (Maybe Node)
-namedNodeMapGetNamedItem self name
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_named_node_map_get_named_item
-         (unNamedNodeMap (toNamedNodeMap self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"setNamedItem\"]($2)"
-        ghcjs_dom_named_node_map_set_named_item ::
-        JSRef NamedNodeMap -> JSRef Node -> IO (JSRef Node)
- 
-namedNodeMapSetNamedItem ::
-                         (IsNamedNodeMap self, IsNode node) =>
-                           self -> Maybe node -> IO (Maybe Node)
-namedNodeMapSetNamedItem self node
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_named_node_map_set_named_item
-         (unNamedNodeMap (toNamedNodeMap self))
-         (maybe jsNull (unNode . toNode) node))
- 
-foreign import javascript unsafe "$1[\"removeNamedItem\"]($2)"
-        ghcjs_dom_named_node_map_remove_named_item ::
-        JSRef NamedNodeMap -> JSString -> IO (JSRef Node)
- 
-namedNodeMapRemoveNamedItem ::
-                            (IsNamedNodeMap self, ToJSString name) =>
-                              self -> name -> IO (Maybe Node)
-namedNodeMapRemoveNamedItem self name
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_named_node_map_remove_named_item
-         (unNamedNodeMap (toNamedNodeMap self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_named_node_map_item ::
-        JSRef NamedNodeMap -> Word -> IO (JSRef Node)
- 
-namedNodeMapItem ::
-                 (IsNamedNodeMap self) => self -> Word -> IO (Maybe Node)
-namedNodeMapItem self index
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_named_node_map_item
-         (unNamedNodeMap (toNamedNodeMap self))
-         index)
- 
-foreign import javascript unsafe "$1[\"getNamedItemNS\"]($2, $3)"
-        ghcjs_dom_named_node_map_get_named_item_ns ::
-        JSRef NamedNodeMap -> JSString -> JSString -> IO (JSRef Node)
- 
-namedNodeMapGetNamedItemNS ::
-                           (IsNamedNodeMap self, ToJSString namespaceURI,
-                            ToJSString localName) =>
-                             self -> namespaceURI -> localName -> IO (Maybe Node)
-namedNodeMapGetNamedItemNS self namespaceURI localName
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_named_node_map_get_named_item_ns
-         (unNamedNodeMap (toNamedNodeMap self))
-         (toJSString namespaceURI)
-         (toJSString localName))
- 
-foreign import javascript unsafe "$1[\"setNamedItemNS\"]($2)"
-        ghcjs_dom_named_node_map_set_named_item_ns ::
-        JSRef NamedNodeMap -> JSRef Node -> IO (JSRef Node)
- 
-namedNodeMapSetNamedItemNS ::
-                           (IsNamedNodeMap self, IsNode node) =>
-                             self -> Maybe node -> IO (Maybe Node)
-namedNodeMapSetNamedItemNS self node
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_named_node_map_set_named_item_ns
-         (unNamedNodeMap (toNamedNodeMap self))
-         (maybe jsNull (unNode . toNode) node))
- 
-foreign import javascript unsafe
-        "$1[\"removeNamedItemNS\"]($2, $3)"
-        ghcjs_dom_named_node_map_remove_named_item_ns ::
-        JSRef NamedNodeMap -> JSString -> JSString -> IO (JSRef Node)
- 
-namedNodeMapRemoveNamedItemNS ::
-                              (IsNamedNodeMap self, ToJSString namespaceURI,
-                               ToJSString localName) =>
-                                self -> namespaceURI -> localName -> IO (Maybe Node)
-namedNodeMapRemoveNamedItemNS self namespaceURI localName
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_named_node_map_remove_named_item_ns
-         (unNamedNodeMap (toNamedNodeMap self))
-         (toJSString namespaceURI)
-         (toJSString localName))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_named_node_map_get_length ::
-        JSRef NamedNodeMap -> IO Word
- 
-namedNodeMapGetLength :: (IsNamedNodeMap self) => self -> IO Word
-namedNodeMapGetLength self
-  = ghcjs_dom_named_node_map_get_length
-      (unNamedNodeMap (toNamedNodeMap self))
+  module GHCJS.DOM.JSFFI.Generated.NamedNodeMap
 #else
-module GHCJS.DOM.NamedNodeMap (
   module Graphics.UI.Gtk.WebKit.DOM.NamedNodeMap
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.NamedNodeMap
+#else
 import Graphics.UI.Gtk.WebKit.DOM.NamedNodeMap
 #endif
diff --git a/src/GHCJS/DOM/Navigator.hs b/src/GHCJS/DOM/Navigator.hs
--- a/src/GHCJS/DOM/Navigator.hs
+++ b/src/GHCJS/DOM/Navigator.hs
@@ -1,190 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Navigator (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Navigator
-       (ghcjs_dom_navigator_java_enabled, navigatorJavaEnabled,
-        ghcjs_dom_navigator_get_storage_updates,
-        navigatorGetStorageUpdates, ghcjs_dom_navigator_get_app_code_name,
-        navigatorGetAppCodeName, ghcjs_dom_navigator_get_app_name,
-        navigatorGetAppName, ghcjs_dom_navigator_get_app_version,
-        navigatorGetAppVersion, ghcjs_dom_navigator_get_language,
-        navigatorGetLanguage, ghcjs_dom_navigator_get_user_agent,
-        navigatorGetUserAgent, ghcjs_dom_navigator_get_platform,
-        navigatorGetPlatform, ghcjs_dom_navigator_get_plugins,
-        navigatorGetPlugins, ghcjs_dom_navigator_get_mime_types,
-        navigatorGetMimeTypes, ghcjs_dom_navigator_get_product,
-        navigatorGetProduct, ghcjs_dom_navigator_get_product_sub,
-        navigatorGetProductSub, ghcjs_dom_navigator_get_vendor,
-        navigatorGetVendor, ghcjs_dom_navigator_get_vendor_sub,
-        navigatorGetVendorSub, ghcjs_dom_navigator_get_cookie_enabled,
-        navigatorGetCookieEnabled, ghcjs_dom_navigator_get_on_line,
-        navigatorGetOnLine, Navigator, IsNavigator, castToNavigator,
-        gTypeNavigator, toNavigator)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "($1[\"javaEnabled\"]() ? 1 : 0)"
-        ghcjs_dom_navigator_java_enabled :: JSRef Navigator -> IO Bool
- 
-navigatorJavaEnabled :: (IsNavigator self) => self -> IO Bool
-navigatorJavaEnabled self
-  = ghcjs_dom_navigator_java_enabled (unNavigator (toNavigator self))
- 
-foreign import javascript unsafe "$1[\"getStorageUpdates\"]()"
-        ghcjs_dom_navigator_get_storage_updates :: JSRef Navigator -> IO ()
- 
-navigatorGetStorageUpdates :: (IsNavigator self) => self -> IO ()
-navigatorGetStorageUpdates self
-  = ghcjs_dom_navigator_get_storage_updates
-      (unNavigator (toNavigator self))
- 
-foreign import javascript unsafe "$1[\"appCodeName\"]"
-        ghcjs_dom_navigator_get_app_code_name ::
-        JSRef Navigator -> IO JSString
- 
-navigatorGetAppCodeName ::
-                        (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetAppCodeName self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_app_code_name
-         (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"appName\"]"
-        ghcjs_dom_navigator_get_app_name :: JSRef Navigator -> IO JSString
- 
-navigatorGetAppName ::
-                    (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetAppName self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_app_name (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"appVersion\"]"
-        ghcjs_dom_navigator_get_app_version ::
-        JSRef Navigator -> IO JSString
- 
-navigatorGetAppVersion ::
-                       (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetAppVersion self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_app_version
-         (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"language\"]"
-        ghcjs_dom_navigator_get_language :: JSRef Navigator -> IO JSString
- 
-navigatorGetLanguage ::
-                     (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetLanguage self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_language (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"userAgent\"]"
-        ghcjs_dom_navigator_get_user_agent ::
-        JSRef Navigator -> IO JSString
- 
-navigatorGetUserAgent ::
-                      (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetUserAgent self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_user_agent
-         (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"platform\"]"
-        ghcjs_dom_navigator_get_platform :: JSRef Navigator -> IO JSString
- 
-navigatorGetPlatform ::
-                     (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetPlatform self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_platform (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"plugins\"]"
-        ghcjs_dom_navigator_get_plugins ::
-        JSRef Navigator -> IO (JSRef DOMPluginArray)
- 
-navigatorGetPlugins ::
-                    (IsNavigator self) => self -> IO (Maybe DOMPluginArray)
-navigatorGetPlugins self
-  = fmap DOMPluginArray . maybeJSNull <$>
-      (ghcjs_dom_navigator_get_plugins (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"mimeTypes\"]"
-        ghcjs_dom_navigator_get_mime_types ::
-        JSRef Navigator -> IO (JSRef DOMMimeTypeArray)
- 
-navigatorGetMimeTypes ::
-                      (IsNavigator self) => self -> IO (Maybe DOMMimeTypeArray)
-navigatorGetMimeTypes self
-  = fmap DOMMimeTypeArray . maybeJSNull <$>
-      (ghcjs_dom_navigator_get_mime_types
-         (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"product\"]"
-        ghcjs_dom_navigator_get_product :: JSRef Navigator -> IO JSString
- 
-navigatorGetProduct ::
-                    (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetProduct self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_product (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"productSub\"]"
-        ghcjs_dom_navigator_get_product_sub ::
-        JSRef Navigator -> IO JSString
- 
-navigatorGetProductSub ::
-                       (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetProductSub self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_product_sub
-         (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"vendor\"]"
-        ghcjs_dom_navigator_get_vendor :: JSRef Navigator -> IO JSString
- 
-navigatorGetVendor ::
-                   (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetVendor self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_vendor (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "$1[\"vendorSub\"]"
-        ghcjs_dom_navigator_get_vendor_sub ::
-        JSRef Navigator -> IO JSString
- 
-navigatorGetVendorSub ::
-                      (IsNavigator self, FromJSString result) => self -> IO result
-navigatorGetVendorSub self
-  = fromJSString <$>
-      (ghcjs_dom_navigator_get_vendor_sub
-         (unNavigator (toNavigator self)))
- 
-foreign import javascript unsafe "($1[\"cookieEnabled\"] ? 1 : 0)"
-        ghcjs_dom_navigator_get_cookie_enabled ::
-        JSRef Navigator -> IO Bool
- 
-navigatorGetCookieEnabled :: (IsNavigator self) => self -> IO Bool
-navigatorGetCookieEnabled self
-  = ghcjs_dom_navigator_get_cookie_enabled
-      (unNavigator (toNavigator self))
- 
-foreign import javascript unsafe "($1[\"onLine\"] ? 1 : 0)"
-        ghcjs_dom_navigator_get_on_line :: JSRef Navigator -> IO Bool
- 
-navigatorGetOnLine :: (IsNavigator self) => self -> IO Bool
-navigatorGetOnLine self
-  = ghcjs_dom_navigator_get_on_line (unNavigator (toNavigator self))
+  module GHCJS.DOM.JSFFI.Navigator
 #else
-module GHCJS.DOM.Navigator (
   module Graphics.UI.Gtk.WebKit.DOM.Navigator
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Navigator
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Navigator
 #endif
diff --git a/src/GHCJS/DOM/NavigatorUserMediaError.hs b/src/GHCJS/DOM/NavigatorUserMediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/NavigatorUserMediaError.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.NavigatorUserMediaError (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.NavigatorUserMediaError
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.NavigatorUserMediaError
+#else
+#endif
diff --git a/src/GHCJS/DOM/NavigatorUserMediaErrorCallback.hs b/src/GHCJS/DOM/NavigatorUserMediaErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/NavigatorUserMediaErrorCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.NavigatorUserMediaErrorCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaErrorCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaErrorCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/NavigatorUserMediaSuccessCallback.hs b/src/GHCJS/DOM/NavigatorUserMediaSuccessCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/NavigatorUserMediaSuccessCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.NavigatorUserMediaSuccessCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaSuccessCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaSuccessCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/Node.hs b/src/GHCJS/DOM/Node.hs
--- a/src/GHCJS/DOM/Node.hs
+++ b/src/GHCJS/DOM/Node.hs
@@ -1,416 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Node (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Node
-       (ghcjs_dom_node_insert_before, nodeInsertBefore,
-        ghcjs_dom_node_replace_child, nodeReplaceChild,
-        ghcjs_dom_node_remove_child, nodeRemoveChild,
-        ghcjs_dom_node_append_child, nodeAppendChild,
-        ghcjs_dom_node_has_child_nodes, nodeHasChildNodes,
-        ghcjs_dom_node_clone_node, nodeCloneNode, ghcjs_dom_node_normalize,
-        nodeNormalize, ghcjs_dom_node_is_supported, nodeIsSupported,
-        ghcjs_dom_node_is_same_node, nodeIsSameNode,
-        ghcjs_dom_node_is_equal_node, nodeIsEqualNode,
-        ghcjs_dom_node_lookup_prefix, nodeLookupPrefix,
-        ghcjs_dom_node_is_default_namespace, nodeIsDefaultNamespace,
-        ghcjs_dom_node_lookup_namespace_uri, nodeLookupNamespaceURI,
-        ghcjs_dom_node_compare_document_position,
-        nodeCompareDocumentPosition, ghcjs_dom_node_contains, nodeContains,
-        ghcjs_dom_node_dispatch_event, nodeDispatchEvent, cELEMENT_NODE,
-        cATTRIBUTE_NODE, cTEXT_NODE, cCDATA_SECTION_NODE,
-        cENTITY_REFERENCE_NODE, cENTITY_NODE, cPROCESSING_INSTRUCTION_NODE,
-        cCOMMENT_NODE, cDOCUMENT_NODE, cDOCUMENT_TYPE_NODE,
-        cDOCUMENT_FRAGMENT_NODE, cNOTATION_NODE,
-        cDOCUMENT_POSITION_DISCONNECTED, cDOCUMENT_POSITION_PRECEDING,
-        cDOCUMENT_POSITION_FOLLOWING, cDOCUMENT_POSITION_CONTAINS,
-        cDOCUMENT_POSITION_CONTAINED_BY,
-        cDOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC,
-        ghcjs_dom_node_get_node_name, nodeGetNodeName,
-        ghcjs_dom_node_set_node_value, nodeSetNodeValue,
-        ghcjs_dom_node_get_node_value, nodeGetNodeValue,
-        ghcjs_dom_node_get_node_type, nodeGetNodeType,
-        ghcjs_dom_node_get_parent_node, nodeGetParentNode,
-        ghcjs_dom_node_get_child_nodes, nodeGetChildNodes,
-        ghcjs_dom_node_get_first_child, nodeGetFirstChild,
-        ghcjs_dom_node_get_last_child, nodeGetLastChild,
-        ghcjs_dom_node_get_previous_sibling, nodeGetPreviousSibling,
-        ghcjs_dom_node_get_next_sibling, nodeGetNextSibling,
-        ghcjs_dom_node_get_owner_document, nodeGetOwnerDocument,
-        ghcjs_dom_node_get_namespace_uri, nodeGetNamespaceURI,
-        ghcjs_dom_node_set_prefix, nodeSetPrefix,
-        ghcjs_dom_node_get_prefix, nodeGetPrefix,
-        ghcjs_dom_node_get_local_name, nodeGetLocalName,
-        ghcjs_dom_node_get_base_uri, nodeGetBaseURI,
-        ghcjs_dom_node_set_text_content, nodeSetTextContent,
-        ghcjs_dom_node_get_text_content, nodeGetTextContent,
-        ghcjs_dom_node_get_parent_element, nodeGetParentElement, Node,
-        IsNode, castToNode, gTypeNode, toNode)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"insertBefore\"]($2, $3)"
-        ghcjs_dom_node_insert_before ::
-        JSRef Node -> JSRef Node -> JSRef Node -> IO (JSRef Node)
- 
-nodeInsertBefore ::
-                 (IsNode self, IsNode newChild, IsNode refChild) =>
-                   self -> Maybe newChild -> Maybe refChild -> IO (Maybe Node)
-nodeInsertBefore self newChild refChild
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_insert_before (unNode (toNode self))
-         (maybe jsNull (unNode . toNode) newChild)
-         (maybe jsNull (unNode . toNode) refChild))
- 
-foreign import javascript unsafe "$1[\"replaceChild\"]($2, $3)"
-        ghcjs_dom_node_replace_child ::
-        JSRef Node -> JSRef Node -> JSRef Node -> IO (JSRef Node)
- 
-nodeReplaceChild ::
-                 (IsNode self, IsNode newChild, IsNode oldChild) =>
-                   self -> Maybe newChild -> Maybe oldChild -> IO (Maybe Node)
-nodeReplaceChild self newChild oldChild
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_replace_child (unNode (toNode self))
-         (maybe jsNull (unNode . toNode) newChild)
-         (maybe jsNull (unNode . toNode) oldChild))
- 
-foreign import javascript unsafe "$1[\"removeChild\"]($2)"
-        ghcjs_dom_node_remove_child ::
-        JSRef Node -> JSRef Node -> IO (JSRef Node)
- 
-nodeRemoveChild ::
-                (IsNode self, IsNode oldChild) =>
-                  self -> Maybe oldChild -> IO (Maybe Node)
-nodeRemoveChild self oldChild
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_remove_child (unNode (toNode self))
-         (maybe jsNull (unNode . toNode) oldChild))
- 
-foreign import javascript unsafe "$1[\"appendChild\"]($2)"
-        ghcjs_dom_node_append_child ::
-        JSRef Node -> JSRef Node -> IO (JSRef Node)
- 
-nodeAppendChild ::
-                (IsNode self, IsNode newChild) =>
-                  self -> Maybe newChild -> IO (Maybe Node)
-nodeAppendChild self newChild
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_append_child (unNode (toNode self))
-         (maybe jsNull (unNode . toNode) newChild))
- 
-foreign import javascript unsafe
-        "($1[\"hasChildNodes\"]() ? 1 : 0)" ghcjs_dom_node_has_child_nodes
-        :: JSRef Node -> IO Bool
- 
-nodeHasChildNodes :: (IsNode self) => self -> IO Bool
-nodeHasChildNodes self
-  = ghcjs_dom_node_has_child_nodes (unNode (toNode self))
- 
-foreign import javascript unsafe "$1[\"cloneNode\"]($2)"
-        ghcjs_dom_node_clone_node :: JSRef Node -> Bool -> IO (JSRef Node)
- 
-nodeCloneNode :: (IsNode self) => self -> Bool -> IO (Maybe Node)
-nodeCloneNode self deep
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_clone_node (unNode (toNode self)) deep)
- 
-foreign import javascript unsafe "$1[\"normalize\"]()"
-        ghcjs_dom_node_normalize :: JSRef Node -> IO ()
- 
-nodeNormalize :: (IsNode self) => self -> IO ()
-nodeNormalize self
-  = ghcjs_dom_node_normalize (unNode (toNode self))
- 
-foreign import javascript unsafe
-        "($1[\"isSupported\"]($2,\n$3) ? 1 : 0)"
-        ghcjs_dom_node_is_supported ::
-        JSRef Node -> JSString -> JSString -> IO Bool
- 
-nodeIsSupported ::
-                (IsNode self, ToJSString feature, ToJSString version) =>
-                  self -> feature -> version -> IO Bool
-nodeIsSupported self feature version
-  = ghcjs_dom_node_is_supported (unNode (toNode self))
-      (toJSString feature)
-      (toJSString version)
- 
-foreign import javascript unsafe "($1[\"isSameNode\"]($2) ? 1 : 0)"
-        ghcjs_dom_node_is_same_node :: JSRef Node -> JSRef Node -> IO Bool
- 
-nodeIsSameNode ::
-               (IsNode self, IsNode other) => self -> Maybe other -> IO Bool
-nodeIsSameNode self other
-  = ghcjs_dom_node_is_same_node (unNode (toNode self))
-      (maybe jsNull (unNode . toNode) other)
- 
-foreign import javascript unsafe
-        "($1[\"isEqualNode\"]($2) ? 1 : 0)" ghcjs_dom_node_is_equal_node ::
-        JSRef Node -> JSRef Node -> IO Bool
- 
-nodeIsEqualNode ::
-                (IsNode self, IsNode other) => self -> Maybe other -> IO Bool
-nodeIsEqualNode self other
-  = ghcjs_dom_node_is_equal_node (unNode (toNode self))
-      (maybe jsNull (unNode . toNode) other)
- 
-foreign import javascript unsafe "$1[\"lookupPrefix\"]($2)"
-        ghcjs_dom_node_lookup_prefix ::
-        JSRef Node -> JSString -> IO JSString
- 
-nodeLookupPrefix ::
-                 (IsNode self, ToJSString namespaceURI, FromJSString result) =>
-                   self -> namespaceURI -> IO result
-nodeLookupPrefix self namespaceURI
-  = fromJSString <$>
-      (ghcjs_dom_node_lookup_prefix (unNode (toNode self))
-         (toJSString namespaceURI))
- 
-foreign import javascript unsafe
-        "($1[\"isDefaultNamespace\"]($2) ? 1 : 0)"
-        ghcjs_dom_node_is_default_namespace ::
-        JSRef Node -> JSString -> IO Bool
- 
-nodeIsDefaultNamespace ::
-                       (IsNode self, ToJSString namespaceURI) =>
-                         self -> namespaceURI -> IO Bool
-nodeIsDefaultNamespace self namespaceURI
-  = ghcjs_dom_node_is_default_namespace (unNode (toNode self))
-      (toJSString namespaceURI)
- 
-foreign import javascript unsafe "$1[\"lookupNamespaceURI\"]($2)"
-        ghcjs_dom_node_lookup_namespace_uri ::
-        JSRef Node -> JSString -> IO JSString
- 
-nodeLookupNamespaceURI ::
-                       (IsNode self, ToJSString prefix, FromJSString result) =>
-                         self -> prefix -> IO result
-nodeLookupNamespaceURI self prefix
-  = fromJSString <$>
-      (ghcjs_dom_node_lookup_namespace_uri (unNode (toNode self))
-         (toJSString prefix))
- 
-foreign import javascript unsafe
-        "$1[\"compareDocumentPosition\"]($2)"
-        ghcjs_dom_node_compare_document_position ::
-        JSRef Node -> JSRef Node -> IO Word
- 
-nodeCompareDocumentPosition ::
-                            (IsNode self, IsNode other) => self -> Maybe other -> IO Word
-nodeCompareDocumentPosition self other
-  = ghcjs_dom_node_compare_document_position (unNode (toNode self))
-      (maybe jsNull (unNode . toNode) other)
- 
-foreign import javascript unsafe "($1[\"contains\"]($2) ? 1 : 0)"
-        ghcjs_dom_node_contains :: JSRef Node -> JSRef Node -> IO Bool
- 
-nodeContains ::
-             (IsNode self, IsNode other) => self -> Maybe other -> IO Bool
-nodeContains self other
-  = ghcjs_dom_node_contains (unNode (toNode self))
-      (maybe jsNull (unNode . toNode) other)
- 
-foreign import javascript unsafe
-        "($1[\"dispatchEvent\"]($2) ? 1 : 0)" ghcjs_dom_node_dispatch_event
-        :: JSRef Node -> JSRef Event -> IO Bool
- 
-nodeDispatchEvent ::
-                  (IsNode self, IsEvent event) => self -> Maybe event -> IO Bool
-nodeDispatchEvent self event
-  = ghcjs_dom_node_dispatch_event (unNode (toNode self))
-      (maybe jsNull (unEvent . toEvent) event)
-cELEMENT_NODE = 1
-cATTRIBUTE_NODE = 2
-cTEXT_NODE = 3
-cCDATA_SECTION_NODE = 4
-cENTITY_REFERENCE_NODE = 5
-cENTITY_NODE = 6
-cPROCESSING_INSTRUCTION_NODE = 7
-cCOMMENT_NODE = 8
-cDOCUMENT_NODE = 9
-cDOCUMENT_TYPE_NODE = 10
-cDOCUMENT_FRAGMENT_NODE = 11
-cNOTATION_NODE = 12
-cDOCUMENT_POSITION_DISCONNECTED = 1
-cDOCUMENT_POSITION_PRECEDING = 2
-cDOCUMENT_POSITION_FOLLOWING = 4
-cDOCUMENT_POSITION_CONTAINS = 8
-cDOCUMENT_POSITION_CONTAINED_BY = 16
-cDOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32
- 
-foreign import javascript unsafe "$1[\"nodeName\"]"
-        ghcjs_dom_node_get_node_name :: JSRef Node -> IO JSString
- 
-nodeGetNodeName ::
-                (IsNode self, FromJSString result) => self -> IO result
-nodeGetNodeName self
-  = fromJSString <$>
-      (ghcjs_dom_node_get_node_name (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"nodeValue\"] = $2;"
-        ghcjs_dom_node_set_node_value :: JSRef Node -> JSString -> IO ()
- 
-nodeSetNodeValue ::
-                 (IsNode self, ToJSString val) => self -> val -> IO ()
-nodeSetNodeValue self val
-  = ghcjs_dom_node_set_node_value (unNode (toNode self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"nodeValue\"]"
-        ghcjs_dom_node_get_node_value :: JSRef Node -> IO JSString
- 
-nodeGetNodeValue ::
-                 (IsNode self, FromJSString result) => self -> IO result
-nodeGetNodeValue self
-  = fromJSString <$>
-      (ghcjs_dom_node_get_node_value (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"nodeType\"]"
-        ghcjs_dom_node_get_node_type :: JSRef Node -> IO Word
- 
-nodeGetNodeType :: (IsNode self) => self -> IO Word
-nodeGetNodeType self
-  = ghcjs_dom_node_get_node_type (unNode (toNode self))
- 
-foreign import javascript unsafe "$1[\"parentNode\"]"
-        ghcjs_dom_node_get_parent_node :: JSRef Node -> IO (JSRef Node)
- 
-nodeGetParentNode :: (IsNode self) => self -> IO (Maybe Node)
-nodeGetParentNode self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_get_parent_node (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"childNodes\"]"
-        ghcjs_dom_node_get_child_nodes :: JSRef Node -> IO (JSRef NodeList)
- 
-nodeGetChildNodes :: (IsNode self) => self -> IO (Maybe NodeList)
-nodeGetChildNodes self
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_node_get_child_nodes (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"firstChild\"]"
-        ghcjs_dom_node_get_first_child :: JSRef Node -> IO (JSRef Node)
- 
-nodeGetFirstChild :: (IsNode self) => self -> IO (Maybe Node)
-nodeGetFirstChild self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_get_first_child (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"lastChild\"]"
-        ghcjs_dom_node_get_last_child :: JSRef Node -> IO (JSRef Node)
- 
-nodeGetLastChild :: (IsNode self) => self -> IO (Maybe Node)
-nodeGetLastChild self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_get_last_child (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"previousSibling\"]"
-        ghcjs_dom_node_get_previous_sibling ::
-        JSRef Node -> IO (JSRef Node)
- 
-nodeGetPreviousSibling :: (IsNode self) => self -> IO (Maybe Node)
-nodeGetPreviousSibling self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_get_previous_sibling (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"nextSibling\"]"
-        ghcjs_dom_node_get_next_sibling :: JSRef Node -> IO (JSRef Node)
- 
-nodeGetNextSibling :: (IsNode self) => self -> IO (Maybe Node)
-nodeGetNextSibling self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_get_next_sibling (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"ownerDocument\"]"
-        ghcjs_dom_node_get_owner_document ::
-        JSRef Node -> IO (JSRef Document)
- 
-nodeGetOwnerDocument ::
-                     (IsNode self) => self -> IO (Maybe Document)
-nodeGetOwnerDocument self
-  = fmap Document . maybeJSNull <$>
-      (ghcjs_dom_node_get_owner_document (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"namespaceURI\"]"
-        ghcjs_dom_node_get_namespace_uri :: JSRef Node -> IO JSString
- 
-nodeGetNamespaceURI ::
-                    (IsNode self, FromJSString result) => self -> IO result
-nodeGetNamespaceURI self
-  = fromJSString <$>
-      (ghcjs_dom_node_get_namespace_uri (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"prefix\"] = $2;"
-        ghcjs_dom_node_set_prefix :: JSRef Node -> JSString -> IO ()
- 
-nodeSetPrefix ::
-              (IsNode self, ToJSString val) => self -> val -> IO ()
-nodeSetPrefix self val
-  = ghcjs_dom_node_set_prefix (unNode (toNode self)) (toJSString val)
- 
-foreign import javascript unsafe "$1[\"prefix\"]"
-        ghcjs_dom_node_get_prefix :: JSRef Node -> IO JSString
- 
-nodeGetPrefix ::
-              (IsNode self, FromJSString result) => self -> IO result
-nodeGetPrefix self
-  = fromJSString <$>
-      (ghcjs_dom_node_get_prefix (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"localName\"]"
-        ghcjs_dom_node_get_local_name :: JSRef Node -> IO JSString
- 
-nodeGetLocalName ::
-                 (IsNode self, FromJSString result) => self -> IO result
-nodeGetLocalName self
-  = fromJSString <$>
-      (ghcjs_dom_node_get_local_name (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"baseURI\"]"
-        ghcjs_dom_node_get_base_uri :: JSRef Node -> IO JSString
- 
-nodeGetBaseURI ::
-               (IsNode self, FromJSString result) => self -> IO result
-nodeGetBaseURI self
-  = fromJSString <$>
-      (ghcjs_dom_node_get_base_uri (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"textContent\"] = $2;"
-        ghcjs_dom_node_set_text_content :: JSRef Node -> JSString -> IO ()
- 
-nodeSetTextContent ::
-                   (IsNode self, ToJSString val) => self -> val -> IO ()
-nodeSetTextContent self val
-  = ghcjs_dom_node_set_text_content (unNode (toNode self))
-      (toJSString val)
- 
-foreign import javascript unsafe "$1[\"textContent\"]"
-        ghcjs_dom_node_get_text_content :: JSRef Node -> IO JSString
- 
-nodeGetTextContent ::
-                   (IsNode self, FromJSString result) => self -> IO result
-nodeGetTextContent self
-  = fromJSString <$>
-      (ghcjs_dom_node_get_text_content (unNode (toNode self)))
- 
-foreign import javascript unsafe "$1[\"parentElement\"]"
-        ghcjs_dom_node_get_parent_element ::
-        JSRef Node -> IO (JSRef Element)
- 
-nodeGetParentElement :: (IsNode self) => self -> IO (Maybe Element)
-nodeGetParentElement self
-  = fmap Element . maybeJSNull <$>
-      (ghcjs_dom_node_get_parent_element (unNode (toNode self)))
+  module GHCJS.DOM.JSFFI.Generated.Node
 #else
-module GHCJS.DOM.Node (
   module Graphics.UI.Gtk.WebKit.DOM.Node
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Node
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Node
 #endif
diff --git a/src/GHCJS/DOM/NodeFilter.hs b/src/GHCJS/DOM/NodeFilter.hs
--- a/src/GHCJS/DOM/NodeFilter.hs
+++ b/src/GHCJS/DOM/NodeFilter.hs
@@ -1,42 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.NodeFilter (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.NodeFilter
-       (cFILTER_ACCEPT, cFILTER_REJECT, cFILTER_SKIP, cSHOW_ALL,
-        cSHOW_ELEMENT, cSHOW_ATTRIBUTE, cSHOW_TEXT, cSHOW_CDATA_SECTION,
-        cSHOW_ENTITY_REFERENCE, cSHOW_ENTITY, cSHOW_PROCESSING_INSTRUCTION,
-        cSHOW_COMMENT, cSHOW_DOCUMENT, cSHOW_DOCUMENT_TYPE,
-        cSHOW_DOCUMENT_FRAGMENT, cSHOW_NOTATION, NodeFilter, IsNodeFilter,
-        castToNodeFilter, gTypeNodeFilter, toNodeFilter)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
-cFILTER_ACCEPT = 1
-cFILTER_REJECT = 2
-cFILTER_SKIP = 3
-cSHOW_ALL = 4294967295
-cSHOW_ELEMENT = 1
-cSHOW_ATTRIBUTE = 2
-cSHOW_TEXT = 4
-cSHOW_CDATA_SECTION = 8
-cSHOW_ENTITY_REFERENCE = 16
-cSHOW_ENTITY = 32
-cSHOW_PROCESSING_INSTRUCTION = 64
-cSHOW_COMMENT = 128
-cSHOW_DOCUMENT = 256
-cSHOW_DOCUMENT_TYPE = 512
-cSHOW_DOCUMENT_FRAGMENT = 1024
-cSHOW_NOTATION = 2048
+  module GHCJS.DOM.JSFFI.Generated.NodeFilter
 #else
-module GHCJS.DOM.NodeFilter (
   module Graphics.UI.Gtk.WebKit.DOM.NodeFilter
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.NodeFilter
+#else
 import Graphics.UI.Gtk.WebKit.DOM.NodeFilter
 #endif
diff --git a/src/GHCJS/DOM/NodeIterator.hs b/src/GHCJS/DOM/NodeIterator.hs
--- a/src/GHCJS/DOM/NodeIterator.hs
+++ b/src/GHCJS/DOM/NodeIterator.hs
@@ -1,106 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.NodeIterator (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.NodeIterator
-       (ghcjs_dom_node_iterator_detach, nodeIteratorDetach,
-        ghcjs_dom_node_iterator_get_root, nodeIteratorGetRoot,
-        ghcjs_dom_node_iterator_get_what_to_show,
-        nodeIteratorGetWhatToShow, ghcjs_dom_node_iterator_get_filter,
-        nodeIteratorGetFilter,
-        ghcjs_dom_node_iterator_get_expand_entity_references,
-        nodeIteratorGetExpandEntityReferences,
-        ghcjs_dom_node_iterator_get_reference_node,
-        nodeIteratorGetReferenceNode,
-        ghcjs_dom_node_iterator_get_pointer_before_reference_node,
-        nodeIteratorGetPointerBeforeReferenceNode, NodeIterator,
-        IsNodeIterator, castToNodeIterator, gTypeNodeIterator,
-        toNodeIterator)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"detach\"]()"
-        ghcjs_dom_node_iterator_detach :: JSRef NodeIterator -> IO ()
- 
-nodeIteratorDetach :: (IsNodeIterator self) => self -> IO ()
-nodeIteratorDetach self
-  = ghcjs_dom_node_iterator_detach
-      (unNodeIterator (toNodeIterator self))
- 
-foreign import javascript unsafe "$1[\"root\"]"
-        ghcjs_dom_node_iterator_get_root ::
-        JSRef NodeIterator -> IO (JSRef Node)
- 
-nodeIteratorGetRoot ::
-                    (IsNodeIterator self) => self -> IO (Maybe Node)
-nodeIteratorGetRoot self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_iterator_get_root
-         (unNodeIterator (toNodeIterator self)))
- 
-foreign import javascript unsafe "$1[\"whatToShow\"]"
-        ghcjs_dom_node_iterator_get_what_to_show ::
-        JSRef NodeIterator -> IO Word
- 
-nodeIteratorGetWhatToShow ::
-                          (IsNodeIterator self) => self -> IO Word
-nodeIteratorGetWhatToShow self
-  = ghcjs_dom_node_iterator_get_what_to_show
-      (unNodeIterator (toNodeIterator self))
- 
-foreign import javascript unsafe "$1[\"filter\"]"
-        ghcjs_dom_node_iterator_get_filter ::
-        JSRef NodeIterator -> IO (JSRef NodeFilter)
- 
-nodeIteratorGetFilter ::
-                      (IsNodeIterator self) => self -> IO (Maybe NodeFilter)
-nodeIteratorGetFilter self
-  = fmap NodeFilter . maybeJSNull <$>
-      (ghcjs_dom_node_iterator_get_filter
-         (unNodeIterator (toNodeIterator self)))
- 
-foreign import javascript unsafe
-        "($1[\"expandEntityReferences\"] ? 1 : 0)"
-        ghcjs_dom_node_iterator_get_expand_entity_references ::
-        JSRef NodeIterator -> IO Bool
- 
-nodeIteratorGetExpandEntityReferences ::
-                                      (IsNodeIterator self) => self -> IO Bool
-nodeIteratorGetExpandEntityReferences self
-  = ghcjs_dom_node_iterator_get_expand_entity_references
-      (unNodeIterator (toNodeIterator self))
- 
-foreign import javascript unsafe "$1[\"referenceNode\"]"
-        ghcjs_dom_node_iterator_get_reference_node ::
-        JSRef NodeIterator -> IO (JSRef Node)
- 
-nodeIteratorGetReferenceNode ::
-                             (IsNodeIterator self) => self -> IO (Maybe Node)
-nodeIteratorGetReferenceNode self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_iterator_get_reference_node
-         (unNodeIterator (toNodeIterator self)))
- 
-foreign import javascript unsafe
-        "($1[\"pointerBeforeReferenceNode\"] ? 1 : 0)"
-        ghcjs_dom_node_iterator_get_pointer_before_reference_node ::
-        JSRef NodeIterator -> IO Bool
- 
-nodeIteratorGetPointerBeforeReferenceNode ::
-                                          (IsNodeIterator self) => self -> IO Bool
-nodeIteratorGetPointerBeforeReferenceNode self
-  = ghcjs_dom_node_iterator_get_pointer_before_reference_node
-      (unNodeIterator (toNodeIterator self))
+  module GHCJS.DOM.JSFFI.Generated.NodeIterator
 #else
-module GHCJS.DOM.NodeIterator (
   module Graphics.UI.Gtk.WebKit.DOM.NodeIterator
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.NodeIterator
+#else
 import Graphics.UI.Gtk.WebKit.DOM.NodeIterator
 #endif
diff --git a/src/GHCJS/DOM/NodeList.hs b/src/GHCJS/DOM/NodeList.hs
--- a/src/GHCJS/DOM/NodeList.hs
+++ b/src/GHCJS/DOM/NodeList.hs
@@ -1,40 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.NodeList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.NodeList
-       (ghcjs_dom_node_list_item, nodeListItem,
-        ghcjs_dom_node_list_get_length, nodeListGetLength, NodeList,
-        IsNodeList, castToNodeList, gTypeNodeList, toNodeList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_node_list_item ::
-        JSRef NodeList -> Word -> IO (JSRef Node)
- 
-nodeListItem ::
-             (IsNodeList self) => self -> Word -> IO (Maybe Node)
-nodeListItem self index
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_node_list_item (unNodeList (toNodeList self)) index)
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_node_list_get_length :: JSRef NodeList -> IO Word
- 
-nodeListGetLength :: (IsNodeList self) => self -> IO Word
-nodeListGetLength self
-  = ghcjs_dom_node_list_get_length (unNodeList (toNodeList self))
+  module GHCJS.DOM.JSFFI.Generated.NodeList
 #else
-module GHCJS.DOM.NodeList (
   module Graphics.UI.Gtk.WebKit.DOM.NodeList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.NodeList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.NodeList
 #endif
diff --git a/src/GHCJS/DOM/Notification.hs b/src/GHCJS/DOM/Notification.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Notification.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Notification (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Notification
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Notification
+#else
+#endif
diff --git a/src/GHCJS/DOM/NotificationCenter.hs b/src/GHCJS/DOM/NotificationCenter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/NotificationCenter.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.NotificationCenter (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.NotificationCenter
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.NotificationCenter
+#else
+#endif
diff --git a/src/GHCJS/DOM/NotificationPermissionCallback.hs b/src/GHCJS/DOM/NotificationPermissionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/NotificationPermissionCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.NotificationPermissionCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/OESStandardDerivatives.hs b/src/GHCJS/DOM/OESStandardDerivatives.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/OESStandardDerivatives.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.OESStandardDerivatives (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives
+#else
+#endif
diff --git a/src/GHCJS/DOM/OESTextureHalfFloat.hs b/src/GHCJS/DOM/OESTextureHalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/OESTextureHalfFloat.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.OESTextureHalfFloat (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat
+#else
+#endif
diff --git a/src/GHCJS/DOM/OESVertexArrayObject.hs b/src/GHCJS/DOM/OESVertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/OESVertexArrayObject.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.OESVertexArrayObject (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject
+#else
+#endif
diff --git a/src/GHCJS/DOM/OfflineAudioCompletionEvent.hs b/src/GHCJS/DOM/OfflineAudioCompletionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/OfflineAudioCompletionEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.OfflineAudioCompletionEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/OfflineAudioContext.hs b/src/GHCJS/DOM/OfflineAudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/OfflineAudioContext.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.OfflineAudioContext (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.OfflineAudioContext
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.OfflineAudioContext
+#else
+#endif
diff --git a/src/GHCJS/DOM/OscillatorNode.hs b/src/GHCJS/DOM/OscillatorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/OscillatorNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.OscillatorNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.OscillatorNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.OscillatorNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/OverflowEvent.hs b/src/GHCJS/DOM/OverflowEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/OverflowEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.OverflowEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.OverflowEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.OverflowEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/PageTransitionEvent.hs b/src/GHCJS/DOM/PageTransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PageTransitionEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PageTransitionEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/PannerNode.hs b/src/GHCJS/DOM/PannerNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PannerNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PannerNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PannerNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PannerNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/Path2D.hs b/src/GHCJS/DOM/Path2D.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Path2D.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Path2D (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Path2D
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Path2D
+#else
+#endif
diff --git a/src/GHCJS/DOM/Performance.hs b/src/GHCJS/DOM/Performance.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Performance.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Performance (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Performance
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.Performance
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Performance
+#else
+import Graphics.UI.Gtk.WebKit.DOM.Performance
+#endif
diff --git a/src/GHCJS/DOM/PerformanceEntry.hs b/src/GHCJS/DOM/PerformanceEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PerformanceEntry.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PerformanceEntry (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PerformanceEntry
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PerformanceEntry
+#else
+#endif
diff --git a/src/GHCJS/DOM/PerformanceEntryList.hs b/src/GHCJS/DOM/PerformanceEntryList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PerformanceEntryList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PerformanceEntryList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PerformanceEntryList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PerformanceEntryList
+#else
+#endif
diff --git a/src/GHCJS/DOM/PerformanceNavigation.hs b/src/GHCJS/DOM/PerformanceNavigation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PerformanceNavigation.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PerformanceNavigation (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PerformanceNavigation
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.PerformanceNavigation
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PerformanceNavigation
+#else
+import Graphics.UI.Gtk.WebKit.DOM.PerformanceNavigation
+#endif
diff --git a/src/GHCJS/DOM/PerformanceResourceTiming.hs b/src/GHCJS/DOM/PerformanceResourceTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PerformanceResourceTiming.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PerformanceResourceTiming (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
+#else
+#endif
diff --git a/src/GHCJS/DOM/PerformanceTiming.hs b/src/GHCJS/DOM/PerformanceTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PerformanceTiming.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PerformanceTiming (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PerformanceTiming
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.PerformanceTiming
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PerformanceTiming
+#else
+import Graphics.UI.Gtk.WebKit.DOM.PerformanceTiming
+#endif
diff --git a/src/GHCJS/DOM/Plugin.hs b/src/GHCJS/DOM/Plugin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Plugin.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Plugin (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Plugin
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.Plugin
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Plugin
+#else
+import Graphics.UI.Gtk.WebKit.DOM.Plugin
+#endif
diff --git a/src/GHCJS/DOM/PluginArray.hs b/src/GHCJS/DOM/PluginArray.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PluginArray.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PluginArray (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PluginArray
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.PluginArray
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PluginArray
+#else
+import Graphics.UI.Gtk.WebKit.DOM.PluginArray
+#endif
diff --git a/src/GHCJS/DOM/PopStateEvent.hs b/src/GHCJS/DOM/PopStateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PopStateEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PopStateEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PopStateEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PopStateEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/PositionCallback.hs b/src/GHCJS/DOM/PositionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PositionCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PositionCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PositionCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PositionCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/PositionError.hs b/src/GHCJS/DOM/PositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PositionError.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PositionError (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.PositionError
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.PositionError
+#else
+#endif
diff --git a/src/GHCJS/DOM/PositionErrorCallback.hs b/src/GHCJS/DOM/PositionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/PositionErrorCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.PositionErrorCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.PositionErrorCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.PositionErrorCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/ProcessingInstruction.hs b/src/GHCJS/DOM/ProcessingInstruction.hs
--- a/src/GHCJS/DOM/ProcessingInstruction.hs
+++ b/src/GHCJS/DOM/ProcessingInstruction.hs
@@ -1,49 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.ProcessingInstruction (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.ProcessingInstruction
-       (ghcjs_dom_processing_instruction_get_target,
-        processingInstructionGetTarget,
-        ghcjs_dom_processing_instruction_get_sheet,
-        processingInstructionGetSheet, ProcessingInstruction,
-        IsProcessingInstruction, castToProcessingInstruction,
-        gTypeProcessingInstruction, toProcessingInstruction)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"target\"]"
-        ghcjs_dom_processing_instruction_get_target ::
-        JSRef ProcessingInstruction -> IO JSString
- 
-processingInstructionGetTarget ::
-                               (IsProcessingInstruction self, FromJSString result) =>
-                                 self -> IO result
-processingInstructionGetTarget self
-  = fromJSString <$>
-      (ghcjs_dom_processing_instruction_get_target
-         (unProcessingInstruction (toProcessingInstruction self)))
- 
-foreign import javascript unsafe "$1[\"sheet\"]"
-        ghcjs_dom_processing_instruction_get_sheet ::
-        JSRef ProcessingInstruction -> IO (JSRef StyleSheet)
- 
-processingInstructionGetSheet ::
-                              (IsProcessingInstruction self) => self -> IO (Maybe StyleSheet)
-processingInstructionGetSheet self
-  = fmap StyleSheet . maybeJSNull <$>
-      (ghcjs_dom_processing_instruction_get_sheet
-         (unProcessingInstruction (toProcessingInstruction self)))
+  module GHCJS.DOM.JSFFI.Generated.ProcessingInstruction
 #else
-module GHCJS.DOM.ProcessingInstruction (
   module Graphics.UI.Gtk.WebKit.DOM.ProcessingInstruction
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ProcessingInstruction
+#else
 import Graphics.UI.Gtk.WebKit.DOM.ProcessingInstruction
 #endif
diff --git a/src/GHCJS/DOM/ProgressEvent.hs b/src/GHCJS/DOM/ProgressEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ProgressEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ProgressEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ProgressEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ProgressEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/QuickTimePluginReplacement.hs b/src/GHCJS/DOM/QuickTimePluginReplacement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/QuickTimePluginReplacement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.QuickTimePluginReplacement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement
+#else
+#endif
diff --git a/src/GHCJS/DOM/RGBColor.hs b/src/GHCJS/DOM/RGBColor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RGBColor.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RGBColor (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RGBColor
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RGBColor
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCConfiguration.hs b/src/GHCJS/DOM/RTCConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCConfiguration.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCConfiguration (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCConfiguration
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCConfiguration
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCDTMFSender.hs b/src/GHCJS/DOM/RTCDTMFSender.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCDTMFSender.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCDTMFSender (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCDTMFSender
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCDTMFSender
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCDTMFToneChangeEvent.hs b/src/GHCJS/DOM/RTCDTMFToneChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCDTMFToneChangeEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCDTMFToneChangeEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCDataChannel.hs b/src/GHCJS/DOM/RTCDataChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCDataChannel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCDataChannel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCDataChannel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCDataChannel
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCDataChannelEvent.hs b/src/GHCJS/DOM/RTCDataChannelEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCDataChannelEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCDataChannelEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCIceCandidate.hs b/src/GHCJS/DOM/RTCIceCandidate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCIceCandidate.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCIceCandidate (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCIceCandidate
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCIceCandidate
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCIceCandidateEvent.hs b/src/GHCJS/DOM/RTCIceCandidateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCIceCandidateEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCIceCandidateEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCIceServer.hs b/src/GHCJS/DOM/RTCIceServer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCIceServer.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCIceServer (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCIceServer
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCIceServer
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCPeerConnection.hs b/src/GHCJS/DOM/RTCPeerConnection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCPeerConnection.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCPeerConnection (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.RTCPeerConnection
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.RTCPeerConnection
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCPeerConnectionErrorCallback.hs b/src/GHCJS/DOM/RTCPeerConnectionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCPeerConnectionErrorCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCPeerConnectionErrorCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionErrorCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionErrorCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCSessionDescription.hs b/src/GHCJS/DOM/RTCSessionDescription.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCSessionDescription.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCSessionDescription (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCSessionDescriptionCallback.hs b/src/GHCJS/DOM/RTCSessionDescriptionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCSessionDescriptionCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCSessionDescriptionCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCSessionDescriptionCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCStatsCallback.hs b/src/GHCJS/DOM/RTCStatsCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCStatsCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCStatsCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCStatsCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCStatsCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCStatsReport.hs b/src/GHCJS/DOM/RTCStatsReport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCStatsReport.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCStatsReport (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCStatsReport
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCStatsReport
+#else
+#endif
diff --git a/src/GHCJS/DOM/RTCStatsResponse.hs b/src/GHCJS/DOM/RTCStatsResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RTCStatsResponse.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RTCStatsResponse (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RTCStatsResponse
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RTCStatsResponse
+#else
+#endif
diff --git a/src/GHCJS/DOM/RadioNodeList.hs b/src/GHCJS/DOM/RadioNodeList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RadioNodeList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RadioNodeList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RadioNodeList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RadioNodeList
+#else
+#endif
diff --git a/src/GHCJS/DOM/Range.hs b/src/GHCJS/DOM/Range.hs
--- a/src/GHCJS/DOM/Range.hs
+++ b/src/GHCJS/DOM/Range.hs
@@ -1,373 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Range (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Range
-       (ghcjs_dom_range_set_start, rangeSetStart, ghcjs_dom_range_set_end,
-        rangeSetEnd, ghcjs_dom_range_set_start_before, rangeSetStartBefore,
-        ghcjs_dom_range_set_start_after, rangeSetStartAfter,
-        ghcjs_dom_range_set_end_before, rangeSetEndBefore,
-        ghcjs_dom_range_set_end_after, rangeSetEndAfter,
-        ghcjs_dom_range_collapse, rangeCollapse,
-        ghcjs_dom_range_select_node, rangeSelectNode,
-        ghcjs_dom_range_select_node_contents, rangeSelectNodeContents,
-        ghcjs_dom_range_compare_boundary_points,
-        rangeCompareBoundaryPoints, ghcjs_dom_range_delete_contents,
-        rangeDeleteContents, ghcjs_dom_range_extract_contents,
-        rangeExtractContents, ghcjs_dom_range_clone_contents,
-        rangeCloneContents, ghcjs_dom_range_insert_node, rangeInsertNode,
-        ghcjs_dom_range_surround_contents, rangeSurroundContents,
-        ghcjs_dom_range_clone_range, rangeCloneRange,
-        ghcjs_dom_range_to_string, rangeToString, ghcjs_dom_range_detach,
-        rangeDetach, ghcjs_dom_range_create_contextual_fragment,
-        rangeCreateContextualFragment, ghcjs_dom_range_intersects_node,
-        rangeIntersectsNode, ghcjs_dom_range_compare_node,
-        rangeCompareNode, ghcjs_dom_range_compare_point, rangeComparePoint,
-        ghcjs_dom_range_is_point_in_range, rangeIsPointInRange,
-        ghcjs_dom_range_expand, rangeExpand, cSTART_TO_START,
-        cSTART_TO_END, cEND_TO_END, cEND_TO_START, cNODE_BEFORE,
-        cNODE_AFTER, cNODE_BEFORE_AND_AFTER, cNODE_INSIDE,
-        ghcjs_dom_range_get_start_container, rangeGetStartContainer,
-        ghcjs_dom_range_get_start_offset, rangeGetStartOffset,
-        ghcjs_dom_range_get_end_container, rangeGetEndContainer,
-        ghcjs_dom_range_get_end_offset, rangeGetEndOffset,
-        ghcjs_dom_range_get_collapsed, rangeGetCollapsed,
-        ghcjs_dom_range_get_common_ancestor_container,
-        rangeGetCommonAncestorContainer, ghcjs_dom_range_get_text,
-        rangeGetText, DOMRange, IsDOMRange, castToDOMRange, gTypeDOMRange,
-        toDOMRange)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"setStart\"]($2, $3)"
-        ghcjs_dom_range_set_start ::
-        JSRef DOMRange -> JSRef Node -> Int -> IO ()
- 
-rangeSetStart ::
-              (IsDOMRange self, IsNode refNode) =>
-                self -> Maybe refNode -> Int -> IO ()
-rangeSetStart self refNode offset
-  = ghcjs_dom_range_set_start (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
-      offset
- 
-foreign import javascript unsafe "$1[\"setEnd\"]($2, $3)"
-        ghcjs_dom_range_set_end ::
-        JSRef DOMRange -> JSRef Node -> Int -> IO ()
- 
-rangeSetEnd ::
-            (IsDOMRange self, IsNode refNode) =>
-              self -> Maybe refNode -> Int -> IO ()
-rangeSetEnd self refNode offset
-  = ghcjs_dom_range_set_end (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
-      offset
- 
-foreign import javascript unsafe "$1[\"setStartBefore\"]($2)"
-        ghcjs_dom_range_set_start_before ::
-        JSRef DOMRange -> JSRef Node -> IO ()
- 
-rangeSetStartBefore ::
-                    (IsDOMRange self, IsNode refNode) => self -> Maybe refNode -> IO ()
-rangeSetStartBefore self refNode
-  = ghcjs_dom_range_set_start_before (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
- 
-foreign import javascript unsafe "$1[\"setStartAfter\"]($2)"
-        ghcjs_dom_range_set_start_after ::
-        JSRef DOMRange -> JSRef Node -> IO ()
- 
-rangeSetStartAfter ::
-                   (IsDOMRange self, IsNode refNode) => self -> Maybe refNode -> IO ()
-rangeSetStartAfter self refNode
-  = ghcjs_dom_range_set_start_after (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
- 
-foreign import javascript unsafe "$1[\"setEndBefore\"]($2)"
-        ghcjs_dom_range_set_end_before ::
-        JSRef DOMRange -> JSRef Node -> IO ()
- 
-rangeSetEndBefore ::
-                  (IsDOMRange self, IsNode refNode) => self -> Maybe refNode -> IO ()
-rangeSetEndBefore self refNode
-  = ghcjs_dom_range_set_end_before (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
- 
-foreign import javascript unsafe "$1[\"setEndAfter\"]($2)"
-        ghcjs_dom_range_set_end_after ::
-        JSRef DOMRange -> JSRef Node -> IO ()
- 
-rangeSetEndAfter ::
-                 (IsDOMRange self, IsNode refNode) => self -> Maybe refNode -> IO ()
-rangeSetEndAfter self refNode
-  = ghcjs_dom_range_set_end_after (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
- 
-foreign import javascript unsafe "$1[\"collapse\"]($2)"
-        ghcjs_dom_range_collapse :: JSRef DOMRange -> Bool -> IO ()
- 
-rangeCollapse :: (IsDOMRange self) => self -> Bool -> IO ()
-rangeCollapse self toStart
-  = ghcjs_dom_range_collapse (unDOMRange (toDOMRange self)) toStart
- 
-foreign import javascript unsafe "$1[\"selectNode\"]($2)"
-        ghcjs_dom_range_select_node ::
-        JSRef DOMRange -> JSRef Node -> IO ()
- 
-rangeSelectNode ::
-                (IsDOMRange self, IsNode refNode) => self -> Maybe refNode -> IO ()
-rangeSelectNode self refNode
-  = ghcjs_dom_range_select_node (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
- 
-foreign import javascript unsafe "$1[\"selectNodeContents\"]($2)"
-        ghcjs_dom_range_select_node_contents ::
-        JSRef DOMRange -> JSRef Node -> IO ()
- 
-rangeSelectNodeContents ::
-                        (IsDOMRange self, IsNode refNode) => self -> Maybe refNode -> IO ()
-rangeSelectNodeContents self refNode
-  = ghcjs_dom_range_select_node_contents
-      (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
- 
-foreign import javascript unsafe
-        "$1[\"compareBoundaryPoints\"]($2,\n$3)"
-        ghcjs_dom_range_compare_boundary_points ::
-        JSRef DOMRange -> Word -> JSRef DOMRange -> IO Int
- 
-rangeCompareBoundaryPoints ::
-                           (IsDOMRange self, IsDOMRange sourceRange) =>
-                             self -> Word -> Maybe sourceRange -> IO Int
-rangeCompareBoundaryPoints self how sourceRange
-  = ghcjs_dom_range_compare_boundary_points
-      (unDOMRange (toDOMRange self))
-      (fromIntegral how)
-      (maybe jsNull (unDOMRange . toDOMRange) sourceRange)
- 
-foreign import javascript unsafe "$1[\"deleteContents\"]()"
-        ghcjs_dom_range_delete_contents :: JSRef DOMRange -> IO ()
- 
-rangeDeleteContents :: (IsDOMRange self) => self -> IO ()
-rangeDeleteContents self
-  = ghcjs_dom_range_delete_contents (unDOMRange (toDOMRange self))
- 
-foreign import javascript unsafe "$1[\"extractContents\"]()"
-        ghcjs_dom_range_extract_contents ::
-        JSRef DOMRange -> IO (JSRef DocumentFragment)
- 
-rangeExtractContents ::
-                     (IsDOMRange self) => self -> IO (Maybe DocumentFragment)
-rangeExtractContents self
-  = fmap DocumentFragment . maybeJSNull <$>
-      (ghcjs_dom_range_extract_contents (unDOMRange (toDOMRange self)))
- 
-foreign import javascript unsafe "$1[\"cloneContents\"]()"
-        ghcjs_dom_range_clone_contents ::
-        JSRef DOMRange -> IO (JSRef DocumentFragment)
- 
-rangeCloneContents ::
-                   (IsDOMRange self) => self -> IO (Maybe DocumentFragment)
-rangeCloneContents self
-  = fmap DocumentFragment . maybeJSNull <$>
-      (ghcjs_dom_range_clone_contents (unDOMRange (toDOMRange self)))
- 
-foreign import javascript unsafe "$1[\"insertNode\"]($2)"
-        ghcjs_dom_range_insert_node ::
-        JSRef DOMRange -> JSRef Node -> IO ()
- 
-rangeInsertNode ::
-                (IsDOMRange self, IsNode newNode) => self -> Maybe newNode -> IO ()
-rangeInsertNode self newNode
-  = ghcjs_dom_range_insert_node (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) newNode)
- 
-foreign import javascript unsafe "$1[\"surroundContents\"]($2)"
-        ghcjs_dom_range_surround_contents ::
-        JSRef DOMRange -> JSRef Node -> IO ()
- 
-rangeSurroundContents ::
-                      (IsDOMRange self, IsNode newParent) =>
-                        self -> Maybe newParent -> IO ()
-rangeSurroundContents self newParent
-  = ghcjs_dom_range_surround_contents (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) newParent)
- 
-foreign import javascript unsafe "$1[\"cloneRange\"]()"
-        ghcjs_dom_range_clone_range ::
-        JSRef DOMRange -> IO (JSRef DOMRange)
- 
-rangeCloneRange :: (IsDOMRange self) => self -> IO (Maybe DOMRange)
-rangeCloneRange self
-  = fmap DOMRange . maybeJSNull <$>
-      (ghcjs_dom_range_clone_range (unDOMRange (toDOMRange self)))
- 
-foreign import javascript unsafe "$1[\"toString\"]()"
-        ghcjs_dom_range_to_string :: JSRef DOMRange -> IO JSString
- 
-rangeToString ::
-              (IsDOMRange self, FromJSString result) => self -> IO result
-rangeToString self
-  = fromJSString <$>
-      (ghcjs_dom_range_to_string (unDOMRange (toDOMRange self)))
- 
-foreign import javascript unsafe "$1[\"detach\"]()"
-        ghcjs_dom_range_detach :: JSRef DOMRange -> IO ()
- 
-rangeDetach :: (IsDOMRange self) => self -> IO ()
-rangeDetach self
-  = ghcjs_dom_range_detach (unDOMRange (toDOMRange self))
- 
-foreign import javascript unsafe
-        "$1[\"createContextualFragment\"]($2)"
-        ghcjs_dom_range_create_contextual_fragment ::
-        JSRef DOMRange -> JSString -> IO (JSRef DocumentFragment)
- 
-rangeCreateContextualFragment ::
-                              (IsDOMRange self, ToJSString html) =>
-                                self -> html -> IO (Maybe DocumentFragment)
-rangeCreateContextualFragment self html
-  = fmap DocumentFragment . maybeJSNull <$>
-      (ghcjs_dom_range_create_contextual_fragment
-         (unDOMRange (toDOMRange self))
-         (toJSString html))
- 
-foreign import javascript unsafe
-        "($1[\"intersectsNode\"]($2) ? 1 : 0)"
-        ghcjs_dom_range_intersects_node ::
-        JSRef DOMRange -> JSRef Node -> IO Bool
- 
-rangeIntersectsNode ::
-                    (IsDOMRange self, IsNode refNode) =>
-                      self -> Maybe refNode -> IO Bool
-rangeIntersectsNode self refNode
-  = ghcjs_dom_range_intersects_node (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
- 
-foreign import javascript unsafe "$1[\"compareNode\"]($2)"
-        ghcjs_dom_range_compare_node ::
-        JSRef DOMRange -> JSRef Node -> IO Int
- 
-rangeCompareNode ::
-                 (IsDOMRange self, IsNode refNode) =>
-                   self -> Maybe refNode -> IO Int
-rangeCompareNode self refNode
-  = ghcjs_dom_range_compare_node (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
- 
-foreign import javascript unsafe "$1[\"comparePoint\"]($2, $3)"
-        ghcjs_dom_range_compare_point ::
-        JSRef DOMRange -> JSRef Node -> Int -> IO Int
- 
-rangeComparePoint ::
-                  (IsDOMRange self, IsNode refNode) =>
-                    self -> Maybe refNode -> Int -> IO Int
-rangeComparePoint self refNode offset
-  = ghcjs_dom_range_compare_point (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
-      offset
- 
-foreign import javascript unsafe
-        "($1[\"isPointInRange\"]($2,\n$3) ? 1 : 0)"
-        ghcjs_dom_range_is_point_in_range ::
-        JSRef DOMRange -> JSRef Node -> Int -> IO Bool
- 
-rangeIsPointInRange ::
-                    (IsDOMRange self, IsNode refNode) =>
-                      self -> Maybe refNode -> Int -> IO Bool
-rangeIsPointInRange self refNode offset
-  = ghcjs_dom_range_is_point_in_range (unDOMRange (toDOMRange self))
-      (maybe jsNull (unNode . toNode) refNode)
-      offset
- 
-foreign import javascript unsafe "$1[\"expand\"]($2)"
-        ghcjs_dom_range_expand :: JSRef DOMRange -> JSString -> IO ()
- 
-rangeExpand ::
-            (IsDOMRange self, ToJSString unit) => self -> unit -> IO ()
-rangeExpand self unit
-  = ghcjs_dom_range_expand (unDOMRange (toDOMRange self))
-      (toJSString unit)
-cSTART_TO_START = 0
-cSTART_TO_END = 1
-cEND_TO_END = 2
-cEND_TO_START = 3
-cNODE_BEFORE = 0
-cNODE_AFTER = 1
-cNODE_BEFORE_AND_AFTER = 2
-cNODE_INSIDE = 3
- 
-foreign import javascript unsafe "$1[\"startContainer\"]"
-        ghcjs_dom_range_get_start_container ::
-        JSRef DOMRange -> IO (JSRef Node)
- 
-rangeGetStartContainer ::
-                       (IsDOMRange self) => self -> IO (Maybe Node)
-rangeGetStartContainer self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_range_get_start_container
-         (unDOMRange (toDOMRange self)))
- 
-foreign import javascript unsafe "$1[\"startOffset\"]"
-        ghcjs_dom_range_get_start_offset :: JSRef DOMRange -> IO Int
- 
-rangeGetStartOffset :: (IsDOMRange self) => self -> IO Int
-rangeGetStartOffset self
-  = ghcjs_dom_range_get_start_offset (unDOMRange (toDOMRange self))
- 
-foreign import javascript unsafe "$1[\"endContainer\"]"
-        ghcjs_dom_range_get_end_container ::
-        JSRef DOMRange -> IO (JSRef Node)
- 
-rangeGetEndContainer ::
-                     (IsDOMRange self) => self -> IO (Maybe Node)
-rangeGetEndContainer self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_range_get_end_container (unDOMRange (toDOMRange self)))
- 
-foreign import javascript unsafe "$1[\"endOffset\"]"
-        ghcjs_dom_range_get_end_offset :: JSRef DOMRange -> IO Int
- 
-rangeGetEndOffset :: (IsDOMRange self) => self -> IO Int
-rangeGetEndOffset self
-  = ghcjs_dom_range_get_end_offset (unDOMRange (toDOMRange self))
- 
-foreign import javascript unsafe "($1[\"collapsed\"] ? 1 : 0)"
-        ghcjs_dom_range_get_collapsed :: JSRef DOMRange -> IO Bool
- 
-rangeGetCollapsed :: (IsDOMRange self) => self -> IO Bool
-rangeGetCollapsed self
-  = ghcjs_dom_range_get_collapsed (unDOMRange (toDOMRange self))
- 
-foreign import javascript unsafe "$1[\"commonAncestorContainer\"]"
-        ghcjs_dom_range_get_common_ancestor_container ::
-        JSRef DOMRange -> IO (JSRef Node)
- 
-rangeGetCommonAncestorContainer ::
-                                (IsDOMRange self) => self -> IO (Maybe Node)
-rangeGetCommonAncestorContainer self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_range_get_common_ancestor_container
-         (unDOMRange (toDOMRange self)))
- 
-foreign import javascript unsafe "$1[\"text\"]"
-        ghcjs_dom_range_get_text :: JSRef DOMRange -> IO JSString
- 
-rangeGetText ::
-             (IsDOMRange self, FromJSString result) => self -> IO result
-rangeGetText self
-  = fromJSString <$>
-      (ghcjs_dom_range_get_text (unDOMRange (toDOMRange self)))
+  module GHCJS.DOM.JSFFI.Generated.Range
 #else
-module GHCJS.DOM.Range (
   module Graphics.UI.Gtk.WebKit.DOM.Range
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Range
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Range
 #endif
diff --git a/src/GHCJS/DOM/Ranges.hs b/src/GHCJS/DOM/Ranges.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/Ranges.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Ranges (DOMRange, IsDOMRange) where
- 
-data DOMRange = DOMRange
- 
-class IsDOMRange a
- 
-instance IsDOMRange DOMRange
-#else
-module GHCJS.DOM.Ranges (
-  module Graphics.UI.Gtk.WebKit.DOM.Ranges
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.Ranges
-#endif
diff --git a/src/GHCJS/DOM/ReadableStream.hs b/src/GHCJS/DOM/ReadableStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ReadableStream.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ReadableStream (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ReadableStream
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ReadableStream
+#else
+#endif
diff --git a/src/GHCJS/DOM/Rect.hs b/src/GHCJS/DOM/Rect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Rect.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Rect (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Rect
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Rect
+#else
+#endif
diff --git a/src/GHCJS/DOM/RequestAnimationFrameCallback.hs b/src/GHCJS/DOM/RequestAnimationFrameCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/RequestAnimationFrameCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.RequestAnimationFrameCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/SQLError.hs b/src/GHCJS/DOM/SQLError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SQLError.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SQLError (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.SQLError
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.SQLError
+#else
+#endif
diff --git a/src/GHCJS/DOM/SQLResultSet.hs b/src/GHCJS/DOM/SQLResultSet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SQLResultSet.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SQLResultSet (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SQLResultSet
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SQLResultSet
+#else
+#endif
diff --git a/src/GHCJS/DOM/SQLResultSetRowList.hs b/src/GHCJS/DOM/SQLResultSetRowList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SQLResultSetRowList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SQLResultSetRowList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SQLStatementCallback.hs b/src/GHCJS/DOM/SQLStatementCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SQLStatementCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SQLStatementCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SQLStatementCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SQLStatementCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/SQLStatementErrorCallback.hs b/src/GHCJS/DOM/SQLStatementErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SQLStatementErrorCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SQLStatementErrorCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SQLStatementErrorCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SQLStatementErrorCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/SQLTransaction.hs b/src/GHCJS/DOM/SQLTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SQLTransaction.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SQLTransaction (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.SQLTransaction
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.SQLTransaction
+#else
+#endif
diff --git a/src/GHCJS/DOM/SQLTransactionCallback.hs b/src/GHCJS/DOM/SQLTransactionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SQLTransactionCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SQLTransactionCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/SQLTransactionErrorCallback.hs b/src/GHCJS/DOM/SQLTransactionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SQLTransactionErrorCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SQLTransactionErrorCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SQLTransactionErrorCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SQLTransactionErrorCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAElement.hs b/src/GHCJS/DOM/SVGAElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAltGlyphElement.hs b/src/GHCJS/DOM/SVGAltGlyphElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAltGlyphElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAltGlyphElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAngle.hs b/src/GHCJS/DOM/SVGAngle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAngle.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAngle (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAngle
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAngle
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedAngle.hs b/src/GHCJS/DOM/SVGAnimatedAngle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedAngle.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedAngle (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedBoolean.hs b/src/GHCJS/DOM/SVGAnimatedBoolean.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedBoolean.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedBoolean (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedEnumeration.hs b/src/GHCJS/DOM/SVGAnimatedEnumeration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedEnumeration.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedEnumeration (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedInteger.hs b/src/GHCJS/DOM/SVGAnimatedInteger.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedInteger.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedInteger (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedLength.hs b/src/GHCJS/DOM/SVGAnimatedLength.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedLength.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedLength (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedLengthList.hs b/src/GHCJS/DOM/SVGAnimatedLengthList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedLengthList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedLengthList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedNumber.hs b/src/GHCJS/DOM/SVGAnimatedNumber.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedNumber.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedNumber (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedNumberList.hs b/src/GHCJS/DOM/SVGAnimatedNumberList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedNumberList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedNumberList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedPreserveAspectRatio.hs b/src/GHCJS/DOM/SVGAnimatedPreserveAspectRatio.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedPreserveAspectRatio.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedPreserveAspectRatio (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedRect.hs b/src/GHCJS/DOM/SVGAnimatedRect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedRect.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedRect (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedString.hs b/src/GHCJS/DOM/SVGAnimatedString.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedString.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedString (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedString
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedString
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimatedTransformList.hs b/src/GHCJS/DOM/SVGAnimatedTransformList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimatedTransformList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimatedTransformList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGAnimationElement.hs b/src/GHCJS/DOM/SVGAnimationElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGAnimationElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGAnimationElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGAnimationElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGAnimationElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGCircleElement.hs b/src/GHCJS/DOM/SVGCircleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGCircleElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGCircleElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGCircleElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGCircleElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGClipPathElement.hs b/src/GHCJS/DOM/SVGClipPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGClipPathElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGClipPathElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGClipPathElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGClipPathElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGColor.hs b/src/GHCJS/DOM/SVGColor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGColor.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGColor (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGColor
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGColor
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGComponentTransferFunctionElement.hs b/src/GHCJS/DOM/SVGComponentTransferFunctionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGComponentTransferFunctionElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGComponentTransferFunctionElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGCursorElement.hs b/src/GHCJS/DOM/SVGCursorElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGCursorElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGCursorElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGCursorElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGCursorElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGDocument.hs b/src/GHCJS/DOM/SVGDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGDocument.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGDocument (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGDocument
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGDocument
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGElement.hs b/src/GHCJS/DOM/SVGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGEllipseElement.hs b/src/GHCJS/DOM/SVGEllipseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGEllipseElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGEllipseElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGExternalResourcesRequired.hs b/src/GHCJS/DOM/SVGExternalResourcesRequired.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGExternalResourcesRequired.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGExternalResourcesRequired (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEBlendElement.hs b/src/GHCJS/DOM/SVGFEBlendElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEBlendElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEBlendElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEColorMatrixElement.hs b/src/GHCJS/DOM/SVGFEColorMatrixElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEColorMatrixElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEColorMatrixElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEComponentTransferElement.hs b/src/GHCJS/DOM/SVGFEComponentTransferElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEComponentTransferElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEComponentTransferElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFECompositeElement.hs b/src/GHCJS/DOM/SVGFECompositeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFECompositeElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFECompositeElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEConvolveMatrixElement.hs b/src/GHCJS/DOM/SVGFEConvolveMatrixElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEConvolveMatrixElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEConvolveMatrixElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEDiffuseLightingElement.hs b/src/GHCJS/DOM/SVGFEDiffuseLightingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEDiffuseLightingElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEDiffuseLightingElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEDisplacementMapElement.hs b/src/GHCJS/DOM/SVGFEDisplacementMapElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEDisplacementMapElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEDisplacementMapElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEDistantLightElement.hs b/src/GHCJS/DOM/SVGFEDistantLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEDistantLightElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEDistantLightElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEDropShadowElement.hs b/src/GHCJS/DOM/SVGFEDropShadowElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEDropShadowElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEDropShadowElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEGaussianBlurElement.hs b/src/GHCJS/DOM/SVGFEGaussianBlurElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEGaussianBlurElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEGaussianBlurElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEImageElement.hs b/src/GHCJS/DOM/SVGFEImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEImageElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEImageElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEImageElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEImageElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEMergeNodeElement.hs b/src/GHCJS/DOM/SVGFEMergeNodeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEMergeNodeElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEMergeNodeElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEMorphologyElement.hs b/src/GHCJS/DOM/SVGFEMorphologyElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEMorphologyElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEMorphologyElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEOffsetElement.hs b/src/GHCJS/DOM/SVGFEOffsetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEOffsetElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEOffsetElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFEPointLightElement.hs b/src/GHCJS/DOM/SVGFEPointLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFEPointLightElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFEPointLightElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFESpecularLightingElement.hs b/src/GHCJS/DOM/SVGFESpecularLightingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFESpecularLightingElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFESpecularLightingElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFESpotLightElement.hs b/src/GHCJS/DOM/SVGFESpotLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFESpotLightElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFESpotLightElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFETileElement.hs b/src/GHCJS/DOM/SVGFETileElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFETileElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFETileElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFETileElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFETileElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFETurbulenceElement.hs b/src/GHCJS/DOM/SVGFETurbulenceElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFETurbulenceElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFETurbulenceElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFilterElement.hs b/src/GHCJS/DOM/SVGFilterElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFilterElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFilterElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFilterElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFilterElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFilterPrimitiveStandardAttributes.hs b/src/GHCJS/DOM/SVGFilterPrimitiveStandardAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFilterPrimitiveStandardAttributes.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFilterPrimitiveStandardAttributes (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGFitToViewBox.hs b/src/GHCJS/DOM/SVGFitToViewBox.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGFitToViewBox.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGFitToViewBox (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGForeignObjectElement.hs b/src/GHCJS/DOM/SVGForeignObjectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGForeignObjectElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGForeignObjectElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGGlyphRefElement.hs b/src/GHCJS/DOM/SVGGlyphRefElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGGlyphRefElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGGlyphRefElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGGlyphRefElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGGlyphRefElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGGradientElement.hs b/src/GHCJS/DOM/SVGGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGGradientElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGGradientElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGGradientElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGGradientElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGGraphicsElement.hs b/src/GHCJS/DOM/SVGGraphicsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGGraphicsElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGGraphicsElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGImageElement.hs b/src/GHCJS/DOM/SVGImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGImageElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGImageElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGImageElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGImageElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGLength.hs b/src/GHCJS/DOM/SVGLength.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGLength.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGLength (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGLength
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGLength
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGLengthList.hs b/src/GHCJS/DOM/SVGLengthList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGLengthList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGLengthList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGLengthList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGLengthList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGLineElement.hs b/src/GHCJS/DOM/SVGLineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGLineElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGLineElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGLineElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGLineElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGLinearGradientElement.hs b/src/GHCJS/DOM/SVGLinearGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGLinearGradientElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGLinearGradientElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGMarkerElement.hs b/src/GHCJS/DOM/SVGMarkerElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGMarkerElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGMarkerElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGMarkerElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGMarkerElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGMaskElement.hs b/src/GHCJS/DOM/SVGMaskElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGMaskElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGMaskElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGMaskElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGMaskElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGMatrix.hs b/src/GHCJS/DOM/SVGMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGMatrix.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGMatrix (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGMatrix
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGMatrix
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGNumber.hs b/src/GHCJS/DOM/SVGNumber.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGNumber.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGNumber (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGNumber
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGNumber
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGNumberList.hs b/src/GHCJS/DOM/SVGNumberList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGNumberList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGNumberList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGNumberList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGNumberList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPaint.hs b/src/GHCJS/DOM/SVGPaint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPaint.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPaint (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPaint
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPaint
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathElement.hs b/src/GHCJS/DOM/SVGPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSeg.hs b/src/GHCJS/DOM/SVGPathSeg.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSeg.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSeg (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSeg
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSeg
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegArcAbs.hs b/src/GHCJS/DOM/SVGPathSegArcAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegArcAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegArcAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegArcAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegArcAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegArcRel.hs b/src/GHCJS/DOM/SVGPathSegArcRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegArcRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegArcRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegArcRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegArcRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegCurvetoCubicAbs.hs b/src/GHCJS/DOM/SVGPathSegCurvetoCubicAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegCurvetoCubicAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegCurvetoCubicAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegCurvetoCubicRel.hs b/src/GHCJS/DOM/SVGPathSegCurvetoCubicRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegCurvetoCubicRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegCurvetoCubicRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/GHCJS/DOM/SVGPathSegCurvetoCubicSmoothAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegCurvetoCubicSmoothAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegCurvetoCubicSmoothAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegCurvetoCubicSmoothRel.hs b/src/GHCJS/DOM/SVGPathSegCurvetoCubicSmoothRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegCurvetoCubicSmoothRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegCurvetoCubicSmoothRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticAbs.hs b/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegCurvetoQuadraticAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticRel.hs b/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegCurvetoQuadraticRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticSmoothAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticSmoothAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticSmoothRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegCurvetoQuadraticSmoothRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegLinetoAbs.hs b/src/GHCJS/DOM/SVGPathSegLinetoAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegLinetoAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegLinetoAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegLinetoHorizontalAbs.hs b/src/GHCJS/DOM/SVGPathSegLinetoHorizontalAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegLinetoHorizontalAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegLinetoHorizontalAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegLinetoHorizontalRel.hs b/src/GHCJS/DOM/SVGPathSegLinetoHorizontalRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegLinetoHorizontalRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegLinetoHorizontalRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegLinetoRel.hs b/src/GHCJS/DOM/SVGPathSegLinetoRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegLinetoRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegLinetoRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegLinetoVerticalAbs.hs b/src/GHCJS/DOM/SVGPathSegLinetoVerticalAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegLinetoVerticalAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegLinetoVerticalAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegLinetoVerticalRel.hs b/src/GHCJS/DOM/SVGPathSegLinetoVerticalRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegLinetoVerticalRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegLinetoVerticalRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegList.hs b/src/GHCJS/DOM/SVGPathSegList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegMovetoAbs.hs b/src/GHCJS/DOM/SVGPathSegMovetoAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegMovetoAbs.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegMovetoAbs (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPathSegMovetoRel.hs b/src/GHCJS/DOM/SVGPathSegMovetoRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPathSegMovetoRel.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPathSegMovetoRel (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPatternElement.hs b/src/GHCJS/DOM/SVGPatternElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPatternElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPatternElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPatternElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPatternElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPoint.hs b/src/GHCJS/DOM/SVGPoint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPoint.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPoint (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPoint
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPoint
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPointList.hs b/src/GHCJS/DOM/SVGPointList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPointList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPointList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPointList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPointList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPolygonElement.hs b/src/GHCJS/DOM/SVGPolygonElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPolygonElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPolygonElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPolygonElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPolygonElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPolylineElement.hs b/src/GHCJS/DOM/SVGPolylineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPolylineElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPolylineElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPolylineElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPolylineElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGPreserveAspectRatio.hs b/src/GHCJS/DOM/SVGPreserveAspectRatio.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGPreserveAspectRatio.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGPreserveAspectRatio (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGRadialGradientElement.hs b/src/GHCJS/DOM/SVGRadialGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGRadialGradientElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGRadialGradientElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGRect.hs b/src/GHCJS/DOM/SVGRect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGRect.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGRect (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGRect
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGRect
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGRectElement.hs b/src/GHCJS/DOM/SVGRectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGRectElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGRectElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGRectElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGRectElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGRenderingIntent.hs b/src/GHCJS/DOM/SVGRenderingIntent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGRenderingIntent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGRenderingIntent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGRenderingIntent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGRenderingIntent
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGSVGElement.hs b/src/GHCJS/DOM/SVGSVGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGSVGElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGSVGElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGSVGElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGSVGElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGScriptElement.hs b/src/GHCJS/DOM/SVGScriptElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGScriptElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGScriptElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGScriptElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGScriptElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGStopElement.hs b/src/GHCJS/DOM/SVGStopElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGStopElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGStopElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGStopElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGStopElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGStringList.hs b/src/GHCJS/DOM/SVGStringList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGStringList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGStringList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGStringList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGStringList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGStyleElement.hs b/src/GHCJS/DOM/SVGStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGStyleElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGStyleElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGStyleElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGStyleElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGTests.hs b/src/GHCJS/DOM/SVGTests.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGTests.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGTests (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGTests
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGTests
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGTextContentElement.hs b/src/GHCJS/DOM/SVGTextContentElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGTextContentElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGTextContentElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGTextContentElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGTextContentElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGTextPathElement.hs b/src/GHCJS/DOM/SVGTextPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGTextPathElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGTextPathElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGTextPathElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGTextPathElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGTextPositioningElement.hs b/src/GHCJS/DOM/SVGTextPositioningElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGTextPositioningElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGTextPositioningElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGTransform.hs b/src/GHCJS/DOM/SVGTransform.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGTransform.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGTransform (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGTransform
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGTransform
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGTransformList.hs b/src/GHCJS/DOM/SVGTransformList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGTransformList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGTransformList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGTransformList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGTransformList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGURIReference.hs b/src/GHCJS/DOM/SVGURIReference.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGURIReference.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGURIReference (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGURIReference
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGURIReference
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGUnitTypes.hs b/src/GHCJS/DOM/SVGUnitTypes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGUnitTypes.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGUnitTypes (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGUnitTypes
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGUnitTypes
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGUseElement.hs b/src/GHCJS/DOM/SVGUseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGUseElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGUseElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGUseElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGUseElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGViewElement.hs b/src/GHCJS/DOM/SVGViewElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGViewElement.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGViewElement (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGViewElement
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGViewElement
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGViewSpec.hs b/src/GHCJS/DOM/SVGViewSpec.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGViewSpec.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGViewSpec (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGViewSpec
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGViewSpec
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGZoomAndPan.hs b/src/GHCJS/DOM/SVGZoomAndPan.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGZoomAndPan.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGZoomAndPan (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGZoomAndPan
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGZoomAndPan
+#else
+#endif
diff --git a/src/GHCJS/DOM/SVGZoomEvent.hs b/src/GHCJS/DOM/SVGZoomEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SVGZoomEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SVGZoomEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SVGZoomEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SVGZoomEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/Screen.hs b/src/GHCJS/DOM/Screen.hs
--- a/src/GHCJS/DOM/Screen.hs
+++ b/src/GHCJS/DOM/Screen.hs
@@ -1,86 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Screen (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Screen
-       (ghcjs_dom_screen_get_height, screenGetHeight,
-        ghcjs_dom_screen_get_width, screenGetWidth,
-        ghcjs_dom_screen_get_color_depth, screenGetColorDepth,
-        ghcjs_dom_screen_get_pixel_depth, screenGetPixelDepth,
-        ghcjs_dom_screen_get_avail_left, screenGetAvailLeft,
-        ghcjs_dom_screen_get_avail_top, screenGetAvailTop,
-        ghcjs_dom_screen_get_avail_height, screenGetAvailHeight,
-        ghcjs_dom_screen_get_avail_width, screenGetAvailWidth, DOMScreen,
-        IsDOMScreen, castToDOMScreen, gTypeDOMScreen, toDOMScreen)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"height\"]"
-        ghcjs_dom_screen_get_height :: JSRef DOMScreen -> IO Word
- 
-screenGetHeight :: (IsDOMScreen self) => self -> IO Word
-screenGetHeight self
-  = ghcjs_dom_screen_get_height (unDOMScreen (toDOMScreen self))
- 
-foreign import javascript unsafe "$1[\"width\"]"
-        ghcjs_dom_screen_get_width :: JSRef DOMScreen -> IO Word
- 
-screenGetWidth :: (IsDOMScreen self) => self -> IO Word
-screenGetWidth self
-  = ghcjs_dom_screen_get_width (unDOMScreen (toDOMScreen self))
- 
-foreign import javascript unsafe "$1[\"colorDepth\"]"
-        ghcjs_dom_screen_get_color_depth :: JSRef DOMScreen -> IO Word
- 
-screenGetColorDepth :: (IsDOMScreen self) => self -> IO Word
-screenGetColorDepth self
-  = ghcjs_dom_screen_get_color_depth (unDOMScreen (toDOMScreen self))
- 
-foreign import javascript unsafe "$1[\"pixelDepth\"]"
-        ghcjs_dom_screen_get_pixel_depth :: JSRef DOMScreen -> IO Word
- 
-screenGetPixelDepth :: (IsDOMScreen self) => self -> IO Word
-screenGetPixelDepth self
-  = ghcjs_dom_screen_get_pixel_depth (unDOMScreen (toDOMScreen self))
- 
-foreign import javascript unsafe "$1[\"availLeft\"]"
-        ghcjs_dom_screen_get_avail_left :: JSRef DOMScreen -> IO Int
- 
-screenGetAvailLeft :: (IsDOMScreen self) => self -> IO Int
-screenGetAvailLeft self
-  = ghcjs_dom_screen_get_avail_left (unDOMScreen (toDOMScreen self))
- 
-foreign import javascript unsafe "$1[\"availTop\"]"
-        ghcjs_dom_screen_get_avail_top :: JSRef DOMScreen -> IO Int
- 
-screenGetAvailTop :: (IsDOMScreen self) => self -> IO Int
-screenGetAvailTop self
-  = ghcjs_dom_screen_get_avail_top (unDOMScreen (toDOMScreen self))
- 
-foreign import javascript unsafe "$1[\"availHeight\"]"
-        ghcjs_dom_screen_get_avail_height :: JSRef DOMScreen -> IO Word
- 
-screenGetAvailHeight :: (IsDOMScreen self) => self -> IO Word
-screenGetAvailHeight self
-  = ghcjs_dom_screen_get_avail_height
-      (unDOMScreen (toDOMScreen self))
- 
-foreign import javascript unsafe "$1[\"availWidth\"]"
-        ghcjs_dom_screen_get_avail_width :: JSRef DOMScreen -> IO Word
- 
-screenGetAvailWidth :: (IsDOMScreen self) => self -> IO Word
-screenGetAvailWidth self
-  = ghcjs_dom_screen_get_avail_width (unDOMScreen (toDOMScreen self))
+  module GHCJS.DOM.JSFFI.Generated.Screen
 #else
-module GHCJS.DOM.Screen (
   module Graphics.UI.Gtk.WebKit.DOM.Screen
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Screen
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Screen
 #endif
diff --git a/src/GHCJS/DOM/ScriptProcessorNode.hs b/src/GHCJS/DOM/ScriptProcessorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ScriptProcessorNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ScriptProcessorNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/ScriptProfile.hs b/src/GHCJS/DOM/ScriptProfile.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ScriptProfile.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ScriptProfile (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ScriptProfile
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ScriptProfile
+#else
+#endif
diff --git a/src/GHCJS/DOM/ScriptProfileNode.hs b/src/GHCJS/DOM/ScriptProfileNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/ScriptProfileNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.ScriptProfileNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.ScriptProfileNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ScriptProfileNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/SecurityPolicy.hs b/src/GHCJS/DOM/SecurityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SecurityPolicy.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SecurityPolicy (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SecurityPolicy
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.SecurityPolicy
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SecurityPolicy
+#else
+import Graphics.UI.Gtk.WebKit.DOM.SecurityPolicy
+#endif
diff --git a/src/GHCJS/DOM/SecurityPolicyViolationEvent.hs b/src/GHCJS/DOM/SecurityPolicyViolationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SecurityPolicyViolationEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SecurityPolicyViolationEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/Selection.hs b/src/GHCJS/DOM/Selection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Selection.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Selection (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Selection
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.Selection
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Selection
+#else
+import Graphics.UI.Gtk.WebKit.DOM.Selection
+#endif
diff --git a/src/GHCJS/DOM/SourceBuffer.hs b/src/GHCJS/DOM/SourceBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SourceBuffer.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SourceBuffer (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SourceBuffer
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SourceBuffer
+#else
+#endif
diff --git a/src/GHCJS/DOM/SourceBufferList.hs b/src/GHCJS/DOM/SourceBufferList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SourceBufferList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SourceBufferList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SourceBufferList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SourceBufferList
+#else
+#endif
diff --git a/src/GHCJS/DOM/SourceInfo.hs b/src/GHCJS/DOM/SourceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SourceInfo.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SourceInfo (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SourceInfo
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SourceInfo
+#else
+#endif
diff --git a/src/GHCJS/DOM/SpeechSynthesis.hs b/src/GHCJS/DOM/SpeechSynthesis.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SpeechSynthesis.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SpeechSynthesis (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
+#else
+#endif
diff --git a/src/GHCJS/DOM/SpeechSynthesisEvent.hs b/src/GHCJS/DOM/SpeechSynthesisEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SpeechSynthesisEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SpeechSynthesisEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/SpeechSynthesisUtterance.hs b/src/GHCJS/DOM/SpeechSynthesisUtterance.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SpeechSynthesisUtterance.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SpeechSynthesisUtterance (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance
+#else
+#endif
diff --git a/src/GHCJS/DOM/SpeechSynthesisVoice.hs b/src/GHCJS/DOM/SpeechSynthesisVoice.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SpeechSynthesisVoice.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SpeechSynthesisVoice (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
+#else
+#endif
diff --git a/src/GHCJS/DOM/Storage.hs b/src/GHCJS/DOM/Storage.hs
--- a/src/GHCJS/DOM/Storage.hs
+++ b/src/GHCJS/DOM/Storage.hs
@@ -1,82 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Storage (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Storage
-       (ghcjs_dom_storage_key, storageKey, ghcjs_dom_storage_get_item,
-        storageGetItem, ghcjs_dom_storage_set_item, storageSetItem,
-        ghcjs_dom_storage_remove_item, storageRemoveItem,
-        ghcjs_dom_storage_clear, storageClear,
-        ghcjs_dom_storage_get_length, storageGetLength, Storage, IsStorage,
-        castToStorage, gTypeStorage, toStorage)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"key\"]($2)"
-        ghcjs_dom_storage_key :: JSRef Storage -> Word -> IO JSString
- 
-storageKey ::
-           (IsStorage self, FromJSString result) => self -> Word -> IO result
-storageKey self index
-  = fromJSString <$>
-      (ghcjs_dom_storage_key (unStorage (toStorage self)) index)
- 
-foreign import javascript unsafe "$1[\"getItem\"]($2)"
-        ghcjs_dom_storage_get_item ::
-        JSRef Storage -> JSString -> IO JSString
- 
-storageGetItem ::
-               (IsStorage self, ToJSString key, FromJSString result) =>
-                 self -> key -> IO result
-storageGetItem self key
-  = fromJSString <$>
-      (ghcjs_dom_storage_get_item (unStorage (toStorage self))
-         (toJSString key))
- 
-foreign import javascript unsafe "$1[\"setItem\"]($2, $3)"
-        ghcjs_dom_storage_set_item ::
-        JSRef Storage -> JSString -> JSString -> IO ()
- 
-storageSetItem ::
-               (IsStorage self, ToJSString key, ToJSString data') =>
-                 self -> key -> data' -> IO ()
-storageSetItem self key data'
-  = ghcjs_dom_storage_set_item (unStorage (toStorage self))
-      (toJSString key)
-      (toJSString data')
- 
-foreign import javascript unsafe "$1[\"removeItem\"]($2)"
-        ghcjs_dom_storage_remove_item :: JSRef Storage -> JSString -> IO ()
- 
-storageRemoveItem ::
-                  (IsStorage self, ToJSString key) => self -> key -> IO ()
-storageRemoveItem self key
-  = ghcjs_dom_storage_remove_item (unStorage (toStorage self))
-      (toJSString key)
- 
-foreign import javascript unsafe "$1[\"clear\"]()"
-        ghcjs_dom_storage_clear :: JSRef Storage -> IO ()
- 
-storageClear :: (IsStorage self) => self -> IO ()
-storageClear self
-  = ghcjs_dom_storage_clear (unStorage (toStorage self))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_storage_get_length :: JSRef Storage -> IO Word
- 
-storageGetLength :: (IsStorage self) => self -> IO Word
-storageGetLength self
-  = ghcjs_dom_storage_get_length (unStorage (toStorage self))
+  module GHCJS.DOM.JSFFI.Generated.Storage
 #else
-module GHCJS.DOM.Storage (
   module Graphics.UI.Gtk.WebKit.DOM.Storage
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Storage
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Storage
 #endif
diff --git a/src/GHCJS/DOM/StorageErrorCallback.hs b/src/GHCJS/DOM/StorageErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/StorageErrorCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.StorageErrorCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.StorageErrorCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StorageErrorCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/StorageEvent.hs b/src/GHCJS/DOM/StorageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/StorageEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.StorageEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.StorageEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StorageEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/StorageInfo.hs b/src/GHCJS/DOM/StorageInfo.hs
--- a/src/GHCJS/DOM/StorageInfo.hs
+++ b/src/GHCJS/DOM/StorageInfo.hs
@@ -1,24 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.StorageInfo (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.StorageInfo
-       (cTEMPORARY, cPERSISTENT, StorageInfo, IsStorageInfo,
-        castToStorageInfo, gTypeStorageInfo, toStorageInfo)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
-cTEMPORARY = 0
-cPERSISTENT = 1
+  module GHCJS.DOM.JSFFI.Generated.StorageInfo
 #else
-module GHCJS.DOM.StorageInfo (
   module Graphics.UI.Gtk.WebKit.DOM.StorageInfo
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StorageInfo
+#else
 import Graphics.UI.Gtk.WebKit.DOM.StorageInfo
 #endif
diff --git a/src/GHCJS/DOM/StorageQuota.hs b/src/GHCJS/DOM/StorageQuota.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/StorageQuota.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.StorageQuota (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.StorageQuota
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StorageQuota
+#else
+#endif
diff --git a/src/GHCJS/DOM/StorageQuotaCallback.hs b/src/GHCJS/DOM/StorageQuotaCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/StorageQuotaCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.StorageQuotaCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.StorageQuotaCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StorageQuotaCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/StorageUsageCallback.hs b/src/GHCJS/DOM/StorageUsageCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/StorageUsageCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.StorageUsageCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.StorageUsageCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StorageUsageCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/StringCallback.hs b/src/GHCJS/DOM/StringCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/StringCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.StringCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.StringCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StringCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/StyleMedia.hs b/src/GHCJS/DOM/StyleMedia.hs
--- a/src/GHCJS/DOM/StyleMedia.hs
+++ b/src/GHCJS/DOM/StyleMedia.hs
@@ -1,36 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.StyleMedia (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.StyleMedia
-       (ghcjs_dom_style_media_match_medium, styleMediaMatchMedium,
-        StyleMedia, IsStyleMedia, castToStyleMedia, gTypeStyleMedia,
-        toStyleMedia)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe
-        "($1[\"matchMedium\"]($2) ? 1 : 0)"
-        ghcjs_dom_style_media_match_medium ::
-        JSRef StyleMedia -> JSString -> IO Bool
- 
-styleMediaMatchMedium ::
-                      (IsStyleMedia self, ToJSString mediaquery) =>
-                        self -> mediaquery -> IO Bool
-styleMediaMatchMedium self mediaquery
-  = ghcjs_dom_style_media_match_medium
-      (unStyleMedia (toStyleMedia self))
-      (toJSString mediaquery)
+  module GHCJS.DOM.JSFFI.Generated.StyleMedia
 #else
-module GHCJS.DOM.StyleMedia (
   module Graphics.UI.Gtk.WebKit.DOM.StyleMedia
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StyleMedia
+#else
 import Graphics.UI.Gtk.WebKit.DOM.StyleMedia
 #endif
diff --git a/src/GHCJS/DOM/StyleSheet.hs b/src/GHCJS/DOM/StyleSheet.hs
--- a/src/GHCJS/DOM/StyleSheet.hs
+++ b/src/GHCJS/DOM/StyleSheet.hs
@@ -1,100 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.StyleSheet (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.StyleSheet
-       (ghcjs_dom_style_sheet_set_disabled, styleSheetSetDisabled,
-        ghcjs_dom_style_sheet_get_disabled, styleSheetGetDisabled,
-        ghcjs_dom_style_sheet_get_owner_node, styleSheetGetOwnerNode,
-        ghcjs_dom_style_sheet_get_parent_style_sheet,
-        styleSheetGetParentStyleSheet, ghcjs_dom_style_sheet_get_href,
-        styleSheetGetHref, ghcjs_dom_style_sheet_get_title,
-        styleSheetGetTitle, ghcjs_dom_style_sheet_get_media,
-        styleSheetGetMedia, StyleSheet, IsStyleSheet, castToStyleSheet,
-        gTypeStyleSheet, toStyleSheet)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"disabled\"] = $2;"
-        ghcjs_dom_style_sheet_set_disabled ::
-        JSRef StyleSheet -> Bool -> IO ()
- 
-styleSheetSetDisabled ::
-                      (IsStyleSheet self) => self -> Bool -> IO ()
-styleSheetSetDisabled self val
-  = ghcjs_dom_style_sheet_set_disabled
-      (unStyleSheet (toStyleSheet self))
-      val
- 
-foreign import javascript unsafe "($1[\"disabled\"] ? 1 : 0)"
-        ghcjs_dom_style_sheet_get_disabled :: JSRef StyleSheet -> IO Bool
- 
-styleSheetGetDisabled :: (IsStyleSheet self) => self -> IO Bool
-styleSheetGetDisabled self
-  = ghcjs_dom_style_sheet_get_disabled
-      (unStyleSheet (toStyleSheet self))
- 
-foreign import javascript unsafe "$1[\"ownerNode\"]"
-        ghcjs_dom_style_sheet_get_owner_node ::
-        JSRef StyleSheet -> IO (JSRef Node)
- 
-styleSheetGetOwnerNode ::
-                       (IsStyleSheet self) => self -> IO (Maybe Node)
-styleSheetGetOwnerNode self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_style_sheet_get_owner_node
-         (unStyleSheet (toStyleSheet self)))
- 
-foreign import javascript unsafe "$1[\"parentStyleSheet\"]"
-        ghcjs_dom_style_sheet_get_parent_style_sheet ::
-        JSRef StyleSheet -> IO (JSRef StyleSheet)
- 
-styleSheetGetParentStyleSheet ::
-                              (IsStyleSheet self) => self -> IO (Maybe StyleSheet)
-styleSheetGetParentStyleSheet self
-  = fmap StyleSheet . maybeJSNull <$>
-      (ghcjs_dom_style_sheet_get_parent_style_sheet
-         (unStyleSheet (toStyleSheet self)))
- 
-foreign import javascript unsafe "$1[\"href\"]"
-        ghcjs_dom_style_sheet_get_href :: JSRef StyleSheet -> IO JSString
- 
-styleSheetGetHref ::
-                  (IsStyleSheet self, FromJSString result) => self -> IO result
-styleSheetGetHref self
-  = fromJSString <$>
-      (ghcjs_dom_style_sheet_get_href (unStyleSheet (toStyleSheet self)))
- 
-foreign import javascript unsafe "$1[\"title\"]"
-        ghcjs_dom_style_sheet_get_title :: JSRef StyleSheet -> IO JSString
- 
-styleSheetGetTitle ::
-                   (IsStyleSheet self, FromJSString result) => self -> IO result
-styleSheetGetTitle self
-  = fromJSString <$>
-      (ghcjs_dom_style_sheet_get_title
-         (unStyleSheet (toStyleSheet self)))
- 
-foreign import javascript unsafe "$1[\"media\"]"
-        ghcjs_dom_style_sheet_get_media ::
-        JSRef StyleSheet -> IO (JSRef MediaList)
- 
-styleSheetGetMedia ::
-                   (IsStyleSheet self) => self -> IO (Maybe MediaList)
-styleSheetGetMedia self
-  = fmap MediaList . maybeJSNull <$>
-      (ghcjs_dom_style_sheet_get_media
-         (unStyleSheet (toStyleSheet self)))
+  module GHCJS.DOM.JSFFI.Generated.StyleSheet
 #else
-module GHCJS.DOM.StyleSheet (
   module Graphics.UI.Gtk.WebKit.DOM.StyleSheet
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StyleSheet
+#else
 import Graphics.UI.Gtk.WebKit.DOM.StyleSheet
 #endif
diff --git a/src/GHCJS/DOM/StyleSheetList.hs b/src/GHCJS/DOM/StyleSheetList.hs
--- a/src/GHCJS/DOM/StyleSheetList.hs
+++ b/src/GHCJS/DOM/StyleSheetList.hs
@@ -1,60 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.StyleSheetList (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.StyleSheetList
-       (ghcjs_dom_style_sheet_list_item, styleSheetListItem,
-        ghcjs_dom_style_sheet_list_get, styleSheetList_get,
-        ghcjs_dom_style_sheet_list_get_length, styleSheetListGetLength,
-        StyleSheetList, IsStyleSheetList, castToStyleSheetList,
-        gTypeStyleSheetList, toStyleSheetList)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"item\"]($2)"
-        ghcjs_dom_style_sheet_list_item ::
-        JSRef StyleSheetList -> Word -> IO (JSRef StyleSheet)
- 
-styleSheetListItem ::
-                   (IsStyleSheetList self) => self -> Word -> IO (Maybe StyleSheet)
-styleSheetListItem self index
-  = fmap StyleSheet . maybeJSNull <$>
-      (ghcjs_dom_style_sheet_list_item
-         (unStyleSheetList (toStyleSheetList self))
-         index)
- 
-foreign import javascript unsafe "$1[\"_get\"]($2)"
-        ghcjs_dom_style_sheet_list_get ::
-        JSRef StyleSheetList -> JSString -> IO (JSRef CSSStyleSheet)
- 
-styleSheetList_get ::
-                   (IsStyleSheetList self, ToJSString name) =>
-                     self -> name -> IO (Maybe CSSStyleSheet)
-styleSheetList_get self name
-  = fmap CSSStyleSheet . maybeJSNull <$>
-      (ghcjs_dom_style_sheet_list_get
-         (unStyleSheetList (toStyleSheetList self))
-         (toJSString name))
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_style_sheet_list_get_length ::
-        JSRef StyleSheetList -> IO Word
- 
-styleSheetListGetLength ::
-                        (IsStyleSheetList self) => self -> IO Word
-styleSheetListGetLength self
-  = ghcjs_dom_style_sheet_list_get_length
-      (unStyleSheetList (toStyleSheetList self))
+  module GHCJS.DOM.JSFFI.Generated.StyleSheetList
 #else
-module GHCJS.DOM.StyleSheetList (
   module Graphics.UI.Gtk.WebKit.DOM.StyleSheetList
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.StyleSheetList
+#else
 import Graphics.UI.Gtk.WebKit.DOM.StyleSheetList
 #endif
diff --git a/src/GHCJS/DOM/Stylesheets.hs b/src/GHCJS/DOM/Stylesheets.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/Stylesheets.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Stylesheets (MediaList, IsMediaList) where
- 
-data MediaList = MediaList
- 
-class IsMediaList a
- 
-instance IsMediaList MediaList
-#else
-module GHCJS.DOM.Stylesheets (
-  module Graphics.UI.Gtk.WebKit.DOM.Stylesheets
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.Stylesheets
-#endif
diff --git a/src/GHCJS/DOM/SubtleCrypto.hs b/src/GHCJS/DOM/SubtleCrypto.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/SubtleCrypto.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.SubtleCrypto (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.SubtleCrypto
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.SubtleCrypto
+#else
+#endif
diff --git a/src/GHCJS/DOM/Text.hs b/src/GHCJS/DOM/Text.hs
--- a/src/GHCJS/DOM/Text.hs
+++ b/src/GHCJS/DOM/Text.hs
@@ -1,53 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.Text (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Text
-       (ghcjs_dom_text_split_text, textSplitText,
-        ghcjs_dom_text_replace_whole_text, textReplaceWholeText,
-        ghcjs_dom_text_get_whole_text, textGetWholeText, Text(..), IsText,
-        castToText, gTypeText, toText)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"splitText\"]($2)"
-        ghcjs_dom_text_split_text :: JSRef Text -> Word -> IO (JSRef Text)
- 
-textSplitText :: (IsText self) => self -> Word -> IO (Maybe Text)
-textSplitText self offset
-  = fmap Text . maybeJSNull <$>
-      (ghcjs_dom_text_split_text (unText (toText self)) offset)
- 
-foreign import javascript unsafe "$1[\"replaceWholeText\"]($2)"
-        ghcjs_dom_text_replace_whole_text ::
-        JSRef Text -> JSString -> IO (JSRef Text)
- 
-textReplaceWholeText ::
-                     (IsText self, ToJSString content) =>
-                       self -> content -> IO (Maybe Text)
-textReplaceWholeText self content
-  = fmap Text . maybeJSNull <$>
-      (ghcjs_dom_text_replace_whole_text (unText (toText self))
-         (toJSString content))
- 
-foreign import javascript unsafe "$1[\"wholeText\"]"
-        ghcjs_dom_text_get_whole_text :: JSRef Text -> IO JSString
- 
-textGetWholeText ::
-                 (IsText self, FromJSString result) => self -> IO result
-textGetWholeText self
-  = fromJSString <$>
-      (ghcjs_dom_text_get_whole_text (unText (toText self)))
+  module GHCJS.DOM.JSFFI.Generated.Text
 #else
-module GHCJS.DOM.Text (
   module Graphics.UI.Gtk.WebKit.DOM.Text
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Text
+#else
 import Graphics.UI.Gtk.WebKit.DOM.Text
 #endif
diff --git a/src/GHCJS/DOM/TextEvent.hs b/src/GHCJS/DOM/TextEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TextEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TextEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TextEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TextEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/TextMetrics.hs b/src/GHCJS/DOM/TextMetrics.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TextMetrics.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TextMetrics (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TextMetrics
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TextMetrics
+#else
+#endif
diff --git a/src/GHCJS/DOM/TextTrack.hs b/src/GHCJS/DOM/TextTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TextTrack.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TextTrack (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TextTrack
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.TextTrack
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TextTrack
+#else
+import Graphics.UI.Gtk.WebKit.DOM.TextTrack
+#endif
diff --git a/src/GHCJS/DOM/TextTrackCue.hs b/src/GHCJS/DOM/TextTrackCue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TextTrackCue.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TextTrackCue (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TextTrackCue
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.TextTrackCue
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TextTrackCue
+#else
+import Graphics.UI.Gtk.WebKit.DOM.TextTrackCue
+#endif
diff --git a/src/GHCJS/DOM/TextTrackCueList.hs b/src/GHCJS/DOM/TextTrackCueList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TextTrackCueList.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TextTrackCueList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TextTrackCueList
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.TextTrackCueList
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TextTrackCueList
+#else
+import Graphics.UI.Gtk.WebKit.DOM.TextTrackCueList
+#endif
diff --git a/src/GHCJS/DOM/TextTrackList.hs b/src/GHCJS/DOM/TextTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TextTrackList.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TextTrackList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TextTrackList
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.TextTrackList
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TextTrackList
+#else
+import Graphics.UI.Gtk.WebKit.DOM.TextTrackList
+#endif
diff --git a/src/GHCJS/DOM/TimeRanges.hs b/src/GHCJS/DOM/TimeRanges.hs
--- a/src/GHCJS/DOM/TimeRanges.hs
+++ b/src/GHCJS/DOM/TimeRanges.hs
@@ -1,50 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.TimeRanges (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.TimeRanges
-       (ghcjs_dom_time_ranges_start, timeRangesStart,
-        ghcjs_dom_time_ranges_end, timeRangesEnd,
-        ghcjs_dom_time_ranges_get_length, timeRangesGetLength,
-        TimeRanges(..), IsTimeRanges, castToTimeRanges, gTypeTimeRanges,
-        toTimeRanges)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"start\"]($2)"
-        ghcjs_dom_time_ranges_start ::
-        JSRef TimeRanges -> Word -> IO Double
- 
-timeRangesStart :: (IsTimeRanges self) => self -> Word -> IO Double
-timeRangesStart self index
-  = ghcjs_dom_time_ranges_start (unTimeRanges (toTimeRanges self))
-      index
- 
-foreign import javascript unsafe "$1[\"end\"]($2)"
-        ghcjs_dom_time_ranges_end :: JSRef TimeRanges -> Word -> IO Double
- 
-timeRangesEnd :: (IsTimeRanges self) => self -> Word -> IO Double
-timeRangesEnd self index
-  = ghcjs_dom_time_ranges_end (unTimeRanges (toTimeRanges self))
-      index
- 
-foreign import javascript unsafe "$1[\"length\"]"
-        ghcjs_dom_time_ranges_get_length :: JSRef TimeRanges -> IO Word
- 
-timeRangesGetLength :: (IsTimeRanges self) => self -> IO Word
-timeRangesGetLength self
-  = ghcjs_dom_time_ranges_get_length
-      (unTimeRanges (toTimeRanges self))
+  module GHCJS.DOM.JSFFI.Generated.TimeRanges
 #else
-module GHCJS.DOM.TimeRanges (
   module Graphics.UI.Gtk.WebKit.DOM.TimeRanges
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TimeRanges
+#else
 import Graphics.UI.Gtk.WebKit.DOM.TimeRanges
 #endif
diff --git a/src/GHCJS/DOM/Touch.hs b/src/GHCJS/DOM/Touch.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Touch.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Touch (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Touch
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.Touch
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Touch
+#else
+import Graphics.UI.Gtk.WebKit.DOM.Touch
+#endif
diff --git a/src/GHCJS/DOM/TouchEvent.hs b/src/GHCJS/DOM/TouchEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TouchEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TouchEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TouchEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TouchEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/TouchList.hs b/src/GHCJS/DOM/TouchList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TouchList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TouchList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TouchList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TouchList
+#else
+#endif
diff --git a/src/GHCJS/DOM/TrackEvent.hs b/src/GHCJS/DOM/TrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TrackEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TrackEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TrackEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TrackEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/TransitionEvent.hs b/src/GHCJS/DOM/TransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TransitionEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TransitionEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TransitionEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TransitionEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/Traversal.hs b/src/GHCJS/DOM/Traversal.hs
deleted file mode 100644
--- a/src/GHCJS/DOM/Traversal.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.Traversal (NodeFilter, IsNodeFilter) where
- 
-data NodeFilter = NodeFilter
- 
-class IsNodeFilter a
- 
-instance IsNodeFilter NodeFilter
-#else
-module GHCJS.DOM.Traversal (
-  module Graphics.UI.Gtk.WebKit.DOM.Traversal
-  ) where
-import Graphics.UI.Gtk.WebKit.DOM.Traversal
-#endif
diff --git a/src/GHCJS/DOM/TreeWalker.hs b/src/GHCJS/DOM/TreeWalker.hs
--- a/src/GHCJS/DOM/TreeWalker.hs
+++ b/src/GHCJS/DOM/TreeWalker.hs
@@ -1,91 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.TreeWalker (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.TreeWalker
-       (ghcjs_dom_tree_walker_get_root, treeWalkerGetRoot,
-        ghcjs_dom_tree_walker_get_what_to_show, treeWalkerGetWhatToShow,
-        ghcjs_dom_tree_walker_get_filter, treeWalkerGetFilter,
-        ghcjs_dom_tree_walker_get_expand_entity_references,
-        treeWalkerGetExpandEntityReferences,
-        ghcjs_dom_tree_walker_set_current_node, treeWalkerSetCurrentNode,
-        ghcjs_dom_tree_walker_get_current_node, treeWalkerGetCurrentNode,
-        TreeWalker(..), IsTreeWalker, castToTreeWalker, gTypeTreeWalker,
-        toTreeWalker)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"root\"]"
-        ghcjs_dom_tree_walker_get_root ::
-        JSRef TreeWalker -> IO (JSRef Node)
- 
-treeWalkerGetRoot :: (IsTreeWalker self) => self -> IO (Maybe Node)
-treeWalkerGetRoot self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_tree_walker_get_root (unTreeWalker (toTreeWalker self)))
- 
-foreign import javascript unsafe "$1[\"whatToShow\"]"
-        ghcjs_dom_tree_walker_get_what_to_show ::
-        JSRef TreeWalker -> IO Word
- 
-treeWalkerGetWhatToShow :: (IsTreeWalker self) => self -> IO Word
-treeWalkerGetWhatToShow self
-  = ghcjs_dom_tree_walker_get_what_to_show
-      (unTreeWalker (toTreeWalker self))
- 
-foreign import javascript unsafe "$1[\"filter\"]"
-        ghcjs_dom_tree_walker_get_filter ::
-        JSRef TreeWalker -> IO (JSRef NodeFilter)
- 
-treeWalkerGetFilter ::
-                    (IsTreeWalker self) => self -> IO (Maybe NodeFilter)
-treeWalkerGetFilter self
-  = fmap NodeFilter . maybeJSNull <$>
-      (ghcjs_dom_tree_walker_get_filter
-         (unTreeWalker (toTreeWalker self)))
- 
-foreign import javascript unsafe
-        "($1[\"expandEntityReferences\"] ? 1 : 0)"
-        ghcjs_dom_tree_walker_get_expand_entity_references ::
-        JSRef TreeWalker -> IO Bool
- 
-treeWalkerGetExpandEntityReferences ::
-                                    (IsTreeWalker self) => self -> IO Bool
-treeWalkerGetExpandEntityReferences self
-  = ghcjs_dom_tree_walker_get_expand_entity_references
-      (unTreeWalker (toTreeWalker self))
- 
-foreign import javascript unsafe "$1[\"currentNode\"] = $2;"
-        ghcjs_dom_tree_walker_set_current_node ::
-        JSRef TreeWalker -> JSRef Node -> IO ()
- 
-treeWalkerSetCurrentNode ::
-                         (IsTreeWalker self, IsNode val) => self -> Maybe val -> IO ()
-treeWalkerSetCurrentNode self val
-  = ghcjs_dom_tree_walker_set_current_node
-      (unTreeWalker (toTreeWalker self))
-      (maybe jsNull (unNode . toNode) val)
- 
-foreign import javascript unsafe "$1[\"currentNode\"]"
-        ghcjs_dom_tree_walker_get_current_node ::
-        JSRef TreeWalker -> IO (JSRef Node)
- 
-treeWalkerGetCurrentNode ::
-                         (IsTreeWalker self) => self -> IO (Maybe Node)
-treeWalkerGetCurrentNode self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_tree_walker_get_current_node
-         (unTreeWalker (toTreeWalker self)))
+  module GHCJS.DOM.JSFFI.Generated.TreeWalker
 #else
-module GHCJS.DOM.TreeWalker (
   module Graphics.UI.Gtk.WebKit.DOM.TreeWalker
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TreeWalker
+#else
 import Graphics.UI.Gtk.WebKit.DOM.TreeWalker
 #endif
diff --git a/src/GHCJS/DOM/TypeConversions.hs b/src/GHCJS/DOM/TypeConversions.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/TypeConversions.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.TypeConversions (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.TypeConversions
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.TypeConversions
+#else
+#endif
diff --git a/src/GHCJS/DOM/Types.hs b/src/GHCJS/DOM/Types.hs
--- a/src/GHCJS/DOM/Types.hs
+++ b/src/GHCJS/DOM/Types.hs
@@ -1,4737 +1,27044 @@
-{-# LANGUAGE UndecidableInstances #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE CPP #-}
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface, ConstraintKinds #-}
-#else
-{-# LANGUAGE ConstraintKinds #-}
-#endif
-module GHCJS.DOM.Types (
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-    maybeJSNull, propagateGError, GType(..), DOMString(..), ToDOMString(..), FromDOMString(..)
-  , GObject(..), GObjectClass, toGObject, unGObject, castToGObject, gTypeGObject, unsafeCastGObject
-
--- AUTO GENERATION STARTS HERE
-  , DOMAttr(DOMAttr), unDOMAttr, IsDOMAttr, toDOMAttr, castToDOMAttr, gTypeDOMAttr
-  , BarProp(BarProp), unBarProp, IsBarProp, toBarProp, castToBarProp, gTypeBarProp
-  , Blob(Blob), unBlob, IsBlob, toBlob, castToBlob, gTypeBlob
-  , CDATASection(CDATASection), unCDATASection, IsCDATASection, toCDATASection, castToCDATASection, gTypeCDATASection
-  , CSSRule(CSSRule), unCSSRule, IsCSSRule, toCSSRule, castToCSSRule, gTypeCSSRule
-  , CSSRuleList(CSSRuleList), unCSSRuleList, IsCSSRuleList, toCSSRuleList, castToCSSRuleList, gTypeCSSRuleList
-  , CSSStyleDeclaration(CSSStyleDeclaration), unCSSStyleDeclaration, IsCSSStyleDeclaration, toCSSStyleDeclaration, castToCSSStyleDeclaration, gTypeCSSStyleDeclaration
-  , CSSStyleSheet(CSSStyleSheet), unCSSStyleSheet, IsCSSStyleSheet, toCSSStyleSheet, castToCSSStyleSheet, gTypeCSSStyleSheet
-  , CSSValue(CSSValue), unCSSValue, IsCSSValue, toCSSValue, castToCSSValue, gTypeCSSValue
-  , CharacterData(CharacterData), unCharacterData, IsCharacterData, toCharacterData, castToCharacterData, gTypeCharacterData
-  , Comment(Comment), unComment, IsComment, toComment, castToComment, gTypeComment
-  , DOMApplicationCache(DOMApplicationCache), unDOMApplicationCache, IsDOMApplicationCache, toDOMApplicationCache, castToDOMApplicationCache, gTypeDOMApplicationCache
-  , DOMImplementation(DOMImplementation), unDOMImplementation, IsDOMImplementation, toDOMImplementation, castToDOMImplementation, gTypeDOMImplementation
-  , DOMMimeType(DOMMimeType), unDOMMimeType, IsDOMMimeType, toDOMMimeType, castToDOMMimeType, gTypeDOMMimeType
-  , DOMMimeTypeArray(DOMMimeTypeArray), unDOMMimeTypeArray, IsDOMMimeTypeArray, toDOMMimeTypeArray, castToDOMMimeTypeArray, gTypeDOMMimeTypeArray
-  , DOMNamedFlowCollection(DOMNamedFlowCollection), unDOMNamedFlowCollection, IsDOMNamedFlowCollection, toDOMNamedFlowCollection, castToDOMNamedFlowCollection, gTypeDOMNamedFlowCollection
-  , DOMPlugin(DOMPlugin), unDOMPlugin, IsDOMPlugin, toDOMPlugin, castToDOMPlugin, gTypeDOMPlugin
-  , DOMPluginArray(DOMPluginArray), unDOMPluginArray, IsDOMPluginArray, toDOMPluginArray, castToDOMPluginArray, gTypeDOMPluginArray
-  , DOMSecurityPolicy(DOMSecurityPolicy), unDOMSecurityPolicy, IsDOMSecurityPolicy, toDOMSecurityPolicy, castToDOMSecurityPolicy, gTypeDOMSecurityPolicy
-  , DOMSelection(DOMSelection), unDOMSelection, IsDOMSelection, toDOMSelection, castToDOMSelection, gTypeDOMSelection
-  , DOMSettableTokenList(DOMSettableTokenList), unDOMSettableTokenList, IsDOMSettableTokenList, toDOMSettableTokenList, castToDOMSettableTokenList, gTypeDOMSettableTokenList
-  , DOMStringList(DOMStringList), unDOMStringList, IsDOMStringList, toDOMStringList, castToDOMStringList, gTypeDOMStringList
-  , DOMTokenList(DOMTokenList), unDOMTokenList, IsDOMTokenList, toDOMTokenList, castToDOMTokenList, gTypeDOMTokenList
-  , DOMWindow(DOMWindow), unDOMWindow, IsDOMWindow, toDOMWindow, castToDOMWindow, gTypeDOMWindow
-  , DOMWindowCSS(DOMWindowCSS), unDOMWindowCSS, IsDOMWindowCSS, toDOMWindowCSS, castToDOMWindowCSS, gTypeDOMWindowCSS
-  , Document(Document), unDocument, IsDocument, toDocument, castToDocument, gTypeDocument
-  , DocumentFragment(DocumentFragment), unDocumentFragment, IsDocumentFragment, toDocumentFragment, castToDocumentFragment, gTypeDocumentFragment
-  , DocumentType(DocumentType), unDocumentType, IsDocumentType, toDocumentType, castToDocumentType, gTypeDocumentType
-  , Element(Element), unElement, IsElement, toElement, castToElement, gTypeElement
-  , EntityReference(EntityReference), unEntityReference, IsEntityReference, toEntityReference, castToEntityReference, gTypeEntityReference
-  , Event(Event), unEvent, IsEvent, toEvent, castToEvent, gTypeEvent
-  , EventTarget(EventTarget), unEventTarget, IsEventTarget, toEventTarget, castToEventTarget, gTypeEventTarget
-  , File(File), unFile, IsFile, toFile, castToFile, gTypeFile
-  , FileList(FileList), unFileList, IsFileList, toFileList, castToFileList, gTypeFileList
-  , Geolocation(Geolocation), unGeolocation, IsGeolocation, toGeolocation, castToGeolocation, gTypeGeolocation
-  , HTMLAnchorElement(HTMLAnchorElement), unHTMLAnchorElement, IsHTMLAnchorElement, toHTMLAnchorElement, castToHTMLAnchorElement, gTypeHTMLAnchorElement
-  , HTMLAppletElement(HTMLAppletElement), unHTMLAppletElement, IsHTMLAppletElement, toHTMLAppletElement, castToHTMLAppletElement, gTypeHTMLAppletElement
-  , HTMLAreaElement(HTMLAreaElement), unHTMLAreaElement, IsHTMLAreaElement, toHTMLAreaElement, castToHTMLAreaElement, gTypeHTMLAreaElement
-  , HTMLAudioElement(HTMLAudioElement), unHTMLAudioElement, IsHTMLAudioElement, toHTMLAudioElement, castToHTMLAudioElement, gTypeHTMLAudioElement
-  , HTMLBRElement(HTMLBRElement), unHTMLBRElement, IsHTMLBRElement, toHTMLBRElement, castToHTMLBRElement, gTypeHTMLBRElement
-  , HTMLBaseElement(HTMLBaseElement), unHTMLBaseElement, IsHTMLBaseElement, toHTMLBaseElement, castToHTMLBaseElement, gTypeHTMLBaseElement
-  , HTMLBaseFontElement(HTMLBaseFontElement), unHTMLBaseFontElement, IsHTMLBaseFontElement, toHTMLBaseFontElement, castToHTMLBaseFontElement, gTypeHTMLBaseFontElement
-  , HTMLBodyElement(HTMLBodyElement), unHTMLBodyElement, IsHTMLBodyElement, toHTMLBodyElement, castToHTMLBodyElement, gTypeHTMLBodyElement
-  , HTMLButtonElement(HTMLButtonElement), unHTMLButtonElement, IsHTMLButtonElement, toHTMLButtonElement, castToHTMLButtonElement, gTypeHTMLButtonElement
-  , HTMLCanvasElement(HTMLCanvasElement), unHTMLCanvasElement, IsHTMLCanvasElement, toHTMLCanvasElement, castToHTMLCanvasElement, gTypeHTMLCanvasElement
-  , HTMLCollection(HTMLCollection), unHTMLCollection, IsHTMLCollection, toHTMLCollection, castToHTMLCollection, gTypeHTMLCollection
-  , HTMLDListElement(HTMLDListElement), unHTMLDListElement, IsHTMLDListElement, toHTMLDListElement, castToHTMLDListElement, gTypeHTMLDListElement
-  , HTMLDetailsElement(HTMLDetailsElement), unHTMLDetailsElement, IsHTMLDetailsElement, toHTMLDetailsElement, castToHTMLDetailsElement, gTypeHTMLDetailsElement
-  , HTMLDirectoryElement(HTMLDirectoryElement), unHTMLDirectoryElement, IsHTMLDirectoryElement, toHTMLDirectoryElement, castToHTMLDirectoryElement, gTypeHTMLDirectoryElement
-  , HTMLDivElement(HTMLDivElement), unHTMLDivElement, IsHTMLDivElement, toHTMLDivElement, castToHTMLDivElement, gTypeHTMLDivElement
-  , HTMLDocument(HTMLDocument), unHTMLDocument, IsHTMLDocument, toHTMLDocument, castToHTMLDocument, gTypeHTMLDocument
-  , HTMLElement(HTMLElement), unHTMLElement, IsHTMLElement, toHTMLElement, castToHTMLElement, gTypeHTMLElement
-  , HTMLEmbedElement(HTMLEmbedElement), unHTMLEmbedElement, IsHTMLEmbedElement, toHTMLEmbedElement, castToHTMLEmbedElement, gTypeHTMLEmbedElement
-  , HTMLFieldSetElement(HTMLFieldSetElement), unHTMLFieldSetElement, IsHTMLFieldSetElement, toHTMLFieldSetElement, castToHTMLFieldSetElement, gTypeHTMLFieldSetElement
-  , HTMLFontElement(HTMLFontElement), unHTMLFontElement, IsHTMLFontElement, toHTMLFontElement, castToHTMLFontElement, gTypeHTMLFontElement
-  , HTMLFormElement(HTMLFormElement), unHTMLFormElement, IsHTMLFormElement, toHTMLFormElement, castToHTMLFormElement, gTypeHTMLFormElement
-  , HTMLFrameElement(HTMLFrameElement), unHTMLFrameElement, IsHTMLFrameElement, toHTMLFrameElement, castToHTMLFrameElement, gTypeHTMLFrameElement
-  , HTMLFrameSetElement(HTMLFrameSetElement), unHTMLFrameSetElement, IsHTMLFrameSetElement, toHTMLFrameSetElement, castToHTMLFrameSetElement, gTypeHTMLFrameSetElement
-  , HTMLHRElement(HTMLHRElement), unHTMLHRElement, IsHTMLHRElement, toHTMLHRElement, castToHTMLHRElement, gTypeHTMLHRElement
-  , HTMLHeadElement(HTMLHeadElement), unHTMLHeadElement, IsHTMLHeadElement, toHTMLHeadElement, castToHTMLHeadElement, gTypeHTMLHeadElement
-  , HTMLHeadingElement(HTMLHeadingElement), unHTMLHeadingElement, IsHTMLHeadingElement, toHTMLHeadingElement, castToHTMLHeadingElement, gTypeHTMLHeadingElement
-  , HTMLHtmlElement(HTMLHtmlElement), unHTMLHtmlElement, IsHTMLHtmlElement, toHTMLHtmlElement, castToHTMLHtmlElement, gTypeHTMLHtmlElement
-  , HTMLIFrameElement(HTMLIFrameElement), unHTMLIFrameElement, IsHTMLIFrameElement, toHTMLIFrameElement, castToHTMLIFrameElement, gTypeHTMLIFrameElement
-  , HTMLImageElement(HTMLImageElement), unHTMLImageElement, IsHTMLImageElement, toHTMLImageElement, castToHTMLImageElement, gTypeHTMLImageElement
-  , HTMLInputElement(HTMLInputElement), unHTMLInputElement, IsHTMLInputElement, toHTMLInputElement, castToHTMLInputElement, gTypeHTMLInputElement
-  , HTMLKeygenElement(HTMLKeygenElement), unHTMLKeygenElement, IsHTMLKeygenElement, toHTMLKeygenElement, castToHTMLKeygenElement, gTypeHTMLKeygenElement
-  , HTMLLIElement(HTMLLIElement), unHTMLLIElement, IsHTMLLIElement, toHTMLLIElement, castToHTMLLIElement, gTypeHTMLLIElement
-  , HTMLLabelElement(HTMLLabelElement), unHTMLLabelElement, IsHTMLLabelElement, toHTMLLabelElement, castToHTMLLabelElement, gTypeHTMLLabelElement
-  , HTMLLegendElement(HTMLLegendElement), unHTMLLegendElement, IsHTMLLegendElement, toHTMLLegendElement, castToHTMLLegendElement, gTypeHTMLLegendElement
-  , HTMLLinkElement(HTMLLinkElement), unHTMLLinkElement, IsHTMLLinkElement, toHTMLLinkElement, castToHTMLLinkElement, gTypeHTMLLinkElement
-  , HTMLMapElement(HTMLMapElement), unHTMLMapElement, IsHTMLMapElement, toHTMLMapElement, castToHTMLMapElement, gTypeHTMLMapElement
-  , HTMLMarqueeElement(HTMLMarqueeElement), unHTMLMarqueeElement, IsHTMLMarqueeElement, toHTMLMarqueeElement, castToHTMLMarqueeElement, gTypeHTMLMarqueeElement
-  , HTMLMediaElement(HTMLMediaElement), unHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement, castToHTMLMediaElement, gTypeHTMLMediaElement
-  , HTMLMenuElement(HTMLMenuElement), unHTMLMenuElement, IsHTMLMenuElement, toHTMLMenuElement, castToHTMLMenuElement, gTypeHTMLMenuElement
-  , HTMLMetaElement(HTMLMetaElement), unHTMLMetaElement, IsHTMLMetaElement, toHTMLMetaElement, castToHTMLMetaElement, gTypeHTMLMetaElement
-  , HTMLModElement(HTMLModElement), unHTMLModElement, IsHTMLModElement, toHTMLModElement, castToHTMLModElement, gTypeHTMLModElement
-  , HTMLOListElement(HTMLOListElement), unHTMLOListElement, IsHTMLOListElement, toHTMLOListElement, castToHTMLOListElement, gTypeHTMLOListElement
-  , HTMLObjectElement(HTMLObjectElement), unHTMLObjectElement, IsHTMLObjectElement, toHTMLObjectElement, castToHTMLObjectElement, gTypeHTMLObjectElement
-  , HTMLOptGroupElement(HTMLOptGroupElement), unHTMLOptGroupElement, IsHTMLOptGroupElement, toHTMLOptGroupElement, castToHTMLOptGroupElement, gTypeHTMLOptGroupElement
-  , HTMLOptionElement(HTMLOptionElement), unHTMLOptionElement, IsHTMLOptionElement, toHTMLOptionElement, castToHTMLOptionElement, gTypeHTMLOptionElement
-  , HTMLOptionsCollection(HTMLOptionsCollection), unHTMLOptionsCollection, IsHTMLOptionsCollection, toHTMLOptionsCollection, castToHTMLOptionsCollection, gTypeHTMLOptionsCollection
-  , HTMLParagraphElement(HTMLParagraphElement), unHTMLParagraphElement, IsHTMLParagraphElement, toHTMLParagraphElement, castToHTMLParagraphElement, gTypeHTMLParagraphElement
-  , HTMLParamElement(HTMLParamElement), unHTMLParamElement, IsHTMLParamElement, toHTMLParamElement, castToHTMLParamElement, gTypeHTMLParamElement
-  , HTMLPreElement(HTMLPreElement), unHTMLPreElement, IsHTMLPreElement, toHTMLPreElement, castToHTMLPreElement, gTypeHTMLPreElement
-  , HTMLQuoteElement(HTMLQuoteElement), unHTMLQuoteElement, IsHTMLQuoteElement, toHTMLQuoteElement, castToHTMLQuoteElement, gTypeHTMLQuoteElement
-  , HTMLScriptElement(HTMLScriptElement), unHTMLScriptElement, IsHTMLScriptElement, toHTMLScriptElement, castToHTMLScriptElement, gTypeHTMLScriptElement
-  , HTMLSelectElement(HTMLSelectElement), unHTMLSelectElement, IsHTMLSelectElement, toHTMLSelectElement, castToHTMLSelectElement, gTypeHTMLSelectElement
-  , HTMLStyleElement(HTMLStyleElement), unHTMLStyleElement, IsHTMLStyleElement, toHTMLStyleElement, castToHTMLStyleElement, gTypeHTMLStyleElement
-  , HTMLTableCaptionElement(HTMLTableCaptionElement), unHTMLTableCaptionElement, IsHTMLTableCaptionElement, toHTMLTableCaptionElement, castToHTMLTableCaptionElement, gTypeHTMLTableCaptionElement
-  , HTMLTableCellElement(HTMLTableCellElement), unHTMLTableCellElement, IsHTMLTableCellElement, toHTMLTableCellElement, castToHTMLTableCellElement, gTypeHTMLTableCellElement
-  , HTMLTableColElement(HTMLTableColElement), unHTMLTableColElement, IsHTMLTableColElement, toHTMLTableColElement, castToHTMLTableColElement, gTypeHTMLTableColElement
-  , HTMLTableElement(HTMLTableElement), unHTMLTableElement, IsHTMLTableElement, toHTMLTableElement, castToHTMLTableElement, gTypeHTMLTableElement
-  , HTMLTableRowElement(HTMLTableRowElement), unHTMLTableRowElement, IsHTMLTableRowElement, toHTMLTableRowElement, castToHTMLTableRowElement, gTypeHTMLTableRowElement
-  , HTMLTableSectionElement(HTMLTableSectionElement), unHTMLTableSectionElement, IsHTMLTableSectionElement, toHTMLTableSectionElement, castToHTMLTableSectionElement, gTypeHTMLTableSectionElement
-  , HTMLTextAreaElement(HTMLTextAreaElement), unHTMLTextAreaElement, IsHTMLTextAreaElement, toHTMLTextAreaElement, castToHTMLTextAreaElement, gTypeHTMLTextAreaElement
-  , HTMLTitleElement(HTMLTitleElement), unHTMLTitleElement, IsHTMLTitleElement, toHTMLTitleElement, castToHTMLTitleElement, gTypeHTMLTitleElement
-  , HTMLUListElement(HTMLUListElement), unHTMLUListElement, IsHTMLUListElement, toHTMLUListElement, castToHTMLUListElement, gTypeHTMLUListElement
-  , HTMLVideoElement(HTMLVideoElement), unHTMLVideoElement, IsHTMLVideoElement, toHTMLVideoElement, castToHTMLVideoElement, gTypeHTMLVideoElement
-  , History(History), unHistory, IsHistory, toHistory, castToHistory, gTypeHistory
-  , KeyboardEvent(KeyboardEvent), unKeyboardEvent, IsKeyboardEvent, toKeyboardEvent, castToKeyboardEvent, gTypeKeyboardEvent
-  , Location(Location), unLocation, IsLocation, toLocation, castToLocation, gTypeLocation
-  , MediaError(MediaError), unMediaError, IsMediaError, toMediaError, castToMediaError, gTypeMediaError
-  , MediaList(MediaList), unMediaList, IsMediaList, toMediaList, castToMediaList, gTypeMediaList
-  , MediaQueryList(MediaQueryList), unMediaQueryList, IsMediaQueryList, toMediaQueryList, castToMediaQueryList, gTypeMediaQueryList
-  , MessagePort(MessagePort), unMessagePort, IsMessagePort, toMessagePort, castToMessagePort, gTypeMessagePort
-  , MouseEvent(MouseEvent), unMouseEvent, IsMouseEvent, toMouseEvent, castToMouseEvent, gTypeMouseEvent
-  , NamedNodeMap(NamedNodeMap), unNamedNodeMap, IsNamedNodeMap, toNamedNodeMap, castToNamedNodeMap, gTypeNamedNodeMap
-  , Navigator(Navigator), unNavigator, IsNavigator, toNavigator, castToNavigator, gTypeNavigator
-  , Node(Node), unNode, IsNode, toNode, castToNode, gTypeNode
-  , NodeFilter(NodeFilter), unNodeFilter, IsNodeFilter, toNodeFilter, castToNodeFilter, gTypeNodeFilter
-  , NodeIterator(NodeIterator), unNodeIterator, IsNodeIterator, toNodeIterator, castToNodeIterator, gTypeNodeIterator
-  , NodeList(NodeList), unNodeList, IsNodeList, toNodeList, castToNodeList, gTypeNodeList
-  , ProcessingInstruction(ProcessingInstruction), unProcessingInstruction, IsProcessingInstruction, toProcessingInstruction, castToProcessingInstruction, gTypeProcessingInstruction
-  , DOMRange(DOMRange), unDOMRange, IsDOMRange, toDOMRange, castToDOMRange, gTypeDOMRange
-  , DOMScreen(DOMScreen), unDOMScreen, IsDOMScreen, toDOMScreen, castToDOMScreen, gTypeDOMScreen
-  , Storage(Storage), unStorage, IsStorage, toStorage, castToStorage, gTypeStorage
-  , StorageInfo(StorageInfo), unStorageInfo, IsStorageInfo, toStorageInfo, castToStorageInfo, gTypeStorageInfo
-  , StyleMedia(StyleMedia), unStyleMedia, IsStyleMedia, toStyleMedia, castToStyleMedia, gTypeStyleMedia
-  , StyleSheet(StyleSheet), unStyleSheet, IsStyleSheet, toStyleSheet, castToStyleSheet, gTypeStyleSheet
-  , StyleSheetList(StyleSheetList), unStyleSheetList, IsStyleSheetList, toStyleSheetList, castToStyleSheetList, gTypeStyleSheetList
-  , Text(Text), unText, IsText, toText, castToText, gTypeText
-  , TimeRanges(TimeRanges), unTimeRanges, IsTimeRanges, toTimeRanges, castToTimeRanges, gTypeTimeRanges
-  , TreeWalker(TreeWalker), unTreeWalker, IsTreeWalker, toTreeWalker, castToTreeWalker, gTypeTreeWalker
-  , UIEvent(UIEvent), unUIEvent, IsUIEvent, toUIEvent, castToUIEvent, gTypeUIEvent
-  , ValidityState(ValidityState), unValidityState, IsValidityState, toValidityState, castToValidityState, gTypeValidityState
-  , WebKitNamedFlow(WebKitNamedFlow), unWebKitNamedFlow, IsWebKitNamedFlow, toWebKitNamedFlow, castToWebKitNamedFlow, gTypeWebKitNamedFlow
-  , WebKitPoint(WebKitPoint), unWebKitPoint, IsWebKitPoint, toWebKitPoint, castToWebKitPoint, gTypeWebKitPoint
-  , XPathExpression(XPathExpression), unXPathExpression, IsXPathExpression, toXPathExpression, castToXPathExpression, gTypeXPathExpression
-  , XPathNSResolver(XPathNSResolver), unXPathNSResolver, IsXPathNSResolver, toXPathNSResolver, castToXPathNSResolver, gTypeXPathNSResolver
-  , XPathResult(XPathResult), unXPathResult, IsXPathResult, toXPathResult, castToXPathResult, gTypeXPathResult
--- AUTO GENERATION ENDS HERE
-#else
-    propagateGError, GType(..), DOMString(..), ToDOMString(..), FromDOMString(..)
-  , module Graphics.UI.Gtk.WebKit.Types
-  , IsDOMAttr
-  , IsBlob
-  , IsCDATASection
-  , IsCSSRule
-  , IsCSSRuleList
-  , IsCSSStyleDeclaration
-  , IsCSSStyleSheet
-  , IsCSSValue
-  , IsCharacterData
-  , IsComment
-  , IsDOMApplicationCache
-  , IsDOMImplementation
-  , IsDOMMimeType
-  , IsDOMMimeTypeArray
-  , IsDOMPlugin
-  , IsDOMPluginArray
-  , IsDOMSelection
-  , IsDOMSettableTokenList
-  , IsDOMStringList
-  , IsDOMTokenList
-  , IsDOMWindow
-  , IsDocument
-  , IsDocumentFragment
-  , IsDocumentType
-  , IsElement
-  , IsEntityReference
-  , IsEvent
-  , IsEventTarget
-  , IsFile
-  , IsFileList
-  , IsGeolocation
-  , IsHTMLAnchorElement
-  , IsHTMLAppletElement
-  , IsHTMLAreaElement
-  , IsHTMLAudioElement
-  , IsHTMLBRElement
-  , IsHTMLBaseElement
-  , IsHTMLBaseFontElement
-  , IsHTMLBodyElement
-  , IsHTMLButtonElement
-  , IsHTMLCanvasElement
-  , IsHTMLCollection
-  , IsHTMLDListElement
-  , IsHTMLDetailsElement
-  , IsHTMLDirectoryElement
-  , IsHTMLDivElement
-  , IsHTMLDocument
-  , IsHTMLElement
-  , IsHTMLEmbedElement
-  , IsHTMLFieldSetElement
-  , IsHTMLFontElement
-  , IsHTMLFormElement
-  , IsHTMLFrameElement
-  , IsHTMLFrameSetElement
-  , IsHTMLHRElement
-  , IsHTMLHeadElement
-  , IsHTMLHeadingElement
-  , IsHTMLHtmlElement
-  , IsHTMLIFrameElement
-  , IsHTMLImageElement
-  , IsHTMLInputElement
-  , IsHTMLKeygenElement
-  , IsHTMLLIElement
-  , IsHTMLLabelElement
-  , IsHTMLLegendElement
-  , IsHTMLLinkElement
-  , IsHTMLMapElement
-  , IsHTMLMarqueeElement
-  , IsHTMLMediaElement
-  , IsHTMLMenuElement
-  , IsHTMLMetaElement
-  , IsHTMLModElement
-  , IsHTMLOListElement
-  , IsHTMLObjectElement
-  , IsHTMLOptGroupElement
-  , IsHTMLOptionElement
-  , IsHTMLOptionsCollection
-  , IsHTMLParagraphElement
-  , IsHTMLParamElement
-  , IsHTMLPreElement
-  , IsHTMLQuoteElement
-  , IsHTMLScriptElement
-  , IsHTMLSelectElement
-  , IsHTMLStyleElement
-  , IsHTMLTableCaptionElement
-  , IsHTMLTableCellElement
-  , IsHTMLTableColElement
-  , IsHTMLTableElement
-  , IsHTMLTableRowElement
-  , IsHTMLTableSectionElement
-  , IsHTMLTextAreaElement
-  , IsHTMLTitleElement
-  , IsHTMLUListElement
-  , IsHTMLVideoElement
-  , IsHistory
-  , IsLocation
-  , IsMediaError
-  , IsMediaList
-  , IsMediaQueryList
-  , IsMessagePort
-  , IsMouseEvent
-  , IsNamedNodeMap
-  , IsNavigator
-  , IsNode
-  , IsNodeFilter
-  , IsNodeIterator
-  , IsNodeList
-  , IsProcessingInstruction
-  , IsDOMRange
-  , IsDOMScreen
-  , IsStorage
-  , IsStyleMedia
-  , IsStyleSheet
-  , IsStyleSheetList
-  , IsText
-  , IsTimeRanges
-  , IsTreeWalker
-  , IsUIEvent
-  , IsValidityState
-  , IsWebKitNamedFlow
-  , IsWebKitPoint
-  , IsXPathExpression
-  , IsXPathNSResolver
-  , IsXPathResult
-#endif
-  ) where
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-import GHCJS.Types (JSRef(..), castRef, nullRef, isNull, JSString(..))
-import GHCJS.Foreign (ToJSString(..), FromJSString(..))
-import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
-#else
-import Control.Applicative ((<$>))
-import qualified Data.Text as T (Text)
-import Data.Maybe (isNothing)
-import Foreign.C (CString)
-import Graphics.UI.Gtk.WebKit.Types
-import System.Glib (propagateGError, GType(..))
-import System.Glib.UTFString
-       (readUTFString, GlibString(..))
-#endif
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-maybeJSNull :: JSRef a -> Maybe (JSRef a)
-maybeJSNull r | isNull r = Nothing
-maybeJSNull r = Just r
-
-propagateGError = id
-
-data GType = GType (JSRef GType)
-
-#ifdef ghcjs_HOST_OS
-foreign import javascript unsafe "h$isInstanceOf $1 $2"
-    typeInstanceIsA' :: JSRef a -> JSRef GType -> Bool
-#else
-typeInstanceIsA' :: JSRef a -> JSRef GType -> Bool
-typeInstanceIsA' = error "typeInstanceIsA': only available in JavaScript"
-#endif
-
-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 :: (GObjectClass obj, GObjectClass obj') => GType -> String
-                                                -> (obj -> obj')
-castTo gtype objTypeName obj =
-  case toGObject obj of
-    gobj@(GObject objRef)
-      | typeInstanceIsA objRef gtype
-                  -> unsafeCastGObject gobj
-      | otherwise -> error $ "Cannot cast object to " ++ objTypeName
-
-data GObject = GObject (JSRef GObject)
-
-unGObject (GObject o) = o
-
-class (ToJSRef o, FromJSRef o) => GObjectClass o where
-  -- | Safe upcast.
-  toGObject         :: o -> GObject
-  -- | Unchecked downcast.
-  unsafeCastGObject :: GObject -> o
-
-instance ToJSRef GObject where
-  toJSRef = return . unGObject
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef GObject where
-  fromJSRef = return . fmap GObject . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-instance GObjectClass GObject where
-  toGObject = id
-  unsafeCastGObject = id
-
-castToGObject :: GObjectClass obj => obj -> obj
-castToGObject = id
-
-#ifdef ghcjs_HOST_OS
-foreign import javascript unsafe "object" gTypeGObject' :: JSRef GType
-#else
-gTypeGObject' = error "gTypeGObject': only available in JavaScript"
-#endif
-gTypeGObject = GType gTypeGObject'
-
-#ifdef ghcjs_HOST_OS
--- | 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
-
-type ToDOMString s = ToJSString s
-type FromDOMString s = FromJSString s
-#endif
-
-#else
--- | Fastest string type to use when you just
---   want to take a string from the DOM then
---   give it back as is.
-type DOMString = T.Text
-
-type ToDOMString s = GlibString s
-type FromDOMString s = GlibString s
-#endif
-
--- AUTO GENERATION STARTS HERE
--- The remainder of this file is generated from IDL files using domconv-webkit-jsffi
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMAttr = DOMAttr (JSRef DOMAttr)
-
-unDOMAttr (DOMAttr o) = o
-
-instance ToJSRef DOMAttr where
-  toJSRef = return . unDOMAttr
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMAttr where
-  fromJSRef = return . fmap DOMAttr . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsNode o => IsDOMAttr o
-toDOMAttr :: IsDOMAttr o => o -> DOMAttr
-toDOMAttr = unsafeCastGObject . toGObject
-
-instance IsDOMAttr DOMAttr
-instance IsNode DOMAttr
-instance GObjectClass DOMAttr where
-  toGObject = GObject . castRef . unDOMAttr
-  unsafeCastGObject = DOMAttr . castRef . unGObject
-
-castToDOMAttr :: GObjectClass obj => obj -> DOMAttr
-castToDOMAttr = castTo gTypeDOMAttr "DOMAttr"
-
-foreign import javascript unsafe "window[\"DOMAttr\"]" gTypeDOMAttr' :: JSRef GType
-gTypeDOMAttr = GType gTypeDOMAttr'
-#else
-type IsDOMAttr o = DOMAttrClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype BarProp = BarProp (JSRef BarProp)
-
-unBarProp (BarProp o) = o
-
-instance ToJSRef BarProp where
-  toJSRef = return . unBarProp
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef BarProp where
-  fromJSRef = return . fmap BarProp . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsBarProp o
-toBarProp :: IsBarProp o => o -> BarProp
-toBarProp = unsafeCastGObject . toGObject
-
-instance IsBarProp BarProp
-instance GObjectClass BarProp where
-  toGObject = GObject . castRef . unBarProp
-  unsafeCastGObject = BarProp . castRef . unGObject
-
-castToBarProp :: GObjectClass obj => obj -> BarProp
-castToBarProp = castTo gTypeBarProp "BarProp"
-
-foreign import javascript unsafe "window[\"BarProp\"]" gTypeBarProp' :: JSRef GType
-gTypeBarProp = GType gTypeBarProp'
-#else
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Blob = Blob (JSRef Blob)
-
-unBlob (Blob o) = o
-
-instance ToJSRef Blob where
-  toJSRef = return . unBlob
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Blob where
-  fromJSRef = return . fmap Blob . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsBlob o
-toBlob :: IsBlob o => o -> Blob
-toBlob = unsafeCastGObject . toGObject
-
-instance IsBlob Blob
-instance GObjectClass Blob where
-  toGObject = GObject . castRef . unBlob
-  unsafeCastGObject = Blob . castRef . unGObject
-
-castToBlob :: GObjectClass obj => obj -> Blob
-castToBlob = castTo gTypeBlob "Blob"
-
-foreign import javascript unsafe "window[\"Blob\"]" gTypeBlob' :: JSRef GType
-gTypeBlob = GType gTypeBlob'
-#else
-type IsBlob o = BlobClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype CDATASection = CDATASection (JSRef CDATASection)
-
-unCDATASection (CDATASection o) = o
-
-instance ToJSRef CDATASection where
-  toJSRef = return . unCDATASection
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef CDATASection where
-  fromJSRef = return . fmap CDATASection . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsText o => IsCDATASection o
-toCDATASection :: IsCDATASection o => o -> CDATASection
-toCDATASection = unsafeCastGObject . toGObject
-
-instance IsCDATASection CDATASection
-instance IsText CDATASection
-instance IsCharacterData CDATASection
-instance IsNode CDATASection
-instance GObjectClass CDATASection where
-  toGObject = GObject . castRef . unCDATASection
-  unsafeCastGObject = CDATASection . castRef . unGObject
-
-castToCDATASection :: GObjectClass obj => obj -> CDATASection
-castToCDATASection = castTo gTypeCDATASection "CDATASection"
-
-foreign import javascript unsafe "window[\"CDATASection\"]" gTypeCDATASection' :: JSRef GType
-gTypeCDATASection = GType gTypeCDATASection'
-#else
-type IsCDATASection o = CDATASectionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype CSSRule = CSSRule (JSRef CSSRule)
-
-unCSSRule (CSSRule o) = o
-
-instance ToJSRef CSSRule where
-  toJSRef = return . unCSSRule
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef CSSRule where
-  fromJSRef = return . fmap CSSRule . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsCSSRule o
-toCSSRule :: IsCSSRule o => o -> CSSRule
-toCSSRule = unsafeCastGObject . toGObject
-
-instance IsCSSRule CSSRule
-instance GObjectClass CSSRule where
-  toGObject = GObject . castRef . unCSSRule
-  unsafeCastGObject = CSSRule . castRef . unGObject
-
-castToCSSRule :: GObjectClass obj => obj -> CSSRule
-castToCSSRule = castTo gTypeCSSRule "CSSRule"
-
-foreign import javascript unsafe "window[\"CSSRule\"]" gTypeCSSRule' :: JSRef GType
-gTypeCSSRule = GType gTypeCSSRule'
-#else
-type IsCSSRule o = CSSRuleClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype CSSRuleList = CSSRuleList (JSRef CSSRuleList)
-
-unCSSRuleList (CSSRuleList o) = o
-
-instance ToJSRef CSSRuleList where
-  toJSRef = return . unCSSRuleList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef CSSRuleList where
-  fromJSRef = return . fmap CSSRuleList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsCSSRuleList o
-toCSSRuleList :: IsCSSRuleList o => o -> CSSRuleList
-toCSSRuleList = unsafeCastGObject . toGObject
-
-instance IsCSSRuleList CSSRuleList
-instance GObjectClass CSSRuleList where
-  toGObject = GObject . castRef . unCSSRuleList
-  unsafeCastGObject = CSSRuleList . castRef . unGObject
-
-castToCSSRuleList :: GObjectClass obj => obj -> CSSRuleList
-castToCSSRuleList = castTo gTypeCSSRuleList "CSSRuleList"
-
-foreign import javascript unsafe "window[\"CSSRuleList\"]" gTypeCSSRuleList' :: JSRef GType
-gTypeCSSRuleList = GType gTypeCSSRuleList'
-#else
-type IsCSSRuleList o = CSSRuleListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype CSSStyleDeclaration = CSSStyleDeclaration (JSRef CSSStyleDeclaration)
-
-unCSSStyleDeclaration (CSSStyleDeclaration o) = o
-
-instance ToJSRef CSSStyleDeclaration where
-  toJSRef = return . unCSSStyleDeclaration
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef CSSStyleDeclaration where
-  fromJSRef = return . fmap CSSStyleDeclaration . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsCSSStyleDeclaration o
-toCSSStyleDeclaration :: IsCSSStyleDeclaration o => o -> CSSStyleDeclaration
-toCSSStyleDeclaration = unsafeCastGObject . toGObject
-
-instance IsCSSStyleDeclaration CSSStyleDeclaration
-instance GObjectClass CSSStyleDeclaration where
-  toGObject = GObject . castRef . unCSSStyleDeclaration
-  unsafeCastGObject = CSSStyleDeclaration . castRef . unGObject
-
-castToCSSStyleDeclaration :: GObjectClass obj => obj -> CSSStyleDeclaration
-castToCSSStyleDeclaration = castTo gTypeCSSStyleDeclaration "CSSStyleDeclaration"
-
-foreign import javascript unsafe "window[\"CSSStyleDeclaration\"]" gTypeCSSStyleDeclaration' :: JSRef GType
-gTypeCSSStyleDeclaration = GType gTypeCSSStyleDeclaration'
-#else
-type IsCSSStyleDeclaration o = CSSStyleDeclarationClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype CSSStyleSheet = CSSStyleSheet (JSRef CSSStyleSheet)
-
-unCSSStyleSheet (CSSStyleSheet o) = o
-
-instance ToJSRef CSSStyleSheet where
-  toJSRef = return . unCSSStyleSheet
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef CSSStyleSheet where
-  fromJSRef = return . fmap CSSStyleSheet . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsStyleSheet o => IsCSSStyleSheet o
-toCSSStyleSheet :: IsCSSStyleSheet o => o -> CSSStyleSheet
-toCSSStyleSheet = unsafeCastGObject . toGObject
-
-instance IsCSSStyleSheet CSSStyleSheet
-instance IsStyleSheet CSSStyleSheet
-instance GObjectClass CSSStyleSheet where
-  toGObject = GObject . castRef . unCSSStyleSheet
-  unsafeCastGObject = CSSStyleSheet . castRef . unGObject
-
-castToCSSStyleSheet :: GObjectClass obj => obj -> CSSStyleSheet
-castToCSSStyleSheet = castTo gTypeCSSStyleSheet "CSSStyleSheet"
-
-foreign import javascript unsafe "window[\"CSSStyleSheet\"]" gTypeCSSStyleSheet' :: JSRef GType
-gTypeCSSStyleSheet = GType gTypeCSSStyleSheet'
-#else
-type IsCSSStyleSheet o = CSSStyleSheetClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype CSSValue = CSSValue (JSRef CSSValue)
-
-unCSSValue (CSSValue o) = o
-
-instance ToJSRef CSSValue where
-  toJSRef = return . unCSSValue
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef CSSValue where
-  fromJSRef = return . fmap CSSValue . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsCSSValue o
-toCSSValue :: IsCSSValue o => o -> CSSValue
-toCSSValue = unsafeCastGObject . toGObject
-
-instance IsCSSValue CSSValue
-instance GObjectClass CSSValue where
-  toGObject = GObject . castRef . unCSSValue
-  unsafeCastGObject = CSSValue . castRef . unGObject
-
-castToCSSValue :: GObjectClass obj => obj -> CSSValue
-castToCSSValue = castTo gTypeCSSValue "CSSValue"
-
-foreign import javascript unsafe "window[\"CSSValue\"]" gTypeCSSValue' :: JSRef GType
-gTypeCSSValue = GType gTypeCSSValue'
-#else
-type IsCSSValue o = CSSValueClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype CharacterData = CharacterData (JSRef CharacterData)
-
-unCharacterData (CharacterData o) = o
-
-instance ToJSRef CharacterData where
-  toJSRef = return . unCharacterData
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef CharacterData where
-  fromJSRef = return . fmap CharacterData . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsNode o => IsCharacterData o
-toCharacterData :: IsCharacterData o => o -> CharacterData
-toCharacterData = unsafeCastGObject . toGObject
-
-instance IsCharacterData CharacterData
-instance IsNode CharacterData
-instance GObjectClass CharacterData where
-  toGObject = GObject . castRef . unCharacterData
-  unsafeCastGObject = CharacterData . castRef . unGObject
-
-castToCharacterData :: GObjectClass obj => obj -> CharacterData
-castToCharacterData = castTo gTypeCharacterData "CharacterData"
-
-foreign import javascript unsafe "window[\"CharacterData\"]" gTypeCharacterData' :: JSRef GType
-gTypeCharacterData = GType gTypeCharacterData'
-#else
-type IsCharacterData o = CharacterDataClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Comment = Comment (JSRef Comment)
-
-unComment (Comment o) = o
-
-instance ToJSRef Comment where
-  toJSRef = return . unComment
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Comment where
-  fromJSRef = return . fmap Comment . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsCharacterData o => IsComment o
-toComment :: IsComment o => o -> Comment
-toComment = unsafeCastGObject . toGObject
-
-instance IsComment Comment
-instance IsCharacterData Comment
-instance IsNode Comment
-instance GObjectClass Comment where
-  toGObject = GObject . castRef . unComment
-  unsafeCastGObject = Comment . castRef . unGObject
-
-castToComment :: GObjectClass obj => obj -> Comment
-castToComment = castTo gTypeComment "Comment"
-
-foreign import javascript unsafe "window[\"Comment\"]" gTypeComment' :: JSRef GType
-gTypeComment = GType gTypeComment'
-#else
-type IsComment o = CommentClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMApplicationCache = DOMApplicationCache (JSRef DOMApplicationCache)
-
-unDOMApplicationCache (DOMApplicationCache o) = o
-
-instance ToJSRef DOMApplicationCache where
-  toJSRef = return . unDOMApplicationCache
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMApplicationCache where
-  fromJSRef = return . fmap DOMApplicationCache . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMApplicationCache o
-toDOMApplicationCache :: IsDOMApplicationCache o => o -> DOMApplicationCache
-toDOMApplicationCache = unsafeCastGObject . toGObject
-
-instance IsDOMApplicationCache DOMApplicationCache
-instance GObjectClass DOMApplicationCache where
-  toGObject = GObject . castRef . unDOMApplicationCache
-  unsafeCastGObject = DOMApplicationCache . castRef . unGObject
-
-castToDOMApplicationCache :: GObjectClass obj => obj -> DOMApplicationCache
-castToDOMApplicationCache = castTo gTypeDOMApplicationCache "DOMApplicationCache"
-
-foreign import javascript unsafe "window[\"DOMApplicationCache\"]" gTypeDOMApplicationCache' :: JSRef GType
-gTypeDOMApplicationCache = GType gTypeDOMApplicationCache'
-#else
-type IsDOMApplicationCache o = DOMApplicationCacheClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMImplementation = DOMImplementation (JSRef DOMImplementation)
-
-unDOMImplementation (DOMImplementation o) = o
-
-instance ToJSRef DOMImplementation where
-  toJSRef = return . unDOMImplementation
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMImplementation where
-  fromJSRef = return . fmap DOMImplementation . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMImplementation o
-toDOMImplementation :: IsDOMImplementation o => o -> DOMImplementation
-toDOMImplementation = unsafeCastGObject . toGObject
-
-instance IsDOMImplementation DOMImplementation
-instance GObjectClass DOMImplementation where
-  toGObject = GObject . castRef . unDOMImplementation
-  unsafeCastGObject = DOMImplementation . castRef . unGObject
-
-castToDOMImplementation :: GObjectClass obj => obj -> DOMImplementation
-castToDOMImplementation = castTo gTypeDOMImplementation "DOMImplementation"
-
-foreign import javascript unsafe "window[\"DOMImplementation\"]" gTypeDOMImplementation' :: JSRef GType
-gTypeDOMImplementation = GType gTypeDOMImplementation'
-#else
-type IsDOMImplementation o = DOMImplementationClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMMimeType = DOMMimeType (JSRef DOMMimeType)
-
-unDOMMimeType (DOMMimeType o) = o
-
-instance ToJSRef DOMMimeType where
-  toJSRef = return . unDOMMimeType
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMMimeType where
-  fromJSRef = return . fmap DOMMimeType . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMMimeType o
-toDOMMimeType :: IsDOMMimeType o => o -> DOMMimeType
-toDOMMimeType = unsafeCastGObject . toGObject
-
-instance IsDOMMimeType DOMMimeType
-instance GObjectClass DOMMimeType where
-  toGObject = GObject . castRef . unDOMMimeType
-  unsafeCastGObject = DOMMimeType . castRef . unGObject
-
-castToDOMMimeType :: GObjectClass obj => obj -> DOMMimeType
-castToDOMMimeType = castTo gTypeDOMMimeType "DOMMimeType"
-
-foreign import javascript unsafe "window[\"DOMMimeType\"]" gTypeDOMMimeType' :: JSRef GType
-gTypeDOMMimeType = GType gTypeDOMMimeType'
-#else
-type IsDOMMimeType o = DOMMimeTypeClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMMimeTypeArray = DOMMimeTypeArray (JSRef DOMMimeTypeArray)
-
-unDOMMimeTypeArray (DOMMimeTypeArray o) = o
-
-instance ToJSRef DOMMimeTypeArray where
-  toJSRef = return . unDOMMimeTypeArray
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMMimeTypeArray where
-  fromJSRef = return . fmap DOMMimeTypeArray . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMMimeTypeArray o
-toDOMMimeTypeArray :: IsDOMMimeTypeArray o => o -> DOMMimeTypeArray
-toDOMMimeTypeArray = unsafeCastGObject . toGObject
-
-instance IsDOMMimeTypeArray DOMMimeTypeArray
-instance GObjectClass DOMMimeTypeArray where
-  toGObject = GObject . castRef . unDOMMimeTypeArray
-  unsafeCastGObject = DOMMimeTypeArray . castRef . unGObject
-
-castToDOMMimeTypeArray :: GObjectClass obj => obj -> DOMMimeTypeArray
-castToDOMMimeTypeArray = castTo gTypeDOMMimeTypeArray "DOMMimeTypeArray"
-
-foreign import javascript unsafe "window[\"DOMMimeTypeArray\"]" gTypeDOMMimeTypeArray' :: JSRef GType
-gTypeDOMMimeTypeArray = GType gTypeDOMMimeTypeArray'
-#else
-type IsDOMMimeTypeArray o = DOMMimeTypeArrayClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMNamedFlowCollection = DOMNamedFlowCollection (JSRef DOMNamedFlowCollection)
-
-unDOMNamedFlowCollection (DOMNamedFlowCollection o) = o
-
-instance ToJSRef DOMNamedFlowCollection where
-  toJSRef = return . unDOMNamedFlowCollection
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMNamedFlowCollection where
-  fromJSRef = return . fmap DOMNamedFlowCollection . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMNamedFlowCollection o
-toDOMNamedFlowCollection :: IsDOMNamedFlowCollection o => o -> DOMNamedFlowCollection
-toDOMNamedFlowCollection = unsafeCastGObject . toGObject
-
-instance IsDOMNamedFlowCollection DOMNamedFlowCollection
-instance GObjectClass DOMNamedFlowCollection where
-  toGObject = GObject . castRef . unDOMNamedFlowCollection
-  unsafeCastGObject = DOMNamedFlowCollection . castRef . unGObject
-
-castToDOMNamedFlowCollection :: GObjectClass obj => obj -> DOMNamedFlowCollection
-castToDOMNamedFlowCollection = castTo gTypeDOMNamedFlowCollection "DOMNamedFlowCollection"
-
-foreign import javascript unsafe "window[\"DOMNamedFlowCollection\"]" gTypeDOMNamedFlowCollection' :: JSRef GType
-gTypeDOMNamedFlowCollection = GType gTypeDOMNamedFlowCollection'
-#else
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMPlugin = DOMPlugin (JSRef DOMPlugin)
-
-unDOMPlugin (DOMPlugin o) = o
-
-instance ToJSRef DOMPlugin where
-  toJSRef = return . unDOMPlugin
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMPlugin where
-  fromJSRef = return . fmap DOMPlugin . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMPlugin o
-toDOMPlugin :: IsDOMPlugin o => o -> DOMPlugin
-toDOMPlugin = unsafeCastGObject . toGObject
-
-instance IsDOMPlugin DOMPlugin
-instance GObjectClass DOMPlugin where
-  toGObject = GObject . castRef . unDOMPlugin
-  unsafeCastGObject = DOMPlugin . castRef . unGObject
-
-castToDOMPlugin :: GObjectClass obj => obj -> DOMPlugin
-castToDOMPlugin = castTo gTypeDOMPlugin "DOMPlugin"
-
-foreign import javascript unsafe "window[\"DOMPlugin\"]" gTypeDOMPlugin' :: JSRef GType
-gTypeDOMPlugin = GType gTypeDOMPlugin'
-#else
-type IsDOMPlugin o = DOMPluginClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMPluginArray = DOMPluginArray (JSRef DOMPluginArray)
-
-unDOMPluginArray (DOMPluginArray o) = o
-
-instance ToJSRef DOMPluginArray where
-  toJSRef = return . unDOMPluginArray
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMPluginArray where
-  fromJSRef = return . fmap DOMPluginArray . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMPluginArray o
-toDOMPluginArray :: IsDOMPluginArray o => o -> DOMPluginArray
-toDOMPluginArray = unsafeCastGObject . toGObject
-
-instance IsDOMPluginArray DOMPluginArray
-instance GObjectClass DOMPluginArray where
-  toGObject = GObject . castRef . unDOMPluginArray
-  unsafeCastGObject = DOMPluginArray . castRef . unGObject
-
-castToDOMPluginArray :: GObjectClass obj => obj -> DOMPluginArray
-castToDOMPluginArray = castTo gTypeDOMPluginArray "DOMPluginArray"
-
-foreign import javascript unsafe "window[\"DOMPluginArray\"]" gTypeDOMPluginArray' :: JSRef GType
-gTypeDOMPluginArray = GType gTypeDOMPluginArray'
-#else
-type IsDOMPluginArray o = DOMPluginArrayClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMSecurityPolicy = DOMSecurityPolicy (JSRef DOMSecurityPolicy)
-
-unDOMSecurityPolicy (DOMSecurityPolicy o) = o
-
-instance ToJSRef DOMSecurityPolicy where
-  toJSRef = return . unDOMSecurityPolicy
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMSecurityPolicy where
-  fromJSRef = return . fmap DOMSecurityPolicy . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMSecurityPolicy o
-toDOMSecurityPolicy :: IsDOMSecurityPolicy o => o -> DOMSecurityPolicy
-toDOMSecurityPolicy = unsafeCastGObject . toGObject
-
-instance IsDOMSecurityPolicy DOMSecurityPolicy
-instance GObjectClass DOMSecurityPolicy where
-  toGObject = GObject . castRef . unDOMSecurityPolicy
-  unsafeCastGObject = DOMSecurityPolicy . castRef . unGObject
-
-castToDOMSecurityPolicy :: GObjectClass obj => obj -> DOMSecurityPolicy
-castToDOMSecurityPolicy = castTo gTypeDOMSecurityPolicy "DOMSecurityPolicy"
-
-foreign import javascript unsafe "window[\"DOMSecurityPolicy\"]" gTypeDOMSecurityPolicy' :: JSRef GType
-gTypeDOMSecurityPolicy = GType gTypeDOMSecurityPolicy'
-#else
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMSelection = DOMSelection (JSRef DOMSelection)
-
-unDOMSelection (DOMSelection o) = o
-
-instance ToJSRef DOMSelection where
-  toJSRef = return . unDOMSelection
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMSelection where
-  fromJSRef = return . fmap DOMSelection . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMSelection o
-toDOMSelection :: IsDOMSelection o => o -> DOMSelection
-toDOMSelection = unsafeCastGObject . toGObject
-
-instance IsDOMSelection DOMSelection
-instance GObjectClass DOMSelection where
-  toGObject = GObject . castRef . unDOMSelection
-  unsafeCastGObject = DOMSelection . castRef . unGObject
-
-castToDOMSelection :: GObjectClass obj => obj -> DOMSelection
-castToDOMSelection = castTo gTypeDOMSelection "DOMSelection"
-
-foreign import javascript unsafe "window[\"DOMSelection\"]" gTypeDOMSelection' :: JSRef GType
-gTypeDOMSelection = GType gTypeDOMSelection'
-#else
-type IsDOMSelection o = DOMSelectionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMSettableTokenList = DOMSettableTokenList (JSRef DOMSettableTokenList)
-
-unDOMSettableTokenList (DOMSettableTokenList o) = o
-
-instance ToJSRef DOMSettableTokenList where
-  toJSRef = return . unDOMSettableTokenList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMSettableTokenList where
-  fromJSRef = return . fmap DOMSettableTokenList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsDOMTokenList o => IsDOMSettableTokenList o
-toDOMSettableTokenList :: IsDOMSettableTokenList o => o -> DOMSettableTokenList
-toDOMSettableTokenList = unsafeCastGObject . toGObject
-
-instance IsDOMSettableTokenList DOMSettableTokenList
-instance IsDOMTokenList DOMSettableTokenList
-instance GObjectClass DOMSettableTokenList where
-  toGObject = GObject . castRef . unDOMSettableTokenList
-  unsafeCastGObject = DOMSettableTokenList . castRef . unGObject
-
-castToDOMSettableTokenList :: GObjectClass obj => obj -> DOMSettableTokenList
-castToDOMSettableTokenList = castTo gTypeDOMSettableTokenList "DOMSettableTokenList"
-
-foreign import javascript unsafe "window[\"DOMSettableTokenList\"]" gTypeDOMSettableTokenList' :: JSRef GType
-gTypeDOMSettableTokenList = GType gTypeDOMSettableTokenList'
-#else
-type IsDOMSettableTokenList o = DOMSettableTokenListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMStringList = DOMStringList (JSRef DOMStringList)
-
-unDOMStringList (DOMStringList o) = o
-
-instance ToJSRef DOMStringList where
-  toJSRef = return . unDOMStringList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMStringList where
-  fromJSRef = return . fmap DOMStringList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMStringList o
-toDOMStringList :: IsDOMStringList o => o -> DOMStringList
-toDOMStringList = unsafeCastGObject . toGObject
-
-instance IsDOMStringList DOMStringList
-instance GObjectClass DOMStringList where
-  toGObject = GObject . castRef . unDOMStringList
-  unsafeCastGObject = DOMStringList . castRef . unGObject
-
-castToDOMStringList :: GObjectClass obj => obj -> DOMStringList
-castToDOMStringList = castTo gTypeDOMStringList "DOMStringList"
-
-foreign import javascript unsafe "window[\"DOMStringList\"]" gTypeDOMStringList' :: JSRef GType
-gTypeDOMStringList = GType gTypeDOMStringList'
-#else
-type IsDOMStringList o = DOMStringListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMTokenList = DOMTokenList (JSRef DOMTokenList)
-
-unDOMTokenList (DOMTokenList o) = o
-
-instance ToJSRef DOMTokenList where
-  toJSRef = return . unDOMTokenList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMTokenList where
-  fromJSRef = return . fmap DOMTokenList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMTokenList o
-toDOMTokenList :: IsDOMTokenList o => o -> DOMTokenList
-toDOMTokenList = unsafeCastGObject . toGObject
-
-instance IsDOMTokenList DOMTokenList
-instance GObjectClass DOMTokenList where
-  toGObject = GObject . castRef . unDOMTokenList
-  unsafeCastGObject = DOMTokenList . castRef . unGObject
-
-castToDOMTokenList :: GObjectClass obj => obj -> DOMTokenList
-castToDOMTokenList = castTo gTypeDOMTokenList "DOMTokenList"
-
-foreign import javascript unsafe "window[\"DOMTokenList\"]" gTypeDOMTokenList' :: JSRef GType
-gTypeDOMTokenList = GType gTypeDOMTokenList'
-#else
-type IsDOMTokenList o = DOMTokenListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMWindow = DOMWindow (JSRef DOMWindow)
-
-unDOMWindow (DOMWindow o) = o
-
-instance ToJSRef DOMWindow where
-  toJSRef = return . unDOMWindow
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMWindow where
-  fromJSRef = return . fmap DOMWindow . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMWindow o
-toDOMWindow :: IsDOMWindow o => o -> DOMWindow
-toDOMWindow = unsafeCastGObject . toGObject
-
-instance IsDOMWindow DOMWindow
-instance GObjectClass DOMWindow where
-  toGObject = GObject . castRef . unDOMWindow
-  unsafeCastGObject = DOMWindow . castRef . unGObject
-
-castToDOMWindow :: GObjectClass obj => obj -> DOMWindow
-castToDOMWindow = castTo gTypeDOMWindow "DOMWindow"
-
-foreign import javascript unsafe "window[\"DOMWindow\"]" gTypeDOMWindow' :: JSRef GType
-gTypeDOMWindow = GType gTypeDOMWindow'
-#else
-type IsDOMWindow o = DOMWindowClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMWindowCSS = DOMWindowCSS (JSRef DOMWindowCSS)
-
-unDOMWindowCSS (DOMWindowCSS o) = o
-
-instance ToJSRef DOMWindowCSS where
-  toJSRef = return . unDOMWindowCSS
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMWindowCSS where
-  fromJSRef = return . fmap DOMWindowCSS . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMWindowCSS o
-toDOMWindowCSS :: IsDOMWindowCSS o => o -> DOMWindowCSS
-toDOMWindowCSS = unsafeCastGObject . toGObject
-
-instance IsDOMWindowCSS DOMWindowCSS
-instance GObjectClass DOMWindowCSS where
-  toGObject = GObject . castRef . unDOMWindowCSS
-  unsafeCastGObject = DOMWindowCSS . castRef . unGObject
-
-castToDOMWindowCSS :: GObjectClass obj => obj -> DOMWindowCSS
-castToDOMWindowCSS = castTo gTypeDOMWindowCSS "DOMWindowCSS"
-
-foreign import javascript unsafe "window[\"DOMWindowCSS\"]" gTypeDOMWindowCSS' :: JSRef GType
-gTypeDOMWindowCSS = GType gTypeDOMWindowCSS'
-#else
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Document = Document (JSRef Document)
-
-unDocument (Document o) = o
-
-instance ToJSRef Document where
-  toJSRef = return . unDocument
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Document where
-  fromJSRef = return . fmap Document . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsNode o => IsDocument o
-toDocument :: IsDocument o => o -> Document
-toDocument = unsafeCastGObject . toGObject
-
-instance IsDocument Document
-instance IsNode Document
-instance GObjectClass Document where
-  toGObject = GObject . castRef . unDocument
-  unsafeCastGObject = Document . castRef . unGObject
-
-castToDocument :: GObjectClass obj => obj -> Document
-castToDocument = castTo gTypeDocument "Document"
-
-foreign import javascript unsafe "window[\"Document\"]" gTypeDocument' :: JSRef GType
-gTypeDocument = GType gTypeDocument'
-#else
-type IsDocument o = DocumentClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DocumentFragment = DocumentFragment (JSRef DocumentFragment)
-
-unDocumentFragment (DocumentFragment o) = o
-
-instance ToJSRef DocumentFragment where
-  toJSRef = return . unDocumentFragment
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DocumentFragment where
-  fromJSRef = return . fmap DocumentFragment . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsNode o => IsDocumentFragment o
-toDocumentFragment :: IsDocumentFragment o => o -> DocumentFragment
-toDocumentFragment = unsafeCastGObject . toGObject
-
-instance IsDocumentFragment DocumentFragment
-instance IsNode DocumentFragment
-instance GObjectClass DocumentFragment where
-  toGObject = GObject . castRef . unDocumentFragment
-  unsafeCastGObject = DocumentFragment . castRef . unGObject
-
-castToDocumentFragment :: GObjectClass obj => obj -> DocumentFragment
-castToDocumentFragment = castTo gTypeDocumentFragment "DocumentFragment"
-
-foreign import javascript unsafe "window[\"DocumentFragment\"]" gTypeDocumentFragment' :: JSRef GType
-gTypeDocumentFragment = GType gTypeDocumentFragment'
-#else
-type IsDocumentFragment o = DocumentFragmentClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DocumentType = DocumentType (JSRef DocumentType)
-
-unDocumentType (DocumentType o) = o
-
-instance ToJSRef DocumentType where
-  toJSRef = return . unDocumentType
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DocumentType where
-  fromJSRef = return . fmap DocumentType . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsNode o => IsDocumentType o
-toDocumentType :: IsDocumentType o => o -> DocumentType
-toDocumentType = unsafeCastGObject . toGObject
-
-instance IsDocumentType DocumentType
-instance IsNode DocumentType
-instance GObjectClass DocumentType where
-  toGObject = GObject . castRef . unDocumentType
-  unsafeCastGObject = DocumentType . castRef . unGObject
-
-castToDocumentType :: GObjectClass obj => obj -> DocumentType
-castToDocumentType = castTo gTypeDocumentType "DocumentType"
-
-foreign import javascript unsafe "window[\"DocumentType\"]" gTypeDocumentType' :: JSRef GType
-gTypeDocumentType = GType gTypeDocumentType'
-#else
-type IsDocumentType o = DocumentTypeClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Element = Element (JSRef Element)
-
-unElement (Element o) = o
-
-instance ToJSRef Element where
-  toJSRef = return . unElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Element where
-  fromJSRef = return . fmap Element . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsNode o => IsElement o
-toElement :: IsElement o => o -> Element
-toElement = unsafeCastGObject . toGObject
-
-instance IsElement Element
-instance IsNode Element
-instance GObjectClass Element where
-  toGObject = GObject . castRef . unElement
-  unsafeCastGObject = Element . castRef . unGObject
-
-castToElement :: GObjectClass obj => obj -> Element
-castToElement = castTo gTypeElement "Element"
-
-foreign import javascript unsafe "window[\"Element\"]" gTypeElement' :: JSRef GType
-gTypeElement = GType gTypeElement'
-#else
-type IsElement o = ElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype EntityReference = EntityReference (JSRef EntityReference)
-
-unEntityReference (EntityReference o) = o
-
-instance ToJSRef EntityReference where
-  toJSRef = return . unEntityReference
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef EntityReference where
-  fromJSRef = return . fmap EntityReference . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsNode o => IsEntityReference o
-toEntityReference :: IsEntityReference o => o -> EntityReference
-toEntityReference = unsafeCastGObject . toGObject
-
-instance IsEntityReference EntityReference
-instance IsNode EntityReference
-instance GObjectClass EntityReference where
-  toGObject = GObject . castRef . unEntityReference
-  unsafeCastGObject = EntityReference . castRef . unGObject
-
-castToEntityReference :: GObjectClass obj => obj -> EntityReference
-castToEntityReference = castTo gTypeEntityReference "EntityReference"
-
-foreign import javascript unsafe "window[\"EntityReference\"]" gTypeEntityReference' :: JSRef GType
-gTypeEntityReference = GType gTypeEntityReference'
-#else
-type IsEntityReference o = EntityReferenceClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Event = Event (JSRef Event)
-
-unEvent (Event o) = o
-
-instance ToJSRef Event where
-  toJSRef = return . unEvent
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Event where
-  fromJSRef = return . fmap Event . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsEvent o
-toEvent :: IsEvent o => o -> Event
-toEvent = unsafeCastGObject . toGObject
-
-instance IsEvent Event
-instance GObjectClass Event where
-  toGObject = GObject . castRef . unEvent
-  unsafeCastGObject = Event . castRef . unGObject
-
-castToEvent :: GObjectClass obj => obj -> Event
-castToEvent = castTo gTypeEvent "Event"
-
-foreign import javascript unsafe "window[\"Event\"]" gTypeEvent' :: JSRef GType
-gTypeEvent = GType gTypeEvent'
-#else
-type IsEvent o = EventClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype EventTarget = EventTarget (JSRef EventTarget)
-
-unEventTarget (EventTarget o) = o
-
-instance ToJSRef EventTarget where
-  toJSRef = return . unEventTarget
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef EventTarget where
-  fromJSRef = return . fmap EventTarget . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsEventTarget o
-toEventTarget :: IsEventTarget o => o -> EventTarget
-toEventTarget = unsafeCastGObject . toGObject
-
-instance IsEventTarget EventTarget
-instance GObjectClass EventTarget where
-  toGObject = GObject . castRef . unEventTarget
-  unsafeCastGObject = EventTarget . castRef . unGObject
-
-castToEventTarget :: GObjectClass obj => obj -> EventTarget
-castToEventTarget = castTo gTypeEventTarget "EventTarget"
-
-foreign import javascript unsafe "window[\"EventTarget\"]" gTypeEventTarget' :: JSRef GType
-gTypeEventTarget = GType gTypeEventTarget'
-#else
-type IsEventTarget o = EventTargetClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype File = File (JSRef File)
-
-unFile (File o) = o
-
-instance ToJSRef File where
-  toJSRef = return . unFile
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef File where
-  fromJSRef = return . fmap File . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsBlob o => IsFile o
-toFile :: IsFile o => o -> File
-toFile = unsafeCastGObject . toGObject
-
-instance IsFile File
-instance IsBlob File
-instance GObjectClass File where
-  toGObject = GObject . castRef . unFile
-  unsafeCastGObject = File . castRef . unGObject
-
-castToFile :: GObjectClass obj => obj -> File
-castToFile = castTo gTypeFile "File"
-
-foreign import javascript unsafe "window[\"File\"]" gTypeFile' :: JSRef GType
-gTypeFile = GType gTypeFile'
-#else
-type IsFile o = FileClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype FileList = FileList (JSRef FileList)
-
-unFileList (FileList o) = o
-
-instance ToJSRef FileList where
-  toJSRef = return . unFileList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef FileList where
-  fromJSRef = return . fmap FileList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsFileList o
-toFileList :: IsFileList o => o -> FileList
-toFileList = unsafeCastGObject . toGObject
-
-instance IsFileList FileList
-instance GObjectClass FileList where
-  toGObject = GObject . castRef . unFileList
-  unsafeCastGObject = FileList . castRef . unGObject
-
-castToFileList :: GObjectClass obj => obj -> FileList
-castToFileList = castTo gTypeFileList "FileList"
-
-foreign import javascript unsafe "window[\"FileList\"]" gTypeFileList' :: JSRef GType
-gTypeFileList = GType gTypeFileList'
-#else
-type IsFileList o = FileListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Geolocation = Geolocation (JSRef Geolocation)
-
-unGeolocation (Geolocation o) = o
-
-instance ToJSRef Geolocation where
-  toJSRef = return . unGeolocation
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Geolocation where
-  fromJSRef = return . fmap Geolocation . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsGeolocation o
-toGeolocation :: IsGeolocation o => o -> Geolocation
-toGeolocation = unsafeCastGObject . toGObject
-
-instance IsGeolocation Geolocation
-instance GObjectClass Geolocation where
-  toGObject = GObject . castRef . unGeolocation
-  unsafeCastGObject = Geolocation . castRef . unGObject
-
-castToGeolocation :: GObjectClass obj => obj -> Geolocation
-castToGeolocation = castTo gTypeGeolocation "Geolocation"
-
-foreign import javascript unsafe "window[\"Geolocation\"]" gTypeGeolocation' :: JSRef GType
-gTypeGeolocation = GType gTypeGeolocation'
-#else
-type IsGeolocation o = GeolocationClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLAnchorElement = HTMLAnchorElement (JSRef HTMLAnchorElement)
-
-unHTMLAnchorElement (HTMLAnchorElement o) = o
-
-instance ToJSRef HTMLAnchorElement where
-  toJSRef = return . unHTMLAnchorElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLAnchorElement where
-  fromJSRef = return . fmap HTMLAnchorElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLAnchorElement o
-toHTMLAnchorElement :: IsHTMLAnchorElement o => o -> HTMLAnchorElement
-toHTMLAnchorElement = unsafeCastGObject . toGObject
-
-instance IsHTMLAnchorElement HTMLAnchorElement
-instance IsHTMLElement HTMLAnchorElement
-instance IsElement HTMLAnchorElement
-instance IsNode HTMLAnchorElement
-instance GObjectClass HTMLAnchorElement where
-  toGObject = GObject . castRef . unHTMLAnchorElement
-  unsafeCastGObject = HTMLAnchorElement . castRef . unGObject
-
-castToHTMLAnchorElement :: GObjectClass obj => obj -> HTMLAnchorElement
-castToHTMLAnchorElement = castTo gTypeHTMLAnchorElement "HTMLAnchorElement"
-
-foreign import javascript unsafe "window[\"HTMLAnchorElement\"]" gTypeHTMLAnchorElement' :: JSRef GType
-gTypeHTMLAnchorElement = GType gTypeHTMLAnchorElement'
-#else
-type IsHTMLAnchorElement o = HTMLAnchorElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLAppletElement = HTMLAppletElement (JSRef HTMLAppletElement)
-
-unHTMLAppletElement (HTMLAppletElement o) = o
-
-instance ToJSRef HTMLAppletElement where
-  toJSRef = return . unHTMLAppletElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLAppletElement where
-  fromJSRef = return . fmap HTMLAppletElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLAppletElement o
-toHTMLAppletElement :: IsHTMLAppletElement o => o -> HTMLAppletElement
-toHTMLAppletElement = unsafeCastGObject . toGObject
-
-instance IsHTMLAppletElement HTMLAppletElement
-instance IsHTMLElement HTMLAppletElement
-instance IsElement HTMLAppletElement
-instance IsNode HTMLAppletElement
-instance GObjectClass HTMLAppletElement where
-  toGObject = GObject . castRef . unHTMLAppletElement
-  unsafeCastGObject = HTMLAppletElement . castRef . unGObject
-
-castToHTMLAppletElement :: GObjectClass obj => obj -> HTMLAppletElement
-castToHTMLAppletElement = castTo gTypeHTMLAppletElement "HTMLAppletElement"
-
-foreign import javascript unsafe "window[\"HTMLAppletElement\"]" gTypeHTMLAppletElement' :: JSRef GType
-gTypeHTMLAppletElement = GType gTypeHTMLAppletElement'
-#else
-type IsHTMLAppletElement o = HTMLAppletElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLAreaElement = HTMLAreaElement (JSRef HTMLAreaElement)
-
-unHTMLAreaElement (HTMLAreaElement o) = o
-
-instance ToJSRef HTMLAreaElement where
-  toJSRef = return . unHTMLAreaElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLAreaElement where
-  fromJSRef = return . fmap HTMLAreaElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLAreaElement o
-toHTMLAreaElement :: IsHTMLAreaElement o => o -> HTMLAreaElement
-toHTMLAreaElement = unsafeCastGObject . toGObject
-
-instance IsHTMLAreaElement HTMLAreaElement
-instance IsHTMLElement HTMLAreaElement
-instance IsElement HTMLAreaElement
-instance IsNode HTMLAreaElement
-instance GObjectClass HTMLAreaElement where
-  toGObject = GObject . castRef . unHTMLAreaElement
-  unsafeCastGObject = HTMLAreaElement . castRef . unGObject
-
-castToHTMLAreaElement :: GObjectClass obj => obj -> HTMLAreaElement
-castToHTMLAreaElement = castTo gTypeHTMLAreaElement "HTMLAreaElement"
-
-foreign import javascript unsafe "window[\"HTMLAreaElement\"]" gTypeHTMLAreaElement' :: JSRef GType
-gTypeHTMLAreaElement = GType gTypeHTMLAreaElement'
-#else
-type IsHTMLAreaElement o = HTMLAreaElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLAudioElement = HTMLAudioElement (JSRef HTMLAudioElement)
-
-unHTMLAudioElement (HTMLAudioElement o) = o
-
-instance ToJSRef HTMLAudioElement where
-  toJSRef = return . unHTMLAudioElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLAudioElement where
-  fromJSRef = return . fmap HTMLAudioElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLMediaElement o => IsHTMLAudioElement o
-toHTMLAudioElement :: IsHTMLAudioElement o => o -> HTMLAudioElement
-toHTMLAudioElement = unsafeCastGObject . toGObject
-
-instance IsHTMLAudioElement HTMLAudioElement
-instance IsHTMLMediaElement HTMLAudioElement
-instance IsHTMLElement HTMLAudioElement
-instance IsElement HTMLAudioElement
-instance IsNode HTMLAudioElement
-instance GObjectClass HTMLAudioElement where
-  toGObject = GObject . castRef . unHTMLAudioElement
-  unsafeCastGObject = HTMLAudioElement . castRef . unGObject
-
-castToHTMLAudioElement :: GObjectClass obj => obj -> HTMLAudioElement
-castToHTMLAudioElement = castTo gTypeHTMLAudioElement "HTMLAudioElement"
-
-foreign import javascript unsafe "window[\"HTMLAudioElement\"]" gTypeHTMLAudioElement' :: JSRef GType
-gTypeHTMLAudioElement = GType gTypeHTMLAudioElement'
-#else
-type IsHTMLAudioElement o = HTMLAudioElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLBRElement = HTMLBRElement (JSRef HTMLBRElement)
-
-unHTMLBRElement (HTMLBRElement o) = o
-
-instance ToJSRef HTMLBRElement where
-  toJSRef = return . unHTMLBRElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLBRElement where
-  fromJSRef = return . fmap HTMLBRElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLBRElement o
-toHTMLBRElement :: IsHTMLBRElement o => o -> HTMLBRElement
-toHTMLBRElement = unsafeCastGObject . toGObject
-
-instance IsHTMLBRElement HTMLBRElement
-instance IsHTMLElement HTMLBRElement
-instance IsElement HTMLBRElement
-instance IsNode HTMLBRElement
-instance GObjectClass HTMLBRElement where
-  toGObject = GObject . castRef . unHTMLBRElement
-  unsafeCastGObject = HTMLBRElement . castRef . unGObject
-
-castToHTMLBRElement :: GObjectClass obj => obj -> HTMLBRElement
-castToHTMLBRElement = castTo gTypeHTMLBRElement "HTMLBRElement"
-
-foreign import javascript unsafe "window[\"HTMLBRElement\"]" gTypeHTMLBRElement' :: JSRef GType
-gTypeHTMLBRElement = GType gTypeHTMLBRElement'
-#else
-type IsHTMLBRElement o = HTMLBRElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLBaseElement = HTMLBaseElement (JSRef HTMLBaseElement)
-
-unHTMLBaseElement (HTMLBaseElement o) = o
-
-instance ToJSRef HTMLBaseElement where
-  toJSRef = return . unHTMLBaseElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLBaseElement where
-  fromJSRef = return . fmap HTMLBaseElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLBaseElement o
-toHTMLBaseElement :: IsHTMLBaseElement o => o -> HTMLBaseElement
-toHTMLBaseElement = unsafeCastGObject . toGObject
-
-instance IsHTMLBaseElement HTMLBaseElement
-instance IsHTMLElement HTMLBaseElement
-instance IsElement HTMLBaseElement
-instance IsNode HTMLBaseElement
-instance GObjectClass HTMLBaseElement where
-  toGObject = GObject . castRef . unHTMLBaseElement
-  unsafeCastGObject = HTMLBaseElement . castRef . unGObject
-
-castToHTMLBaseElement :: GObjectClass obj => obj -> HTMLBaseElement
-castToHTMLBaseElement = castTo gTypeHTMLBaseElement "HTMLBaseElement"
-
-foreign import javascript unsafe "window[\"HTMLBaseElement\"]" gTypeHTMLBaseElement' :: JSRef GType
-gTypeHTMLBaseElement = GType gTypeHTMLBaseElement'
-#else
-type IsHTMLBaseElement o = HTMLBaseElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLBaseFontElement = HTMLBaseFontElement (JSRef HTMLBaseFontElement)
-
-unHTMLBaseFontElement (HTMLBaseFontElement o) = o
-
-instance ToJSRef HTMLBaseFontElement where
-  toJSRef = return . unHTMLBaseFontElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLBaseFontElement where
-  fromJSRef = return . fmap HTMLBaseFontElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLBaseFontElement o
-toHTMLBaseFontElement :: IsHTMLBaseFontElement o => o -> HTMLBaseFontElement
-toHTMLBaseFontElement = unsafeCastGObject . toGObject
-
-instance IsHTMLBaseFontElement HTMLBaseFontElement
-instance IsHTMLElement HTMLBaseFontElement
-instance IsElement HTMLBaseFontElement
-instance IsNode HTMLBaseFontElement
-instance GObjectClass HTMLBaseFontElement where
-  toGObject = GObject . castRef . unHTMLBaseFontElement
-  unsafeCastGObject = HTMLBaseFontElement . castRef . unGObject
-
-castToHTMLBaseFontElement :: GObjectClass obj => obj -> HTMLBaseFontElement
-castToHTMLBaseFontElement = castTo gTypeHTMLBaseFontElement "HTMLBaseFontElement"
-
-foreign import javascript unsafe "window[\"HTMLBaseFontElement\"]" gTypeHTMLBaseFontElement' :: JSRef GType
-gTypeHTMLBaseFontElement = GType gTypeHTMLBaseFontElement'
-#else
-type IsHTMLBaseFontElement o = HTMLBaseFontElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLBodyElement = HTMLBodyElement (JSRef HTMLBodyElement)
-
-unHTMLBodyElement (HTMLBodyElement o) = o
-
-instance ToJSRef HTMLBodyElement where
-  toJSRef = return . unHTMLBodyElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLBodyElement where
-  fromJSRef = return . fmap HTMLBodyElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLBodyElement o
-toHTMLBodyElement :: IsHTMLBodyElement o => o -> HTMLBodyElement
-toHTMLBodyElement = unsafeCastGObject . toGObject
-
-instance IsHTMLBodyElement HTMLBodyElement
-instance IsHTMLElement HTMLBodyElement
-instance IsElement HTMLBodyElement
-instance IsNode HTMLBodyElement
-instance GObjectClass HTMLBodyElement where
-  toGObject = GObject . castRef . unHTMLBodyElement
-  unsafeCastGObject = HTMLBodyElement . castRef . unGObject
-
-castToHTMLBodyElement :: GObjectClass obj => obj -> HTMLBodyElement
-castToHTMLBodyElement = castTo gTypeHTMLBodyElement "HTMLBodyElement"
-
-foreign import javascript unsafe "window[\"HTMLBodyElement\"]" gTypeHTMLBodyElement' :: JSRef GType
-gTypeHTMLBodyElement = GType gTypeHTMLBodyElement'
-#else
-type IsHTMLBodyElement o = HTMLBodyElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLButtonElement = HTMLButtonElement (JSRef HTMLButtonElement)
-
-unHTMLButtonElement (HTMLButtonElement o) = o
-
-instance ToJSRef HTMLButtonElement where
-  toJSRef = return . unHTMLButtonElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLButtonElement where
-  fromJSRef = return . fmap HTMLButtonElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLButtonElement o
-toHTMLButtonElement :: IsHTMLButtonElement o => o -> HTMLButtonElement
-toHTMLButtonElement = unsafeCastGObject . toGObject
-
-instance IsHTMLButtonElement HTMLButtonElement
-instance IsHTMLElement HTMLButtonElement
-instance IsElement HTMLButtonElement
-instance IsNode HTMLButtonElement
-instance GObjectClass HTMLButtonElement where
-  toGObject = GObject . castRef . unHTMLButtonElement
-  unsafeCastGObject = HTMLButtonElement . castRef . unGObject
-
-castToHTMLButtonElement :: GObjectClass obj => obj -> HTMLButtonElement
-castToHTMLButtonElement = castTo gTypeHTMLButtonElement "HTMLButtonElement"
-
-foreign import javascript unsafe "window[\"HTMLButtonElement\"]" gTypeHTMLButtonElement' :: JSRef GType
-gTypeHTMLButtonElement = GType gTypeHTMLButtonElement'
-#else
-type IsHTMLButtonElement o = HTMLButtonElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLCanvasElement = HTMLCanvasElement (JSRef HTMLCanvasElement)
-
-unHTMLCanvasElement (HTMLCanvasElement o) = o
-
-instance ToJSRef HTMLCanvasElement where
-  toJSRef = return . unHTMLCanvasElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLCanvasElement where
-  fromJSRef = return . fmap HTMLCanvasElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLCanvasElement o
-toHTMLCanvasElement :: IsHTMLCanvasElement o => o -> HTMLCanvasElement
-toHTMLCanvasElement = unsafeCastGObject . toGObject
-
-instance IsHTMLCanvasElement HTMLCanvasElement
-instance IsHTMLElement HTMLCanvasElement
-instance IsElement HTMLCanvasElement
-instance IsNode HTMLCanvasElement
-instance GObjectClass HTMLCanvasElement where
-  toGObject = GObject . castRef . unHTMLCanvasElement
-  unsafeCastGObject = HTMLCanvasElement . castRef . unGObject
-
-castToHTMLCanvasElement :: GObjectClass obj => obj -> HTMLCanvasElement
-castToHTMLCanvasElement = castTo gTypeHTMLCanvasElement "HTMLCanvasElement"
-
-foreign import javascript unsafe "window[\"HTMLCanvasElement\"]" gTypeHTMLCanvasElement' :: JSRef GType
-gTypeHTMLCanvasElement = GType gTypeHTMLCanvasElement'
-#else
-type IsHTMLCanvasElement o = HTMLCanvasElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLCollection = HTMLCollection (JSRef HTMLCollection)
-
-unHTMLCollection (HTMLCollection o) = o
-
-instance ToJSRef HTMLCollection where
-  toJSRef = return . unHTMLCollection
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLCollection where
-  fromJSRef = return . fmap HTMLCollection . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsHTMLCollection o
-toHTMLCollection :: IsHTMLCollection o => o -> HTMLCollection
-toHTMLCollection = unsafeCastGObject . toGObject
-
-instance IsHTMLCollection HTMLCollection
-instance GObjectClass HTMLCollection where
-  toGObject = GObject . castRef . unHTMLCollection
-  unsafeCastGObject = HTMLCollection . castRef . unGObject
-
-castToHTMLCollection :: GObjectClass obj => obj -> HTMLCollection
-castToHTMLCollection = castTo gTypeHTMLCollection "HTMLCollection"
-
-foreign import javascript unsafe "window[\"HTMLCollection\"]" gTypeHTMLCollection' :: JSRef GType
-gTypeHTMLCollection = GType gTypeHTMLCollection'
-#else
-type IsHTMLCollection o = HTMLCollectionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLDListElement = HTMLDListElement (JSRef HTMLDListElement)
-
-unHTMLDListElement (HTMLDListElement o) = o
-
-instance ToJSRef HTMLDListElement where
-  toJSRef = return . unHTMLDListElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLDListElement where
-  fromJSRef = return . fmap HTMLDListElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLDListElement o
-toHTMLDListElement :: IsHTMLDListElement o => o -> HTMLDListElement
-toHTMLDListElement = unsafeCastGObject . toGObject
-
-instance IsHTMLDListElement HTMLDListElement
-instance IsHTMLElement HTMLDListElement
-instance IsElement HTMLDListElement
-instance IsNode HTMLDListElement
-instance GObjectClass HTMLDListElement where
-  toGObject = GObject . castRef . unHTMLDListElement
-  unsafeCastGObject = HTMLDListElement . castRef . unGObject
-
-castToHTMLDListElement :: GObjectClass obj => obj -> HTMLDListElement
-castToHTMLDListElement = castTo gTypeHTMLDListElement "HTMLDListElement"
-
-foreign import javascript unsafe "window[\"HTMLDListElement\"]" gTypeHTMLDListElement' :: JSRef GType
-gTypeHTMLDListElement = GType gTypeHTMLDListElement'
-#else
-type IsHTMLDListElement o = HTMLDListElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLDetailsElement = HTMLDetailsElement (JSRef HTMLDetailsElement)
-
-unHTMLDetailsElement (HTMLDetailsElement o) = o
-
-instance ToJSRef HTMLDetailsElement where
-  toJSRef = return . unHTMLDetailsElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLDetailsElement where
-  fromJSRef = return . fmap HTMLDetailsElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLDetailsElement o
-toHTMLDetailsElement :: IsHTMLDetailsElement o => o -> HTMLDetailsElement
-toHTMLDetailsElement = unsafeCastGObject . toGObject
-
-instance IsHTMLDetailsElement HTMLDetailsElement
-instance IsHTMLElement HTMLDetailsElement
-instance IsElement HTMLDetailsElement
-instance IsNode HTMLDetailsElement
-instance GObjectClass HTMLDetailsElement where
-  toGObject = GObject . castRef . unHTMLDetailsElement
-  unsafeCastGObject = HTMLDetailsElement . castRef . unGObject
-
-castToHTMLDetailsElement :: GObjectClass obj => obj -> HTMLDetailsElement
-castToHTMLDetailsElement = castTo gTypeHTMLDetailsElement "HTMLDetailsElement"
-
-foreign import javascript unsafe "window[\"HTMLDetailsElement\"]" gTypeHTMLDetailsElement' :: JSRef GType
-gTypeHTMLDetailsElement = GType gTypeHTMLDetailsElement'
-#else
-type IsHTMLDetailsElement o = HTMLDetailsElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLDirectoryElement = HTMLDirectoryElement (JSRef HTMLDirectoryElement)
-
-unHTMLDirectoryElement (HTMLDirectoryElement o) = o
-
-instance ToJSRef HTMLDirectoryElement where
-  toJSRef = return . unHTMLDirectoryElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLDirectoryElement where
-  fromJSRef = return . fmap HTMLDirectoryElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLDirectoryElement o
-toHTMLDirectoryElement :: IsHTMLDirectoryElement o => o -> HTMLDirectoryElement
-toHTMLDirectoryElement = unsafeCastGObject . toGObject
-
-instance IsHTMLDirectoryElement HTMLDirectoryElement
-instance IsHTMLElement HTMLDirectoryElement
-instance IsElement HTMLDirectoryElement
-instance IsNode HTMLDirectoryElement
-instance GObjectClass HTMLDirectoryElement where
-  toGObject = GObject . castRef . unHTMLDirectoryElement
-  unsafeCastGObject = HTMLDirectoryElement . castRef . unGObject
-
-castToHTMLDirectoryElement :: GObjectClass obj => obj -> HTMLDirectoryElement
-castToHTMLDirectoryElement = castTo gTypeHTMLDirectoryElement "HTMLDirectoryElement"
-
-foreign import javascript unsafe "window[\"HTMLDirectoryElement\"]" gTypeHTMLDirectoryElement' :: JSRef GType
-gTypeHTMLDirectoryElement = GType gTypeHTMLDirectoryElement'
-#else
-type IsHTMLDirectoryElement o = HTMLDirectoryElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLDivElement = HTMLDivElement (JSRef HTMLDivElement)
-
-unHTMLDivElement (HTMLDivElement o) = o
-
-instance ToJSRef HTMLDivElement where
-  toJSRef = return . unHTMLDivElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLDivElement where
-  fromJSRef = return . fmap HTMLDivElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLDivElement o
-toHTMLDivElement :: IsHTMLDivElement o => o -> HTMLDivElement
-toHTMLDivElement = unsafeCastGObject . toGObject
-
-instance IsHTMLDivElement HTMLDivElement
-instance IsHTMLElement HTMLDivElement
-instance IsElement HTMLDivElement
-instance IsNode HTMLDivElement
-instance GObjectClass HTMLDivElement where
-  toGObject = GObject . castRef . unHTMLDivElement
-  unsafeCastGObject = HTMLDivElement . castRef . unGObject
-
-castToHTMLDivElement :: GObjectClass obj => obj -> HTMLDivElement
-castToHTMLDivElement = castTo gTypeHTMLDivElement "HTMLDivElement"
-
-foreign import javascript unsafe "window[\"HTMLDivElement\"]" gTypeHTMLDivElement' :: JSRef GType
-gTypeHTMLDivElement = GType gTypeHTMLDivElement'
-#else
-type IsHTMLDivElement o = HTMLDivElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLDocument = HTMLDocument (JSRef HTMLDocument)
-
-unHTMLDocument (HTMLDocument o) = o
-
-instance ToJSRef HTMLDocument where
-  toJSRef = return . unHTMLDocument
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLDocument where
-  fromJSRef = return . fmap HTMLDocument . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsDocument o => IsHTMLDocument o
-toHTMLDocument :: IsHTMLDocument o => o -> HTMLDocument
-toHTMLDocument = unsafeCastGObject . toGObject
-
-instance IsHTMLDocument HTMLDocument
-instance IsDocument HTMLDocument
-instance IsNode HTMLDocument
-instance GObjectClass HTMLDocument where
-  toGObject = GObject . castRef . unHTMLDocument
-  unsafeCastGObject = HTMLDocument . castRef . unGObject
-
-castToHTMLDocument :: GObjectClass obj => obj -> HTMLDocument
-castToHTMLDocument = castTo gTypeHTMLDocument "HTMLDocument"
-
-foreign import javascript unsafe "window[\"HTMLDocument\"]" gTypeHTMLDocument' :: JSRef GType
-gTypeHTMLDocument = GType gTypeHTMLDocument'
-#else
-type IsHTMLDocument o = HTMLDocumentClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLElement = HTMLElement (JSRef HTMLElement)
-
-unHTMLElement (HTMLElement o) = o
-
-instance ToJSRef HTMLElement where
-  toJSRef = return . unHTMLElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLElement where
-  fromJSRef = return . fmap HTMLElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsElement o => IsHTMLElement o
-toHTMLElement :: IsHTMLElement o => o -> HTMLElement
-toHTMLElement = unsafeCastGObject . toGObject
-
-instance IsHTMLElement HTMLElement
-instance IsElement HTMLElement
-instance IsNode HTMLElement
-instance GObjectClass HTMLElement where
-  toGObject = GObject . castRef . unHTMLElement
-  unsafeCastGObject = HTMLElement . castRef . unGObject
-
-castToHTMLElement :: GObjectClass obj => obj -> HTMLElement
-castToHTMLElement = castTo gTypeHTMLElement "HTMLElement"
-
-foreign import javascript unsafe "window[\"HTMLElement\"]" gTypeHTMLElement' :: JSRef GType
-gTypeHTMLElement = GType gTypeHTMLElement'
-#else
-type IsHTMLElement o = HTMLElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLEmbedElement = HTMLEmbedElement (JSRef HTMLEmbedElement)
-
-unHTMLEmbedElement (HTMLEmbedElement o) = o
-
-instance ToJSRef HTMLEmbedElement where
-  toJSRef = return . unHTMLEmbedElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLEmbedElement where
-  fromJSRef = return . fmap HTMLEmbedElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLEmbedElement o
-toHTMLEmbedElement :: IsHTMLEmbedElement o => o -> HTMLEmbedElement
-toHTMLEmbedElement = unsafeCastGObject . toGObject
-
-instance IsHTMLEmbedElement HTMLEmbedElement
-instance IsHTMLElement HTMLEmbedElement
-instance IsElement HTMLEmbedElement
-instance IsNode HTMLEmbedElement
-instance GObjectClass HTMLEmbedElement where
-  toGObject = GObject . castRef . unHTMLEmbedElement
-  unsafeCastGObject = HTMLEmbedElement . castRef . unGObject
-
-castToHTMLEmbedElement :: GObjectClass obj => obj -> HTMLEmbedElement
-castToHTMLEmbedElement = castTo gTypeHTMLEmbedElement "HTMLEmbedElement"
-
-foreign import javascript unsafe "window[\"HTMLEmbedElement\"]" gTypeHTMLEmbedElement' :: JSRef GType
-gTypeHTMLEmbedElement = GType gTypeHTMLEmbedElement'
-#else
-type IsHTMLEmbedElement o = HTMLEmbedElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLFieldSetElement = HTMLFieldSetElement (JSRef HTMLFieldSetElement)
-
-unHTMLFieldSetElement (HTMLFieldSetElement o) = o
-
-instance ToJSRef HTMLFieldSetElement where
-  toJSRef = return . unHTMLFieldSetElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLFieldSetElement where
-  fromJSRef = return . fmap HTMLFieldSetElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLFieldSetElement o
-toHTMLFieldSetElement :: IsHTMLFieldSetElement o => o -> HTMLFieldSetElement
-toHTMLFieldSetElement = unsafeCastGObject . toGObject
-
-instance IsHTMLFieldSetElement HTMLFieldSetElement
-instance IsHTMLElement HTMLFieldSetElement
-instance IsElement HTMLFieldSetElement
-instance IsNode HTMLFieldSetElement
-instance GObjectClass HTMLFieldSetElement where
-  toGObject = GObject . castRef . unHTMLFieldSetElement
-  unsafeCastGObject = HTMLFieldSetElement . castRef . unGObject
-
-castToHTMLFieldSetElement :: GObjectClass obj => obj -> HTMLFieldSetElement
-castToHTMLFieldSetElement = castTo gTypeHTMLFieldSetElement "HTMLFieldSetElement"
-
-foreign import javascript unsafe "window[\"HTMLFieldSetElement\"]" gTypeHTMLFieldSetElement' :: JSRef GType
-gTypeHTMLFieldSetElement = GType gTypeHTMLFieldSetElement'
-#else
-type IsHTMLFieldSetElement o = HTMLFieldSetElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLFontElement = HTMLFontElement (JSRef HTMLFontElement)
-
-unHTMLFontElement (HTMLFontElement o) = o
-
-instance ToJSRef HTMLFontElement where
-  toJSRef = return . unHTMLFontElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLFontElement where
-  fromJSRef = return . fmap HTMLFontElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLFontElement o
-toHTMLFontElement :: IsHTMLFontElement o => o -> HTMLFontElement
-toHTMLFontElement = unsafeCastGObject . toGObject
-
-instance IsHTMLFontElement HTMLFontElement
-instance IsHTMLElement HTMLFontElement
-instance IsElement HTMLFontElement
-instance IsNode HTMLFontElement
-instance GObjectClass HTMLFontElement where
-  toGObject = GObject . castRef . unHTMLFontElement
-  unsafeCastGObject = HTMLFontElement . castRef . unGObject
-
-castToHTMLFontElement :: GObjectClass obj => obj -> HTMLFontElement
-castToHTMLFontElement = castTo gTypeHTMLFontElement "HTMLFontElement"
-
-foreign import javascript unsafe "window[\"HTMLFontElement\"]" gTypeHTMLFontElement' :: JSRef GType
-gTypeHTMLFontElement = GType gTypeHTMLFontElement'
-#else
-type IsHTMLFontElement o = HTMLFontElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLFormElement = HTMLFormElement (JSRef HTMLFormElement)
-
-unHTMLFormElement (HTMLFormElement o) = o
-
-instance ToJSRef HTMLFormElement where
-  toJSRef = return . unHTMLFormElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLFormElement where
-  fromJSRef = return . fmap HTMLFormElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLFormElement o
-toHTMLFormElement :: IsHTMLFormElement o => o -> HTMLFormElement
-toHTMLFormElement = unsafeCastGObject . toGObject
-
-instance IsHTMLFormElement HTMLFormElement
-instance IsHTMLElement HTMLFormElement
-instance IsElement HTMLFormElement
-instance IsNode HTMLFormElement
-instance GObjectClass HTMLFormElement where
-  toGObject = GObject . castRef . unHTMLFormElement
-  unsafeCastGObject = HTMLFormElement . castRef . unGObject
-
-castToHTMLFormElement :: GObjectClass obj => obj -> HTMLFormElement
-castToHTMLFormElement = castTo gTypeHTMLFormElement "HTMLFormElement"
-
-foreign import javascript unsafe "window[\"HTMLFormElement\"]" gTypeHTMLFormElement' :: JSRef GType
-gTypeHTMLFormElement = GType gTypeHTMLFormElement'
-#else
-type IsHTMLFormElement o = HTMLFormElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLFrameElement = HTMLFrameElement (JSRef HTMLFrameElement)
-
-unHTMLFrameElement (HTMLFrameElement o) = o
-
-instance ToJSRef HTMLFrameElement where
-  toJSRef = return . unHTMLFrameElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLFrameElement where
-  fromJSRef = return . fmap HTMLFrameElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLFrameElement o
-toHTMLFrameElement :: IsHTMLFrameElement o => o -> HTMLFrameElement
-toHTMLFrameElement = unsafeCastGObject . toGObject
-
-instance IsHTMLFrameElement HTMLFrameElement
-instance IsHTMLElement HTMLFrameElement
-instance IsElement HTMLFrameElement
-instance IsNode HTMLFrameElement
-instance GObjectClass HTMLFrameElement where
-  toGObject = GObject . castRef . unHTMLFrameElement
-  unsafeCastGObject = HTMLFrameElement . castRef . unGObject
-
-castToHTMLFrameElement :: GObjectClass obj => obj -> HTMLFrameElement
-castToHTMLFrameElement = castTo gTypeHTMLFrameElement "HTMLFrameElement"
-
-foreign import javascript unsafe "window[\"HTMLFrameElement\"]" gTypeHTMLFrameElement' :: JSRef GType
-gTypeHTMLFrameElement = GType gTypeHTMLFrameElement'
-#else
-type IsHTMLFrameElement o = HTMLFrameElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLFrameSetElement = HTMLFrameSetElement (JSRef HTMLFrameSetElement)
-
-unHTMLFrameSetElement (HTMLFrameSetElement o) = o
-
-instance ToJSRef HTMLFrameSetElement where
-  toJSRef = return . unHTMLFrameSetElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLFrameSetElement where
-  fromJSRef = return . fmap HTMLFrameSetElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLFrameSetElement o
-toHTMLFrameSetElement :: IsHTMLFrameSetElement o => o -> HTMLFrameSetElement
-toHTMLFrameSetElement = unsafeCastGObject . toGObject
-
-instance IsHTMLFrameSetElement HTMLFrameSetElement
-instance IsHTMLElement HTMLFrameSetElement
-instance IsElement HTMLFrameSetElement
-instance IsNode HTMLFrameSetElement
-instance GObjectClass HTMLFrameSetElement where
-  toGObject = GObject . castRef . unHTMLFrameSetElement
-  unsafeCastGObject = HTMLFrameSetElement . castRef . unGObject
-
-castToHTMLFrameSetElement :: GObjectClass obj => obj -> HTMLFrameSetElement
-castToHTMLFrameSetElement = castTo gTypeHTMLFrameSetElement "HTMLFrameSetElement"
-
-foreign import javascript unsafe "window[\"HTMLFrameSetElement\"]" gTypeHTMLFrameSetElement' :: JSRef GType
-gTypeHTMLFrameSetElement = GType gTypeHTMLFrameSetElement'
-#else
-type IsHTMLFrameSetElement o = HTMLFrameSetElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLHRElement = HTMLHRElement (JSRef HTMLHRElement)
-
-unHTMLHRElement (HTMLHRElement o) = o
-
-instance ToJSRef HTMLHRElement where
-  toJSRef = return . unHTMLHRElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLHRElement where
-  fromJSRef = return . fmap HTMLHRElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLHRElement o
-toHTMLHRElement :: IsHTMLHRElement o => o -> HTMLHRElement
-toHTMLHRElement = unsafeCastGObject . toGObject
-
-instance IsHTMLHRElement HTMLHRElement
-instance IsHTMLElement HTMLHRElement
-instance IsElement HTMLHRElement
-instance IsNode HTMLHRElement
-instance GObjectClass HTMLHRElement where
-  toGObject = GObject . castRef . unHTMLHRElement
-  unsafeCastGObject = HTMLHRElement . castRef . unGObject
-
-castToHTMLHRElement :: GObjectClass obj => obj -> HTMLHRElement
-castToHTMLHRElement = castTo gTypeHTMLHRElement "HTMLHRElement"
-
-foreign import javascript unsafe "window[\"HTMLHRElement\"]" gTypeHTMLHRElement' :: JSRef GType
-gTypeHTMLHRElement = GType gTypeHTMLHRElement'
-#else
-type IsHTMLHRElement o = HTMLHRElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLHeadElement = HTMLHeadElement (JSRef HTMLHeadElement)
-
-unHTMLHeadElement (HTMLHeadElement o) = o
-
-instance ToJSRef HTMLHeadElement where
-  toJSRef = return . unHTMLHeadElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLHeadElement where
-  fromJSRef = return . fmap HTMLHeadElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLHeadElement o
-toHTMLHeadElement :: IsHTMLHeadElement o => o -> HTMLHeadElement
-toHTMLHeadElement = unsafeCastGObject . toGObject
-
-instance IsHTMLHeadElement HTMLHeadElement
-instance IsHTMLElement HTMLHeadElement
-instance IsElement HTMLHeadElement
-instance IsNode HTMLHeadElement
-instance GObjectClass HTMLHeadElement where
-  toGObject = GObject . castRef . unHTMLHeadElement
-  unsafeCastGObject = HTMLHeadElement . castRef . unGObject
-
-castToHTMLHeadElement :: GObjectClass obj => obj -> HTMLHeadElement
-castToHTMLHeadElement = castTo gTypeHTMLHeadElement "HTMLHeadElement"
-
-foreign import javascript unsafe "window[\"HTMLHeadElement\"]" gTypeHTMLHeadElement' :: JSRef GType
-gTypeHTMLHeadElement = GType gTypeHTMLHeadElement'
-#else
-type IsHTMLHeadElement o = HTMLHeadElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLHeadingElement = HTMLHeadingElement (JSRef HTMLHeadingElement)
-
-unHTMLHeadingElement (HTMLHeadingElement o) = o
-
-instance ToJSRef HTMLHeadingElement where
-  toJSRef = return . unHTMLHeadingElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLHeadingElement where
-  fromJSRef = return . fmap HTMLHeadingElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLHeadingElement o
-toHTMLHeadingElement :: IsHTMLHeadingElement o => o -> HTMLHeadingElement
-toHTMLHeadingElement = unsafeCastGObject . toGObject
-
-instance IsHTMLHeadingElement HTMLHeadingElement
-instance IsHTMLElement HTMLHeadingElement
-instance IsElement HTMLHeadingElement
-instance IsNode HTMLHeadingElement
-instance GObjectClass HTMLHeadingElement where
-  toGObject = GObject . castRef . unHTMLHeadingElement
-  unsafeCastGObject = HTMLHeadingElement . castRef . unGObject
-
-castToHTMLHeadingElement :: GObjectClass obj => obj -> HTMLHeadingElement
-castToHTMLHeadingElement = castTo gTypeHTMLHeadingElement "HTMLHeadingElement"
-
-foreign import javascript unsafe "window[\"HTMLHeadingElement\"]" gTypeHTMLHeadingElement' :: JSRef GType
-gTypeHTMLHeadingElement = GType gTypeHTMLHeadingElement'
-#else
-type IsHTMLHeadingElement o = HTMLHeadingElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLHtmlElement = HTMLHtmlElement (JSRef HTMLHtmlElement)
-
-unHTMLHtmlElement (HTMLHtmlElement o) = o
-
-instance ToJSRef HTMLHtmlElement where
-  toJSRef = return . unHTMLHtmlElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLHtmlElement where
-  fromJSRef = return . fmap HTMLHtmlElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLHtmlElement o
-toHTMLHtmlElement :: IsHTMLHtmlElement o => o -> HTMLHtmlElement
-toHTMLHtmlElement = unsafeCastGObject . toGObject
-
-instance IsHTMLHtmlElement HTMLHtmlElement
-instance IsHTMLElement HTMLHtmlElement
-instance IsElement HTMLHtmlElement
-instance IsNode HTMLHtmlElement
-instance GObjectClass HTMLHtmlElement where
-  toGObject = GObject . castRef . unHTMLHtmlElement
-  unsafeCastGObject = HTMLHtmlElement . castRef . unGObject
-
-castToHTMLHtmlElement :: GObjectClass obj => obj -> HTMLHtmlElement
-castToHTMLHtmlElement = castTo gTypeHTMLHtmlElement "HTMLHtmlElement"
-
-foreign import javascript unsafe "window[\"HTMLHtmlElement\"]" gTypeHTMLHtmlElement' :: JSRef GType
-gTypeHTMLHtmlElement = GType gTypeHTMLHtmlElement'
-#else
-type IsHTMLHtmlElement o = HTMLHtmlElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLIFrameElement = HTMLIFrameElement (JSRef HTMLIFrameElement)
-
-unHTMLIFrameElement (HTMLIFrameElement o) = o
-
-instance ToJSRef HTMLIFrameElement where
-  toJSRef = return . unHTMLIFrameElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLIFrameElement where
-  fromJSRef = return . fmap HTMLIFrameElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLIFrameElement o
-toHTMLIFrameElement :: IsHTMLIFrameElement o => o -> HTMLIFrameElement
-toHTMLIFrameElement = unsafeCastGObject . toGObject
-
-instance IsHTMLIFrameElement HTMLIFrameElement
-instance IsHTMLElement HTMLIFrameElement
-instance IsElement HTMLIFrameElement
-instance IsNode HTMLIFrameElement
-instance GObjectClass HTMLIFrameElement where
-  toGObject = GObject . castRef . unHTMLIFrameElement
-  unsafeCastGObject = HTMLIFrameElement . castRef . unGObject
-
-castToHTMLIFrameElement :: GObjectClass obj => obj -> HTMLIFrameElement
-castToHTMLIFrameElement = castTo gTypeHTMLIFrameElement "HTMLIFrameElement"
-
-foreign import javascript unsafe "window[\"HTMLIFrameElement\"]" gTypeHTMLIFrameElement' :: JSRef GType
-gTypeHTMLIFrameElement = GType gTypeHTMLIFrameElement'
-#else
-type IsHTMLIFrameElement o = HTMLIFrameElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLImageElement = HTMLImageElement (JSRef HTMLImageElement)
-
-unHTMLImageElement (HTMLImageElement o) = o
-
-instance ToJSRef HTMLImageElement where
-  toJSRef = return . unHTMLImageElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLImageElement where
-  fromJSRef = return . fmap HTMLImageElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLImageElement o
-toHTMLImageElement :: IsHTMLImageElement o => o -> HTMLImageElement
-toHTMLImageElement = unsafeCastGObject . toGObject
-
-instance IsHTMLImageElement HTMLImageElement
-instance IsHTMLElement HTMLImageElement
-instance IsElement HTMLImageElement
-instance IsNode HTMLImageElement
-instance GObjectClass HTMLImageElement where
-  toGObject = GObject . castRef . unHTMLImageElement
-  unsafeCastGObject = HTMLImageElement . castRef . unGObject
-
-castToHTMLImageElement :: GObjectClass obj => obj -> HTMLImageElement
-castToHTMLImageElement = castTo gTypeHTMLImageElement "HTMLImageElement"
-
-foreign import javascript unsafe "window[\"HTMLImageElement\"]" gTypeHTMLImageElement' :: JSRef GType
-gTypeHTMLImageElement = GType gTypeHTMLImageElement'
-#else
-type IsHTMLImageElement o = HTMLImageElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLInputElement = HTMLInputElement (JSRef HTMLInputElement)
-
-unHTMLInputElement (HTMLInputElement o) = o
-
-instance ToJSRef HTMLInputElement where
-  toJSRef = return . unHTMLInputElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLInputElement where
-  fromJSRef = return . fmap HTMLInputElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLInputElement o
-toHTMLInputElement :: IsHTMLInputElement o => o -> HTMLInputElement
-toHTMLInputElement = unsafeCastGObject . toGObject
-
-instance IsHTMLInputElement HTMLInputElement
-instance IsHTMLElement HTMLInputElement
-instance IsElement HTMLInputElement
-instance IsNode HTMLInputElement
-instance GObjectClass HTMLInputElement where
-  toGObject = GObject . castRef . unHTMLInputElement
-  unsafeCastGObject = HTMLInputElement . castRef . unGObject
-
-castToHTMLInputElement :: GObjectClass obj => obj -> HTMLInputElement
-castToHTMLInputElement = castTo gTypeHTMLInputElement "HTMLInputElement"
-
-foreign import javascript unsafe "window[\"HTMLInputElement\"]" gTypeHTMLInputElement' :: JSRef GType
-gTypeHTMLInputElement = GType gTypeHTMLInputElement'
-#else
-type IsHTMLInputElement o = HTMLInputElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLKeygenElement = HTMLKeygenElement (JSRef HTMLKeygenElement)
-
-unHTMLKeygenElement (HTMLKeygenElement o) = o
-
-instance ToJSRef HTMLKeygenElement where
-  toJSRef = return . unHTMLKeygenElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLKeygenElement where
-  fromJSRef = return . fmap HTMLKeygenElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLKeygenElement o
-toHTMLKeygenElement :: IsHTMLKeygenElement o => o -> HTMLKeygenElement
-toHTMLKeygenElement = unsafeCastGObject . toGObject
-
-instance IsHTMLKeygenElement HTMLKeygenElement
-instance IsHTMLElement HTMLKeygenElement
-instance IsElement HTMLKeygenElement
-instance IsNode HTMLKeygenElement
-instance GObjectClass HTMLKeygenElement where
-  toGObject = GObject . castRef . unHTMLKeygenElement
-  unsafeCastGObject = HTMLKeygenElement . castRef . unGObject
-
-castToHTMLKeygenElement :: GObjectClass obj => obj -> HTMLKeygenElement
-castToHTMLKeygenElement = castTo gTypeHTMLKeygenElement "HTMLKeygenElement"
-
-foreign import javascript unsafe "window[\"HTMLKeygenElement\"]" gTypeHTMLKeygenElement' :: JSRef GType
-gTypeHTMLKeygenElement = GType gTypeHTMLKeygenElement'
-#else
-type IsHTMLKeygenElement o = HTMLKeygenElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLLIElement = HTMLLIElement (JSRef HTMLLIElement)
-
-unHTMLLIElement (HTMLLIElement o) = o
-
-instance ToJSRef HTMLLIElement where
-  toJSRef = return . unHTMLLIElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLLIElement where
-  fromJSRef = return . fmap HTMLLIElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLLIElement o
-toHTMLLIElement :: IsHTMLLIElement o => o -> HTMLLIElement
-toHTMLLIElement = unsafeCastGObject . toGObject
-
-instance IsHTMLLIElement HTMLLIElement
-instance IsHTMLElement HTMLLIElement
-instance IsElement HTMLLIElement
-instance IsNode HTMLLIElement
-instance GObjectClass HTMLLIElement where
-  toGObject = GObject . castRef . unHTMLLIElement
-  unsafeCastGObject = HTMLLIElement . castRef . unGObject
-
-castToHTMLLIElement :: GObjectClass obj => obj -> HTMLLIElement
-castToHTMLLIElement = castTo gTypeHTMLLIElement "HTMLLIElement"
-
-foreign import javascript unsafe "window[\"HTMLLIElement\"]" gTypeHTMLLIElement' :: JSRef GType
-gTypeHTMLLIElement = GType gTypeHTMLLIElement'
-#else
-type IsHTMLLIElement o = HTMLLIElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLLabelElement = HTMLLabelElement (JSRef HTMLLabelElement)
-
-unHTMLLabelElement (HTMLLabelElement o) = o
-
-instance ToJSRef HTMLLabelElement where
-  toJSRef = return . unHTMLLabelElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLLabelElement where
-  fromJSRef = return . fmap HTMLLabelElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLLabelElement o
-toHTMLLabelElement :: IsHTMLLabelElement o => o -> HTMLLabelElement
-toHTMLLabelElement = unsafeCastGObject . toGObject
-
-instance IsHTMLLabelElement HTMLLabelElement
-instance IsHTMLElement HTMLLabelElement
-instance IsElement HTMLLabelElement
-instance IsNode HTMLLabelElement
-instance GObjectClass HTMLLabelElement where
-  toGObject = GObject . castRef . unHTMLLabelElement
-  unsafeCastGObject = HTMLLabelElement . castRef . unGObject
-
-castToHTMLLabelElement :: GObjectClass obj => obj -> HTMLLabelElement
-castToHTMLLabelElement = castTo gTypeHTMLLabelElement "HTMLLabelElement"
-
-foreign import javascript unsafe "window[\"HTMLLabelElement\"]" gTypeHTMLLabelElement' :: JSRef GType
-gTypeHTMLLabelElement = GType gTypeHTMLLabelElement'
-#else
-type IsHTMLLabelElement o = HTMLLabelElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLLegendElement = HTMLLegendElement (JSRef HTMLLegendElement)
-
-unHTMLLegendElement (HTMLLegendElement o) = o
-
-instance ToJSRef HTMLLegendElement where
-  toJSRef = return . unHTMLLegendElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLLegendElement where
-  fromJSRef = return . fmap HTMLLegendElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLLegendElement o
-toHTMLLegendElement :: IsHTMLLegendElement o => o -> HTMLLegendElement
-toHTMLLegendElement = unsafeCastGObject . toGObject
-
-instance IsHTMLLegendElement HTMLLegendElement
-instance IsHTMLElement HTMLLegendElement
-instance IsElement HTMLLegendElement
-instance IsNode HTMLLegendElement
-instance GObjectClass HTMLLegendElement where
-  toGObject = GObject . castRef . unHTMLLegendElement
-  unsafeCastGObject = HTMLLegendElement . castRef . unGObject
-
-castToHTMLLegendElement :: GObjectClass obj => obj -> HTMLLegendElement
-castToHTMLLegendElement = castTo gTypeHTMLLegendElement "HTMLLegendElement"
-
-foreign import javascript unsafe "window[\"HTMLLegendElement\"]" gTypeHTMLLegendElement' :: JSRef GType
-gTypeHTMLLegendElement = GType gTypeHTMLLegendElement'
-#else
-type IsHTMLLegendElement o = HTMLLegendElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLLinkElement = HTMLLinkElement (JSRef HTMLLinkElement)
-
-unHTMLLinkElement (HTMLLinkElement o) = o
-
-instance ToJSRef HTMLLinkElement where
-  toJSRef = return . unHTMLLinkElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLLinkElement where
-  fromJSRef = return . fmap HTMLLinkElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLLinkElement o
-toHTMLLinkElement :: IsHTMLLinkElement o => o -> HTMLLinkElement
-toHTMLLinkElement = unsafeCastGObject . toGObject
-
-instance IsHTMLLinkElement HTMLLinkElement
-instance IsHTMLElement HTMLLinkElement
-instance IsElement HTMLLinkElement
-instance IsNode HTMLLinkElement
-instance GObjectClass HTMLLinkElement where
-  toGObject = GObject . castRef . unHTMLLinkElement
-  unsafeCastGObject = HTMLLinkElement . castRef . unGObject
-
-castToHTMLLinkElement :: GObjectClass obj => obj -> HTMLLinkElement
-castToHTMLLinkElement = castTo gTypeHTMLLinkElement "HTMLLinkElement"
-
-foreign import javascript unsafe "window[\"HTMLLinkElement\"]" gTypeHTMLLinkElement' :: JSRef GType
-gTypeHTMLLinkElement = GType gTypeHTMLLinkElement'
-#else
-type IsHTMLLinkElement o = HTMLLinkElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLMapElement = HTMLMapElement (JSRef HTMLMapElement)
-
-unHTMLMapElement (HTMLMapElement o) = o
-
-instance ToJSRef HTMLMapElement where
-  toJSRef = return . unHTMLMapElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLMapElement where
-  fromJSRef = return . fmap HTMLMapElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLMapElement o
-toHTMLMapElement :: IsHTMLMapElement o => o -> HTMLMapElement
-toHTMLMapElement = unsafeCastGObject . toGObject
-
-instance IsHTMLMapElement HTMLMapElement
-instance IsHTMLElement HTMLMapElement
-instance IsElement HTMLMapElement
-instance IsNode HTMLMapElement
-instance GObjectClass HTMLMapElement where
-  toGObject = GObject . castRef . unHTMLMapElement
-  unsafeCastGObject = HTMLMapElement . castRef . unGObject
-
-castToHTMLMapElement :: GObjectClass obj => obj -> HTMLMapElement
-castToHTMLMapElement = castTo gTypeHTMLMapElement "HTMLMapElement"
-
-foreign import javascript unsafe "window[\"HTMLMapElement\"]" gTypeHTMLMapElement' :: JSRef GType
-gTypeHTMLMapElement = GType gTypeHTMLMapElement'
-#else
-type IsHTMLMapElement o = HTMLMapElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLMarqueeElement = HTMLMarqueeElement (JSRef HTMLMarqueeElement)
-
-unHTMLMarqueeElement (HTMLMarqueeElement o) = o
-
-instance ToJSRef HTMLMarqueeElement where
-  toJSRef = return . unHTMLMarqueeElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLMarqueeElement where
-  fromJSRef = return . fmap HTMLMarqueeElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLMarqueeElement o
-toHTMLMarqueeElement :: IsHTMLMarqueeElement o => o -> HTMLMarqueeElement
-toHTMLMarqueeElement = unsafeCastGObject . toGObject
-
-instance IsHTMLMarqueeElement HTMLMarqueeElement
-instance IsHTMLElement HTMLMarqueeElement
-instance IsElement HTMLMarqueeElement
-instance IsNode HTMLMarqueeElement
-instance GObjectClass HTMLMarqueeElement where
-  toGObject = GObject . castRef . unHTMLMarqueeElement
-  unsafeCastGObject = HTMLMarqueeElement . castRef . unGObject
-
-castToHTMLMarqueeElement :: GObjectClass obj => obj -> HTMLMarqueeElement
-castToHTMLMarqueeElement = castTo gTypeHTMLMarqueeElement "HTMLMarqueeElement"
-
-foreign import javascript unsafe "window[\"HTMLMarqueeElement\"]" gTypeHTMLMarqueeElement' :: JSRef GType
-gTypeHTMLMarqueeElement = GType gTypeHTMLMarqueeElement'
-#else
-type IsHTMLMarqueeElement o = HTMLMarqueeElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLMediaElement = HTMLMediaElement (JSRef HTMLMediaElement)
-
-unHTMLMediaElement (HTMLMediaElement o) = o
-
-instance ToJSRef HTMLMediaElement where
-  toJSRef = return . unHTMLMediaElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLMediaElement where
-  fromJSRef = return . fmap HTMLMediaElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-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 GObjectClass HTMLMediaElement where
-  toGObject = GObject . castRef . unHTMLMediaElement
-  unsafeCastGObject = HTMLMediaElement . castRef . unGObject
-
-castToHTMLMediaElement :: GObjectClass obj => obj -> HTMLMediaElement
-castToHTMLMediaElement = castTo gTypeHTMLMediaElement "HTMLMediaElement"
-
-foreign import javascript unsafe "window[\"HTMLMediaElement\"]" gTypeHTMLMediaElement' :: JSRef GType
-gTypeHTMLMediaElement = GType gTypeHTMLMediaElement'
-#else
-type IsHTMLMediaElement o = HTMLMediaElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLMenuElement = HTMLMenuElement (JSRef HTMLMenuElement)
-
-unHTMLMenuElement (HTMLMenuElement o) = o
-
-instance ToJSRef HTMLMenuElement where
-  toJSRef = return . unHTMLMenuElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLMenuElement where
-  fromJSRef = return . fmap HTMLMenuElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLMenuElement o
-toHTMLMenuElement :: IsHTMLMenuElement o => o -> HTMLMenuElement
-toHTMLMenuElement = unsafeCastGObject . toGObject
-
-instance IsHTMLMenuElement HTMLMenuElement
-instance IsHTMLElement HTMLMenuElement
-instance IsElement HTMLMenuElement
-instance IsNode HTMLMenuElement
-instance GObjectClass HTMLMenuElement where
-  toGObject = GObject . castRef . unHTMLMenuElement
-  unsafeCastGObject = HTMLMenuElement . castRef . unGObject
-
-castToHTMLMenuElement :: GObjectClass obj => obj -> HTMLMenuElement
-castToHTMLMenuElement = castTo gTypeHTMLMenuElement "HTMLMenuElement"
-
-foreign import javascript unsafe "window[\"HTMLMenuElement\"]" gTypeHTMLMenuElement' :: JSRef GType
-gTypeHTMLMenuElement = GType gTypeHTMLMenuElement'
-#else
-type IsHTMLMenuElement o = HTMLMenuElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLMetaElement = HTMLMetaElement (JSRef HTMLMetaElement)
-
-unHTMLMetaElement (HTMLMetaElement o) = o
-
-instance ToJSRef HTMLMetaElement where
-  toJSRef = return . unHTMLMetaElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLMetaElement where
-  fromJSRef = return . fmap HTMLMetaElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLMetaElement o
-toHTMLMetaElement :: IsHTMLMetaElement o => o -> HTMLMetaElement
-toHTMLMetaElement = unsafeCastGObject . toGObject
-
-instance IsHTMLMetaElement HTMLMetaElement
-instance IsHTMLElement HTMLMetaElement
-instance IsElement HTMLMetaElement
-instance IsNode HTMLMetaElement
-instance GObjectClass HTMLMetaElement where
-  toGObject = GObject . castRef . unHTMLMetaElement
-  unsafeCastGObject = HTMLMetaElement . castRef . unGObject
-
-castToHTMLMetaElement :: GObjectClass obj => obj -> HTMLMetaElement
-castToHTMLMetaElement = castTo gTypeHTMLMetaElement "HTMLMetaElement"
-
-foreign import javascript unsafe "window[\"HTMLMetaElement\"]" gTypeHTMLMetaElement' :: JSRef GType
-gTypeHTMLMetaElement = GType gTypeHTMLMetaElement'
-#else
-type IsHTMLMetaElement o = HTMLMetaElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLModElement = HTMLModElement (JSRef HTMLModElement)
-
-unHTMLModElement (HTMLModElement o) = o
-
-instance ToJSRef HTMLModElement where
-  toJSRef = return . unHTMLModElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLModElement where
-  fromJSRef = return . fmap HTMLModElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLModElement o
-toHTMLModElement :: IsHTMLModElement o => o -> HTMLModElement
-toHTMLModElement = unsafeCastGObject . toGObject
-
-instance IsHTMLModElement HTMLModElement
-instance IsHTMLElement HTMLModElement
-instance IsElement HTMLModElement
-instance IsNode HTMLModElement
-instance GObjectClass HTMLModElement where
-  toGObject = GObject . castRef . unHTMLModElement
-  unsafeCastGObject = HTMLModElement . castRef . unGObject
-
-castToHTMLModElement :: GObjectClass obj => obj -> HTMLModElement
-castToHTMLModElement = castTo gTypeHTMLModElement "HTMLModElement"
-
-foreign import javascript unsafe "window[\"HTMLModElement\"]" gTypeHTMLModElement' :: JSRef GType
-gTypeHTMLModElement = GType gTypeHTMLModElement'
-#else
-type IsHTMLModElement o = HTMLModElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLOListElement = HTMLOListElement (JSRef HTMLOListElement)
-
-unHTMLOListElement (HTMLOListElement o) = o
-
-instance ToJSRef HTMLOListElement where
-  toJSRef = return . unHTMLOListElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLOListElement where
-  fromJSRef = return . fmap HTMLOListElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLOListElement o
-toHTMLOListElement :: IsHTMLOListElement o => o -> HTMLOListElement
-toHTMLOListElement = unsafeCastGObject . toGObject
-
-instance IsHTMLOListElement HTMLOListElement
-instance IsHTMLElement HTMLOListElement
-instance IsElement HTMLOListElement
-instance IsNode HTMLOListElement
-instance GObjectClass HTMLOListElement where
-  toGObject = GObject . castRef . unHTMLOListElement
-  unsafeCastGObject = HTMLOListElement . castRef . unGObject
-
-castToHTMLOListElement :: GObjectClass obj => obj -> HTMLOListElement
-castToHTMLOListElement = castTo gTypeHTMLOListElement "HTMLOListElement"
-
-foreign import javascript unsafe "window[\"HTMLOListElement\"]" gTypeHTMLOListElement' :: JSRef GType
-gTypeHTMLOListElement = GType gTypeHTMLOListElement'
-#else
-type IsHTMLOListElement o = HTMLOListElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLObjectElement = HTMLObjectElement (JSRef HTMLObjectElement)
-
-unHTMLObjectElement (HTMLObjectElement o) = o
-
-instance ToJSRef HTMLObjectElement where
-  toJSRef = return . unHTMLObjectElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLObjectElement where
-  fromJSRef = return . fmap HTMLObjectElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLObjectElement o
-toHTMLObjectElement :: IsHTMLObjectElement o => o -> HTMLObjectElement
-toHTMLObjectElement = unsafeCastGObject . toGObject
-
-instance IsHTMLObjectElement HTMLObjectElement
-instance IsHTMLElement HTMLObjectElement
-instance IsElement HTMLObjectElement
-instance IsNode HTMLObjectElement
-instance GObjectClass HTMLObjectElement where
-  toGObject = GObject . castRef . unHTMLObjectElement
-  unsafeCastGObject = HTMLObjectElement . castRef . unGObject
-
-castToHTMLObjectElement :: GObjectClass obj => obj -> HTMLObjectElement
-castToHTMLObjectElement = castTo gTypeHTMLObjectElement "HTMLObjectElement"
-
-foreign import javascript unsafe "window[\"HTMLObjectElement\"]" gTypeHTMLObjectElement' :: JSRef GType
-gTypeHTMLObjectElement = GType gTypeHTMLObjectElement'
-#else
-type IsHTMLObjectElement o = HTMLObjectElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLOptGroupElement = HTMLOptGroupElement (JSRef HTMLOptGroupElement)
-
-unHTMLOptGroupElement (HTMLOptGroupElement o) = o
-
-instance ToJSRef HTMLOptGroupElement where
-  toJSRef = return . unHTMLOptGroupElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLOptGroupElement where
-  fromJSRef = return . fmap HTMLOptGroupElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLOptGroupElement o
-toHTMLOptGroupElement :: IsHTMLOptGroupElement o => o -> HTMLOptGroupElement
-toHTMLOptGroupElement = unsafeCastGObject . toGObject
-
-instance IsHTMLOptGroupElement HTMLOptGroupElement
-instance IsHTMLElement HTMLOptGroupElement
-instance IsElement HTMLOptGroupElement
-instance IsNode HTMLOptGroupElement
-instance GObjectClass HTMLOptGroupElement where
-  toGObject = GObject . castRef . unHTMLOptGroupElement
-  unsafeCastGObject = HTMLOptGroupElement . castRef . unGObject
-
-castToHTMLOptGroupElement :: GObjectClass obj => obj -> HTMLOptGroupElement
-castToHTMLOptGroupElement = castTo gTypeHTMLOptGroupElement "HTMLOptGroupElement"
-
-foreign import javascript unsafe "window[\"HTMLOptGroupElement\"]" gTypeHTMLOptGroupElement' :: JSRef GType
-gTypeHTMLOptGroupElement = GType gTypeHTMLOptGroupElement'
-#else
-type IsHTMLOptGroupElement o = HTMLOptGroupElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLOptionElement = HTMLOptionElement (JSRef HTMLOptionElement)
-
-unHTMLOptionElement (HTMLOptionElement o) = o
-
-instance ToJSRef HTMLOptionElement where
-  toJSRef = return . unHTMLOptionElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLOptionElement where
-  fromJSRef = return . fmap HTMLOptionElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLOptionElement o
-toHTMLOptionElement :: IsHTMLOptionElement o => o -> HTMLOptionElement
-toHTMLOptionElement = unsafeCastGObject . toGObject
-
-instance IsHTMLOptionElement HTMLOptionElement
-instance IsHTMLElement HTMLOptionElement
-instance IsElement HTMLOptionElement
-instance IsNode HTMLOptionElement
-instance GObjectClass HTMLOptionElement where
-  toGObject = GObject . castRef . unHTMLOptionElement
-  unsafeCastGObject = HTMLOptionElement . castRef . unGObject
-
-castToHTMLOptionElement :: GObjectClass obj => obj -> HTMLOptionElement
-castToHTMLOptionElement = castTo gTypeHTMLOptionElement "HTMLOptionElement"
-
-foreign import javascript unsafe "window[\"HTMLOptionElement\"]" gTypeHTMLOptionElement' :: JSRef GType
-gTypeHTMLOptionElement = GType gTypeHTMLOptionElement'
-#else
-type IsHTMLOptionElement o = HTMLOptionElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLOptionsCollection = HTMLOptionsCollection (JSRef HTMLOptionsCollection)
-
-unHTMLOptionsCollection (HTMLOptionsCollection o) = o
-
-instance ToJSRef HTMLOptionsCollection where
-  toJSRef = return . unHTMLOptionsCollection
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLOptionsCollection where
-  fromJSRef = return . fmap HTMLOptionsCollection . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLCollection o => IsHTMLOptionsCollection o
-toHTMLOptionsCollection :: IsHTMLOptionsCollection o => o -> HTMLOptionsCollection
-toHTMLOptionsCollection = unsafeCastGObject . toGObject
-
-instance IsHTMLOptionsCollection HTMLOptionsCollection
-instance IsHTMLCollection HTMLOptionsCollection
-instance GObjectClass HTMLOptionsCollection where
-  toGObject = GObject . castRef . unHTMLOptionsCollection
-  unsafeCastGObject = HTMLOptionsCollection . castRef . unGObject
-
-castToHTMLOptionsCollection :: GObjectClass obj => obj -> HTMLOptionsCollection
-castToHTMLOptionsCollection = castTo gTypeHTMLOptionsCollection "HTMLOptionsCollection"
-
-foreign import javascript unsafe "window[\"HTMLOptionsCollection\"]" gTypeHTMLOptionsCollection' :: JSRef GType
-gTypeHTMLOptionsCollection = GType gTypeHTMLOptionsCollection'
-#else
-type IsHTMLOptionsCollection o = HTMLOptionsCollectionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLParagraphElement = HTMLParagraphElement (JSRef HTMLParagraphElement)
-
-unHTMLParagraphElement (HTMLParagraphElement o) = o
-
-instance ToJSRef HTMLParagraphElement where
-  toJSRef = return . unHTMLParagraphElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLParagraphElement where
-  fromJSRef = return . fmap HTMLParagraphElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLParagraphElement o
-toHTMLParagraphElement :: IsHTMLParagraphElement o => o -> HTMLParagraphElement
-toHTMLParagraphElement = unsafeCastGObject . toGObject
-
-instance IsHTMLParagraphElement HTMLParagraphElement
-instance IsHTMLElement HTMLParagraphElement
-instance IsElement HTMLParagraphElement
-instance IsNode HTMLParagraphElement
-instance GObjectClass HTMLParagraphElement where
-  toGObject = GObject . castRef . unHTMLParagraphElement
-  unsafeCastGObject = HTMLParagraphElement . castRef . unGObject
-
-castToHTMLParagraphElement :: GObjectClass obj => obj -> HTMLParagraphElement
-castToHTMLParagraphElement = castTo gTypeHTMLParagraphElement "HTMLParagraphElement"
-
-foreign import javascript unsafe "window[\"HTMLParagraphElement\"]" gTypeHTMLParagraphElement' :: JSRef GType
-gTypeHTMLParagraphElement = GType gTypeHTMLParagraphElement'
-#else
-type IsHTMLParagraphElement o = HTMLParagraphElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLParamElement = HTMLParamElement (JSRef HTMLParamElement)
-
-unHTMLParamElement (HTMLParamElement o) = o
-
-instance ToJSRef HTMLParamElement where
-  toJSRef = return . unHTMLParamElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLParamElement where
-  fromJSRef = return . fmap HTMLParamElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLParamElement o
-toHTMLParamElement :: IsHTMLParamElement o => o -> HTMLParamElement
-toHTMLParamElement = unsafeCastGObject . toGObject
-
-instance IsHTMLParamElement HTMLParamElement
-instance IsHTMLElement HTMLParamElement
-instance IsElement HTMLParamElement
-instance IsNode HTMLParamElement
-instance GObjectClass HTMLParamElement where
-  toGObject = GObject . castRef . unHTMLParamElement
-  unsafeCastGObject = HTMLParamElement . castRef . unGObject
-
-castToHTMLParamElement :: GObjectClass obj => obj -> HTMLParamElement
-castToHTMLParamElement = castTo gTypeHTMLParamElement "HTMLParamElement"
-
-foreign import javascript unsafe "window[\"HTMLParamElement\"]" gTypeHTMLParamElement' :: JSRef GType
-gTypeHTMLParamElement = GType gTypeHTMLParamElement'
-#else
-type IsHTMLParamElement o = HTMLParamElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLPreElement = HTMLPreElement (JSRef HTMLPreElement)
-
-unHTMLPreElement (HTMLPreElement o) = o
-
-instance ToJSRef HTMLPreElement where
-  toJSRef = return . unHTMLPreElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLPreElement where
-  fromJSRef = return . fmap HTMLPreElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLPreElement o
-toHTMLPreElement :: IsHTMLPreElement o => o -> HTMLPreElement
-toHTMLPreElement = unsafeCastGObject . toGObject
-
-instance IsHTMLPreElement HTMLPreElement
-instance IsHTMLElement HTMLPreElement
-instance IsElement HTMLPreElement
-instance IsNode HTMLPreElement
-instance GObjectClass HTMLPreElement where
-  toGObject = GObject . castRef . unHTMLPreElement
-  unsafeCastGObject = HTMLPreElement . castRef . unGObject
-
-castToHTMLPreElement :: GObjectClass obj => obj -> HTMLPreElement
-castToHTMLPreElement = castTo gTypeHTMLPreElement "HTMLPreElement"
-
-foreign import javascript unsafe "window[\"HTMLPreElement\"]" gTypeHTMLPreElement' :: JSRef GType
-gTypeHTMLPreElement = GType gTypeHTMLPreElement'
-#else
-type IsHTMLPreElement o = HTMLPreElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLQuoteElement = HTMLQuoteElement (JSRef HTMLQuoteElement)
-
-unHTMLQuoteElement (HTMLQuoteElement o) = o
-
-instance ToJSRef HTMLQuoteElement where
-  toJSRef = return . unHTMLQuoteElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLQuoteElement where
-  fromJSRef = return . fmap HTMLQuoteElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLQuoteElement o
-toHTMLQuoteElement :: IsHTMLQuoteElement o => o -> HTMLQuoteElement
-toHTMLQuoteElement = unsafeCastGObject . toGObject
-
-instance IsHTMLQuoteElement HTMLQuoteElement
-instance IsHTMLElement HTMLQuoteElement
-instance IsElement HTMLQuoteElement
-instance IsNode HTMLQuoteElement
-instance GObjectClass HTMLQuoteElement where
-  toGObject = GObject . castRef . unHTMLQuoteElement
-  unsafeCastGObject = HTMLQuoteElement . castRef . unGObject
-
-castToHTMLQuoteElement :: GObjectClass obj => obj -> HTMLQuoteElement
-castToHTMLQuoteElement = castTo gTypeHTMLQuoteElement "HTMLQuoteElement"
-
-foreign import javascript unsafe "window[\"HTMLQuoteElement\"]" gTypeHTMLQuoteElement' :: JSRef GType
-gTypeHTMLQuoteElement = GType gTypeHTMLQuoteElement'
-#else
-type IsHTMLQuoteElement o = HTMLQuoteElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLScriptElement = HTMLScriptElement (JSRef HTMLScriptElement)
-
-unHTMLScriptElement (HTMLScriptElement o) = o
-
-instance ToJSRef HTMLScriptElement where
-  toJSRef = return . unHTMLScriptElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLScriptElement where
-  fromJSRef = return . fmap HTMLScriptElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLScriptElement o
-toHTMLScriptElement :: IsHTMLScriptElement o => o -> HTMLScriptElement
-toHTMLScriptElement = unsafeCastGObject . toGObject
-
-instance IsHTMLScriptElement HTMLScriptElement
-instance IsHTMLElement HTMLScriptElement
-instance IsElement HTMLScriptElement
-instance IsNode HTMLScriptElement
-instance GObjectClass HTMLScriptElement where
-  toGObject = GObject . castRef . unHTMLScriptElement
-  unsafeCastGObject = HTMLScriptElement . castRef . unGObject
-
-castToHTMLScriptElement :: GObjectClass obj => obj -> HTMLScriptElement
-castToHTMLScriptElement = castTo gTypeHTMLScriptElement "HTMLScriptElement"
-
-foreign import javascript unsafe "window[\"HTMLScriptElement\"]" gTypeHTMLScriptElement' :: JSRef GType
-gTypeHTMLScriptElement = GType gTypeHTMLScriptElement'
-#else
-type IsHTMLScriptElement o = HTMLScriptElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLSelectElement = HTMLSelectElement (JSRef HTMLSelectElement)
-
-unHTMLSelectElement (HTMLSelectElement o) = o
-
-instance ToJSRef HTMLSelectElement where
-  toJSRef = return . unHTMLSelectElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLSelectElement where
-  fromJSRef = return . fmap HTMLSelectElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLSelectElement o
-toHTMLSelectElement :: IsHTMLSelectElement o => o -> HTMLSelectElement
-toHTMLSelectElement = unsafeCastGObject . toGObject
-
-instance IsHTMLSelectElement HTMLSelectElement
-instance IsHTMLElement HTMLSelectElement
-instance IsElement HTMLSelectElement
-instance IsNode HTMLSelectElement
-instance GObjectClass HTMLSelectElement where
-  toGObject = GObject . castRef . unHTMLSelectElement
-  unsafeCastGObject = HTMLSelectElement . castRef . unGObject
-
-castToHTMLSelectElement :: GObjectClass obj => obj -> HTMLSelectElement
-castToHTMLSelectElement = castTo gTypeHTMLSelectElement "HTMLSelectElement"
-
-foreign import javascript unsafe "window[\"HTMLSelectElement\"]" gTypeHTMLSelectElement' :: JSRef GType
-gTypeHTMLSelectElement = GType gTypeHTMLSelectElement'
-#else
-type IsHTMLSelectElement o = HTMLSelectElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLStyleElement = HTMLStyleElement (JSRef HTMLStyleElement)
-
-unHTMLStyleElement (HTMLStyleElement o) = o
-
-instance ToJSRef HTMLStyleElement where
-  toJSRef = return . unHTMLStyleElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLStyleElement where
-  fromJSRef = return . fmap HTMLStyleElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLStyleElement o
-toHTMLStyleElement :: IsHTMLStyleElement o => o -> HTMLStyleElement
-toHTMLStyleElement = unsafeCastGObject . toGObject
-
-instance IsHTMLStyleElement HTMLStyleElement
-instance IsHTMLElement HTMLStyleElement
-instance IsElement HTMLStyleElement
-instance IsNode HTMLStyleElement
-instance GObjectClass HTMLStyleElement where
-  toGObject = GObject . castRef . unHTMLStyleElement
-  unsafeCastGObject = HTMLStyleElement . castRef . unGObject
-
-castToHTMLStyleElement :: GObjectClass obj => obj -> HTMLStyleElement
-castToHTMLStyleElement = castTo gTypeHTMLStyleElement "HTMLStyleElement"
-
-foreign import javascript unsafe "window[\"HTMLStyleElement\"]" gTypeHTMLStyleElement' :: JSRef GType
-gTypeHTMLStyleElement = GType gTypeHTMLStyleElement'
-#else
-type IsHTMLStyleElement o = HTMLStyleElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLTableCaptionElement = HTMLTableCaptionElement (JSRef HTMLTableCaptionElement)
-
-unHTMLTableCaptionElement (HTMLTableCaptionElement o) = o
-
-instance ToJSRef HTMLTableCaptionElement where
-  toJSRef = return . unHTMLTableCaptionElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLTableCaptionElement where
-  fromJSRef = return . fmap HTMLTableCaptionElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLTableCaptionElement o
-toHTMLTableCaptionElement :: IsHTMLTableCaptionElement o => o -> HTMLTableCaptionElement
-toHTMLTableCaptionElement = unsafeCastGObject . toGObject
-
-instance IsHTMLTableCaptionElement HTMLTableCaptionElement
-instance IsHTMLElement HTMLTableCaptionElement
-instance IsElement HTMLTableCaptionElement
-instance IsNode HTMLTableCaptionElement
-instance GObjectClass HTMLTableCaptionElement where
-  toGObject = GObject . castRef . unHTMLTableCaptionElement
-  unsafeCastGObject = HTMLTableCaptionElement . castRef . unGObject
-
-castToHTMLTableCaptionElement :: GObjectClass obj => obj -> HTMLTableCaptionElement
-castToHTMLTableCaptionElement = castTo gTypeHTMLTableCaptionElement "HTMLTableCaptionElement"
-
-foreign import javascript unsafe "window[\"HTMLTableCaptionElement\"]" gTypeHTMLTableCaptionElement' :: JSRef GType
-gTypeHTMLTableCaptionElement = GType gTypeHTMLTableCaptionElement'
-#else
-type IsHTMLTableCaptionElement o = HTMLTableCaptionElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLTableCellElement = HTMLTableCellElement (JSRef HTMLTableCellElement)
-
-unHTMLTableCellElement (HTMLTableCellElement o) = o
-
-instance ToJSRef HTMLTableCellElement where
-  toJSRef = return . unHTMLTableCellElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLTableCellElement where
-  fromJSRef = return . fmap HTMLTableCellElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLTableCellElement o
-toHTMLTableCellElement :: IsHTMLTableCellElement o => o -> HTMLTableCellElement
-toHTMLTableCellElement = unsafeCastGObject . toGObject
-
-instance IsHTMLTableCellElement HTMLTableCellElement
-instance IsHTMLElement HTMLTableCellElement
-instance IsElement HTMLTableCellElement
-instance IsNode HTMLTableCellElement
-instance GObjectClass HTMLTableCellElement where
-  toGObject = GObject . castRef . unHTMLTableCellElement
-  unsafeCastGObject = HTMLTableCellElement . castRef . unGObject
-
-castToHTMLTableCellElement :: GObjectClass obj => obj -> HTMLTableCellElement
-castToHTMLTableCellElement = castTo gTypeHTMLTableCellElement "HTMLTableCellElement"
-
-foreign import javascript unsafe "window[\"HTMLTableCellElement\"]" gTypeHTMLTableCellElement' :: JSRef GType
-gTypeHTMLTableCellElement = GType gTypeHTMLTableCellElement'
-#else
-type IsHTMLTableCellElement o = HTMLTableCellElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLTableColElement = HTMLTableColElement (JSRef HTMLTableColElement)
-
-unHTMLTableColElement (HTMLTableColElement o) = o
-
-instance ToJSRef HTMLTableColElement where
-  toJSRef = return . unHTMLTableColElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLTableColElement where
-  fromJSRef = return . fmap HTMLTableColElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLTableColElement o
-toHTMLTableColElement :: IsHTMLTableColElement o => o -> HTMLTableColElement
-toHTMLTableColElement = unsafeCastGObject . toGObject
-
-instance IsHTMLTableColElement HTMLTableColElement
-instance IsHTMLElement HTMLTableColElement
-instance IsElement HTMLTableColElement
-instance IsNode HTMLTableColElement
-instance GObjectClass HTMLTableColElement where
-  toGObject = GObject . castRef . unHTMLTableColElement
-  unsafeCastGObject = HTMLTableColElement . castRef . unGObject
-
-castToHTMLTableColElement :: GObjectClass obj => obj -> HTMLTableColElement
-castToHTMLTableColElement = castTo gTypeHTMLTableColElement "HTMLTableColElement"
-
-foreign import javascript unsafe "window[\"HTMLTableColElement\"]" gTypeHTMLTableColElement' :: JSRef GType
-gTypeHTMLTableColElement = GType gTypeHTMLTableColElement'
-#else
-type IsHTMLTableColElement o = HTMLTableColElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLTableElement = HTMLTableElement (JSRef HTMLTableElement)
-
-unHTMLTableElement (HTMLTableElement o) = o
-
-instance ToJSRef HTMLTableElement where
-  toJSRef = return . unHTMLTableElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLTableElement where
-  fromJSRef = return . fmap HTMLTableElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLTableElement o
-toHTMLTableElement :: IsHTMLTableElement o => o -> HTMLTableElement
-toHTMLTableElement = unsafeCastGObject . toGObject
-
-instance IsHTMLTableElement HTMLTableElement
-instance IsHTMLElement HTMLTableElement
-instance IsElement HTMLTableElement
-instance IsNode HTMLTableElement
-instance GObjectClass HTMLTableElement where
-  toGObject = GObject . castRef . unHTMLTableElement
-  unsafeCastGObject = HTMLTableElement . castRef . unGObject
-
-castToHTMLTableElement :: GObjectClass obj => obj -> HTMLTableElement
-castToHTMLTableElement = castTo gTypeHTMLTableElement "HTMLTableElement"
-
-foreign import javascript unsafe "window[\"HTMLTableElement\"]" gTypeHTMLTableElement' :: JSRef GType
-gTypeHTMLTableElement = GType gTypeHTMLTableElement'
-#else
-type IsHTMLTableElement o = HTMLTableElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLTableRowElement = HTMLTableRowElement (JSRef HTMLTableRowElement)
-
-unHTMLTableRowElement (HTMLTableRowElement o) = o
-
-instance ToJSRef HTMLTableRowElement where
-  toJSRef = return . unHTMLTableRowElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLTableRowElement where
-  fromJSRef = return . fmap HTMLTableRowElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLTableRowElement o
-toHTMLTableRowElement :: IsHTMLTableRowElement o => o -> HTMLTableRowElement
-toHTMLTableRowElement = unsafeCastGObject . toGObject
-
-instance IsHTMLTableRowElement HTMLTableRowElement
-instance IsHTMLElement HTMLTableRowElement
-instance IsElement HTMLTableRowElement
-instance IsNode HTMLTableRowElement
-instance GObjectClass HTMLTableRowElement where
-  toGObject = GObject . castRef . unHTMLTableRowElement
-  unsafeCastGObject = HTMLTableRowElement . castRef . unGObject
-
-castToHTMLTableRowElement :: GObjectClass obj => obj -> HTMLTableRowElement
-castToHTMLTableRowElement = castTo gTypeHTMLTableRowElement "HTMLTableRowElement"
-
-foreign import javascript unsafe "window[\"HTMLTableRowElement\"]" gTypeHTMLTableRowElement' :: JSRef GType
-gTypeHTMLTableRowElement = GType gTypeHTMLTableRowElement'
-#else
-type IsHTMLTableRowElement o = HTMLTableRowElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLTableSectionElement = HTMLTableSectionElement (JSRef HTMLTableSectionElement)
-
-unHTMLTableSectionElement (HTMLTableSectionElement o) = o
-
-instance ToJSRef HTMLTableSectionElement where
-  toJSRef = return . unHTMLTableSectionElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLTableSectionElement where
-  fromJSRef = return . fmap HTMLTableSectionElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLTableSectionElement o
-toHTMLTableSectionElement :: IsHTMLTableSectionElement o => o -> HTMLTableSectionElement
-toHTMLTableSectionElement = unsafeCastGObject . toGObject
-
-instance IsHTMLTableSectionElement HTMLTableSectionElement
-instance IsHTMLElement HTMLTableSectionElement
-instance IsElement HTMLTableSectionElement
-instance IsNode HTMLTableSectionElement
-instance GObjectClass HTMLTableSectionElement where
-  toGObject = GObject . castRef . unHTMLTableSectionElement
-  unsafeCastGObject = HTMLTableSectionElement . castRef . unGObject
-
-castToHTMLTableSectionElement :: GObjectClass obj => obj -> HTMLTableSectionElement
-castToHTMLTableSectionElement = castTo gTypeHTMLTableSectionElement "HTMLTableSectionElement"
-
-foreign import javascript unsafe "window[\"HTMLTableSectionElement\"]" gTypeHTMLTableSectionElement' :: JSRef GType
-gTypeHTMLTableSectionElement = GType gTypeHTMLTableSectionElement'
-#else
-type IsHTMLTableSectionElement o = HTMLTableSectionElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLTextAreaElement = HTMLTextAreaElement (JSRef HTMLTextAreaElement)
-
-unHTMLTextAreaElement (HTMLTextAreaElement o) = o
-
-instance ToJSRef HTMLTextAreaElement where
-  toJSRef = return . unHTMLTextAreaElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLTextAreaElement where
-  fromJSRef = return . fmap HTMLTextAreaElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLTextAreaElement o
-toHTMLTextAreaElement :: IsHTMLTextAreaElement o => o -> HTMLTextAreaElement
-toHTMLTextAreaElement = unsafeCastGObject . toGObject
-
-instance IsHTMLTextAreaElement HTMLTextAreaElement
-instance IsHTMLElement HTMLTextAreaElement
-instance IsElement HTMLTextAreaElement
-instance IsNode HTMLTextAreaElement
-instance GObjectClass HTMLTextAreaElement where
-  toGObject = GObject . castRef . unHTMLTextAreaElement
-  unsafeCastGObject = HTMLTextAreaElement . castRef . unGObject
-
-castToHTMLTextAreaElement :: GObjectClass obj => obj -> HTMLTextAreaElement
-castToHTMLTextAreaElement = castTo gTypeHTMLTextAreaElement "HTMLTextAreaElement"
-
-foreign import javascript unsafe "window[\"HTMLTextAreaElement\"]" gTypeHTMLTextAreaElement' :: JSRef GType
-gTypeHTMLTextAreaElement = GType gTypeHTMLTextAreaElement'
-#else
-type IsHTMLTextAreaElement o = HTMLTextAreaElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLTitleElement = HTMLTitleElement (JSRef HTMLTitleElement)
-
-unHTMLTitleElement (HTMLTitleElement o) = o
-
-instance ToJSRef HTMLTitleElement where
-  toJSRef = return . unHTMLTitleElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLTitleElement where
-  fromJSRef = return . fmap HTMLTitleElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLTitleElement o
-toHTMLTitleElement :: IsHTMLTitleElement o => o -> HTMLTitleElement
-toHTMLTitleElement = unsafeCastGObject . toGObject
-
-instance IsHTMLTitleElement HTMLTitleElement
-instance IsHTMLElement HTMLTitleElement
-instance IsElement HTMLTitleElement
-instance IsNode HTMLTitleElement
-instance GObjectClass HTMLTitleElement where
-  toGObject = GObject . castRef . unHTMLTitleElement
-  unsafeCastGObject = HTMLTitleElement . castRef . unGObject
-
-castToHTMLTitleElement :: GObjectClass obj => obj -> HTMLTitleElement
-castToHTMLTitleElement = castTo gTypeHTMLTitleElement "HTMLTitleElement"
-
-foreign import javascript unsafe "window[\"HTMLTitleElement\"]" gTypeHTMLTitleElement' :: JSRef GType
-gTypeHTMLTitleElement = GType gTypeHTMLTitleElement'
-#else
-type IsHTMLTitleElement o = HTMLTitleElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLUListElement = HTMLUListElement (JSRef HTMLUListElement)
-
-unHTMLUListElement (HTMLUListElement o) = o
-
-instance ToJSRef HTMLUListElement where
-  toJSRef = return . unHTMLUListElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLUListElement where
-  fromJSRef = return . fmap HTMLUListElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLElement o => IsHTMLUListElement o
-toHTMLUListElement :: IsHTMLUListElement o => o -> HTMLUListElement
-toHTMLUListElement = unsafeCastGObject . toGObject
-
-instance IsHTMLUListElement HTMLUListElement
-instance IsHTMLElement HTMLUListElement
-instance IsElement HTMLUListElement
-instance IsNode HTMLUListElement
-instance GObjectClass HTMLUListElement where
-  toGObject = GObject . castRef . unHTMLUListElement
-  unsafeCastGObject = HTMLUListElement . castRef . unGObject
-
-castToHTMLUListElement :: GObjectClass obj => obj -> HTMLUListElement
-castToHTMLUListElement = castTo gTypeHTMLUListElement "HTMLUListElement"
-
-foreign import javascript unsafe "window[\"HTMLUListElement\"]" gTypeHTMLUListElement' :: JSRef GType
-gTypeHTMLUListElement = GType gTypeHTMLUListElement'
-#else
-type IsHTMLUListElement o = HTMLUListElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype HTMLVideoElement = HTMLVideoElement (JSRef HTMLVideoElement)
-
-unHTMLVideoElement (HTMLVideoElement o) = o
-
-instance ToJSRef HTMLVideoElement where
-  toJSRef = return . unHTMLVideoElement
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef HTMLVideoElement where
-  fromJSRef = return . fmap HTMLVideoElement . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsHTMLMediaElement o => IsHTMLVideoElement o
-toHTMLVideoElement :: IsHTMLVideoElement o => o -> HTMLVideoElement
-toHTMLVideoElement = unsafeCastGObject . toGObject
-
-instance IsHTMLVideoElement HTMLVideoElement
-instance IsHTMLMediaElement HTMLVideoElement
-instance IsHTMLElement HTMLVideoElement
-instance IsElement HTMLVideoElement
-instance IsNode HTMLVideoElement
-instance GObjectClass HTMLVideoElement where
-  toGObject = GObject . castRef . unHTMLVideoElement
-  unsafeCastGObject = HTMLVideoElement . castRef . unGObject
-
-castToHTMLVideoElement :: GObjectClass obj => obj -> HTMLVideoElement
-castToHTMLVideoElement = castTo gTypeHTMLVideoElement "HTMLVideoElement"
-
-foreign import javascript unsafe "window[\"HTMLVideoElement\"]" gTypeHTMLVideoElement' :: JSRef GType
-gTypeHTMLVideoElement = GType gTypeHTMLVideoElement'
-#else
-type IsHTMLVideoElement o = HTMLVideoElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype History = History (JSRef History)
-
-unHistory (History o) = o
-
-instance ToJSRef History where
-  toJSRef = return . unHistory
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef History where
-  fromJSRef = return . fmap History . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsHistory o
-toHistory :: IsHistory o => o -> History
-toHistory = unsafeCastGObject . toGObject
-
-instance IsHistory History
-instance GObjectClass History where
-  toGObject = GObject . castRef . unHistory
-  unsafeCastGObject = History . castRef . unGObject
-
-castToHistory :: GObjectClass obj => obj -> History
-castToHistory = castTo gTypeHistory "History"
-
-foreign import javascript unsafe "window[\"History\"]" gTypeHistory' :: JSRef GType
-gTypeHistory = GType gTypeHistory'
-#else
-type IsHistory o = HistoryClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype KeyboardEvent = KeyboardEvent (JSRef KeyboardEvent)
-
-unKeyboardEvent (KeyboardEvent o) = o
-
-instance ToJSRef KeyboardEvent where
-  toJSRef = return . unKeyboardEvent
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef KeyboardEvent where
-  fromJSRef = return . fmap KeyboardEvent . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsUIEvent o => IsKeyboardEvent o
-toKeyboardEvent :: IsKeyboardEvent o => o -> KeyboardEvent
-toKeyboardEvent = unsafeCastGObject . toGObject
-
-instance IsKeyboardEvent KeyboardEvent
-instance IsUIEvent KeyboardEvent
-instance IsEvent KeyboardEvent
-instance GObjectClass KeyboardEvent where
-  toGObject = GObject . castRef . unKeyboardEvent
-  unsafeCastGObject = KeyboardEvent . castRef . unGObject
-
-castToKeyboardEvent :: GObjectClass obj => obj -> KeyboardEvent
-castToKeyboardEvent = castTo gTypeKeyboardEvent "KeyboardEvent"
-
-foreign import javascript unsafe "window[\"KeyboardEvent\"]" gTypeKeyboardEvent' :: JSRef GType
-gTypeKeyboardEvent = GType gTypeKeyboardEvent'
-#else
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Location = Location (JSRef Location)
-
-unLocation (Location o) = o
-
-instance ToJSRef Location where
-  toJSRef = return . unLocation
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Location where
-  fromJSRef = return . fmap Location . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsLocation o
-toLocation :: IsLocation o => o -> Location
-toLocation = unsafeCastGObject . toGObject
-
-instance IsLocation Location
-instance GObjectClass Location where
-  toGObject = GObject . castRef . unLocation
-  unsafeCastGObject = Location . castRef . unGObject
-
-castToLocation :: GObjectClass obj => obj -> Location
-castToLocation = castTo gTypeLocation "Location"
-
-foreign import javascript unsafe "window[\"Location\"]" gTypeLocation' :: JSRef GType
-gTypeLocation = GType gTypeLocation'
-#else
-type IsLocation o = LocationClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype MediaError = MediaError (JSRef MediaError)
-
-unMediaError (MediaError o) = o
-
-instance ToJSRef MediaError where
-  toJSRef = return . unMediaError
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef MediaError where
-  fromJSRef = return . fmap MediaError . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsMediaError o
-toMediaError :: IsMediaError o => o -> MediaError
-toMediaError = unsafeCastGObject . toGObject
-
-instance IsMediaError MediaError
-instance GObjectClass MediaError where
-  toGObject = GObject . castRef . unMediaError
-  unsafeCastGObject = MediaError . castRef . unGObject
-
-castToMediaError :: GObjectClass obj => obj -> MediaError
-castToMediaError = castTo gTypeMediaError "MediaError"
-
-foreign import javascript unsafe "window[\"MediaError\"]" gTypeMediaError' :: JSRef GType
-gTypeMediaError = GType gTypeMediaError'
-#else
-type IsMediaError o = MediaErrorClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype MediaList = MediaList (JSRef MediaList)
-
-unMediaList (MediaList o) = o
-
-instance ToJSRef MediaList where
-  toJSRef = return . unMediaList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef MediaList where
-  fromJSRef = return . fmap MediaList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsMediaList o
-toMediaList :: IsMediaList o => o -> MediaList
-toMediaList = unsafeCastGObject . toGObject
-
-instance IsMediaList MediaList
-instance GObjectClass MediaList where
-  toGObject = GObject . castRef . unMediaList
-  unsafeCastGObject = MediaList . castRef . unGObject
-
-castToMediaList :: GObjectClass obj => obj -> MediaList
-castToMediaList = castTo gTypeMediaList "MediaList"
-
-foreign import javascript unsafe "window[\"MediaList\"]" gTypeMediaList' :: JSRef GType
-gTypeMediaList = GType gTypeMediaList'
-#else
-type IsMediaList o = MediaListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype MediaQueryList = MediaQueryList (JSRef MediaQueryList)
-
-unMediaQueryList (MediaQueryList o) = o
-
-instance ToJSRef MediaQueryList where
-  toJSRef = return . unMediaQueryList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef MediaQueryList where
-  fromJSRef = return . fmap MediaQueryList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsMediaQueryList o
-toMediaQueryList :: IsMediaQueryList o => o -> MediaQueryList
-toMediaQueryList = unsafeCastGObject . toGObject
-
-instance IsMediaQueryList MediaQueryList
-instance GObjectClass MediaQueryList where
-  toGObject = GObject . castRef . unMediaQueryList
-  unsafeCastGObject = MediaQueryList . castRef . unGObject
-
-castToMediaQueryList :: GObjectClass obj => obj -> MediaQueryList
-castToMediaQueryList = castTo gTypeMediaQueryList "MediaQueryList"
-
-foreign import javascript unsafe "window[\"MediaQueryList\"]" gTypeMediaQueryList' :: JSRef GType
-gTypeMediaQueryList = GType gTypeMediaQueryList'
-#else
-type IsMediaQueryList o = MediaQueryListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype MessagePort = MessagePort (JSRef MessagePort)
-
-unMessagePort (MessagePort o) = o
-
-instance ToJSRef MessagePort where
-  toJSRef = return . unMessagePort
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef MessagePort where
-  fromJSRef = return . fmap MessagePort . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsMessagePort o
-toMessagePort :: IsMessagePort o => o -> MessagePort
-toMessagePort = unsafeCastGObject . toGObject
-
-instance IsMessagePort MessagePort
-instance GObjectClass MessagePort where
-  toGObject = GObject . castRef . unMessagePort
-  unsafeCastGObject = MessagePort . castRef . unGObject
-
-castToMessagePort :: GObjectClass obj => obj -> MessagePort
-castToMessagePort = castTo gTypeMessagePort "MessagePort"
-
-foreign import javascript unsafe "window[\"MessagePort\"]" gTypeMessagePort' :: JSRef GType
-gTypeMessagePort = GType gTypeMessagePort'
-#else
-type IsMessagePort o = MessagePortClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype MouseEvent = MouseEvent (JSRef MouseEvent)
-
-unMouseEvent (MouseEvent o) = o
-
-instance ToJSRef MouseEvent where
-  toJSRef = return . unMouseEvent
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef MouseEvent where
-  fromJSRef = return . fmap MouseEvent . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsUIEvent o => IsMouseEvent o
-toMouseEvent :: IsMouseEvent o => o -> MouseEvent
-toMouseEvent = unsafeCastGObject . toGObject
-
-instance IsMouseEvent MouseEvent
-instance IsUIEvent MouseEvent
-instance IsEvent MouseEvent
-instance GObjectClass MouseEvent where
-  toGObject = GObject . castRef . unMouseEvent
-  unsafeCastGObject = MouseEvent . castRef . unGObject
-
-castToMouseEvent :: GObjectClass obj => obj -> MouseEvent
-castToMouseEvent = castTo gTypeMouseEvent "MouseEvent"
-
-foreign import javascript unsafe "window[\"MouseEvent\"]" gTypeMouseEvent' :: JSRef GType
-gTypeMouseEvent = GType gTypeMouseEvent'
-#else
-type IsMouseEvent o = MouseEventClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype NamedNodeMap = NamedNodeMap (JSRef NamedNodeMap)
-
-unNamedNodeMap (NamedNodeMap o) = o
-
-instance ToJSRef NamedNodeMap where
-  toJSRef = return . unNamedNodeMap
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef NamedNodeMap where
-  fromJSRef = return . fmap NamedNodeMap . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsNamedNodeMap o
-toNamedNodeMap :: IsNamedNodeMap o => o -> NamedNodeMap
-toNamedNodeMap = unsafeCastGObject . toGObject
-
-instance IsNamedNodeMap NamedNodeMap
-instance GObjectClass NamedNodeMap where
-  toGObject = GObject . castRef . unNamedNodeMap
-  unsafeCastGObject = NamedNodeMap . castRef . unGObject
-
-castToNamedNodeMap :: GObjectClass obj => obj -> NamedNodeMap
-castToNamedNodeMap = castTo gTypeNamedNodeMap "NamedNodeMap"
-
-foreign import javascript unsafe "window[\"NamedNodeMap\"]" gTypeNamedNodeMap' :: JSRef GType
-gTypeNamedNodeMap = GType gTypeNamedNodeMap'
-#else
-type IsNamedNodeMap o = NamedNodeMapClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Navigator = Navigator (JSRef Navigator)
-
-unNavigator (Navigator o) = o
-
-instance ToJSRef Navigator where
-  toJSRef = return . unNavigator
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Navigator where
-  fromJSRef = return . fmap Navigator . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsNavigator o
-toNavigator :: IsNavigator o => o -> Navigator
-toNavigator = unsafeCastGObject . toGObject
-
-instance IsNavigator Navigator
-instance GObjectClass Navigator where
-  toGObject = GObject . castRef . unNavigator
-  unsafeCastGObject = Navigator . castRef . unGObject
-
-castToNavigator :: GObjectClass obj => obj -> Navigator
-castToNavigator = castTo gTypeNavigator "Navigator"
-
-foreign import javascript unsafe "window[\"Navigator\"]" gTypeNavigator' :: JSRef GType
-gTypeNavigator = GType gTypeNavigator'
-#else
-type IsNavigator o = NavigatorClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Node = Node (JSRef Node)
-
-unNode (Node o) = o
-
-instance ToJSRef Node where
-  toJSRef = return . unNode
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Node where
-  fromJSRef = return . fmap Node . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsNode o
-toNode :: IsNode o => o -> Node
-toNode = unsafeCastGObject . toGObject
-
-instance IsNode Node
-instance GObjectClass Node where
-  toGObject = GObject . castRef . unNode
-  unsafeCastGObject = Node . castRef . unGObject
-
-castToNode :: GObjectClass obj => obj -> Node
-castToNode = castTo gTypeNode "Node"
-
-foreign import javascript unsafe "window[\"Node\"]" gTypeNode' :: JSRef GType
-gTypeNode = GType gTypeNode'
-#else
-type IsNode o = NodeClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype NodeFilter = NodeFilter (JSRef NodeFilter)
-
-unNodeFilter (NodeFilter o) = o
-
-instance ToJSRef NodeFilter where
-  toJSRef = return . unNodeFilter
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef NodeFilter where
-  fromJSRef = return . fmap NodeFilter . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsNodeFilter o
-toNodeFilter :: IsNodeFilter o => o -> NodeFilter
-toNodeFilter = unsafeCastGObject . toGObject
-
-instance IsNodeFilter NodeFilter
-instance GObjectClass NodeFilter where
-  toGObject = GObject . castRef . unNodeFilter
-  unsafeCastGObject = NodeFilter . castRef . unGObject
-
-castToNodeFilter :: GObjectClass obj => obj -> NodeFilter
-castToNodeFilter = castTo gTypeNodeFilter "NodeFilter"
-
-foreign import javascript unsafe "window[\"NodeFilter\"]" gTypeNodeFilter' :: JSRef GType
-gTypeNodeFilter = GType gTypeNodeFilter'
-#else
-type IsNodeFilter o = NodeFilterClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype NodeIterator = NodeIterator (JSRef NodeIterator)
-
-unNodeIterator (NodeIterator o) = o
-
-instance ToJSRef NodeIterator where
-  toJSRef = return . unNodeIterator
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef NodeIterator where
-  fromJSRef = return . fmap NodeIterator . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsNodeIterator o
-toNodeIterator :: IsNodeIterator o => o -> NodeIterator
-toNodeIterator = unsafeCastGObject . toGObject
-
-instance IsNodeIterator NodeIterator
-instance GObjectClass NodeIterator where
-  toGObject = GObject . castRef . unNodeIterator
-  unsafeCastGObject = NodeIterator . castRef . unGObject
-
-castToNodeIterator :: GObjectClass obj => obj -> NodeIterator
-castToNodeIterator = castTo gTypeNodeIterator "NodeIterator"
-
-foreign import javascript unsafe "window[\"NodeIterator\"]" gTypeNodeIterator' :: JSRef GType
-gTypeNodeIterator = GType gTypeNodeIterator'
-#else
-type IsNodeIterator o = NodeIteratorClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype NodeList = NodeList (JSRef NodeList)
-
-unNodeList (NodeList o) = o
-
-instance ToJSRef NodeList where
-  toJSRef = return . unNodeList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef NodeList where
-  fromJSRef = return . fmap NodeList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsNodeList o
-toNodeList :: IsNodeList o => o -> NodeList
-toNodeList = unsafeCastGObject . toGObject
-
-instance IsNodeList NodeList
-instance GObjectClass NodeList where
-  toGObject = GObject . castRef . unNodeList
-  unsafeCastGObject = NodeList . castRef . unGObject
-
-castToNodeList :: GObjectClass obj => obj -> NodeList
-castToNodeList = castTo gTypeNodeList "NodeList"
-
-foreign import javascript unsafe "window[\"NodeList\"]" gTypeNodeList' :: JSRef GType
-gTypeNodeList = GType gTypeNodeList'
-#else
-type IsNodeList o = NodeListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype ProcessingInstruction = ProcessingInstruction (JSRef ProcessingInstruction)
-
-unProcessingInstruction (ProcessingInstruction o) = o
-
-instance ToJSRef ProcessingInstruction where
-  toJSRef = return . unProcessingInstruction
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef ProcessingInstruction where
-  fromJSRef = return . fmap ProcessingInstruction . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsCharacterData o => IsProcessingInstruction o
-toProcessingInstruction :: IsProcessingInstruction o => o -> ProcessingInstruction
-toProcessingInstruction = unsafeCastGObject . toGObject
-
-instance IsProcessingInstruction ProcessingInstruction
-instance IsCharacterData ProcessingInstruction
-instance IsNode ProcessingInstruction
-instance GObjectClass ProcessingInstruction where
-  toGObject = GObject . castRef . unProcessingInstruction
-  unsafeCastGObject = ProcessingInstruction . castRef . unGObject
-
-castToProcessingInstruction :: GObjectClass obj => obj -> ProcessingInstruction
-castToProcessingInstruction = castTo gTypeProcessingInstruction "ProcessingInstruction"
-
-foreign import javascript unsafe "window[\"ProcessingInstruction\"]" gTypeProcessingInstruction' :: JSRef GType
-gTypeProcessingInstruction = GType gTypeProcessingInstruction'
-#else
-type IsProcessingInstruction o = ProcessingInstructionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMRange = DOMRange (JSRef DOMRange)
-
-unDOMRange (DOMRange o) = o
-
-instance ToJSRef DOMRange where
-  toJSRef = return . unDOMRange
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMRange where
-  fromJSRef = return . fmap DOMRange . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMRange o
-toDOMRange :: IsDOMRange o => o -> DOMRange
-toDOMRange = unsafeCastGObject . toGObject
-
-instance IsDOMRange DOMRange
-instance GObjectClass DOMRange where
-  toGObject = GObject . castRef . unDOMRange
-  unsafeCastGObject = DOMRange . castRef . unGObject
-
-castToDOMRange :: GObjectClass obj => obj -> DOMRange
-castToDOMRange = castTo gTypeDOMRange "DOMRange"
-
-foreign import javascript unsafe "window[\"DOMRange\"]" gTypeDOMRange' :: JSRef GType
-gTypeDOMRange = GType gTypeDOMRange'
-#else
-type IsDOMRange o = DOMRangeClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype DOMScreen = DOMScreen (JSRef DOMScreen)
-
-unDOMScreen (DOMScreen o) = o
-
-instance ToJSRef DOMScreen where
-  toJSRef = return . unDOMScreen
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef DOMScreen where
-  fromJSRef = return . fmap DOMScreen . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsDOMScreen o
-toDOMScreen :: IsDOMScreen o => o -> DOMScreen
-toDOMScreen = unsafeCastGObject . toGObject
-
-instance IsDOMScreen DOMScreen
-instance GObjectClass DOMScreen where
-  toGObject = GObject . castRef . unDOMScreen
-  unsafeCastGObject = DOMScreen . castRef . unGObject
-
-castToDOMScreen :: GObjectClass obj => obj -> DOMScreen
-castToDOMScreen = castTo gTypeDOMScreen "DOMScreen"
-
-foreign import javascript unsafe "window[\"DOMScreen\"]" gTypeDOMScreen' :: JSRef GType
-gTypeDOMScreen = GType gTypeDOMScreen'
-#else
-type IsDOMScreen o = DOMScreenClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Storage = Storage (JSRef Storage)
-
-unStorage (Storage o) = o
-
-instance ToJSRef Storage where
-  toJSRef = return . unStorage
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Storage where
-  fromJSRef = return . fmap Storage . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsStorage o
-toStorage :: IsStorage o => o -> Storage
-toStorage = unsafeCastGObject . toGObject
-
-instance IsStorage Storage
-instance GObjectClass Storage where
-  toGObject = GObject . castRef . unStorage
-  unsafeCastGObject = Storage . castRef . unGObject
-
-castToStorage :: GObjectClass obj => obj -> Storage
-castToStorage = castTo gTypeStorage "Storage"
-
-foreign import javascript unsafe "window[\"Storage\"]" gTypeStorage' :: JSRef GType
-gTypeStorage = GType gTypeStorage'
-#else
-type IsStorage o = StorageClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype StorageInfo = StorageInfo (JSRef StorageInfo)
-
-unStorageInfo (StorageInfo o) = o
-
-instance ToJSRef StorageInfo where
-  toJSRef = return . unStorageInfo
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef StorageInfo where
-  fromJSRef = return . fmap StorageInfo . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsStorageInfo o
-toStorageInfo :: IsStorageInfo o => o -> StorageInfo
-toStorageInfo = unsafeCastGObject . toGObject
-
-instance IsStorageInfo StorageInfo
-instance GObjectClass StorageInfo where
-  toGObject = GObject . castRef . unStorageInfo
-  unsafeCastGObject = StorageInfo . castRef . unGObject
-
-castToStorageInfo :: GObjectClass obj => obj -> StorageInfo
-castToStorageInfo = castTo gTypeStorageInfo "StorageInfo"
-
-foreign import javascript unsafe "window[\"StorageInfo\"]" gTypeStorageInfo' :: JSRef GType
-gTypeStorageInfo = GType gTypeStorageInfo'
-#else
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype StyleMedia = StyleMedia (JSRef StyleMedia)
-
-unStyleMedia (StyleMedia o) = o
-
-instance ToJSRef StyleMedia where
-  toJSRef = return . unStyleMedia
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef StyleMedia where
-  fromJSRef = return . fmap StyleMedia . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsStyleMedia o
-toStyleMedia :: IsStyleMedia o => o -> StyleMedia
-toStyleMedia = unsafeCastGObject . toGObject
-
-instance IsStyleMedia StyleMedia
-instance GObjectClass StyleMedia where
-  toGObject = GObject . castRef . unStyleMedia
-  unsafeCastGObject = StyleMedia . castRef . unGObject
-
-castToStyleMedia :: GObjectClass obj => obj -> StyleMedia
-castToStyleMedia = castTo gTypeStyleMedia "StyleMedia"
-
-foreign import javascript unsafe "window[\"StyleMedia\"]" gTypeStyleMedia' :: JSRef GType
-gTypeStyleMedia = GType gTypeStyleMedia'
-#else
-type IsStyleMedia o = StyleMediaClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype StyleSheet = StyleSheet (JSRef StyleSheet)
-
-unStyleSheet (StyleSheet o) = o
-
-instance ToJSRef StyleSheet where
-  toJSRef = return . unStyleSheet
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef StyleSheet where
-  fromJSRef = return . fmap StyleSheet . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsStyleSheet o
-toStyleSheet :: IsStyleSheet o => o -> StyleSheet
-toStyleSheet = unsafeCastGObject . toGObject
-
-instance IsStyleSheet StyleSheet
-instance GObjectClass StyleSheet where
-  toGObject = GObject . castRef . unStyleSheet
-  unsafeCastGObject = StyleSheet . castRef . unGObject
-
-castToStyleSheet :: GObjectClass obj => obj -> StyleSheet
-castToStyleSheet = castTo gTypeStyleSheet "StyleSheet"
-
-foreign import javascript unsafe "window[\"StyleSheet\"]" gTypeStyleSheet' :: JSRef GType
-gTypeStyleSheet = GType gTypeStyleSheet'
-#else
-type IsStyleSheet o = StyleSheetClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype StyleSheetList = StyleSheetList (JSRef StyleSheetList)
-
-unStyleSheetList (StyleSheetList o) = o
-
-instance ToJSRef StyleSheetList where
-  toJSRef = return . unStyleSheetList
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef StyleSheetList where
-  fromJSRef = return . fmap StyleSheetList . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsStyleSheetList o
-toStyleSheetList :: IsStyleSheetList o => o -> StyleSheetList
-toStyleSheetList = unsafeCastGObject . toGObject
-
-instance IsStyleSheetList StyleSheetList
-instance GObjectClass StyleSheetList where
-  toGObject = GObject . castRef . unStyleSheetList
-  unsafeCastGObject = StyleSheetList . castRef . unGObject
-
-castToStyleSheetList :: GObjectClass obj => obj -> StyleSheetList
-castToStyleSheetList = castTo gTypeStyleSheetList "StyleSheetList"
-
-foreign import javascript unsafe "window[\"StyleSheetList\"]" gTypeStyleSheetList' :: JSRef GType
-gTypeStyleSheetList = GType gTypeStyleSheetList'
-#else
-type IsStyleSheetList o = StyleSheetListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype Text = Text (JSRef Text)
-
-unText (Text o) = o
-
-instance ToJSRef Text where
-  toJSRef = return . unText
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef Text where
-  fromJSRef = return . fmap Text . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsCharacterData o => IsText o
-toText :: IsText o => o -> Text
-toText = unsafeCastGObject . toGObject
-
-instance IsText Text
-instance IsCharacterData Text
-instance IsNode Text
-instance GObjectClass Text where
-  toGObject = GObject . castRef . unText
-  unsafeCastGObject = Text . castRef . unGObject
-
-castToText :: GObjectClass obj => obj -> Text
-castToText = castTo gTypeText "Text"
-
-foreign import javascript unsafe "window[\"Text\"]" gTypeText' :: JSRef GType
-gTypeText = GType gTypeText'
-#else
-type IsText o = TextClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype TimeRanges = TimeRanges (JSRef TimeRanges)
-
-unTimeRanges (TimeRanges o) = o
-
-instance ToJSRef TimeRanges where
-  toJSRef = return . unTimeRanges
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef TimeRanges where
-  fromJSRef = return . fmap TimeRanges . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsTimeRanges o
-toTimeRanges :: IsTimeRanges o => o -> TimeRanges
-toTimeRanges = unsafeCastGObject . toGObject
-
-instance IsTimeRanges TimeRanges
-instance GObjectClass TimeRanges where
-  toGObject = GObject . castRef . unTimeRanges
-  unsafeCastGObject = TimeRanges . castRef . unGObject
-
-castToTimeRanges :: GObjectClass obj => obj -> TimeRanges
-castToTimeRanges = castTo gTypeTimeRanges "TimeRanges"
-
-foreign import javascript unsafe "window[\"TimeRanges\"]" gTypeTimeRanges' :: JSRef GType
-gTypeTimeRanges = GType gTypeTimeRanges'
-#else
-type IsTimeRanges o = TimeRangesClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype TreeWalker = TreeWalker (JSRef TreeWalker)
-
-unTreeWalker (TreeWalker o) = o
-
-instance ToJSRef TreeWalker where
-  toJSRef = return . unTreeWalker
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef TreeWalker where
-  fromJSRef = return . fmap TreeWalker . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsTreeWalker o
-toTreeWalker :: IsTreeWalker o => o -> TreeWalker
-toTreeWalker = unsafeCastGObject . toGObject
-
-instance IsTreeWalker TreeWalker
-instance GObjectClass TreeWalker where
-  toGObject = GObject . castRef . unTreeWalker
-  unsafeCastGObject = TreeWalker . castRef . unGObject
-
-castToTreeWalker :: GObjectClass obj => obj -> TreeWalker
-castToTreeWalker = castTo gTypeTreeWalker "TreeWalker"
-
-foreign import javascript unsafe "window[\"TreeWalker\"]" gTypeTreeWalker' :: JSRef GType
-gTypeTreeWalker = GType gTypeTreeWalker'
-#else
-type IsTreeWalker o = TreeWalkerClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype UIEvent = UIEvent (JSRef UIEvent)
-
-unUIEvent (UIEvent o) = o
-
-instance ToJSRef UIEvent where
-  toJSRef = return . unUIEvent
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef UIEvent where
-  fromJSRef = return . fmap UIEvent . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class IsEvent o => IsUIEvent o
-toUIEvent :: IsUIEvent o => o -> UIEvent
-toUIEvent = unsafeCastGObject . toGObject
-
-instance IsUIEvent UIEvent
-instance IsEvent UIEvent
-instance GObjectClass UIEvent where
-  toGObject = GObject . castRef . unUIEvent
-  unsafeCastGObject = UIEvent . castRef . unGObject
-
-castToUIEvent :: GObjectClass obj => obj -> UIEvent
-castToUIEvent = castTo gTypeUIEvent "UIEvent"
-
-foreign import javascript unsafe "window[\"UIEvent\"]" gTypeUIEvent' :: JSRef GType
-gTypeUIEvent = GType gTypeUIEvent'
-#else
-type IsUIEvent o = UIEventClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype ValidityState = ValidityState (JSRef ValidityState)
-
-unValidityState (ValidityState o) = o
-
-instance ToJSRef ValidityState where
-  toJSRef = return . unValidityState
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef ValidityState where
-  fromJSRef = return . fmap ValidityState . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsValidityState o
-toValidityState :: IsValidityState o => o -> ValidityState
-toValidityState = unsafeCastGObject . toGObject
-
-instance IsValidityState ValidityState
-instance GObjectClass ValidityState where
-  toGObject = GObject . castRef . unValidityState
-  unsafeCastGObject = ValidityState . castRef . unGObject
-
-castToValidityState :: GObjectClass obj => obj -> ValidityState
-castToValidityState = castTo gTypeValidityState "ValidityState"
-
-foreign import javascript unsafe "window[\"ValidityState\"]" gTypeValidityState' :: JSRef GType
-gTypeValidityState = GType gTypeValidityState'
-#else
-type IsValidityState o = ValidityStateClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype WebKitNamedFlow = WebKitNamedFlow (JSRef WebKitNamedFlow)
-
-unWebKitNamedFlow (WebKitNamedFlow o) = o
-
-instance ToJSRef WebKitNamedFlow where
-  toJSRef = return . unWebKitNamedFlow
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef WebKitNamedFlow where
-  fromJSRef = return . fmap WebKitNamedFlow . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsWebKitNamedFlow o
-toWebKitNamedFlow :: IsWebKitNamedFlow o => o -> WebKitNamedFlow
-toWebKitNamedFlow = unsafeCastGObject . toGObject
-
-instance IsWebKitNamedFlow WebKitNamedFlow
-instance GObjectClass WebKitNamedFlow where
-  toGObject = GObject . castRef . unWebKitNamedFlow
-  unsafeCastGObject = WebKitNamedFlow . castRef . unGObject
-
-castToWebKitNamedFlow :: GObjectClass obj => obj -> WebKitNamedFlow
-castToWebKitNamedFlow = castTo gTypeWebKitNamedFlow "WebKitNamedFlow"
-
-foreign import javascript unsafe "window[\"WebKitNamedFlow\"]" gTypeWebKitNamedFlow' :: JSRef GType
-gTypeWebKitNamedFlow = GType gTypeWebKitNamedFlow'
-#else
-type IsWebKitNamedFlow o = WebKitNamedFlowClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype WebKitPoint = WebKitPoint (JSRef WebKitPoint)
-
-unWebKitPoint (WebKitPoint o) = o
-
-instance ToJSRef WebKitPoint where
-  toJSRef = return . unWebKitPoint
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef WebKitPoint where
-  fromJSRef = return . fmap WebKitPoint . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsWebKitPoint o
-toWebKitPoint :: IsWebKitPoint o => o -> WebKitPoint
-toWebKitPoint = unsafeCastGObject . toGObject
-
-instance IsWebKitPoint WebKitPoint
-instance GObjectClass WebKitPoint where
-  toGObject = GObject . castRef . unWebKitPoint
-  unsafeCastGObject = WebKitPoint . castRef . unGObject
-
-castToWebKitPoint :: GObjectClass obj => obj -> WebKitPoint
-castToWebKitPoint = castTo gTypeWebKitPoint "WebKitPoint"
-
-foreign import javascript unsafe "window[\"WebKitPoint\"]" gTypeWebKitPoint' :: JSRef GType
-gTypeWebKitPoint = GType gTypeWebKitPoint'
-#else
-type IsWebKitPoint o = WebKitPointClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype XPathExpression = XPathExpression (JSRef XPathExpression)
-
-unXPathExpression (XPathExpression o) = o
-
-instance ToJSRef XPathExpression where
-  toJSRef = return . unXPathExpression
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef XPathExpression where
-  fromJSRef = return . fmap XPathExpression . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsXPathExpression o
-toXPathExpression :: IsXPathExpression o => o -> XPathExpression
-toXPathExpression = unsafeCastGObject . toGObject
-
-instance IsXPathExpression XPathExpression
-instance GObjectClass XPathExpression where
-  toGObject = GObject . castRef . unXPathExpression
-  unsafeCastGObject = XPathExpression . castRef . unGObject
-
-castToXPathExpression :: GObjectClass obj => obj -> XPathExpression
-castToXPathExpression = castTo gTypeXPathExpression "XPathExpression"
-
-foreign import javascript unsafe "window[\"XPathExpression\"]" gTypeXPathExpression' :: JSRef GType
-gTypeXPathExpression = GType gTypeXPathExpression'
-#else
-type IsXPathExpression o = XPathExpressionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype XPathNSResolver = XPathNSResolver (JSRef XPathNSResolver)
-
-unXPathNSResolver (XPathNSResolver o) = o
-
-instance ToJSRef XPathNSResolver where
-  toJSRef = return . unXPathNSResolver
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef XPathNSResolver where
-  fromJSRef = return . fmap XPathNSResolver . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsXPathNSResolver o
-toXPathNSResolver :: IsXPathNSResolver o => o -> XPathNSResolver
-toXPathNSResolver = unsafeCastGObject . toGObject
-
-instance IsXPathNSResolver XPathNSResolver
-instance GObjectClass XPathNSResolver where
-  toGObject = GObject . castRef . unXPathNSResolver
-  unsafeCastGObject = XPathNSResolver . castRef . unGObject
-
-castToXPathNSResolver :: GObjectClass obj => obj -> XPathNSResolver
-castToXPathNSResolver = castTo gTypeXPathNSResolver "XPathNSResolver"
-
-foreign import javascript unsafe "window[\"XPathNSResolver\"]" gTypeXPathNSResolver' :: JSRef GType
-gTypeXPathNSResolver = GType gTypeXPathNSResolver'
-#else
-type IsXPathNSResolver o = XPathNSResolverClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype XPathResult = XPathResult (JSRef XPathResult)
-
-unXPathResult (XPathResult o) = o
-
-instance ToJSRef XPathResult where
-  toJSRef = return . unXPathResult
-  {-# INLINE toJSRef #-}
-
-instance FromJSRef XPathResult where
-  fromJSRef = return . fmap XPathResult . maybeJSNull
-  {-# INLINE fromJSRef #-}
-
-class GObjectClass o => IsXPathResult o
-toXPathResult :: IsXPathResult o => o -> XPathResult
-toXPathResult = unsafeCastGObject . toGObject
-
-instance IsXPathResult XPathResult
-instance GObjectClass XPathResult where
-  toGObject = GObject . castRef . unXPathResult
-  unsafeCastGObject = XPathResult . castRef . unGObject
-
-castToXPathResult :: GObjectClass obj => obj -> XPathResult
-castToXPathResult = castTo gTypeXPathResult "XPathResult"
-
-foreign import javascript unsafe "window[\"XPathResult\"]" gTypeXPathResult' :: JSRef GType
-gTypeXPathResult = GType gTypeXPathResult'
-#else
-type IsXPathResult o = XPathResultClass o
+{-# LANGUAGE CPP #-}
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface, ConstraintKinds, FlexibleInstances #-}
+#else
+{-# LANGUAGE ConstraintKinds #-}
+#endif
+module GHCJS.DOM.Types (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  -- * Object
+    maybeJSNullOrUndefined, 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
+#else
+    propagateGError, GType(..), DOMString(..), ToDOMString(..), FromDOMString(..)
+  , FocusEvent
+  , TouchEvent
+  , module Graphics.UI.Gtk.WebKit.Types
+  , IsGObject
+
+  , IsApplicationCache
+  , IsAttr
+#ifndef USE_OLD_WEBKIT
+  , IsAudioTrack
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsAudioTrackList
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsBarProp
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsBatteryManager
+#endif
+  , IsBlob
+  , IsCDATASection
+#ifndef USE_OLD_WEBKIT
+  , IsCSS
+#endif
+  , IsCSSRule
+  , IsCSSRuleList
+  , IsCSSStyleDeclaration
+  , IsCSSStyleSheet
+  , IsCSSValue
+  , IsCharacterData
+  , IsComment
+  , IsDOMImplementation
+#ifndef USE_OLD_WEBKIT
+  , IsDOMNamedFlowCollection
+#endif
+  , IsDOMSettableTokenList
+  , IsDOMStringList
+  , IsDOMTokenList
+  , IsDocument
+  , IsDocumentFragment
+  , IsDocumentType
+  , IsElement
+  , IsEntityReference
+  , IsEvent
+  , IsEventTarget
+  , IsFile
+  , IsFileList
+  , IsGeolocation
+  , IsHTMLAnchorElement
+  , IsHTMLAppletElement
+  , IsHTMLAreaElement
+  , IsHTMLAudioElement
+  , IsHTMLBRElement
+  , IsHTMLBaseElement
+  , IsHTMLBaseFontElement
+  , IsHTMLBodyElement
+  , IsHTMLButtonElement
+  , IsHTMLCanvasElement
+  , IsHTMLCollection
+  , IsHTMLDListElement
+  , IsHTMLDetailsElement
+  , IsHTMLDirectoryElement
+  , IsHTMLDivElement
+  , IsHTMLDocument
+  , IsHTMLElement
+  , IsHTMLEmbedElement
+  , IsHTMLFieldSetElement
+  , IsHTMLFontElement
+  , IsHTMLFormElement
+  , IsHTMLFrameElement
+  , IsHTMLFrameSetElement
+  , IsHTMLHRElement
+  , IsHTMLHeadElement
+  , IsHTMLHeadingElement
+  , IsHTMLHtmlElement
+  , IsHTMLIFrameElement
+  , IsHTMLImageElement
+  , IsHTMLInputElement
+  , IsHTMLKeygenElement
+  , IsHTMLLIElement
+  , IsHTMLLabelElement
+  , IsHTMLLegendElement
+  , IsHTMLLinkElement
+  , IsHTMLMapElement
+  , IsHTMLMarqueeElement
+  , IsHTMLMediaElement
+  , IsHTMLMenuElement
+  , IsHTMLMetaElement
+  , IsHTMLModElement
+  , IsHTMLOListElement
+  , IsHTMLObjectElement
+  , IsHTMLOptGroupElement
+  , IsHTMLOptionElement
+  , IsHTMLOptionsCollection
+  , IsHTMLParagraphElement
+  , IsHTMLParamElement
+  , IsHTMLPreElement
+  , IsHTMLQuoteElement
+  , IsHTMLScriptElement
+  , IsHTMLSelectElement
+  , IsHTMLStyleElement
+  , IsHTMLTableCaptionElement
+  , IsHTMLTableCellElement
+  , IsHTMLTableColElement
+  , IsHTMLTableElement
+  , IsHTMLTableRowElement
+  , IsHTMLTableSectionElement
+  , IsHTMLTextAreaElement
+  , IsHTMLTitleElement
+  , IsHTMLUListElement
+  , IsHTMLVideoElement
+  , IsHistory
+#ifndef USE_OLD_WEBKIT
+  , IsKeyboardEvent
+#endif
+  , IsLocation
+  , IsMediaError
+  , IsMediaList
+  , IsMediaQueryList
+  , IsMessagePort
+  , IsMimeType
+  , IsMimeTypeArray
+  , IsMouseEvent
+  , IsNamedNodeMap
+  , IsNavigator
+  , IsNode
+  , IsNodeFilter
+  , IsNodeIterator
+  , IsNodeList
+#ifndef USE_OLD_WEBKIT
+  , IsPerformance
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsPerformanceNavigation
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsPerformanceTiming
+#endif
+  , IsPlugin
+  , IsPluginArray
+  , IsProcessingInstruction
+  , IsRange
+  , IsScreen
+#ifndef USE_OLD_WEBKIT
+  , IsSecurityPolicy
+#endif
+  , IsSelection
+  , IsStorage
+#ifndef USE_OLD_WEBKIT
+  , IsStorageInfo
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsStorageQuota
+#endif
+  , IsStyleMedia
+  , IsStyleSheet
+  , IsStyleSheetList
+  , IsText
+#ifndef USE_OLD_WEBKIT
+  , IsTextTrack
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsTextTrackCue
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsTextTrackCueList
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsTextTrackList
+#endif
+  , IsTimeRanges
+#ifndef USE_OLD_WEBKIT
+  , IsTouch
+#endif
+  , IsTreeWalker
+  , IsUIEvent
+  , IsValidityState
+#ifndef USE_OLD_WEBKIT
+  , IsVideoTrack
+#endif
+#ifndef USE_OLD_WEBKIT
+  , IsVideoTrackList
+#endif
+  , IsWebKitNamedFlow
+  , IsWebKitPoint
+#ifndef USE_OLD_WEBKIT
+  , IsWheelEvent
+#endif
+  , IsWindow
+  , IsXPathExpression
+  , IsXPathNSResolver
+  , IsXPathResult
+-- AUTO GENERATION ENDS HERE
+#endif
+  ) where
+
+import Control.Applicative ((<$>))
+import qualified Data.Text as T (Text)
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import qualified Data.Text.Lazy as LT (Text)
+import Data.JSString (pack, unpack)
+import Data.JSString.Text (textToJSString, textFromJSString, lazyTextToJSString, lazyTextFromJSString)
+import GHCJS.Types (JSRef(..), castRef, nullRef, isNull, isUndefined, JSString(..))
+import GHCJS.Marshal (ToJSRef(..), FromJSRef(..))
+import GHCJS.Marshal.Pure (PToJSRef(..), PFromJSRef(..))
+import GHCJS.Foreign.Callback (Callback(..))
+import Control.Monad.IO.Class (MonadIO(..))
+#else
+import Data.Maybe (isNothing)
+import Foreign.C (CString)
+import Graphics.UI.Gtk.WebKit.Types
+import System.Glib (propagateGError, GType(..))
+import System.Glib.UTFString
+       (readUTFString, GlibString(..))
+#endif
+import Data.Int (Int8, Int16, Int32, Int64)
+import Data.Word (Word8, Word16, Word32, Word64)
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+maybeJSNullOrUndefined :: JSRef a -> Maybe (JSRef a)
+maybeJSNullOrUndefined r | isNull r || isUndefined r = Nothing
+maybeJSNullOrUndefined r = Just r
+
+propagateGError = id
+
+data GType = GType (JSRef GType)
+
+foreign import javascript unsafe
+  "$1===$2" js_eq :: JSRef a -> JSRef a -> Bool
+
+#ifdef ghcjs_HOST_OS
+foreign import javascript unsafe "h$isInstanceOf $1 $2"
+    typeInstanceIsA' :: JSRef a -> JSRef GType -> Bool
+#else
+typeInstanceIsA' :: JSRef a -> JSRef GType -> Bool
+typeInstanceIsA' = error "typeInstanceIsA': only available in JavaScript"
+#endif
+
+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 -> obj')
+castTo gtype objTypeName obj =
+  case toGObject obj of
+    gobj@(GObject objRef)
+      | typeInstanceIsA objRef gtype
+                  -> 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 :: JSRef GObject }
+
+class (ToJSRef o, FromJSRef o) => IsGObject o where
+  -- | Safe upcast.
+  toGObject         :: o -> GObject
+  -- | Unchecked downcast.
+  unsafeCastGObject :: GObject -> o
+
+instance PToJSRef GObject where
+  pToJSRef = unGObject
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef GObject where
+  pFromJSRef = GObject
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef GObject where
+  toJSRef = return . unGObject
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef GObject where
+  fromJSRef = return . fmap GObject . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+--instance IsGObject o => PToJSRef o where
+--  pToJSRef = castRef . unGObject . toGObject
+--  {-# INLINE pToJSRef #-}
+--
+--instance IsGObject o => PFromJSRef o where
+--  pFromJSRef = unsafeCastGObject . GObject . castRef
+--  {-# INLINE pFromJSRef #-}
+--
+--instance IsGObject o => ToJSRef o where
+--  toJSRef = return . castRef . unGObject . toGObject
+--  {-# INLINE toJSRef #-}
+--
+--instance IsGObject o => FromJSRef o where
+--  fromJSRef = return . fmap (unsafeCastGObject . GObject . castRef) . maybeJSNullOrUndefined
+--  {-# INLINE fromJSRef #-}
+
+instance IsGObject GObject where
+  toGObject = id
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = id
+  {-# INLINE unsafeCastGObject #-}
+
+castToGObject :: IsGObject obj => obj -> obj
+castToGObject = id
+
+#ifdef ghcjs_HOST_OS
+foreign import javascript unsafe "object" gTypeGObject' :: JSRef GType
+#else
+gTypeGObject' = error "gTypeGObject': only available in JavaScript"
+#endif
+gTypeGObject = GType gTypeGObject'
+
+foreign import javascript unsafe "$1[\"toString\"]()" js_objectToString :: JSRef GObject -> IO JSString
+
+objectToString :: (MonadIO m, IsGObject self, FromJSString result) => self -> m result
+objectToString self = liftIO (fromJSString <$> (js_objectToString (unGObject (toGObject self))))
+
+#ifdef ghcjs_HOST_OS
+-- | 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 (PToJSRef a, ToJSRef a) => ToJSString a
+class (PFromJSRef a, FromJSRef a) => FromJSString a
+
+toJSString :: ToJSString a => a -> JSString
+toJSString = pFromJSRef . castRef . pToJSRef
+{-# INLINE toJSString #-}
+
+fromJSString :: FromJSString a => JSString -> a
+fromJSString = pFromJSRef . castRef . pToJSRef
+{-# INLINE fromJSString #-}
+
+toMaybeJSString :: ToJSString a => Maybe a -> JSRef (Maybe JSString)
+toMaybeJSString = pFromJSRef . castRef . pToJSRef
+{-# INLINE toMaybeJSString #-}
+
+fromMaybeJSString :: FromJSString a => JSRef (Maybe JSString) -> Maybe a
+fromMaybeJSString = pFromJSRef . castRef . pToJSRef
+{-# 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
+#endif
+
+#else
+type IsGObject o = GObjectClass o
+
+-- | Fastest string type to use when you just
+--   want to take a string from the DOM then
+--   give it back as is.
+type DOMString = T.Text
+
+type ToDOMString s = GlibString s
+type FromDOMString s = GlibString s
+
+type FocusEvent = UIEvent
+type TouchEvent = UIEvent
+#endif
+
+type IsDOMString s = (ToDOMString s, FromDOMString s)
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- Callbacks
+type AudioBufferCallback = Callback (JSRef (Maybe AudioBuffer) -> IO ())
+type DatabaseCallback = Callback (JSRef (Maybe Database) -> IO ())
+type MediaQueryListListener = Callback (JSRef (Maybe MediaQueryList) -> IO ())
+type MediaStreamTrackSourcesCallback = Callback (JSRef [Maybe SourceInfo] -> IO ())
+type NavigatorUserMediaErrorCallback = Callback (JSRef (Maybe NavigatorUserMediaError) -> IO ())
+type NavigatorUserMediaSuccessCallback = Callback (JSRef (Maybe MediaStream) -> IO ())
+type NotificationPermissionCallback permission = Callback (JSRef permission -> IO ())
+type PositionCallback = Callback (JSRef (Maybe Geoposition) -> IO ())
+type PositionErrorCallback = Callback (JSRef (Maybe PositionError) -> IO ())
+type RequestAnimationFrameCallback = Callback (JSRef Double -> IO ())
+type RTCPeerConnectionErrorCallback = Callback (JSRef (Maybe DOMError) -> IO ())
+type RTCSessionDescriptionCallback = Callback (JSRef (Maybe RTCSessionDescription) -> IO ())
+type RTCStatsCallback = Callback (JSRef (Maybe RTCStatsResponse) -> IO ())
+type SQLStatementCallback = Callback (JSRef (Maybe SQLTransaction) -> JSRef (Maybe SQLResultSet) -> IO ())
+type SQLStatementErrorCallback = Callback (JSRef (Maybe SQLTransaction) -> JSRef (Maybe SQLError) -> IO ())
+type SQLTransactionCallback = Callback (JSRef (Maybe SQLTransaction) -> IO ())
+type SQLTransactionErrorCallback = Callback (JSRef (Maybe SQLError) -> IO ())
+type StorageErrorCallback = Callback (JSRef (Maybe DOMException) -> IO ())
+type StorageQuotaCallback = Callback (JSRef Double -> IO ())
+type StorageUsageCallback = Callback (JSRef Double -> JSRef Double -> IO ())
+type StringCallback s = Callback (JSRef s -> IO ())
+type VoidCallback = Callback (IO ())
+#endif
+
+-- Custom types
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype SerializedScriptValue = SerializedScriptValue { unSerializedScriptValue :: JSRef SerializedScriptValue }
+
+instance Eq SerializedScriptValue where
+  (SerializedScriptValue a) == (SerializedScriptValue b) = js_eq a b
+
+instance PToJSRef SerializedScriptValue where
+  pToJSRef = unSerializedScriptValue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SerializedScriptValue where
+  pFromJSRef = SerializedScriptValue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SerializedScriptValue where
+  toJSRef = return . unSerializedScriptValue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SerializedScriptValue where
+  fromJSRef = return . fmap SerializedScriptValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsSerializedScriptValue o
+toSerializedScriptValue :: IsSerializedScriptValue o => o -> SerializedScriptValue
+toSerializedScriptValue = unsafeCastGObject . toGObject
+
+instance IsSerializedScriptValue SerializedScriptValue
+instance IsGObject SerializedScriptValue where
+  toGObject = GObject . castRef . unSerializedScriptValue
+  unsafeCastGObject = SerializedScriptValue . castRef . unGObject
+-- TODO add more IsSerializedScriptValue instances
+#else
+-- TODO work out how we can support SerializedScriptValue in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype PositionOptions = PositionOptions { unPositionOptions :: JSRef PositionOptions }
+
+instance Eq PositionOptions where
+  (PositionOptions a) == (PositionOptions b) = js_eq a b
+
+instance PToJSRef PositionOptions where
+  pToJSRef = unPositionOptions
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PositionOptions where
+  pFromJSRef = PositionOptions
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PositionOptions where
+  toJSRef = return . unPositionOptions
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PositionOptions where
+  fromJSRef = return . fmap PositionOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsPositionOptions o
+toPositionOptions :: IsPositionOptions o => o -> PositionOptions
+toPositionOptions = unsafeCastGObject . toGObject
+
+instance IsPositionOptions PositionOptions
+instance IsGObject PositionOptions where
+  toGObject = GObject . castRef . unPositionOptions
+  unsafeCastGObject = PositionOptions . castRef . unGObject
+-- TODO add more IsPositionOptions instances
+#else
+-- TODO work out how we can support PositionOptions in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Dictionary = Dictionary { unDictionary :: JSRef Dictionary }
+
+instance Eq Dictionary where
+  (Dictionary a) == (Dictionary b) = js_eq a b
+
+instance PToJSRef Dictionary where
+  pToJSRef = unDictionary
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Dictionary where
+  pFromJSRef = Dictionary
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Dictionary where
+  toJSRef = return . unDictionary
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Dictionary where
+  fromJSRef = return . fmap Dictionary . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsDictionary o
+toDictionary :: IsDictionary o => o -> Dictionary
+toDictionary = unsafeCastGObject . toGObject
+
+instance IsDictionary Dictionary
+instance IsGObject Dictionary where
+  toGObject = GObject . castRef . unDictionary
+  unsafeCastGObject = Dictionary . castRef . unGObject
+-- TODO add more IsDictionary instances
+#else
+-- TODO work out how we can support Dictionary in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype BlobPropertyBag = BlobPropertyBag { unBlobPropertyBag :: JSRef BlobPropertyBag }
+
+instance Eq BlobPropertyBag where
+  (BlobPropertyBag a) == (BlobPropertyBag b) = js_eq a b
+
+instance PToJSRef BlobPropertyBag where
+  pToJSRef = unBlobPropertyBag
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef BlobPropertyBag where
+  pFromJSRef = BlobPropertyBag
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef BlobPropertyBag where
+  toJSRef = return . unBlobPropertyBag
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef BlobPropertyBag where
+  fromJSRef = return . fmap BlobPropertyBag . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsBlobPropertyBag o
+toBlobPropertyBag :: IsBlobPropertyBag o => o -> BlobPropertyBag
+toBlobPropertyBag = unsafeCastGObject . toGObject
+
+instance IsBlobPropertyBag BlobPropertyBag
+instance IsGObject BlobPropertyBag where
+  toGObject = GObject . castRef . unBlobPropertyBag
+  unsafeCastGObject = BlobPropertyBag . castRef . unGObject
+-- TODO add more IsBlobPropertyBag instances
+#else
+-- TODO work out how we can support BlobPropertyBag in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype MutationCallback = MutationCallback { unMutationCallback :: JSRef MutationCallback }
+
+instance Eq MutationCallback where
+  (MutationCallback a) == (MutationCallback b) = js_eq a b
+
+instance PToJSRef MutationCallback where
+  pToJSRef = unMutationCallback
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MutationCallback where
+  pFromJSRef = MutationCallback
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MutationCallback where
+  toJSRef = return . unMutationCallback
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MutationCallback where
+  fromJSRef = return . fmap MutationCallback . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsMutationCallback o
+toMutationCallback :: IsMutationCallback o => o -> MutationCallback
+toMutationCallback = unsafeCastGObject . toGObject
+
+instance IsMutationCallback MutationCallback
+instance IsGObject MutationCallback where
+  toGObject = GObject . castRef . unMutationCallback
+  unsafeCastGObject = MutationCallback . castRef . unGObject
+-- TODO add more IsMutationCallback instances
+#else
+-- TODO work out how we can support MutationCallback in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Promise = Promise { unPromise :: JSRef Promise }
+
+instance Eq Promise where
+  (Promise a) == (Promise b) = js_eq a b
+
+instance PToJSRef Promise where
+  pToJSRef = unPromise
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Promise where
+  pFromJSRef = Promise
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Promise where
+  toJSRef = return . unPromise
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Promise where
+  fromJSRef = return . fmap Promise . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsPromise o
+toPromise :: IsPromise o => o -> Promise
+toPromise = unsafeCastGObject . toGObject
+
+instance IsPromise Promise
+instance IsGObject Promise where
+  toGObject = GObject . castRef . unPromise
+  unsafeCastGObject = Promise . castRef . unGObject
+-- TODO add more IsPromise instances
+
+castToPromise :: IsGObject obj => obj -> Promise
+castToPromise = castTo gTypePromise "Promise"
+
+foreign import javascript unsafe "window[\"Promise\"]" gTypePromise' :: JSRef GType
+gTypePromise = GType gTypePromise'
+#else
+-- TODO work out how we can support Promise in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype ArrayBuffer = ArrayBuffer { unArrayBuffer :: JSRef ArrayBuffer }
+
+instance Eq ArrayBuffer where
+  (ArrayBuffer a) == (ArrayBuffer b) = js_eq a b
+
+instance PToJSRef ArrayBuffer where
+  pToJSRef = unArrayBuffer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ArrayBuffer where
+  pFromJSRef = ArrayBuffer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ArrayBuffer where
+  toJSRef = return . unArrayBuffer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ArrayBuffer where
+  fromJSRef = return . fmap ArrayBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsArrayBuffer o
+toArrayBuffer :: IsArrayBuffer o => o -> ArrayBuffer
+toArrayBuffer = unsafeCastGObject . toGObject
+
+instance IsArrayBuffer ArrayBuffer
+instance IsGObject ArrayBuffer where
+  toGObject = GObject . castRef . unArrayBuffer
+  unsafeCastGObject = ArrayBuffer . castRef . unGObject
+
+castToArrayBuffer :: IsGObject obj => obj -> ArrayBuffer
+castToArrayBuffer = castTo gTypeArrayBuffer "ArrayBuffer"
+
+foreign import javascript unsafe "window[\"ArrayBuffer\"]" gTypeArrayBuffer' :: JSRef GType
+gTypeArrayBuffer = GType gTypeArrayBuffer'
+#else
+-- TODO work out how we can support ArrayBuffer in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Float32Array = Float32Array { unFloat32Array :: JSRef Float32Array }
+
+instance Eq Float32Array where
+  (Float32Array a) == (Float32Array b) = js_eq a b
+
+instance PToJSRef Float32Array where
+  pToJSRef = unFloat32Array
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Float32Array where
+  pFromJSRef = Float32Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Float32Array where
+  toJSRef = return . unFloat32Array
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Float32Array where
+  fromJSRef = return . fmap Float32Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsFloat32Array o
+toFloat32Array :: IsFloat32Array o => o -> Float32Array
+toFloat32Array = unsafeCastGObject . toGObject
+
+instance IsFloat32Array Float32Array
+instance IsGObject Float32Array where
+  toGObject = GObject . castRef . unFloat32Array
+  unsafeCastGObject = Float32Array . castRef . unGObject
+-- TODO add more IsFloat32Array instances
+
+castToFloat32Array :: IsGObject obj => obj -> Float32Array
+castToFloat32Array = castTo gTypeFloat32Array "Float32Array"
+
+foreign import javascript unsafe "window[\"Float32Array\"]" gTypeFloat32Array' :: JSRef GType
+gTypeFloat32Array = GType gTypeFloat32Array'
+#else
+-- TODO work out how we can support Float32Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Float64Array = Float64Array { unFloat64Array :: JSRef Float64Array }
+
+instance Eq Float64Array where
+  (Float64Array a) == (Float64Array b) = js_eq a b
+
+instance PToJSRef Float64Array where
+  pToJSRef = unFloat64Array
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Float64Array where
+  pFromJSRef = Float64Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Float64Array where
+  toJSRef = return . unFloat64Array
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Float64Array where
+  fromJSRef = return . fmap Float64Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsFloat64Array o
+toFloat64Array :: IsFloat64Array o => o -> Float64Array
+toFloat64Array = unsafeCastGObject . toGObject
+
+instance IsFloat64Array Float64Array
+instance IsGObject Float64Array where
+  toGObject = GObject . castRef . unFloat64Array
+  unsafeCastGObject = Float64Array . castRef . unGObject
+-- TODO add more IsFloat64Array instances
+
+castToFloat64Array :: IsGObject obj => obj -> Float64Array
+castToFloat64Array = castTo gTypeFloat64Array "Float64Array"
+
+foreign import javascript unsafe "window[\"Float64Array\"]" gTypeFloat64Array' :: JSRef GType
+gTypeFloat64Array = GType gTypeFloat64Array'
+#else
+-- TODO work out how we can support Float64Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Uint8Array = Uint8Array { unUint8Array :: JSRef Uint8Array }
+
+instance Eq Uint8Array where
+  (Uint8Array a) == (Uint8Array b) = js_eq a b
+
+instance PToJSRef Uint8Array where
+  pToJSRef = unUint8Array
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Uint8Array where
+  pFromJSRef = Uint8Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Uint8Array where
+  toJSRef = return . unUint8Array
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Uint8Array where
+  fromJSRef = return . fmap Uint8Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsUint8Array o
+toUint8Array :: IsUint8Array o => o -> Uint8Array
+toUint8Array = unsafeCastGObject . toGObject
+
+instance IsUint8Array Uint8Array
+instance IsGObject Uint8Array where
+  toGObject = GObject . castRef . unUint8Array
+  unsafeCastGObject = Uint8Array . castRef . unGObject
+-- TODO add more IsUint8Array instances
+
+castToUint8Array :: IsGObject obj => obj -> Uint8Array
+castToUint8Array = castTo gTypeUint8Array "Uint8Array"
+
+foreign import javascript unsafe "window[\"Uint8Array\"]" gTypeUint8Array' :: JSRef GType
+gTypeUint8Array = GType gTypeUint8Array'
+#else
+-- TODO work out how we can support Uint8Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Uint8ClampedArray = Uint8ClampedArray { unUint8ClampedArray :: JSRef Uint8ClampedArray }
+
+instance Eq Uint8ClampedArray where
+  (Uint8ClampedArray a) == (Uint8ClampedArray b) = js_eq a b
+
+instance PToJSRef Uint8ClampedArray where
+  pToJSRef = unUint8ClampedArray
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Uint8ClampedArray where
+  pFromJSRef = Uint8ClampedArray
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Uint8ClampedArray where
+  toJSRef = return . unUint8ClampedArray
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Uint8ClampedArray where
+  fromJSRef = return . fmap Uint8ClampedArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsUint8ClampedArray o
+toUint8ClampedArray :: IsUint8ClampedArray o => o -> Uint8ClampedArray
+toUint8ClampedArray = unsafeCastGObject . toGObject
+
+instance IsUint8ClampedArray Uint8ClampedArray
+instance IsGObject Uint8ClampedArray where
+  toGObject = GObject . castRef . unUint8ClampedArray
+  unsafeCastGObject = Uint8ClampedArray . castRef . unGObject
+-- TODO add more IsUint8ClampedArray instances
+
+castToUint8ClampedArray :: IsGObject obj => obj -> Uint8ClampedArray
+castToUint8ClampedArray = castTo gTypeUint8ClampedArray "Uint8ClampedArray"
+
+foreign import javascript unsafe "window[\"Uint8ClampedArray\"]" gTypeUint8ClampedArray' :: JSRef GType
+gTypeUint8ClampedArray = GType gTypeUint8ClampedArray'
+#else
+-- TODO work out how we can support Uint8ClampedArray in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Uint16Array = Uint16Array { unUint16Array :: JSRef Uint16Array }
+
+instance Eq Uint16Array where
+  (Uint16Array a) == (Uint16Array b) = js_eq a b
+
+instance PToJSRef Uint16Array where
+  pToJSRef = unUint16Array
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Uint16Array where
+  pFromJSRef = Uint16Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Uint16Array where
+  toJSRef = return . unUint16Array
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Uint16Array where
+  fromJSRef = return . fmap Uint16Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsUint16Array o
+toUint16Array :: IsUint16Array o => o -> Uint16Array
+toUint16Array = unsafeCastGObject . toGObject
+
+instance IsUint16Array Uint16Array
+instance IsGObject Uint16Array where
+  toGObject = GObject . castRef . unUint16Array
+  unsafeCastGObject = Uint16Array . castRef . unGObject
+-- TODO add more IsUint16Array instances
+
+castToUint16Array :: IsGObject obj => obj -> Uint16Array
+castToUint16Array = castTo gTypeUint16Array "Uint16Array"
+
+foreign import javascript unsafe "window[\"Uint16Array\"]" gTypeUint16Array' :: JSRef GType
+gTypeUint16Array = GType gTypeUint16Array'
+#else
+-- TODO work out how we can support Uint16Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Uint32Array = Uint32Array { unUint32Array :: JSRef Uint32Array }
+
+instance Eq Uint32Array where
+  (Uint32Array a) == (Uint32Array b) = js_eq a b
+
+instance PToJSRef Uint32Array where
+  pToJSRef = unUint32Array
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Uint32Array where
+  pFromJSRef = Uint32Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Uint32Array where
+  toJSRef = return . unUint32Array
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Uint32Array where
+  fromJSRef = return . fmap Uint32Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsUint32Array o
+toUint32Array :: IsUint32Array o => o -> Uint32Array
+toUint32Array = unsafeCastGObject . toGObject
+
+instance IsUint32Array Uint32Array
+instance IsGObject Uint32Array where
+  toGObject = GObject . castRef . unUint32Array
+  unsafeCastGObject = Uint32Array . castRef . unGObject
+-- TODO add more IsUint32Array instances
+
+castToUint32Array :: IsGObject obj => obj -> Uint32Array
+castToUint32Array = castTo gTypeUint32Array "Uint32Array"
+
+foreign import javascript unsafe "window[\"Uint32Array\"]" gTypeUint32Array' :: JSRef GType
+gTypeUint32Array = GType gTypeUint32Array'
+#else
+-- TODO work out how we can support Uint32Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Int8Array = Int8Array { unInt8Array :: JSRef Int8Array }
+
+instance Eq Int8Array where
+  (Int8Array a) == (Int8Array b) = js_eq a b
+
+instance PToJSRef Int8Array where
+  pToJSRef = unInt8Array
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Int8Array where
+  pFromJSRef = Int8Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Int8Array where
+  toJSRef = return . unInt8Array
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Int8Array where
+  fromJSRef = return . fmap Int8Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsInt8Array o
+toInt8Array :: IsInt8Array o => o -> Int8Array
+toInt8Array = unsafeCastGObject . toGObject
+
+instance IsInt8Array Int8Array
+instance IsGObject Int8Array where
+  toGObject = GObject . castRef . unInt8Array
+  unsafeCastGObject = Int8Array . castRef . unGObject
+-- TODO add more IsInt8Array instances
+
+castToInt8Array :: IsGObject obj => obj -> Int8Array
+castToInt8Array = castTo gTypeInt8Array "Int8Array"
+
+foreign import javascript unsafe "window[\"Int8Array\"]" gTypeInt8Array' :: JSRef GType
+gTypeInt8Array = GType gTypeInt8Array'
+#else
+-- TODO work out how we can support Int8Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Int16Array = Int16Array { unInt16Array :: JSRef Int16Array }
+
+instance Eq Int16Array where
+  (Int16Array a) == (Int16Array b) = js_eq a b
+
+instance PToJSRef Int16Array where
+  pToJSRef = unInt16Array
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Int16Array where
+  pFromJSRef = Int16Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Int16Array where
+  toJSRef = return . unInt16Array
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Int16Array where
+  fromJSRef = return . fmap Int16Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsInt16Array o
+toInt16Array :: IsInt16Array o => o -> Int16Array
+toInt16Array = unsafeCastGObject . toGObject
+
+instance IsInt16Array Int16Array
+instance IsGObject Int16Array where
+  toGObject = GObject . castRef . unInt16Array
+  unsafeCastGObject = Int16Array . castRef . unGObject
+-- TODO add more IsInt16Array instances
+
+castToInt16Array :: IsGObject obj => obj -> Int16Array
+castToInt16Array = castTo gTypeInt16Array "Int16Array"
+
+foreign import javascript unsafe "window[\"Int16Array\"]" gTypeInt16Array' :: JSRef GType
+gTypeInt16Array = GType gTypeInt16Array'
+#else
+-- TODO work out how we can support Int16Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Int32Array = Int32Array { unInt32Array :: JSRef Int32Array }
+
+instance Eq Int32Array where
+  (Int32Array a) == (Int32Array b) = js_eq a b
+
+instance PToJSRef Int32Array where
+  pToJSRef = unInt32Array
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Int32Array where
+  pFromJSRef = Int32Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Int32Array where
+  toJSRef = return . unInt32Array
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Int32Array where
+  fromJSRef = return . fmap Int32Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsInt32Array o
+toInt32Array :: IsInt32Array o => o -> Int32Array
+toInt32Array = unsafeCastGObject . toGObject
+
+instance IsInt32Array Int32Array
+instance IsGObject Int32Array where
+  toGObject = GObject . castRef . unInt32Array
+  unsafeCastGObject = Int32Array . castRef . unGObject
+-- TODO add more IsInt32Array instances
+
+castToInt32Array :: IsGObject obj => obj -> Int32Array
+castToInt32Array = castTo gTypeInt32Array "Int32Array"
+
+foreign import javascript unsafe "window[\"Int32Array\"]" gTypeInt32Array' :: JSRef GType
+gTypeInt32Array = GType gTypeInt32Array'
+#else
+-- TODO work out how we can support Int32Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype ObjectArray = ObjectArray { unObjectArray :: JSRef ObjectArray }
+
+instance Eq ObjectArray where
+  (ObjectArray a) == (ObjectArray b) = js_eq a b
+
+instance PToJSRef ObjectArray where
+  pToJSRef = unObjectArray
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ObjectArray where
+  pFromJSRef = ObjectArray
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ObjectArray where
+  toJSRef = return . unObjectArray
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ObjectArray where
+  fromJSRef = return . fmap ObjectArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsObjectArray o
+toObjectArray :: IsObjectArray o => o -> ObjectArray
+toObjectArray = unsafeCastGObject . toGObject
+
+instance IsObjectArray ObjectArray
+instance IsGObject ObjectArray where
+  toGObject = GObject . castRef . unObjectArray
+  unsafeCastGObject = ObjectArray . castRef . unGObject
+-- TODO add more IsObjectArray instances
+#else
+-- TODO work out how we can support ObjectArray in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype ArrayBufferView = ArrayBufferView { unArrayBufferView :: JSRef ArrayBufferView }
+
+instance Eq ArrayBufferView where
+  (ArrayBufferView a) == (ArrayBufferView b) = js_eq a b
+
+instance PToJSRef ArrayBufferView where
+  pToJSRef = unArrayBufferView
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ArrayBufferView where
+  pFromJSRef = ArrayBufferView
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ArrayBufferView where
+  toJSRef = return . unArrayBufferView
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ArrayBufferView where
+  fromJSRef = return . fmap ArrayBufferView . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsArrayBufferView o
+toArrayBufferView :: IsArrayBufferView o => o -> ArrayBufferView
+toArrayBufferView = unsafeCastGObject . toGObject
+
+instance IsArrayBufferView ArrayBufferView
+instance IsGObject ArrayBufferView where
+  toGObject = GObject . castRef . unArrayBufferView
+  unsafeCastGObject = ArrayBufferView . castRef . unGObject
+-- TODO add more IsArrayBufferView instances
+#else
+-- TODO work out how we can support ArrayBufferView in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Array = Array { unArray :: JSRef Array }
+
+instance Eq Array where
+  (Array a) == (Array b) = js_eq a b
+
+instance PToJSRef Array where
+  pToJSRef = unArray
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Array where
+  pFromJSRef = Array
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Array where
+  toJSRef = return . unArray
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Array where
+  fromJSRef = return . fmap Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsArray o
+toArray :: IsArray o => o -> Array
+toArray = unsafeCastGObject . toGObject
+
+instance IsArray Array
+instance IsGObject Array where
+  toGObject = GObject . castRef . unArray
+  unsafeCastGObject = Array . castRef . unGObject
+-- TODO add more IsArray instances
+
+castToArray :: IsGObject obj => obj -> Array
+castToArray = castTo gTypeArray "Array"
+
+foreign import javascript unsafe "window[\"Array\"]" gTypeArray' :: JSRef GType
+gTypeArray = GType gTypeArray'
+#else
+-- TODO work out how we can support Array in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Date = Date { unDate :: JSRef Date }
+
+instance Eq Date where
+  (Date a) == (Date b) = js_eq a b
+
+instance PToJSRef Date where
+  pToJSRef = unDate
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Date where
+  pFromJSRef = Date
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Date where
+  toJSRef = return . unDate
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Date where
+  fromJSRef = return . fmap Date . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsDate o
+toDate :: IsDate o => o -> Date
+toDate = unsafeCastGObject . toGObject
+
+instance IsDate Date
+instance IsGObject Date where
+  toGObject = GObject . castRef . unDate
+  unsafeCastGObject = Date . castRef . unGObject
+-- TODO add more IsDate instances
+
+castToDate :: IsGObject obj => obj -> Date
+castToDate = castTo gTypeDate "Date"
+
+foreign import javascript unsafe "window[\"Date\"]" gTypeDate' :: JSRef GType
+gTypeDate = GType gTypeDate'
+#else
+-- TODO work out how we can support Date in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Acceleration = Acceleration { unAcceleration :: JSRef Acceleration }
+
+instance Eq Acceleration where
+  (Acceleration a) == (Acceleration b) = js_eq a b
+
+instance PToJSRef Acceleration where
+  pToJSRef = unAcceleration
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Acceleration where
+  pFromJSRef = Acceleration
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Acceleration where
+  toJSRef = return . unAcceleration
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Acceleration where
+  fromJSRef = return . fmap Acceleration . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsAcceleration o
+toAcceleration :: IsAcceleration o => o -> Acceleration
+toAcceleration = unsafeCastGObject . toGObject
+
+instance IsAcceleration Acceleration
+instance IsGObject Acceleration where
+  toGObject = GObject . castRef . unAcceleration
+  unsafeCastGObject = Acceleration . castRef . unGObject
+-- TODO add more IsAcceleration instances
+#else
+-- TODO work out how we can support Acceleration in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype RotationRate = RotationRate { unRotationRate :: JSRef RotationRate }
+
+instance Eq RotationRate where
+  (RotationRate a) == (RotationRate b) = js_eq a b
+
+instance PToJSRef RotationRate where
+  pToJSRef = unRotationRate
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RotationRate where
+  pFromJSRef = RotationRate
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RotationRate where
+  toJSRef = return . unRotationRate
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RotationRate where
+  fromJSRef = return . fmap RotationRate . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsRotationRate o
+toRotationRate :: IsRotationRate o => o -> RotationRate
+toRotationRate = unsafeCastGObject . toGObject
+
+instance IsRotationRate RotationRate
+instance IsGObject RotationRate where
+  toGObject = GObject . castRef . unRotationRate
+  unsafeCastGObject = RotationRate . castRef . unGObject
+-- TODO add more IsRotationRate instances
+#else
+-- TODO work out how we can support RotationRate in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype Algorithm = Algorithm { unAlgorithm :: JSRef Algorithm }
+
+instance Eq Algorithm where
+  (Algorithm a) == (Algorithm b) = js_eq a b
+
+instance PToJSRef Algorithm where
+  pToJSRef = unAlgorithm
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Algorithm where
+  pFromJSRef = Algorithm
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Algorithm where
+  toJSRef = return . unAlgorithm
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Algorithm where
+  fromJSRef = return . fmap Algorithm . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsAlgorithm o
+toAlgorithm :: IsAlgorithm o => o -> Algorithm
+toAlgorithm = unsafeCastGObject . toGObject
+
+instance IsAlgorithm Algorithm
+instance IsGObject Algorithm where
+  toGObject = GObject . castRef . unAlgorithm
+  unsafeCastGObject = Algorithm . castRef . unGObject
+-- TODO add more IsAlgorithm instances
+#else
+-- TODO work out how we can support Algorithm in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype CryptoOperationData = CryptoOperationData { unCryptoOperationData :: JSRef CryptoOperationData }
+
+instance Eq CryptoOperationData where
+  (CryptoOperationData a) == (CryptoOperationData b) = js_eq a b
+
+instance PToJSRef CryptoOperationData where
+  pToJSRef = unCryptoOperationData
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CryptoOperationData where
+  pFromJSRef = CryptoOperationData
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CryptoOperationData where
+  toJSRef = return . unCryptoOperationData
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CryptoOperationData where
+  fromJSRef = return . fmap CryptoOperationData . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsCryptoOperationData o
+toCryptoOperationData :: IsCryptoOperationData o => o -> CryptoOperationData
+toCryptoOperationData = unsafeCastGObject . toGObject
+
+instance IsCryptoOperationData CryptoOperationData
+instance IsGObject CryptoOperationData where
+  toGObject = GObject . castRef . unCryptoOperationData
+  unsafeCastGObject = CryptoOperationData . castRef . unGObject
+instance IsCryptoOperationData ArrayBuffer
+instance IsCryptoOperationData ArrayBufferView
+#else
+-- TODO work out how we can support CryptoOperationData in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype CanvasStyle = CanvasStyle { unCanvasStyle :: JSRef CanvasStyle }
+
+instance Eq CanvasStyle where
+  (CanvasStyle a) == (CanvasStyle b) = js_eq a b
+
+instance PToJSRef CanvasStyle where
+  pToJSRef = unCanvasStyle
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CanvasStyle where
+  pFromJSRef = CanvasStyle
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CanvasStyle where
+  toJSRef = return . unCanvasStyle
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CanvasStyle where
+  fromJSRef = return . fmap CanvasStyle . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsCanvasStyle o
+toCanvasStyle :: IsCanvasStyle o => o -> CanvasStyle
+toCanvasStyle = unsafeCastGObject . toGObject
+
+instance IsCanvasStyle CanvasStyle
+instance IsGObject CanvasStyle where
+  toGObject = GObject . castRef . unCanvasStyle
+  unsafeCastGObject = CanvasStyle . castRef . unGObject
+instance IsCanvasStyle CanvasGradient
+instance IsCanvasStyle CanvasPattern
+#else
+-- TODO work out how we can support CanvasStyle in native code
+#endif
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype DOMException = DOMException { unDOMException :: JSRef DOMException }
+
+instance Eq DOMException where
+  (DOMException a) == (DOMException b) = js_eq a b
+
+instance PToJSRef DOMException where
+  pToJSRef = unDOMException
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMException where
+  pFromJSRef = DOMException
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMException where
+  toJSRef = return . unDOMException
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMException where
+  fromJSRef = return . fmap DOMException . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsDOMException o
+toDOMException :: IsDOMException o => o -> DOMException
+toDOMException = unsafeCastGObject . toGObject
+
+instance IsDOMException DOMException
+instance IsGObject DOMException where
+  toGObject = GObject . castRef . unDOMException
+  unsafeCastGObject = DOMException . castRef . unGObject
+#else
+-- TODO work out how we can support DOMException in native code
+#endif
+
+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
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ANGLEInstancedArrays }
+
+instance Eq (ANGLEInstancedArrays) where
+  (ANGLEInstancedArrays a) == (ANGLEInstancedArrays b) = js_eq a b
+
+instance PToJSRef ANGLEInstancedArrays where
+  pToJSRef = unANGLEInstancedArrays
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ANGLEInstancedArrays where
+  pFromJSRef = ANGLEInstancedArrays
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ANGLEInstancedArrays where
+  toJSRef = return . unANGLEInstancedArrays
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ANGLEInstancedArrays where
+  fromJSRef = return . fmap ANGLEInstancedArrays . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ANGLEInstancedArrays where
+  toGObject = GObject . castRef . unANGLEInstancedArrays
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ANGLEInstancedArrays . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToANGLEInstancedArrays :: IsGObject obj => obj -> ANGLEInstancedArrays
+castToANGLEInstancedArrays = castTo gTypeANGLEInstancedArrays "ANGLEInstancedArrays"
+
+foreign import javascript unsafe "window[\"ANGLEInstancedArrays\"]" gTypeANGLEInstancedArrays' :: JSRef GType
+gTypeANGLEInstancedArrays = GType gTypeANGLEInstancedArrays'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AbstractView }
+
+instance Eq (AbstractView) where
+  (AbstractView a) == (AbstractView b) = js_eq a b
+
+instance PToJSRef AbstractView where
+  pToJSRef = unAbstractView
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AbstractView where
+  pFromJSRef = AbstractView
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AbstractView where
+  toJSRef = return . unAbstractView
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AbstractView where
+  fromJSRef = return . fmap AbstractView . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject AbstractView where
+  toGObject = GObject . castRef . unAbstractView
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AbstractView . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAbstractView :: IsGObject obj => obj -> AbstractView
+castToAbstractView = castTo gTypeAbstractView "AbstractView"
+
+foreign import javascript unsafe "window[\"AbstractView\"]" gTypeAbstractView' :: JSRef GType
+gTypeAbstractView = GType gTypeAbstractView'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AbstractWorker }
+
+instance Eq (AbstractWorker) where
+  (AbstractWorker a) == (AbstractWorker b) = js_eq a b
+
+instance PToJSRef AbstractWorker where
+  pToJSRef = unAbstractWorker
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AbstractWorker where
+  pFromJSRef = AbstractWorker
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AbstractWorker where
+  toJSRef = return . unAbstractWorker
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AbstractWorker where
+  fromJSRef = return . fmap AbstractWorker . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject AbstractWorker where
+  toGObject = GObject . castRef . unAbstractWorker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AbstractWorker . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAbstractWorker :: IsGObject obj => obj -> AbstractWorker
+castToAbstractWorker = castTo gTypeAbstractWorker "AbstractWorker"
+
+foreign import javascript unsafe "window[\"AbstractWorker\"]" gTypeAbstractWorker' :: JSRef GType
+gTypeAbstractWorker = GType gTypeAbstractWorker'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AllAudioCapabilities }
+
+instance Eq (AllAudioCapabilities) where
+  (AllAudioCapabilities a) == (AllAudioCapabilities b) = js_eq a b
+
+instance PToJSRef AllAudioCapabilities where
+  pToJSRef = unAllAudioCapabilities
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AllAudioCapabilities where
+  pFromJSRef = AllAudioCapabilities
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AllAudioCapabilities where
+  toJSRef = return . unAllAudioCapabilities
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AllAudioCapabilities where
+  fromJSRef = return . fmap AllAudioCapabilities . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsMediaStreamCapabilities AllAudioCapabilities
+instance IsGObject AllAudioCapabilities where
+  toGObject = GObject . castRef . unAllAudioCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AllAudioCapabilities . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAllAudioCapabilities :: IsGObject obj => obj -> AllAudioCapabilities
+castToAllAudioCapabilities = castTo gTypeAllAudioCapabilities "AllAudioCapabilities"
+
+foreign import javascript unsafe "window[\"AllAudioCapabilities\"]" gTypeAllAudioCapabilities' :: JSRef GType
+gTypeAllAudioCapabilities = GType gTypeAllAudioCapabilities'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AllVideoCapabilities }
+
+instance Eq (AllVideoCapabilities) where
+  (AllVideoCapabilities a) == (AllVideoCapabilities b) = js_eq a b
+
+instance PToJSRef AllVideoCapabilities where
+  pToJSRef = unAllVideoCapabilities
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AllVideoCapabilities where
+  pFromJSRef = AllVideoCapabilities
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AllVideoCapabilities where
+  toJSRef = return . unAllVideoCapabilities
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AllVideoCapabilities where
+  fromJSRef = return . fmap AllVideoCapabilities . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsMediaStreamCapabilities AllVideoCapabilities
+instance IsGObject AllVideoCapabilities where
+  toGObject = GObject . castRef . unAllVideoCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AllVideoCapabilities . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAllVideoCapabilities :: IsGObject obj => obj -> AllVideoCapabilities
+castToAllVideoCapabilities = castTo gTypeAllVideoCapabilities "AllVideoCapabilities"
+
+foreign import javascript unsafe "window[\"AllVideoCapabilities\"]" gTypeAllVideoCapabilities' :: JSRef GType
+gTypeAllVideoCapabilities = GType gTypeAllVideoCapabilities'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AnalyserNode }
+
+instance Eq (AnalyserNode) where
+  (AnalyserNode a) == (AnalyserNode b) = js_eq a b
+
+instance PToJSRef AnalyserNode where
+  pToJSRef = unAnalyserNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AnalyserNode where
+  pFromJSRef = AnalyserNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AnalyserNode where
+  toJSRef = return . unAnalyserNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AnalyserNode where
+  fromJSRef = return . fmap AnalyserNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode AnalyserNode
+instance IsEventTarget AnalyserNode
+instance IsGObject AnalyserNode where
+  toGObject = GObject . castRef . unAnalyserNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AnalyserNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAnalyserNode :: IsGObject obj => obj -> AnalyserNode
+castToAnalyserNode = castTo gTypeAnalyserNode "AnalyserNode"
+
+foreign import javascript unsafe "window[\"AnalyserNode\"]" gTypeAnalyserNode' :: JSRef GType
+gTypeAnalyserNode = GType gTypeAnalyserNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AnimationEvent }
+
+instance Eq (AnimationEvent) where
+  (AnimationEvent a) == (AnimationEvent b) = js_eq a b
+
+instance PToJSRef AnimationEvent where
+  pToJSRef = unAnimationEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AnimationEvent where
+  pFromJSRef = AnimationEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AnimationEvent where
+  toJSRef = return . unAnimationEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AnimationEvent where
+  fromJSRef = return . fmap AnimationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent AnimationEvent
+instance IsGObject AnimationEvent where
+  toGObject = GObject . castRef . unAnimationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AnimationEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAnimationEvent :: IsGObject obj => obj -> AnimationEvent
+castToAnimationEvent = castTo gTypeAnimationEvent "AnimationEvent"
+
+foreign import javascript unsafe "window[\"AnimationEvent\"]" gTypeAnimationEvent' :: JSRef GType
+gTypeAnimationEvent = GType gTypeAnimationEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ApplicationCache }
+
+instance Eq (ApplicationCache) where
+  (ApplicationCache a) == (ApplicationCache b) = js_eq a b
+
+instance PToJSRef ApplicationCache where
+  pToJSRef = unApplicationCache
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ApplicationCache where
+  pFromJSRef = ApplicationCache
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ApplicationCache where
+  toJSRef = return . unApplicationCache
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ApplicationCache where
+  fromJSRef = return . fmap ApplicationCache . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget ApplicationCache
+instance IsGObject ApplicationCache where
+  toGObject = GObject . castRef . unApplicationCache
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ApplicationCache . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToApplicationCache :: IsGObject obj => obj -> ApplicationCache
+castToApplicationCache = castTo gTypeApplicationCache "ApplicationCache"
+
+foreign import javascript unsafe "window[\"ApplicationCache\"]" gTypeApplicationCache' :: JSRef GType
+gTypeApplicationCache = GType gTypeApplicationCache'
+#else
+type IsApplicationCache o = ApplicationCacheClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Attr }
+
+instance Eq (Attr) where
+  (Attr a) == (Attr b) = js_eq a b
+
+instance PToJSRef Attr where
+  pToJSRef = unAttr
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Attr where
+  pFromJSRef = Attr
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Attr where
+  toJSRef = return . unAttr
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Attr where
+  fromJSRef = return . fmap Attr . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsNode Attr
+instance IsEventTarget Attr
+instance IsGObject Attr where
+  toGObject = GObject . castRef . unAttr
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Attr . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAttr :: IsGObject obj => obj -> Attr
+castToAttr = castTo gTypeAttr "Attr"
+
+foreign import javascript unsafe "window[\"Attr\"]" gTypeAttr' :: JSRef GType
+gTypeAttr = GType gTypeAttr'
+#else
+type IsAttr o = AttrClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioBuffer }
+
+instance Eq (AudioBuffer) where
+  (AudioBuffer a) == (AudioBuffer b) = js_eq a b
+
+instance PToJSRef AudioBuffer where
+  pToJSRef = unAudioBuffer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioBuffer where
+  pFromJSRef = AudioBuffer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioBuffer where
+  toJSRef = return . unAudioBuffer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioBuffer where
+  fromJSRef = return . fmap AudioBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject AudioBuffer where
+  toGObject = GObject . castRef . unAudioBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioBuffer . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioBuffer :: IsGObject obj => obj -> AudioBuffer
+castToAudioBuffer = castTo gTypeAudioBuffer "AudioBuffer"
+
+foreign import javascript unsafe "window[\"AudioBuffer\"]" gTypeAudioBuffer' :: JSRef GType
+gTypeAudioBuffer = GType gTypeAudioBuffer'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioBufferSourceNode }
+
+instance Eq (AudioBufferSourceNode) where
+  (AudioBufferSourceNode a) == (AudioBufferSourceNode b) = js_eq a b
+
+instance PToJSRef AudioBufferSourceNode where
+  pToJSRef = unAudioBufferSourceNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioBufferSourceNode where
+  pFromJSRef = AudioBufferSourceNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioBufferSourceNode where
+  toJSRef = return . unAudioBufferSourceNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioBufferSourceNode where
+  fromJSRef = return . fmap AudioBufferSourceNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode AudioBufferSourceNode
+instance IsEventTarget AudioBufferSourceNode
+instance IsGObject AudioBufferSourceNode where
+  toGObject = GObject . castRef . unAudioBufferSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioBufferSourceNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioBufferSourceNode :: IsGObject obj => obj -> AudioBufferSourceNode
+castToAudioBufferSourceNode = castTo gTypeAudioBufferSourceNode "AudioBufferSourceNode"
+
+foreign import javascript unsafe "window[\"AudioBufferSourceNode\"]" gTypeAudioBufferSourceNode' :: JSRef GType
+gTypeAudioBufferSourceNode = GType gTypeAudioBufferSourceNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioContext }
+
+instance Eq (AudioContext) where
+  (AudioContext a) == (AudioContext b) = js_eq a b
+
+instance PToJSRef AudioContext where
+  pToJSRef = unAudioContext
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioContext where
+  pFromJSRef = AudioContext
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioContext where
+  toJSRef = return . unAudioContext
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioContext where
+  fromJSRef = return . fmap AudioContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unAudioContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioContext . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioContext :: IsGObject obj => obj -> AudioContext
+castToAudioContext = castTo gTypeAudioContext "AudioContext"
+
+foreign import javascript unsafe "window[\"AudioContext\"]" gTypeAudioContext' :: JSRef GType
+gTypeAudioContext = GType gTypeAudioContext'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioDestinationNode }
+
+instance Eq (AudioDestinationNode) where
+  (AudioDestinationNode a) == (AudioDestinationNode b) = js_eq a b
+
+instance PToJSRef AudioDestinationNode where
+  pToJSRef = unAudioDestinationNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioDestinationNode where
+  pFromJSRef = AudioDestinationNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioDestinationNode where
+  toJSRef = return . unAudioDestinationNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioDestinationNode where
+  fromJSRef = return . fmap AudioDestinationNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode AudioDestinationNode
+instance IsEventTarget AudioDestinationNode
+instance IsGObject AudioDestinationNode where
+  toGObject = GObject . castRef . unAudioDestinationNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioDestinationNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioDestinationNode :: IsGObject obj => obj -> AudioDestinationNode
+castToAudioDestinationNode = castTo gTypeAudioDestinationNode "AudioDestinationNode"
+
+foreign import javascript unsafe "window[\"AudioDestinationNode\"]" gTypeAudioDestinationNode' :: JSRef GType
+gTypeAudioDestinationNode = GType gTypeAudioDestinationNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioListener }
+
+instance Eq (AudioListener) where
+  (AudioListener a) == (AudioListener b) = js_eq a b
+
+instance PToJSRef AudioListener where
+  pToJSRef = unAudioListener
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioListener where
+  pFromJSRef = AudioListener
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioListener where
+  toJSRef = return . unAudioListener
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioListener where
+  fromJSRef = return . fmap AudioListener . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject AudioListener where
+  toGObject = GObject . castRef . unAudioListener
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioListener . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioListener :: IsGObject obj => obj -> AudioListener
+castToAudioListener = castTo gTypeAudioListener "AudioListener"
+
+foreign import javascript unsafe "window[\"AudioListener\"]" gTypeAudioListener' :: JSRef GType
+gTypeAudioListener = GType gTypeAudioListener'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioNode }
+
+instance Eq (AudioNode) where
+  (AudioNode a) == (AudioNode b) = js_eq a b
+
+instance PToJSRef AudioNode where
+  pToJSRef = unAudioNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioNode where
+  pFromJSRef = AudioNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioNode where
+  toJSRef = return . unAudioNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioNode where
+  fromJSRef = return . fmap AudioNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unAudioNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioNode :: IsGObject obj => obj -> AudioNode
+castToAudioNode = castTo gTypeAudioNode "AudioNode"
+
+foreign import javascript unsafe "window[\"AudioNode\"]" gTypeAudioNode' :: JSRef GType
+gTypeAudioNode = GType gTypeAudioNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioParam }
+
+instance Eq (AudioParam) where
+  (AudioParam a) == (AudioParam b) = js_eq a b
+
+instance PToJSRef AudioParam where
+  pToJSRef = unAudioParam
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioParam where
+  pFromJSRef = AudioParam
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioParam where
+  toJSRef = return . unAudioParam
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioParam where
+  fromJSRef = return . fmap AudioParam . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject AudioParam where
+  toGObject = GObject . castRef . unAudioParam
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioParam . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioParam :: IsGObject obj => obj -> AudioParam
+castToAudioParam = castTo gTypeAudioParam "AudioParam"
+
+foreign import javascript unsafe "window[\"AudioParam\"]" gTypeAudioParam' :: JSRef GType
+gTypeAudioParam = GType gTypeAudioParam'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioProcessingEvent }
+
+instance Eq (AudioProcessingEvent) where
+  (AudioProcessingEvent a) == (AudioProcessingEvent b) = js_eq a b
+
+instance PToJSRef AudioProcessingEvent where
+  pToJSRef = unAudioProcessingEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioProcessingEvent where
+  pFromJSRef = AudioProcessingEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioProcessingEvent where
+  toJSRef = return . unAudioProcessingEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioProcessingEvent where
+  fromJSRef = return . fmap AudioProcessingEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent AudioProcessingEvent
+instance IsGObject AudioProcessingEvent where
+  toGObject = GObject . castRef . unAudioProcessingEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioProcessingEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioProcessingEvent :: IsGObject obj => obj -> AudioProcessingEvent
+castToAudioProcessingEvent = castTo gTypeAudioProcessingEvent "AudioProcessingEvent"
+
+foreign import javascript unsafe "window[\"AudioProcessingEvent\"]" gTypeAudioProcessingEvent' :: JSRef GType
+gTypeAudioProcessingEvent = GType gTypeAudioProcessingEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioStreamTrack }
+
+instance Eq (AudioStreamTrack) where
+  (AudioStreamTrack a) == (AudioStreamTrack b) = js_eq a b
+
+instance PToJSRef AudioStreamTrack where
+  pToJSRef = unAudioStreamTrack
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioStreamTrack where
+  pFromJSRef = AudioStreamTrack
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioStreamTrack where
+  toJSRef = return . unAudioStreamTrack
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioStreamTrack where
+  fromJSRef = return . fmap AudioStreamTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsMediaStreamTrack AudioStreamTrack
+instance IsEventTarget AudioStreamTrack
+instance IsGObject AudioStreamTrack where
+  toGObject = GObject . castRef . unAudioStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioStreamTrack . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioStreamTrack :: IsGObject obj => obj -> AudioStreamTrack
+castToAudioStreamTrack = castTo gTypeAudioStreamTrack "AudioStreamTrack"
+
+foreign import javascript unsafe "window[\"AudioStreamTrack\"]" gTypeAudioStreamTrack' :: JSRef GType
+gTypeAudioStreamTrack = GType gTypeAudioStreamTrack'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioTrack }
+
+instance Eq (AudioTrack) where
+  (AudioTrack a) == (AudioTrack b) = js_eq a b
+
+instance PToJSRef AudioTrack where
+  pToJSRef = unAudioTrack
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioTrack where
+  pFromJSRef = AudioTrack
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioTrack where
+  toJSRef = return . unAudioTrack
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioTrack where
+  fromJSRef = return . fmap AudioTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject AudioTrack where
+  toGObject = GObject . castRef . unAudioTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioTrack . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioTrack :: IsGObject obj => obj -> AudioTrack
+castToAudioTrack = castTo gTypeAudioTrack "AudioTrack"
+
+foreign import javascript unsafe "window[\"AudioTrack\"]" gTypeAudioTrack' :: JSRef GType
+gTypeAudioTrack = GType gTypeAudioTrack'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsAudioTrack o = AudioTrackClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AudioTrackList }
+
+instance Eq (AudioTrackList) where
+  (AudioTrackList a) == (AudioTrackList b) = js_eq a b
+
+instance PToJSRef AudioTrackList where
+  pToJSRef = unAudioTrackList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AudioTrackList where
+  pFromJSRef = AudioTrackList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AudioTrackList where
+  toJSRef = return . unAudioTrackList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AudioTrackList where
+  fromJSRef = return . fmap AudioTrackList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget AudioTrackList
+instance IsGObject AudioTrackList where
+  toGObject = GObject . castRef . unAudioTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AudioTrackList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAudioTrackList :: IsGObject obj => obj -> AudioTrackList
+castToAudioTrackList = castTo gTypeAudioTrackList "AudioTrackList"
+
+foreign import javascript unsafe "window[\"AudioTrackList\"]" gTypeAudioTrackList' :: JSRef GType
+gTypeAudioTrackList = GType gTypeAudioTrackList'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsAudioTrackList o = AudioTrackListClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef AutocompleteErrorEvent }
+
+instance Eq (AutocompleteErrorEvent) where
+  (AutocompleteErrorEvent a) == (AutocompleteErrorEvent b) = js_eq a b
+
+instance PToJSRef AutocompleteErrorEvent where
+  pToJSRef = unAutocompleteErrorEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef AutocompleteErrorEvent where
+  pFromJSRef = AutocompleteErrorEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef AutocompleteErrorEvent where
+  toJSRef = return . unAutocompleteErrorEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef AutocompleteErrorEvent where
+  fromJSRef = return . fmap AutocompleteErrorEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent AutocompleteErrorEvent
+instance IsGObject AutocompleteErrorEvent where
+  toGObject = GObject . castRef . unAutocompleteErrorEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = AutocompleteErrorEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToAutocompleteErrorEvent :: IsGObject obj => obj -> AutocompleteErrorEvent
+castToAutocompleteErrorEvent = castTo gTypeAutocompleteErrorEvent "AutocompleteErrorEvent"
+
+foreign import javascript unsafe "window[\"AutocompleteErrorEvent\"]" gTypeAutocompleteErrorEvent' :: JSRef GType
+gTypeAutocompleteErrorEvent = GType gTypeAutocompleteErrorEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef BarProp }
+
+instance Eq (BarProp) where
+  (BarProp a) == (BarProp b) = js_eq a b
+
+instance PToJSRef BarProp where
+  pToJSRef = unBarProp
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef BarProp where
+  pFromJSRef = BarProp
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef BarProp where
+  toJSRef = return . unBarProp
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef BarProp where
+  fromJSRef = return . fmap BarProp . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject BarProp where
+  toGObject = GObject . castRef . unBarProp
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BarProp . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBarProp :: IsGObject obj => obj -> BarProp
+castToBarProp = castTo gTypeBarProp "BarProp"
+
+foreign import javascript unsafe "window[\"BarProp\"]" gTypeBarProp' :: JSRef GType
+gTypeBarProp = GType gTypeBarProp'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsBarProp o = BarPropClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef BatteryManager }
+
+instance Eq (BatteryManager) where
+  (BatteryManager a) == (BatteryManager b) = js_eq a b
+
+instance PToJSRef BatteryManager where
+  pToJSRef = unBatteryManager
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef BatteryManager where
+  pFromJSRef = BatteryManager
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef BatteryManager where
+  toJSRef = return . unBatteryManager
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef BatteryManager where
+  fromJSRef = return . fmap BatteryManager . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget BatteryManager
+instance IsGObject BatteryManager where
+  toGObject = GObject . castRef . unBatteryManager
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BatteryManager . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBatteryManager :: IsGObject obj => obj -> BatteryManager
+castToBatteryManager = castTo gTypeBatteryManager "BatteryManager"
+
+foreign import javascript unsafe "window[\"BatteryManager\"]" gTypeBatteryManager' :: JSRef GType
+gTypeBatteryManager = GType gTypeBatteryManager'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsBatteryManager o = BatteryManagerClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef BeforeLoadEvent }
+
+instance Eq (BeforeLoadEvent) where
+  (BeforeLoadEvent a) == (BeforeLoadEvent b) = js_eq a b
+
+instance PToJSRef BeforeLoadEvent where
+  pToJSRef = unBeforeLoadEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef BeforeLoadEvent where
+  pFromJSRef = BeforeLoadEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef BeforeLoadEvent where
+  toJSRef = return . unBeforeLoadEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef BeforeLoadEvent where
+  fromJSRef = return . fmap BeforeLoadEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent BeforeLoadEvent
+instance IsGObject BeforeLoadEvent where
+  toGObject = GObject . castRef . unBeforeLoadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BeforeLoadEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBeforeLoadEvent :: IsGObject obj => obj -> BeforeLoadEvent
+castToBeforeLoadEvent = castTo gTypeBeforeLoadEvent "BeforeLoadEvent"
+
+foreign import javascript unsafe "window[\"BeforeLoadEvent\"]" gTypeBeforeLoadEvent' :: JSRef GType
+gTypeBeforeLoadEvent = GType gTypeBeforeLoadEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef BeforeUnloadEvent }
+
+instance Eq (BeforeUnloadEvent) where
+  (BeforeUnloadEvent a) == (BeforeUnloadEvent b) = js_eq a b
+
+instance PToJSRef BeforeUnloadEvent where
+  pToJSRef = unBeforeUnloadEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef BeforeUnloadEvent where
+  pFromJSRef = BeforeUnloadEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef BeforeUnloadEvent where
+  toJSRef = return . unBeforeUnloadEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef BeforeUnloadEvent where
+  fromJSRef = return . fmap BeforeUnloadEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent BeforeUnloadEvent
+instance IsGObject BeforeUnloadEvent where
+  toGObject = GObject . castRef . unBeforeUnloadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BeforeUnloadEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBeforeUnloadEvent :: IsGObject obj => obj -> BeforeUnloadEvent
+castToBeforeUnloadEvent = castTo gTypeBeforeUnloadEvent "BeforeUnloadEvent"
+
+foreign import javascript unsafe "window[\"BeforeUnloadEvent\"]" gTypeBeforeUnloadEvent' :: JSRef GType
+gTypeBeforeUnloadEvent = GType gTypeBeforeUnloadEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef BiquadFilterNode }
+
+instance Eq (BiquadFilterNode) where
+  (BiquadFilterNode a) == (BiquadFilterNode b) = js_eq a b
+
+instance PToJSRef BiquadFilterNode where
+  pToJSRef = unBiquadFilterNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef BiquadFilterNode where
+  pFromJSRef = BiquadFilterNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef BiquadFilterNode where
+  toJSRef = return . unBiquadFilterNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef BiquadFilterNode where
+  fromJSRef = return . fmap BiquadFilterNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode BiquadFilterNode
+instance IsEventTarget BiquadFilterNode
+instance IsGObject BiquadFilterNode where
+  toGObject = GObject . castRef . unBiquadFilterNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = BiquadFilterNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBiquadFilterNode :: IsGObject obj => obj -> BiquadFilterNode
+castToBiquadFilterNode = castTo gTypeBiquadFilterNode "BiquadFilterNode"
+
+foreign import javascript unsafe "window[\"BiquadFilterNode\"]" gTypeBiquadFilterNode' :: JSRef GType
+gTypeBiquadFilterNode = GType gTypeBiquadFilterNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Blob }
+
+instance Eq (Blob) where
+  (Blob a) == (Blob b) = js_eq a b
+
+instance PToJSRef Blob where
+  pToJSRef = unBlob
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Blob where
+  pFromJSRef = Blob
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Blob where
+  toJSRef = return . unBlob
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Blob where
+  fromJSRef = return . fmap Blob . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsBlob o
+toBlob :: IsBlob o => o -> Blob
+toBlob = unsafeCastGObject . toGObject
+
+instance IsBlob Blob
+instance IsGObject Blob where
+  toGObject = GObject . castRef . unBlob
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Blob . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToBlob :: IsGObject obj => obj -> Blob
+castToBlob = castTo gTypeBlob "Blob"
+
+foreign import javascript unsafe "window[\"Blob\"]" gTypeBlob' :: JSRef GType
+gTypeBlob = GType gTypeBlob'
+#else
+type IsBlob o = BlobClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CDATASection }
+
+instance Eq (CDATASection) where
+  (CDATASection a) == (CDATASection b) = js_eq a b
+
+instance PToJSRef CDATASection where
+  pToJSRef = unCDATASection
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CDATASection where
+  pFromJSRef = CDATASection
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CDATASection where
+  toJSRef = return . unCDATASection
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CDATASection where
+  fromJSRef = return . fmap CDATASection . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsText CDATASection
+instance IsCharacterData CDATASection
+instance IsNode CDATASection
+instance IsEventTarget CDATASection
+instance IsGObject CDATASection where
+  toGObject = GObject . castRef . unCDATASection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CDATASection . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCDATASection :: IsGObject obj => obj -> CDATASection
+castToCDATASection = castTo gTypeCDATASection "CDATASection"
+
+foreign import javascript unsafe "window[\"CDATASection\"]" gTypeCDATASection' :: JSRef GType
+gTypeCDATASection = GType gTypeCDATASection'
+#else
+type IsCDATASection o = CDATASectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSS }
+
+instance Eq (CSS) where
+  (CSS a) == (CSS b) = js_eq a b
+
+instance PToJSRef CSS where
+  pToJSRef = unCSS
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSS where
+  pFromJSRef = CSS
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSS where
+  toJSRef = return . unCSS
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSS where
+  fromJSRef = return . fmap CSS . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CSS where
+  toGObject = GObject . castRef . unCSS
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSS . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSS :: IsGObject obj => obj -> CSS
+castToCSS = castTo gTypeCSS "CSS"
+
+foreign import javascript unsafe "window[\"CSS\"]" gTypeCSS' :: JSRef GType
+gTypeCSS = GType gTypeCSS'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsCSS o = CSSClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSCharsetRule }
+
+instance Eq (CSSCharsetRule) where
+  (CSSCharsetRule a) == (CSSCharsetRule b) = js_eq a b
+
+instance PToJSRef CSSCharsetRule where
+  pToJSRef = unCSSCharsetRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSCharsetRule where
+  pFromJSRef = CSSCharsetRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSCharsetRule where
+  toJSRef = return . unCSSCharsetRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSCharsetRule where
+  fromJSRef = return . fmap CSSCharsetRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSCharsetRule
+instance IsGObject CSSCharsetRule where
+  toGObject = GObject . castRef . unCSSCharsetRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSCharsetRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSCharsetRule :: IsGObject obj => obj -> CSSCharsetRule
+castToCSSCharsetRule = castTo gTypeCSSCharsetRule "CSSCharsetRule"
+
+foreign import javascript unsafe "window[\"CSSCharsetRule\"]" gTypeCSSCharsetRule' :: JSRef GType
+gTypeCSSCharsetRule = GType gTypeCSSCharsetRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSFontFaceLoadEvent }
+
+instance Eq (CSSFontFaceLoadEvent) where
+  (CSSFontFaceLoadEvent a) == (CSSFontFaceLoadEvent b) = js_eq a b
+
+instance PToJSRef CSSFontFaceLoadEvent where
+  pToJSRef = unCSSFontFaceLoadEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSFontFaceLoadEvent where
+  pFromJSRef = CSSFontFaceLoadEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSFontFaceLoadEvent where
+  toJSRef = return . unCSSFontFaceLoadEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSFontFaceLoadEvent where
+  fromJSRef = return . fmap CSSFontFaceLoadEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent CSSFontFaceLoadEvent
+instance IsGObject CSSFontFaceLoadEvent where
+  toGObject = GObject . castRef . unCSSFontFaceLoadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSFontFaceLoadEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSFontFaceLoadEvent :: IsGObject obj => obj -> CSSFontFaceLoadEvent
+castToCSSFontFaceLoadEvent = castTo gTypeCSSFontFaceLoadEvent "CSSFontFaceLoadEvent"
+
+foreign import javascript unsafe "window[\"CSSFontFaceLoadEvent\"]" gTypeCSSFontFaceLoadEvent' :: JSRef GType
+gTypeCSSFontFaceLoadEvent = GType gTypeCSSFontFaceLoadEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSFontFaceRule }
+
+instance Eq (CSSFontFaceRule) where
+  (CSSFontFaceRule a) == (CSSFontFaceRule b) = js_eq a b
+
+instance PToJSRef CSSFontFaceRule where
+  pToJSRef = unCSSFontFaceRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSFontFaceRule where
+  pFromJSRef = CSSFontFaceRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSFontFaceRule where
+  toJSRef = return . unCSSFontFaceRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSFontFaceRule where
+  fromJSRef = return . fmap CSSFontFaceRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSFontFaceRule
+instance IsGObject CSSFontFaceRule where
+  toGObject = GObject . castRef . unCSSFontFaceRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSFontFaceRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSFontFaceRule :: IsGObject obj => obj -> CSSFontFaceRule
+castToCSSFontFaceRule = castTo gTypeCSSFontFaceRule "CSSFontFaceRule"
+
+foreign import javascript unsafe "window[\"CSSFontFaceRule\"]" gTypeCSSFontFaceRule' :: JSRef GType
+gTypeCSSFontFaceRule = GType gTypeCSSFontFaceRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSImportRule }
+
+instance Eq (CSSImportRule) where
+  (CSSImportRule a) == (CSSImportRule b) = js_eq a b
+
+instance PToJSRef CSSImportRule where
+  pToJSRef = unCSSImportRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSImportRule where
+  pFromJSRef = CSSImportRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSImportRule where
+  toJSRef = return . unCSSImportRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSImportRule where
+  fromJSRef = return . fmap CSSImportRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSImportRule
+instance IsGObject CSSImportRule where
+  toGObject = GObject . castRef . unCSSImportRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSImportRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSImportRule :: IsGObject obj => obj -> CSSImportRule
+castToCSSImportRule = castTo gTypeCSSImportRule "CSSImportRule"
+
+foreign import javascript unsafe "window[\"CSSImportRule\"]" gTypeCSSImportRule' :: JSRef GType
+gTypeCSSImportRule = GType gTypeCSSImportRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSKeyframeRule }
+
+instance Eq (CSSKeyframeRule) where
+  (CSSKeyframeRule a) == (CSSKeyframeRule b) = js_eq a b
+
+instance PToJSRef CSSKeyframeRule where
+  pToJSRef = unCSSKeyframeRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSKeyframeRule where
+  pFromJSRef = CSSKeyframeRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSKeyframeRule where
+  toJSRef = return . unCSSKeyframeRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSKeyframeRule where
+  fromJSRef = return . fmap CSSKeyframeRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSKeyframeRule
+instance IsGObject CSSKeyframeRule where
+  toGObject = GObject . castRef . unCSSKeyframeRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSKeyframeRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSKeyframeRule :: IsGObject obj => obj -> CSSKeyframeRule
+castToCSSKeyframeRule = castTo gTypeCSSKeyframeRule "CSSKeyframeRule"
+
+foreign import javascript unsafe "window[\"CSSKeyframeRule\"]" gTypeCSSKeyframeRule' :: JSRef GType
+gTypeCSSKeyframeRule = GType gTypeCSSKeyframeRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSKeyframesRule }
+
+instance Eq (CSSKeyframesRule) where
+  (CSSKeyframesRule a) == (CSSKeyframesRule b) = js_eq a b
+
+instance PToJSRef CSSKeyframesRule where
+  pToJSRef = unCSSKeyframesRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSKeyframesRule where
+  pFromJSRef = CSSKeyframesRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSKeyframesRule where
+  toJSRef = return . unCSSKeyframesRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSKeyframesRule where
+  fromJSRef = return . fmap CSSKeyframesRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSKeyframesRule
+instance IsGObject CSSKeyframesRule where
+  toGObject = GObject . castRef . unCSSKeyframesRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSKeyframesRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSKeyframesRule :: IsGObject obj => obj -> CSSKeyframesRule
+castToCSSKeyframesRule = castTo gTypeCSSKeyframesRule "CSSKeyframesRule"
+
+foreign import javascript unsafe "window[\"CSSKeyframesRule\"]" gTypeCSSKeyframesRule' :: JSRef GType
+gTypeCSSKeyframesRule = GType gTypeCSSKeyframesRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSMediaRule }
+
+instance Eq (CSSMediaRule) where
+  (CSSMediaRule a) == (CSSMediaRule b) = js_eq a b
+
+instance PToJSRef CSSMediaRule where
+  pToJSRef = unCSSMediaRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSMediaRule where
+  pFromJSRef = CSSMediaRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSMediaRule where
+  toJSRef = return . unCSSMediaRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSMediaRule where
+  fromJSRef = return . fmap CSSMediaRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSMediaRule
+instance IsGObject CSSMediaRule where
+  toGObject = GObject . castRef . unCSSMediaRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSMediaRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSMediaRule :: IsGObject obj => obj -> CSSMediaRule
+castToCSSMediaRule = castTo gTypeCSSMediaRule "CSSMediaRule"
+
+foreign import javascript unsafe "window[\"CSSMediaRule\"]" gTypeCSSMediaRule' :: JSRef GType
+gTypeCSSMediaRule = GType gTypeCSSMediaRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSPageRule }
+
+instance Eq (CSSPageRule) where
+  (CSSPageRule a) == (CSSPageRule b) = js_eq a b
+
+instance PToJSRef CSSPageRule where
+  pToJSRef = unCSSPageRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSPageRule where
+  pFromJSRef = CSSPageRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSPageRule where
+  toJSRef = return . unCSSPageRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSPageRule where
+  fromJSRef = return . fmap CSSPageRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSPageRule
+instance IsGObject CSSPageRule where
+  toGObject = GObject . castRef . unCSSPageRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSPageRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSPageRule :: IsGObject obj => obj -> CSSPageRule
+castToCSSPageRule = castTo gTypeCSSPageRule "CSSPageRule"
+
+foreign import javascript unsafe "window[\"CSSPageRule\"]" gTypeCSSPageRule' :: JSRef GType
+gTypeCSSPageRule = GType gTypeCSSPageRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSPrimitiveValue }
+
+instance Eq (CSSPrimitiveValue) where
+  (CSSPrimitiveValue a) == (CSSPrimitiveValue b) = js_eq a b
+
+instance PToJSRef CSSPrimitiveValue where
+  pToJSRef = unCSSPrimitiveValue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSPrimitiveValue where
+  pFromJSRef = CSSPrimitiveValue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSPrimitiveValue where
+  toJSRef = return . unCSSPrimitiveValue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSPrimitiveValue where
+  fromJSRef = return . fmap CSSPrimitiveValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSValue CSSPrimitiveValue
+instance IsGObject CSSPrimitiveValue where
+  toGObject = GObject . castRef . unCSSPrimitiveValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSPrimitiveValue . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSPrimitiveValue :: IsGObject obj => obj -> CSSPrimitiveValue
+castToCSSPrimitiveValue = castTo gTypeCSSPrimitiveValue "CSSPrimitiveValue"
+
+foreign import javascript unsafe "window[\"CSSPrimitiveValue\"]" gTypeCSSPrimitiveValue' :: JSRef GType
+gTypeCSSPrimitiveValue = GType gTypeCSSPrimitiveValue'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSRule }
+
+instance Eq (CSSRule) where
+  (CSSRule a) == (CSSRule b) = js_eq a b
+
+instance PToJSRef CSSRule where
+  pToJSRef = unCSSRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSRule where
+  pFromJSRef = CSSRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSRule where
+  toJSRef = return . unCSSRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSRule where
+  fromJSRef = return . fmap CSSRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsCSSRule o
+toCSSRule :: IsCSSRule o => o -> CSSRule
+toCSSRule = unsafeCastGObject . toGObject
+
+instance IsCSSRule CSSRule
+instance IsGObject CSSRule where
+  toGObject = GObject . castRef . unCSSRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSRule :: IsGObject obj => obj -> CSSRule
+castToCSSRule = castTo gTypeCSSRule "CSSRule"
+
+foreign import javascript unsafe "window[\"CSSRule\"]" gTypeCSSRule' :: JSRef GType
+gTypeCSSRule = GType gTypeCSSRule'
+#else
+type IsCSSRule o = CSSRuleClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSRuleList }
+
+instance Eq (CSSRuleList) where
+  (CSSRuleList a) == (CSSRuleList b) = js_eq a b
+
+instance PToJSRef CSSRuleList where
+  pToJSRef = unCSSRuleList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSRuleList where
+  pFromJSRef = CSSRuleList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSRuleList where
+  toJSRef = return . unCSSRuleList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSRuleList where
+  fromJSRef = return . fmap CSSRuleList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CSSRuleList where
+  toGObject = GObject . castRef . unCSSRuleList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSRuleList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSRuleList :: IsGObject obj => obj -> CSSRuleList
+castToCSSRuleList = castTo gTypeCSSRuleList "CSSRuleList"
+
+foreign import javascript unsafe "window[\"CSSRuleList\"]" gTypeCSSRuleList' :: JSRef GType
+gTypeCSSRuleList = GType gTypeCSSRuleList'
+#else
+type IsCSSRuleList o = CSSRuleListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSStyleDeclaration }
+
+instance Eq (CSSStyleDeclaration) where
+  (CSSStyleDeclaration a) == (CSSStyleDeclaration b) = js_eq a b
+
+instance PToJSRef CSSStyleDeclaration where
+  pToJSRef = unCSSStyleDeclaration
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSStyleDeclaration where
+  pFromJSRef = CSSStyleDeclaration
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSStyleDeclaration where
+  toJSRef = return . unCSSStyleDeclaration
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSStyleDeclaration where
+  fromJSRef = return . fmap CSSStyleDeclaration . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CSSStyleDeclaration where
+  toGObject = GObject . castRef . unCSSStyleDeclaration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleDeclaration . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleDeclaration :: IsGObject obj => obj -> CSSStyleDeclaration
+castToCSSStyleDeclaration = castTo gTypeCSSStyleDeclaration "CSSStyleDeclaration"
+
+foreign import javascript unsafe "window[\"CSSStyleDeclaration\"]" gTypeCSSStyleDeclaration' :: JSRef GType
+gTypeCSSStyleDeclaration = GType gTypeCSSStyleDeclaration'
+#else
+type IsCSSStyleDeclaration o = CSSStyleDeclarationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSStyleRule }
+
+instance Eq (CSSStyleRule) where
+  (CSSStyleRule a) == (CSSStyleRule b) = js_eq a b
+
+instance PToJSRef CSSStyleRule where
+  pToJSRef = unCSSStyleRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSStyleRule where
+  pFromJSRef = CSSStyleRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSStyleRule where
+  toJSRef = return . unCSSStyleRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSStyleRule where
+  fromJSRef = return . fmap CSSStyleRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSStyleRule
+instance IsGObject CSSStyleRule where
+  toGObject = GObject . castRef . unCSSStyleRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleRule :: IsGObject obj => obj -> CSSStyleRule
+castToCSSStyleRule = castTo gTypeCSSStyleRule "CSSStyleRule"
+
+foreign import javascript unsafe "window[\"CSSStyleRule\"]" gTypeCSSStyleRule' :: JSRef GType
+gTypeCSSStyleRule = GType gTypeCSSStyleRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSStyleSheet }
+
+instance Eq (CSSStyleSheet) where
+  (CSSStyleSheet a) == (CSSStyleSheet b) = js_eq a b
+
+instance PToJSRef CSSStyleSheet where
+  pToJSRef = unCSSStyleSheet
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSStyleSheet where
+  pFromJSRef = CSSStyleSheet
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSStyleSheet where
+  toJSRef = return . unCSSStyleSheet
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSStyleSheet where
+  fromJSRef = return . fmap CSSStyleSheet . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsStyleSheet CSSStyleSheet
+instance IsGObject CSSStyleSheet where
+  toGObject = GObject . castRef . unCSSStyleSheet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSStyleSheet . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSStyleSheet :: IsGObject obj => obj -> CSSStyleSheet
+castToCSSStyleSheet = castTo gTypeCSSStyleSheet "CSSStyleSheet"
+
+foreign import javascript unsafe "window[\"CSSStyleSheet\"]" gTypeCSSStyleSheet' :: JSRef GType
+gTypeCSSStyleSheet = GType gTypeCSSStyleSheet'
+#else
+type IsCSSStyleSheet o = CSSStyleSheetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSSupportsRule }
+
+instance Eq (CSSSupportsRule) where
+  (CSSSupportsRule a) == (CSSSupportsRule b) = js_eq a b
+
+instance PToJSRef CSSSupportsRule where
+  pToJSRef = unCSSSupportsRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSSupportsRule where
+  pFromJSRef = CSSSupportsRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSSupportsRule where
+  toJSRef = return . unCSSSupportsRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSSupportsRule where
+  fromJSRef = return . fmap CSSSupportsRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSSupportsRule
+instance IsGObject CSSSupportsRule where
+  toGObject = GObject . castRef . unCSSSupportsRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSSupportsRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSSupportsRule :: IsGObject obj => obj -> CSSSupportsRule
+castToCSSSupportsRule = castTo gTypeCSSSupportsRule "CSSSupportsRule"
+
+foreign import javascript unsafe "window[\"CSSSupportsRule\"]" gTypeCSSSupportsRule' :: JSRef GType
+gTypeCSSSupportsRule = GType gTypeCSSSupportsRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSUnknownRule }
+
+instance Eq (CSSUnknownRule) where
+  (CSSUnknownRule a) == (CSSUnknownRule b) = js_eq a b
+
+instance PToJSRef CSSUnknownRule where
+  pToJSRef = unCSSUnknownRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSUnknownRule where
+  pFromJSRef = CSSUnknownRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSUnknownRule where
+  toJSRef = return . unCSSUnknownRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSUnknownRule where
+  fromJSRef = return . fmap CSSUnknownRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule CSSUnknownRule
+instance IsGObject CSSUnknownRule where
+  toGObject = GObject . castRef . unCSSUnknownRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSUnknownRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSUnknownRule :: IsGObject obj => obj -> CSSUnknownRule
+castToCSSUnknownRule = castTo gTypeCSSUnknownRule "CSSUnknownRule"
+
+foreign import javascript unsafe "window[\"CSSUnknownRule\"]" gTypeCSSUnknownRule' :: JSRef GType
+gTypeCSSUnknownRule = GType gTypeCSSUnknownRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSValue }
+
+instance Eq (CSSValue) where
+  (CSSValue a) == (CSSValue b) = js_eq a b
+
+instance PToJSRef CSSValue where
+  pToJSRef = unCSSValue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSValue where
+  pFromJSRef = CSSValue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSValue where
+  toJSRef = return . unCSSValue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSValue where
+  fromJSRef = return . fmap CSSValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsCSSValue o
+toCSSValue :: IsCSSValue o => o -> CSSValue
+toCSSValue = unsafeCastGObject . toGObject
+
+instance IsCSSValue CSSValue
+instance IsGObject CSSValue where
+  toGObject = GObject . castRef . unCSSValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSValue . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSValue :: IsGObject obj => obj -> CSSValue
+castToCSSValue = castTo gTypeCSSValue "CSSValue"
+
+foreign import javascript unsafe "window[\"CSSValue\"]" gTypeCSSValue' :: JSRef GType
+gTypeCSSValue = GType gTypeCSSValue'
+#else
+type IsCSSValue o = CSSValueClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CSSValueList }
+
+instance Eq (CSSValueList) where
+  (CSSValueList a) == (CSSValueList b) = js_eq a b
+
+instance PToJSRef CSSValueList where
+  pToJSRef = unCSSValueList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CSSValueList where
+  pFromJSRef = CSSValueList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CSSValueList where
+  toJSRef = return . unCSSValueList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CSSValueList where
+  fromJSRef = return . fmap CSSValueList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unCSSValueList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CSSValueList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCSSValueList :: IsGObject obj => obj -> CSSValueList
+castToCSSValueList = castTo gTypeCSSValueList "CSSValueList"
+
+foreign import javascript unsafe "window[\"CSSValueList\"]" gTypeCSSValueList' :: JSRef GType
+gTypeCSSValueList = GType gTypeCSSValueList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CanvasGradient }
+
+instance Eq (CanvasGradient) where
+  (CanvasGradient a) == (CanvasGradient b) = js_eq a b
+
+instance PToJSRef CanvasGradient where
+  pToJSRef = unCanvasGradient
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CanvasGradient where
+  pFromJSRef = CanvasGradient
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CanvasGradient where
+  toJSRef = return . unCanvasGradient
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CanvasGradient where
+  fromJSRef = return . fmap CanvasGradient . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CanvasGradient where
+  toGObject = GObject . castRef . unCanvasGradient
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasGradient . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasGradient :: IsGObject obj => obj -> CanvasGradient
+castToCanvasGradient = castTo gTypeCanvasGradient "CanvasGradient"
+
+foreign import javascript unsafe "window[\"CanvasGradient\"]" gTypeCanvasGradient' :: JSRef GType
+gTypeCanvasGradient = GType gTypeCanvasGradient'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CanvasPattern }
+
+instance Eq (CanvasPattern) where
+  (CanvasPattern a) == (CanvasPattern b) = js_eq a b
+
+instance PToJSRef CanvasPattern where
+  pToJSRef = unCanvasPattern
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CanvasPattern where
+  pFromJSRef = CanvasPattern
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CanvasPattern where
+  toJSRef = return . unCanvasPattern
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CanvasPattern where
+  fromJSRef = return . fmap CanvasPattern . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CanvasPattern where
+  toGObject = GObject . castRef . unCanvasPattern
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasPattern . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasPattern :: IsGObject obj => obj -> CanvasPattern
+castToCanvasPattern = castTo gTypeCanvasPattern "CanvasPattern"
+
+foreign import javascript unsafe "window[\"CanvasPattern\"]" gTypeCanvasPattern' :: JSRef GType
+gTypeCanvasPattern = GType gTypeCanvasPattern'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CanvasProxy }
+
+instance Eq (CanvasProxy) where
+  (CanvasProxy a) == (CanvasProxy b) = js_eq a b
+
+instance PToJSRef CanvasProxy where
+  pToJSRef = unCanvasProxy
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CanvasProxy where
+  pFromJSRef = CanvasProxy
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CanvasProxy where
+  toJSRef = return . unCanvasProxy
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CanvasProxy where
+  fromJSRef = return . fmap CanvasProxy . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CanvasProxy where
+  toGObject = GObject . castRef . unCanvasProxy
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasProxy . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasProxy :: IsGObject obj => obj -> CanvasProxy
+castToCanvasProxy = castTo gTypeCanvasProxy "CanvasProxy"
+
+foreign import javascript unsafe "window[\"CanvasProxy\"]" gTypeCanvasProxy' :: JSRef GType
+gTypeCanvasProxy = GType gTypeCanvasProxy'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CanvasRenderingContext }
+
+instance Eq (CanvasRenderingContext) where
+  (CanvasRenderingContext a) == (CanvasRenderingContext b) = js_eq a b
+
+instance PToJSRef CanvasRenderingContext where
+  pToJSRef = unCanvasRenderingContext
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CanvasRenderingContext where
+  pFromJSRef = CanvasRenderingContext
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CanvasRenderingContext where
+  toJSRef = return . unCanvasRenderingContext
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CanvasRenderingContext where
+  fromJSRef = return . fmap CanvasRenderingContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsCanvasRenderingContext o
+toCanvasRenderingContext :: IsCanvasRenderingContext o => o -> CanvasRenderingContext
+toCanvasRenderingContext = unsafeCastGObject . toGObject
+
+instance IsCanvasRenderingContext CanvasRenderingContext
+instance IsGObject CanvasRenderingContext where
+  toGObject = GObject . castRef . unCanvasRenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasRenderingContext . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasRenderingContext :: IsGObject obj => obj -> CanvasRenderingContext
+castToCanvasRenderingContext = castTo gTypeCanvasRenderingContext "CanvasRenderingContext"
+
+foreign import javascript unsafe "window[\"CanvasRenderingContext\"]" gTypeCanvasRenderingContext' :: JSRef GType
+gTypeCanvasRenderingContext = GType gTypeCanvasRenderingContext'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CanvasRenderingContext2D }
+
+instance Eq (CanvasRenderingContext2D) where
+  (CanvasRenderingContext2D a) == (CanvasRenderingContext2D b) = js_eq a b
+
+instance PToJSRef CanvasRenderingContext2D where
+  pToJSRef = unCanvasRenderingContext2D
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CanvasRenderingContext2D where
+  pFromJSRef = CanvasRenderingContext2D
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CanvasRenderingContext2D where
+  toJSRef = return . unCanvasRenderingContext2D
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CanvasRenderingContext2D where
+  fromJSRef = return . fmap CanvasRenderingContext2D . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCanvasRenderingContext CanvasRenderingContext2D
+instance IsGObject CanvasRenderingContext2D where
+  toGObject = GObject . castRef . unCanvasRenderingContext2D
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CanvasRenderingContext2D . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCanvasRenderingContext2D :: IsGObject obj => obj -> CanvasRenderingContext2D
+castToCanvasRenderingContext2D = castTo gTypeCanvasRenderingContext2D "CanvasRenderingContext2D"
+
+foreign import javascript unsafe "window[\"CanvasRenderingContext2D\"]" gTypeCanvasRenderingContext2D' :: JSRef GType
+gTypeCanvasRenderingContext2D = GType gTypeCanvasRenderingContext2D'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CapabilityRange }
+
+instance Eq (CapabilityRange) where
+  (CapabilityRange a) == (CapabilityRange b) = js_eq a b
+
+instance PToJSRef CapabilityRange where
+  pToJSRef = unCapabilityRange
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CapabilityRange where
+  pFromJSRef = CapabilityRange
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CapabilityRange where
+  toJSRef = return . unCapabilityRange
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CapabilityRange where
+  fromJSRef = return . fmap CapabilityRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CapabilityRange where
+  toGObject = GObject . castRef . unCapabilityRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CapabilityRange . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCapabilityRange :: IsGObject obj => obj -> CapabilityRange
+castToCapabilityRange = castTo gTypeCapabilityRange "CapabilityRange"
+
+foreign import javascript unsafe "window[\"CapabilityRange\"]" gTypeCapabilityRange' :: JSRef GType
+gTypeCapabilityRange = GType gTypeCapabilityRange'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ChannelMergerNode }
+
+instance Eq (ChannelMergerNode) where
+  (ChannelMergerNode a) == (ChannelMergerNode b) = js_eq a b
+
+instance PToJSRef ChannelMergerNode where
+  pToJSRef = unChannelMergerNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ChannelMergerNode where
+  pFromJSRef = ChannelMergerNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ChannelMergerNode where
+  toJSRef = return . unChannelMergerNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ChannelMergerNode where
+  fromJSRef = return . fmap ChannelMergerNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode ChannelMergerNode
+instance IsEventTarget ChannelMergerNode
+instance IsGObject ChannelMergerNode where
+  toGObject = GObject . castRef . unChannelMergerNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChannelMergerNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChannelMergerNode :: IsGObject obj => obj -> ChannelMergerNode
+castToChannelMergerNode = castTo gTypeChannelMergerNode "ChannelMergerNode"
+
+foreign import javascript unsafe "window[\"ChannelMergerNode\"]" gTypeChannelMergerNode' :: JSRef GType
+gTypeChannelMergerNode = GType gTypeChannelMergerNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ChannelSplitterNode }
+
+instance Eq (ChannelSplitterNode) where
+  (ChannelSplitterNode a) == (ChannelSplitterNode b) = js_eq a b
+
+instance PToJSRef ChannelSplitterNode where
+  pToJSRef = unChannelSplitterNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ChannelSplitterNode where
+  pFromJSRef = ChannelSplitterNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ChannelSplitterNode where
+  toJSRef = return . unChannelSplitterNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ChannelSplitterNode where
+  fromJSRef = return . fmap ChannelSplitterNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode ChannelSplitterNode
+instance IsEventTarget ChannelSplitterNode
+instance IsGObject ChannelSplitterNode where
+  toGObject = GObject . castRef . unChannelSplitterNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChannelSplitterNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChannelSplitterNode :: IsGObject obj => obj -> ChannelSplitterNode
+castToChannelSplitterNode = castTo gTypeChannelSplitterNode "ChannelSplitterNode"
+
+foreign import javascript unsafe "window[\"ChannelSplitterNode\"]" gTypeChannelSplitterNode' :: JSRef GType
+gTypeChannelSplitterNode = GType gTypeChannelSplitterNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CharacterData }
+
+instance Eq (CharacterData) where
+  (CharacterData a) == (CharacterData b) = js_eq a b
+
+instance PToJSRef CharacterData where
+  pToJSRef = unCharacterData
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CharacterData where
+  pFromJSRef = CharacterData
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CharacterData where
+  toJSRef = return . unCharacterData
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CharacterData where
+  fromJSRef = return . fmap CharacterData . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unCharacterData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CharacterData . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCharacterData :: IsGObject obj => obj -> CharacterData
+castToCharacterData = castTo gTypeCharacterData "CharacterData"
+
+foreign import javascript unsafe "window[\"CharacterData\"]" gTypeCharacterData' :: JSRef GType
+gTypeCharacterData = GType gTypeCharacterData'
+#else
+type IsCharacterData o = CharacterDataClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ChildNode }
+
+instance Eq (ChildNode) where
+  (ChildNode a) == (ChildNode b) = js_eq a b
+
+instance PToJSRef ChildNode where
+  pToJSRef = unChildNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ChildNode where
+  pFromJSRef = ChildNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ChildNode where
+  toJSRef = return . unChildNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ChildNode where
+  fromJSRef = return . fmap ChildNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ChildNode where
+  toGObject = GObject . castRef . unChildNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ChildNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToChildNode :: IsGObject obj => obj -> ChildNode
+castToChildNode = castTo gTypeChildNode "ChildNode"
+
+foreign import javascript unsafe "window[\"ChildNode\"]" gTypeChildNode' :: JSRef GType
+gTypeChildNode = GType gTypeChildNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ClientRect }
+
+instance Eq (ClientRect) where
+  (ClientRect a) == (ClientRect b) = js_eq a b
+
+instance PToJSRef ClientRect where
+  pToJSRef = unClientRect
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ClientRect where
+  pFromJSRef = ClientRect
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ClientRect where
+  toJSRef = return . unClientRect
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ClientRect where
+  fromJSRef = return . fmap ClientRect . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ClientRect where
+  toGObject = GObject . castRef . unClientRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ClientRect . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToClientRect :: IsGObject obj => obj -> ClientRect
+castToClientRect = castTo gTypeClientRect "ClientRect"
+
+foreign import javascript unsafe "window[\"ClientRect\"]" gTypeClientRect' :: JSRef GType
+gTypeClientRect = GType gTypeClientRect'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ClientRectList }
+
+instance Eq (ClientRectList) where
+  (ClientRectList a) == (ClientRectList b) = js_eq a b
+
+instance PToJSRef ClientRectList where
+  pToJSRef = unClientRectList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ClientRectList where
+  pFromJSRef = ClientRectList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ClientRectList where
+  toJSRef = return . unClientRectList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ClientRectList where
+  fromJSRef = return . fmap ClientRectList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ClientRectList where
+  toGObject = GObject . castRef . unClientRectList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ClientRectList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToClientRectList :: IsGObject obj => obj -> ClientRectList
+castToClientRectList = castTo gTypeClientRectList "ClientRectList"
+
+foreign import javascript unsafe "window[\"ClientRectList\"]" gTypeClientRectList' :: JSRef GType
+gTypeClientRectList = GType gTypeClientRectList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CloseEvent }
+
+instance Eq (CloseEvent) where
+  (CloseEvent a) == (CloseEvent b) = js_eq a b
+
+instance PToJSRef CloseEvent where
+  pToJSRef = unCloseEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CloseEvent where
+  pFromJSRef = CloseEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CloseEvent where
+  toJSRef = return . unCloseEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CloseEvent where
+  fromJSRef = return . fmap CloseEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent CloseEvent
+instance IsGObject CloseEvent where
+  toGObject = GObject . castRef . unCloseEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CloseEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCloseEvent :: IsGObject obj => obj -> CloseEvent
+castToCloseEvent = castTo gTypeCloseEvent "CloseEvent"
+
+foreign import javascript unsafe "window[\"CloseEvent\"]" gTypeCloseEvent' :: JSRef GType
+gTypeCloseEvent = GType gTypeCloseEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CommandLineAPIHost }
+
+instance Eq (CommandLineAPIHost) where
+  (CommandLineAPIHost a) == (CommandLineAPIHost b) = js_eq a b
+
+instance PToJSRef CommandLineAPIHost where
+  pToJSRef = unCommandLineAPIHost
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CommandLineAPIHost where
+  pFromJSRef = CommandLineAPIHost
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CommandLineAPIHost where
+  toJSRef = return . unCommandLineAPIHost
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CommandLineAPIHost where
+  fromJSRef = return . fmap CommandLineAPIHost . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CommandLineAPIHost where
+  toGObject = GObject . castRef . unCommandLineAPIHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CommandLineAPIHost . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCommandLineAPIHost :: IsGObject obj => obj -> CommandLineAPIHost
+castToCommandLineAPIHost = castTo gTypeCommandLineAPIHost "CommandLineAPIHost"
+
+foreign import javascript unsafe "window[\"CommandLineAPIHost\"]" gTypeCommandLineAPIHost' :: JSRef GType
+gTypeCommandLineAPIHost = GType gTypeCommandLineAPIHost'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Comment }
+
+instance Eq (Comment) where
+  (Comment a) == (Comment b) = js_eq a b
+
+instance PToJSRef Comment where
+  pToJSRef = unComment
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Comment where
+  pFromJSRef = Comment
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Comment where
+  toJSRef = return . unComment
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Comment where
+  fromJSRef = return . fmap Comment . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCharacterData Comment
+instance IsNode Comment
+instance IsEventTarget Comment
+instance IsGObject Comment where
+  toGObject = GObject . castRef . unComment
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Comment . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToComment :: IsGObject obj => obj -> Comment
+castToComment = castTo gTypeComment "Comment"
+
+foreign import javascript unsafe "window[\"Comment\"]" gTypeComment' :: JSRef GType
+gTypeComment = GType gTypeComment'
+#else
+type IsComment o = CommentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CompositionEvent }
+
+instance Eq (CompositionEvent) where
+  (CompositionEvent a) == (CompositionEvent b) = js_eq a b
+
+instance PToJSRef CompositionEvent where
+  pToJSRef = unCompositionEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CompositionEvent where
+  pFromJSRef = CompositionEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CompositionEvent where
+  toJSRef = return . unCompositionEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CompositionEvent where
+  fromJSRef = return . fmap CompositionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsUIEvent CompositionEvent
+instance IsEvent CompositionEvent
+instance IsGObject CompositionEvent where
+  toGObject = GObject . castRef . unCompositionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CompositionEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCompositionEvent :: IsGObject obj => obj -> CompositionEvent
+castToCompositionEvent = castTo gTypeCompositionEvent "CompositionEvent"
+
+foreign import javascript unsafe "window[\"CompositionEvent\"]" gTypeCompositionEvent' :: JSRef GType
+gTypeCompositionEvent = GType gTypeCompositionEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ConvolverNode }
+
+instance Eq (ConvolverNode) where
+  (ConvolverNode a) == (ConvolverNode b) = js_eq a b
+
+instance PToJSRef ConvolverNode where
+  pToJSRef = unConvolverNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ConvolverNode where
+  pFromJSRef = ConvolverNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ConvolverNode where
+  toJSRef = return . unConvolverNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ConvolverNode where
+  fromJSRef = return . fmap ConvolverNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode ConvolverNode
+instance IsEventTarget ConvolverNode
+instance IsGObject ConvolverNode where
+  toGObject = GObject . castRef . unConvolverNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ConvolverNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToConvolverNode :: IsGObject obj => obj -> ConvolverNode
+castToConvolverNode = castTo gTypeConvolverNode "ConvolverNode"
+
+foreign import javascript unsafe "window[\"ConvolverNode\"]" gTypeConvolverNode' :: JSRef GType
+gTypeConvolverNode = GType gTypeConvolverNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Coordinates }
+
+instance Eq (Coordinates) where
+  (Coordinates a) == (Coordinates b) = js_eq a b
+
+instance PToJSRef Coordinates where
+  pToJSRef = unCoordinates
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Coordinates where
+  pFromJSRef = Coordinates
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Coordinates where
+  toJSRef = return . unCoordinates
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Coordinates where
+  fromJSRef = return . fmap Coordinates . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Coordinates where
+  toGObject = GObject . castRef . unCoordinates
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Coordinates . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCoordinates :: IsGObject obj => obj -> Coordinates
+castToCoordinates = castTo gTypeCoordinates "Coordinates"
+
+foreign import javascript unsafe "window[\"Coordinates\"]" gTypeCoordinates' :: JSRef GType
+gTypeCoordinates = GType gTypeCoordinates'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Counter }
+
+instance Eq (Counter) where
+  (Counter a) == (Counter b) = js_eq a b
+
+instance PToJSRef Counter where
+  pToJSRef = unCounter
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Counter where
+  pFromJSRef = Counter
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Counter where
+  toJSRef = return . unCounter
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Counter where
+  fromJSRef = return . fmap Counter . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Counter where
+  toGObject = GObject . castRef . unCounter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Counter . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCounter :: IsGObject obj => obj -> Counter
+castToCounter = castTo gTypeCounter "Counter"
+
+foreign import javascript unsafe "window[\"Counter\"]" gTypeCounter' :: JSRef GType
+gTypeCounter = GType gTypeCounter'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Crypto }
+
+instance Eq (Crypto) where
+  (Crypto a) == (Crypto b) = js_eq a b
+
+instance PToJSRef Crypto where
+  pToJSRef = unCrypto
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Crypto where
+  pFromJSRef = Crypto
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Crypto where
+  toJSRef = return . unCrypto
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Crypto where
+  fromJSRef = return . fmap Crypto . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Crypto where
+  toGObject = GObject . castRef . unCrypto
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Crypto . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCrypto :: IsGObject obj => obj -> Crypto
+castToCrypto = castTo gTypeCrypto "Crypto"
+
+foreign import javascript unsafe "window[\"Crypto\"]" gTypeCrypto' :: JSRef GType
+gTypeCrypto = GType gTypeCrypto'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CryptoKey }
+
+instance Eq (CryptoKey) where
+  (CryptoKey a) == (CryptoKey b) = js_eq a b
+
+instance PToJSRef CryptoKey where
+  pToJSRef = unCryptoKey
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CryptoKey where
+  pFromJSRef = CryptoKey
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CryptoKey where
+  toJSRef = return . unCryptoKey
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CryptoKey where
+  fromJSRef = return . fmap CryptoKey . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CryptoKey where
+  toGObject = GObject . castRef . unCryptoKey
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CryptoKey . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCryptoKey :: IsGObject obj => obj -> CryptoKey
+castToCryptoKey = castTo gTypeCryptoKey "CryptoKey"
+
+foreign import javascript unsafe "window[\"CryptoKey\"]" gTypeCryptoKey' :: JSRef GType
+gTypeCryptoKey = GType gTypeCryptoKey'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CryptoKeyPair }
+
+instance Eq (CryptoKeyPair) where
+  (CryptoKeyPair a) == (CryptoKeyPair b) = js_eq a b
+
+instance PToJSRef CryptoKeyPair where
+  pToJSRef = unCryptoKeyPair
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CryptoKeyPair where
+  pFromJSRef = CryptoKeyPair
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CryptoKeyPair where
+  toJSRef = return . unCryptoKeyPair
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CryptoKeyPair where
+  fromJSRef = return . fmap CryptoKeyPair . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject CryptoKeyPair where
+  toGObject = GObject . castRef . unCryptoKeyPair
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CryptoKeyPair . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCryptoKeyPair :: IsGObject obj => obj -> CryptoKeyPair
+castToCryptoKeyPair = castTo gTypeCryptoKeyPair "CryptoKeyPair"
+
+foreign import javascript unsafe "window[\"CryptoKeyPair\"]" gTypeCryptoKeyPair' :: JSRef GType
+gTypeCryptoKeyPair = GType gTypeCryptoKeyPair'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef CustomEvent }
+
+instance Eq (CustomEvent) where
+  (CustomEvent a) == (CustomEvent b) = js_eq a b
+
+instance PToJSRef CustomEvent where
+  pToJSRef = unCustomEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef CustomEvent where
+  pFromJSRef = CustomEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef CustomEvent where
+  toJSRef = return . unCustomEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef CustomEvent where
+  fromJSRef = return . fmap CustomEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent CustomEvent
+instance IsGObject CustomEvent where
+  toGObject = GObject . castRef . unCustomEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = CustomEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToCustomEvent :: IsGObject obj => obj -> CustomEvent
+castToCustomEvent = castTo gTypeCustomEvent "CustomEvent"
+
+foreign import javascript unsafe "window[\"CustomEvent\"]" gTypeCustomEvent' :: JSRef GType
+gTypeCustomEvent = GType gTypeCustomEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DOMError }
+
+instance Eq (DOMError) where
+  (DOMError a) == (DOMError b) = js_eq a b
+
+instance PToJSRef DOMError where
+  pToJSRef = unDOMError
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMError where
+  pFromJSRef = DOMError
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMError where
+  toJSRef = return . unDOMError
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMError where
+  fromJSRef = return . fmap DOMError . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsDOMError o
+toDOMError :: IsDOMError o => o -> DOMError
+toDOMError = unsafeCastGObject . toGObject
+
+instance IsDOMError DOMError
+instance IsGObject DOMError where
+  toGObject = GObject . castRef . unDOMError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMError . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMError :: IsGObject obj => obj -> DOMError
+castToDOMError = castTo gTypeDOMError "DOMError"
+
+foreign import javascript unsafe "window[\"DOMError\"]" gTypeDOMError' :: JSRef GType
+gTypeDOMError = GType gTypeDOMError'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DOMImplementation }
+
+instance Eq (DOMImplementation) where
+  (DOMImplementation a) == (DOMImplementation b) = js_eq a b
+
+instance PToJSRef DOMImplementation where
+  pToJSRef = unDOMImplementation
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMImplementation where
+  pFromJSRef = DOMImplementation
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMImplementation where
+  toJSRef = return . unDOMImplementation
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMImplementation where
+  fromJSRef = return . fmap DOMImplementation . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject DOMImplementation where
+  toGObject = GObject . castRef . unDOMImplementation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMImplementation . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMImplementation :: IsGObject obj => obj -> DOMImplementation
+castToDOMImplementation = castTo gTypeDOMImplementation "DOMImplementation"
+
+foreign import javascript unsafe "window[\"DOMImplementation\"]" gTypeDOMImplementation' :: JSRef GType
+gTypeDOMImplementation = GType gTypeDOMImplementation'
+#else
+type IsDOMImplementation o = DOMImplementationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DOMNamedFlowCollection }
+
+instance Eq (DOMNamedFlowCollection) where
+  (DOMNamedFlowCollection a) == (DOMNamedFlowCollection b) = js_eq a b
+
+instance PToJSRef DOMNamedFlowCollection where
+  pToJSRef = unDOMNamedFlowCollection
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMNamedFlowCollection where
+  pFromJSRef = DOMNamedFlowCollection
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMNamedFlowCollection where
+  toJSRef = return . unDOMNamedFlowCollection
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMNamedFlowCollection where
+  fromJSRef = return . fmap DOMNamedFlowCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject DOMNamedFlowCollection where
+  toGObject = GObject . castRef . unDOMNamedFlowCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMNamedFlowCollection . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMNamedFlowCollection :: IsGObject obj => obj -> DOMNamedFlowCollection
+castToDOMNamedFlowCollection = castTo gTypeDOMNamedFlowCollection "DOMNamedFlowCollection"
+
+foreign import javascript unsafe "window[\"WebKitNamedFlowCollection\"]" gTypeDOMNamedFlowCollection' :: JSRef GType
+gTypeDOMNamedFlowCollection = GType gTypeDOMNamedFlowCollection'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsDOMNamedFlowCollection o = DOMNamedFlowCollectionClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DOMParser }
+
+instance Eq (DOMParser) where
+  (DOMParser a) == (DOMParser b) = js_eq a b
+
+instance PToJSRef DOMParser where
+  pToJSRef = unDOMParser
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMParser where
+  pFromJSRef = DOMParser
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMParser where
+  toJSRef = return . unDOMParser
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMParser where
+  fromJSRef = return . fmap DOMParser . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject DOMParser where
+  toGObject = GObject . castRef . unDOMParser
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMParser . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMParser :: IsGObject obj => obj -> DOMParser
+castToDOMParser = castTo gTypeDOMParser "DOMParser"
+
+foreign import javascript unsafe "window[\"DOMParser\"]" gTypeDOMParser' :: JSRef GType
+gTypeDOMParser = GType gTypeDOMParser'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DOMSettableTokenList }
+
+instance Eq (DOMSettableTokenList) where
+  (DOMSettableTokenList a) == (DOMSettableTokenList b) = js_eq a b
+
+instance PToJSRef DOMSettableTokenList where
+  pToJSRef = unDOMSettableTokenList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMSettableTokenList where
+  pFromJSRef = DOMSettableTokenList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMSettableTokenList where
+  toJSRef = return . unDOMSettableTokenList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMSettableTokenList where
+  fromJSRef = return . fmap DOMSettableTokenList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsDOMTokenList DOMSettableTokenList
+instance IsGObject DOMSettableTokenList where
+  toGObject = GObject . castRef . unDOMSettableTokenList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMSettableTokenList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMSettableTokenList :: IsGObject obj => obj -> DOMSettableTokenList
+castToDOMSettableTokenList = castTo gTypeDOMSettableTokenList "DOMSettableTokenList"
+
+foreign import javascript unsafe "window[\"DOMSettableTokenList\"]" gTypeDOMSettableTokenList' :: JSRef GType
+gTypeDOMSettableTokenList = GType gTypeDOMSettableTokenList'
+#else
+type IsDOMSettableTokenList o = DOMSettableTokenListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DOMStringList }
+
+instance Eq (DOMStringList) where
+  (DOMStringList a) == (DOMStringList b) = js_eq a b
+
+instance PToJSRef DOMStringList where
+  pToJSRef = unDOMStringList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMStringList where
+  pFromJSRef = DOMStringList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMStringList where
+  toJSRef = return . unDOMStringList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMStringList where
+  fromJSRef = return . fmap DOMStringList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject DOMStringList where
+  toGObject = GObject . castRef . unDOMStringList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMStringList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMStringList :: IsGObject obj => obj -> DOMStringList
+castToDOMStringList = castTo gTypeDOMStringList "DOMStringList"
+
+foreign import javascript unsafe "window[\"DOMStringList\"]" gTypeDOMStringList' :: JSRef GType
+gTypeDOMStringList = GType gTypeDOMStringList'
+#else
+type IsDOMStringList o = DOMStringListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DOMStringMap }
+
+instance Eq (DOMStringMap) where
+  (DOMStringMap a) == (DOMStringMap b) = js_eq a b
+
+instance PToJSRef DOMStringMap where
+  pToJSRef = unDOMStringMap
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMStringMap where
+  pFromJSRef = DOMStringMap
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMStringMap where
+  toJSRef = return . unDOMStringMap
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMStringMap where
+  fromJSRef = return . fmap DOMStringMap . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject DOMStringMap where
+  toGObject = GObject . castRef . unDOMStringMap
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMStringMap . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMStringMap :: IsGObject obj => obj -> DOMStringMap
+castToDOMStringMap = castTo gTypeDOMStringMap "DOMStringMap"
+
+foreign import javascript unsafe "window[\"DOMStringMap\"]" gTypeDOMStringMap' :: JSRef GType
+gTypeDOMStringMap = GType gTypeDOMStringMap'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DOMTokenList }
+
+instance Eq (DOMTokenList) where
+  (DOMTokenList a) == (DOMTokenList b) = js_eq a b
+
+instance PToJSRef DOMTokenList where
+  pToJSRef = unDOMTokenList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DOMTokenList where
+  pFromJSRef = DOMTokenList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DOMTokenList where
+  toJSRef = return . unDOMTokenList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DOMTokenList where
+  fromJSRef = return . fmap DOMTokenList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsDOMTokenList o
+toDOMTokenList :: IsDOMTokenList o => o -> DOMTokenList
+toDOMTokenList = unsafeCastGObject . toGObject
+
+instance IsDOMTokenList DOMTokenList
+instance IsGObject DOMTokenList where
+  toGObject = GObject . castRef . unDOMTokenList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DOMTokenList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDOMTokenList :: IsGObject obj => obj -> DOMTokenList
+castToDOMTokenList = castTo gTypeDOMTokenList "DOMTokenList"
+
+foreign import javascript unsafe "window[\"DOMTokenList\"]" gTypeDOMTokenList' :: JSRef GType
+gTypeDOMTokenList = GType gTypeDOMTokenList'
+#else
+type IsDOMTokenList o = DOMTokenListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DataCue }
+
+instance Eq (DataCue) where
+  (DataCue a) == (DataCue b) = js_eq a b
+
+instance PToJSRef DataCue where
+  pToJSRef = unDataCue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DataCue where
+  pFromJSRef = DataCue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DataCue where
+  toJSRef = return . unDataCue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DataCue where
+  fromJSRef = return . fmap DataCue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsTextTrackCue DataCue
+instance IsEventTarget DataCue
+instance IsGObject DataCue where
+  toGObject = GObject . castRef . unDataCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataCue . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataCue :: IsGObject obj => obj -> DataCue
+castToDataCue = castTo gTypeDataCue "DataCue"
+
+foreign import javascript unsafe "window[\"WebKitDataCue\"]" gTypeDataCue' :: JSRef GType
+gTypeDataCue = GType gTypeDataCue'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DataTransfer }
+
+instance Eq (DataTransfer) where
+  (DataTransfer a) == (DataTransfer b) = js_eq a b
+
+instance PToJSRef DataTransfer where
+  pToJSRef = unDataTransfer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DataTransfer where
+  pFromJSRef = DataTransfer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DataTransfer where
+  toJSRef = return . unDataTransfer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DataTransfer where
+  fromJSRef = return . fmap DataTransfer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject DataTransfer where
+  toGObject = GObject . castRef . unDataTransfer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransfer . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransfer :: IsGObject obj => obj -> DataTransfer
+castToDataTransfer = castTo gTypeDataTransfer "DataTransfer"
+
+foreign import javascript unsafe "window[\"DataTransfer\"]" gTypeDataTransfer' :: JSRef GType
+gTypeDataTransfer = GType gTypeDataTransfer'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DataTransferItem }
+
+instance Eq (DataTransferItem) where
+  (DataTransferItem a) == (DataTransferItem b) = js_eq a b
+
+instance PToJSRef DataTransferItem where
+  pToJSRef = unDataTransferItem
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DataTransferItem where
+  pFromJSRef = DataTransferItem
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DataTransferItem where
+  toJSRef = return . unDataTransferItem
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DataTransferItem where
+  fromJSRef = return . fmap DataTransferItem . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject DataTransferItem where
+  toGObject = GObject . castRef . unDataTransferItem
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransferItem . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransferItem :: IsGObject obj => obj -> DataTransferItem
+castToDataTransferItem = castTo gTypeDataTransferItem "DataTransferItem"
+
+foreign import javascript unsafe "window[\"DataTransferItem\"]" gTypeDataTransferItem' :: JSRef GType
+gTypeDataTransferItem = GType gTypeDataTransferItem'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DataTransferItemList }
+
+instance Eq (DataTransferItemList) where
+  (DataTransferItemList a) == (DataTransferItemList b) = js_eq a b
+
+instance PToJSRef DataTransferItemList where
+  pToJSRef = unDataTransferItemList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DataTransferItemList where
+  pFromJSRef = DataTransferItemList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DataTransferItemList where
+  toJSRef = return . unDataTransferItemList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DataTransferItemList where
+  fromJSRef = return . fmap DataTransferItemList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject DataTransferItemList where
+  toGObject = GObject . castRef . unDataTransferItemList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DataTransferItemList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDataTransferItemList :: IsGObject obj => obj -> DataTransferItemList
+castToDataTransferItemList = castTo gTypeDataTransferItemList "DataTransferItemList"
+
+foreign import javascript unsafe "window[\"DataTransferItemList\"]" gTypeDataTransferItemList' :: JSRef GType
+gTypeDataTransferItemList = GType gTypeDataTransferItemList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Database }
+
+instance Eq (Database) where
+  (Database a) == (Database b) = js_eq a b
+
+instance PToJSRef Database where
+  pToJSRef = unDatabase
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Database where
+  pFromJSRef = Database
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Database where
+  toJSRef = return . unDatabase
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Database where
+  fromJSRef = return . fmap Database . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Database where
+  toGObject = GObject . castRef . unDatabase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Database . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDatabase :: IsGObject obj => obj -> Database
+castToDatabase = castTo gTypeDatabase "Database"
+
+foreign import javascript unsafe "window[\"Database\"]" gTypeDatabase' :: JSRef GType
+gTypeDatabase = GType gTypeDatabase'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DedicatedWorkerGlobalScope }
+
+instance Eq (DedicatedWorkerGlobalScope) where
+  (DedicatedWorkerGlobalScope a) == (DedicatedWorkerGlobalScope b) = js_eq a b
+
+instance PToJSRef DedicatedWorkerGlobalScope where
+  pToJSRef = unDedicatedWorkerGlobalScope
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DedicatedWorkerGlobalScope where
+  pFromJSRef = DedicatedWorkerGlobalScope
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DedicatedWorkerGlobalScope where
+  toJSRef = return . unDedicatedWorkerGlobalScope
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DedicatedWorkerGlobalScope where
+  fromJSRef = return . fmap DedicatedWorkerGlobalScope . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsWorkerGlobalScope DedicatedWorkerGlobalScope
+instance IsEventTarget DedicatedWorkerGlobalScope
+instance IsGObject DedicatedWorkerGlobalScope where
+  toGObject = GObject . castRef . unDedicatedWorkerGlobalScope
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DedicatedWorkerGlobalScope . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDedicatedWorkerGlobalScope :: IsGObject obj => obj -> DedicatedWorkerGlobalScope
+castToDedicatedWorkerGlobalScope = castTo gTypeDedicatedWorkerGlobalScope "DedicatedWorkerGlobalScope"
+
+foreign import javascript unsafe "window[\"DedicatedWorkerGlobalScope\"]" gTypeDedicatedWorkerGlobalScope' :: JSRef GType
+gTypeDedicatedWorkerGlobalScope = GType gTypeDedicatedWorkerGlobalScope'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DelayNode }
+
+instance Eq (DelayNode) where
+  (DelayNode a) == (DelayNode b) = js_eq a b
+
+instance PToJSRef DelayNode where
+  pToJSRef = unDelayNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DelayNode where
+  pFromJSRef = DelayNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DelayNode where
+  toJSRef = return . unDelayNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DelayNode where
+  fromJSRef = return . fmap DelayNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode DelayNode
+instance IsEventTarget DelayNode
+instance IsGObject DelayNode where
+  toGObject = GObject . castRef . unDelayNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DelayNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDelayNode :: IsGObject obj => obj -> DelayNode
+castToDelayNode = castTo gTypeDelayNode "DelayNode"
+
+foreign import javascript unsafe "window[\"DelayNode\"]" gTypeDelayNode' :: JSRef GType
+gTypeDelayNode = GType gTypeDelayNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DeviceMotionEvent }
+
+instance Eq (DeviceMotionEvent) where
+  (DeviceMotionEvent a) == (DeviceMotionEvent b) = js_eq a b
+
+instance PToJSRef DeviceMotionEvent where
+  pToJSRef = unDeviceMotionEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DeviceMotionEvent where
+  pFromJSRef = DeviceMotionEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DeviceMotionEvent where
+  toJSRef = return . unDeviceMotionEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DeviceMotionEvent where
+  fromJSRef = return . fmap DeviceMotionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent DeviceMotionEvent
+instance IsGObject DeviceMotionEvent where
+  toGObject = GObject . castRef . unDeviceMotionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceMotionEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceMotionEvent :: IsGObject obj => obj -> DeviceMotionEvent
+castToDeviceMotionEvent = castTo gTypeDeviceMotionEvent "DeviceMotionEvent"
+
+foreign import javascript unsafe "window[\"DeviceMotionEvent\"]" gTypeDeviceMotionEvent' :: JSRef GType
+gTypeDeviceMotionEvent = GType gTypeDeviceMotionEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DeviceOrientationEvent }
+
+instance Eq (DeviceOrientationEvent) where
+  (DeviceOrientationEvent a) == (DeviceOrientationEvent b) = js_eq a b
+
+instance PToJSRef DeviceOrientationEvent where
+  pToJSRef = unDeviceOrientationEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DeviceOrientationEvent where
+  pFromJSRef = DeviceOrientationEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DeviceOrientationEvent where
+  toJSRef = return . unDeviceOrientationEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DeviceOrientationEvent where
+  fromJSRef = return . fmap DeviceOrientationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent DeviceOrientationEvent
+instance IsGObject DeviceOrientationEvent where
+  toGObject = GObject . castRef . unDeviceOrientationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceOrientationEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceOrientationEvent :: IsGObject obj => obj -> DeviceOrientationEvent
+castToDeviceOrientationEvent = castTo gTypeDeviceOrientationEvent "DeviceOrientationEvent"
+
+foreign import javascript unsafe "window[\"DeviceOrientationEvent\"]" gTypeDeviceOrientationEvent' :: JSRef GType
+gTypeDeviceOrientationEvent = GType gTypeDeviceOrientationEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DeviceProximityEvent }
+
+instance Eq (DeviceProximityEvent) where
+  (DeviceProximityEvent a) == (DeviceProximityEvent b) = js_eq a b
+
+instance PToJSRef DeviceProximityEvent where
+  pToJSRef = unDeviceProximityEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DeviceProximityEvent where
+  pFromJSRef = DeviceProximityEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DeviceProximityEvent where
+  toJSRef = return . unDeviceProximityEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DeviceProximityEvent where
+  fromJSRef = return . fmap DeviceProximityEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent DeviceProximityEvent
+instance IsGObject DeviceProximityEvent where
+  toGObject = GObject . castRef . unDeviceProximityEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DeviceProximityEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDeviceProximityEvent :: IsGObject obj => obj -> DeviceProximityEvent
+castToDeviceProximityEvent = castTo gTypeDeviceProximityEvent "DeviceProximityEvent"
+
+foreign import javascript unsafe "window[\"DeviceProximityEvent\"]" gTypeDeviceProximityEvent' :: JSRef GType
+gTypeDeviceProximityEvent = GType gTypeDeviceProximityEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Document }
+
+instance Eq (Document) where
+  (Document a) == (Document b) = js_eq a b
+
+instance PToJSRef Document where
+  pToJSRef = unDocument
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Document where
+  pFromJSRef = Document
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Document where
+  toJSRef = return . unDocument
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Document where
+  fromJSRef = return . fmap Document . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Document . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocument :: IsGObject obj => obj -> Document
+castToDocument = castTo gTypeDocument "Document"
+
+foreign import javascript unsafe "window[\"Document\"]" gTypeDocument' :: JSRef GType
+gTypeDocument = GType gTypeDocument'
+#else
+type IsDocument o = DocumentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DocumentFragment }
+
+instance Eq (DocumentFragment) where
+  (DocumentFragment a) == (DocumentFragment b) = js_eq a b
+
+instance PToJSRef DocumentFragment where
+  pToJSRef = unDocumentFragment
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DocumentFragment where
+  pFromJSRef = DocumentFragment
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DocumentFragment where
+  toJSRef = return . unDocumentFragment
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DocumentFragment where
+  fromJSRef = return . fmap DocumentFragment . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsNode DocumentFragment
+instance IsEventTarget DocumentFragment
+instance IsGObject DocumentFragment where
+  toGObject = GObject . castRef . unDocumentFragment
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DocumentFragment . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocumentFragment :: IsGObject obj => obj -> DocumentFragment
+castToDocumentFragment = castTo gTypeDocumentFragment "DocumentFragment"
+
+foreign import javascript unsafe "window[\"DocumentFragment\"]" gTypeDocumentFragment' :: JSRef GType
+gTypeDocumentFragment = GType gTypeDocumentFragment'
+#else
+type IsDocumentFragment o = DocumentFragmentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DocumentType }
+
+instance Eq (DocumentType) where
+  (DocumentType a) == (DocumentType b) = js_eq a b
+
+instance PToJSRef DocumentType where
+  pToJSRef = unDocumentType
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DocumentType where
+  pFromJSRef = DocumentType
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DocumentType where
+  toJSRef = return . unDocumentType
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DocumentType where
+  fromJSRef = return . fmap DocumentType . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsNode DocumentType
+instance IsEventTarget DocumentType
+instance IsGObject DocumentType where
+  toGObject = GObject . castRef . unDocumentType
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DocumentType . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDocumentType :: IsGObject obj => obj -> DocumentType
+castToDocumentType = castTo gTypeDocumentType "DocumentType"
+
+foreign import javascript unsafe "window[\"DocumentType\"]" gTypeDocumentType' :: JSRef GType
+gTypeDocumentType = GType gTypeDocumentType'
+#else
+type IsDocumentType o = DocumentTypeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef DynamicsCompressorNode }
+
+instance Eq (DynamicsCompressorNode) where
+  (DynamicsCompressorNode a) == (DynamicsCompressorNode b) = js_eq a b
+
+instance PToJSRef DynamicsCompressorNode where
+  pToJSRef = unDynamicsCompressorNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef DynamicsCompressorNode where
+  pFromJSRef = DynamicsCompressorNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef DynamicsCompressorNode where
+  toJSRef = return . unDynamicsCompressorNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef DynamicsCompressorNode where
+  fromJSRef = return . fmap DynamicsCompressorNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode DynamicsCompressorNode
+instance IsEventTarget DynamicsCompressorNode
+instance IsGObject DynamicsCompressorNode where
+  toGObject = GObject . castRef . unDynamicsCompressorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = DynamicsCompressorNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToDynamicsCompressorNode :: IsGObject obj => obj -> DynamicsCompressorNode
+castToDynamicsCompressorNode = castTo gTypeDynamicsCompressorNode "DynamicsCompressorNode"
+
+foreign import javascript unsafe "window[\"DynamicsCompressorNode\"]" gTypeDynamicsCompressorNode' :: JSRef GType
+gTypeDynamicsCompressorNode = GType gTypeDynamicsCompressorNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EXTBlendMinMax }
+
+instance Eq (EXTBlendMinMax) where
+  (EXTBlendMinMax a) == (EXTBlendMinMax b) = js_eq a b
+
+instance PToJSRef EXTBlendMinMax where
+  pToJSRef = unEXTBlendMinMax
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EXTBlendMinMax where
+  pFromJSRef = EXTBlendMinMax
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EXTBlendMinMax where
+  toJSRef = return . unEXTBlendMinMax
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EXTBlendMinMax where
+  fromJSRef = return . fmap EXTBlendMinMax . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject EXTBlendMinMax where
+  toGObject = GObject . castRef . unEXTBlendMinMax
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTBlendMinMax . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTBlendMinMax :: IsGObject obj => obj -> EXTBlendMinMax
+castToEXTBlendMinMax = castTo gTypeEXTBlendMinMax "EXTBlendMinMax"
+
+foreign import javascript unsafe "window[\"EXTBlendMinMax\"]" gTypeEXTBlendMinMax' :: JSRef GType
+gTypeEXTBlendMinMax = GType gTypeEXTBlendMinMax'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EXTFragDepth }
+
+instance Eq (EXTFragDepth) where
+  (EXTFragDepth a) == (EXTFragDepth b) = js_eq a b
+
+instance PToJSRef EXTFragDepth where
+  pToJSRef = unEXTFragDepth
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EXTFragDepth where
+  pFromJSRef = EXTFragDepth
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EXTFragDepth where
+  toJSRef = return . unEXTFragDepth
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EXTFragDepth where
+  fromJSRef = return . fmap EXTFragDepth . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject EXTFragDepth where
+  toGObject = GObject . castRef . unEXTFragDepth
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTFragDepth . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTFragDepth :: IsGObject obj => obj -> EXTFragDepth
+castToEXTFragDepth = castTo gTypeEXTFragDepth "EXTFragDepth"
+
+foreign import javascript unsafe "window[\"EXTFragDepth\"]" gTypeEXTFragDepth' :: JSRef GType
+gTypeEXTFragDepth = GType gTypeEXTFragDepth'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EXTShaderTextureLOD }
+
+instance Eq (EXTShaderTextureLOD) where
+  (EXTShaderTextureLOD a) == (EXTShaderTextureLOD b) = js_eq a b
+
+instance PToJSRef EXTShaderTextureLOD where
+  pToJSRef = unEXTShaderTextureLOD
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EXTShaderTextureLOD where
+  pFromJSRef = EXTShaderTextureLOD
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EXTShaderTextureLOD where
+  toJSRef = return . unEXTShaderTextureLOD
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EXTShaderTextureLOD where
+  fromJSRef = return . fmap EXTShaderTextureLOD . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject EXTShaderTextureLOD where
+  toGObject = GObject . castRef . unEXTShaderTextureLOD
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTShaderTextureLOD . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTShaderTextureLOD :: IsGObject obj => obj -> EXTShaderTextureLOD
+castToEXTShaderTextureLOD = castTo gTypeEXTShaderTextureLOD "EXTShaderTextureLOD"
+
+foreign import javascript unsafe "window[\"EXTShaderTextureLOD\"]" gTypeEXTShaderTextureLOD' :: JSRef GType
+gTypeEXTShaderTextureLOD = GType gTypeEXTShaderTextureLOD'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EXTTextureFilterAnisotropic }
+
+instance Eq (EXTTextureFilterAnisotropic) where
+  (EXTTextureFilterAnisotropic a) == (EXTTextureFilterAnisotropic b) = js_eq a b
+
+instance PToJSRef EXTTextureFilterAnisotropic where
+  pToJSRef = unEXTTextureFilterAnisotropic
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EXTTextureFilterAnisotropic where
+  pFromJSRef = EXTTextureFilterAnisotropic
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EXTTextureFilterAnisotropic where
+  toJSRef = return . unEXTTextureFilterAnisotropic
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EXTTextureFilterAnisotropic where
+  fromJSRef = return . fmap EXTTextureFilterAnisotropic . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject EXTTextureFilterAnisotropic where
+  toGObject = GObject . castRef . unEXTTextureFilterAnisotropic
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTTextureFilterAnisotropic . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTTextureFilterAnisotropic :: IsGObject obj => obj -> EXTTextureFilterAnisotropic
+castToEXTTextureFilterAnisotropic = castTo gTypeEXTTextureFilterAnisotropic "EXTTextureFilterAnisotropic"
+
+foreign import javascript unsafe "window[\"EXTTextureFilterAnisotropic\"]" gTypeEXTTextureFilterAnisotropic' :: JSRef GType
+gTypeEXTTextureFilterAnisotropic = GType gTypeEXTTextureFilterAnisotropic'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EXTsRGB }
+
+instance Eq (EXTsRGB) where
+  (EXTsRGB a) == (EXTsRGB b) = js_eq a b
+
+instance PToJSRef EXTsRGB where
+  pToJSRef = unEXTsRGB
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EXTsRGB where
+  pFromJSRef = EXTsRGB
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EXTsRGB where
+  toJSRef = return . unEXTsRGB
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EXTsRGB where
+  fromJSRef = return . fmap EXTsRGB . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject EXTsRGB where
+  toGObject = GObject . castRef . unEXTsRGB
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EXTsRGB . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEXTsRGB :: IsGObject obj => obj -> EXTsRGB
+castToEXTsRGB = castTo gTypeEXTsRGB "EXTsRGB"
+
+foreign import javascript unsafe "window[\"EXTsRGB\"]" gTypeEXTsRGB' :: JSRef GType
+gTypeEXTsRGB = GType gTypeEXTsRGB'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Element }
+
+instance Eq (Element) where
+  (Element a) == (Element b) = js_eq a b
+
+instance PToJSRef Element where
+  pToJSRef = unElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Element where
+  pFromJSRef = Element
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Element where
+  toJSRef = return . unElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Element where
+  fromJSRef = return . fmap Element . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Element . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToElement :: IsGObject obj => obj -> Element
+castToElement = castTo gTypeElement "Element"
+
+foreign import javascript unsafe "window[\"Element\"]" gTypeElement' :: JSRef GType
+gTypeElement = GType gTypeElement'
+#else
+type IsElement o = ElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Entity }
+
+instance Eq (Entity) where
+  (Entity a) == (Entity b) = js_eq a b
+
+instance PToJSRef Entity where
+  pToJSRef = unEntity
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Entity where
+  pFromJSRef = Entity
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Entity where
+  toJSRef = return . unEntity
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Entity where
+  fromJSRef = return . fmap Entity . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsNode Entity
+instance IsEventTarget Entity
+instance IsGObject Entity where
+  toGObject = GObject . castRef . unEntity
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Entity . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEntity :: IsGObject obj => obj -> Entity
+castToEntity = castTo gTypeEntity "Entity"
+
+foreign import javascript unsafe "window[\"Entity\"]" gTypeEntity' :: JSRef GType
+gTypeEntity = GType gTypeEntity'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EntityReference }
+
+instance Eq (EntityReference) where
+  (EntityReference a) == (EntityReference b) = js_eq a b
+
+instance PToJSRef EntityReference where
+  pToJSRef = unEntityReference
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EntityReference where
+  pFromJSRef = EntityReference
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EntityReference where
+  toJSRef = return . unEntityReference
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EntityReference where
+  fromJSRef = return . fmap EntityReference . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsNode EntityReference
+instance IsEventTarget EntityReference
+instance IsGObject EntityReference where
+  toGObject = GObject . castRef . unEntityReference
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EntityReference . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEntityReference :: IsGObject obj => obj -> EntityReference
+castToEntityReference = castTo gTypeEntityReference "EntityReference"
+
+foreign import javascript unsafe "window[\"EntityReference\"]" gTypeEntityReference' :: JSRef GType
+gTypeEntityReference = GType gTypeEntityReference'
+#else
+type IsEntityReference o = EntityReferenceClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ErrorEvent }
+
+instance Eq (ErrorEvent) where
+  (ErrorEvent a) == (ErrorEvent b) = js_eq a b
+
+instance PToJSRef ErrorEvent where
+  pToJSRef = unErrorEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ErrorEvent where
+  pFromJSRef = ErrorEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ErrorEvent where
+  toJSRef = return . unErrorEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ErrorEvent where
+  fromJSRef = return . fmap ErrorEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent ErrorEvent
+instance IsGObject ErrorEvent where
+  toGObject = GObject . castRef . unErrorEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ErrorEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToErrorEvent :: IsGObject obj => obj -> ErrorEvent
+castToErrorEvent = castTo gTypeErrorEvent "ErrorEvent"
+
+foreign import javascript unsafe "window[\"ErrorEvent\"]" gTypeErrorEvent' :: JSRef GType
+gTypeErrorEvent = GType gTypeErrorEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Event }
+
+instance Eq (Event) where
+  (Event a) == (Event b) = js_eq a b
+
+instance PToJSRef Event where
+  pToJSRef = unEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Event where
+  pFromJSRef = Event
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Event where
+  toJSRef = return . unEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Event where
+  fromJSRef = return . fmap Event . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsEvent o
+toEvent :: IsEvent o => o -> Event
+toEvent = unsafeCastGObject . toGObject
+
+instance IsEvent Event
+instance IsGObject Event where
+  toGObject = GObject . castRef . unEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Event . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEvent :: IsGObject obj => obj -> Event
+castToEvent = castTo gTypeEvent "Event"
+
+foreign import javascript unsafe "window[\"Event\"]" gTypeEvent' :: JSRef GType
+gTypeEvent = GType gTypeEvent'
+#else
+type IsEvent o = EventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EventListener }
+
+instance Eq (EventListener) where
+  (EventListener a) == (EventListener b) = js_eq a b
+
+instance PToJSRef EventListener where
+  pToJSRef = unEventListener
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EventListener where
+  pFromJSRef = EventListener
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EventListener where
+  toJSRef = return . unEventListener
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EventListener where
+  fromJSRef = return . fmap EventListener . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject EventListener where
+  toGObject = GObject . castRef . unEventListener
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventListener . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventListener :: IsGObject obj => obj -> EventListener
+castToEventListener = castTo gTypeEventListener "EventListener"
+
+foreign import javascript unsafe "window[\"EventListener\"]" gTypeEventListener' :: JSRef GType
+gTypeEventListener = GType gTypeEventListener'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EventSource }
+
+instance Eq (EventSource) where
+  (EventSource a) == (EventSource b) = js_eq a b
+
+instance PToJSRef EventSource where
+  pToJSRef = unEventSource
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EventSource where
+  pFromJSRef = EventSource
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EventSource where
+  toJSRef = return . unEventSource
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EventSource where
+  fromJSRef = return . fmap EventSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget EventSource
+instance IsGObject EventSource where
+  toGObject = GObject . castRef . unEventSource
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventSource . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventSource :: IsGObject obj => obj -> EventSource
+castToEventSource = castTo gTypeEventSource "EventSource"
+
+foreign import javascript unsafe "window[\"EventSource\"]" gTypeEventSource' :: JSRef GType
+gTypeEventSource = GType gTypeEventSource'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef EventTarget }
+
+instance Eq (EventTarget) where
+  (EventTarget a) == (EventTarget b) = js_eq a b
+
+instance PToJSRef EventTarget where
+  pToJSRef = unEventTarget
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef EventTarget where
+  pFromJSRef = EventTarget
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef EventTarget where
+  toJSRef = return . unEventTarget
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef EventTarget where
+  fromJSRef = return . fmap EventTarget . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsEventTarget o
+toEventTarget :: IsEventTarget o => o -> EventTarget
+toEventTarget = unsafeCastGObject . toGObject
+
+instance IsEventTarget EventTarget
+instance IsGObject EventTarget where
+  toGObject = GObject . castRef . unEventTarget
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = EventTarget . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToEventTarget :: IsGObject obj => obj -> EventTarget
+castToEventTarget = castTo gTypeEventTarget "EventTarget"
+
+foreign import javascript unsafe "window[\"EventTarget\"]" gTypeEventTarget' :: JSRef GType
+gTypeEventTarget = GType gTypeEventTarget'
+#else
+type IsEventTarget o = EventTargetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef File }
+
+instance Eq (File) where
+  (File a) == (File b) = js_eq a b
+
+instance PToJSRef File where
+  pToJSRef = unFile
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef File where
+  pFromJSRef = File
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef File where
+  toJSRef = return . unFile
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef File where
+  fromJSRef = return . fmap File . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsBlob File
+instance IsGObject File where
+  toGObject = GObject . castRef . unFile
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = File . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFile :: IsGObject obj => obj -> File
+castToFile = castTo gTypeFile "File"
+
+foreign import javascript unsafe "window[\"File\"]" gTypeFile' :: JSRef GType
+gTypeFile = GType gTypeFile'
+#else
+type IsFile o = FileClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef FileError }
+
+instance Eq (FileError) where
+  (FileError a) == (FileError b) = js_eq a b
+
+instance PToJSRef FileError where
+  pToJSRef = unFileError
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef FileError where
+  pFromJSRef = FileError
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef FileError where
+  toJSRef = return . unFileError
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef FileError where
+  fromJSRef = return . fmap FileError . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject FileError where
+  toGObject = GObject . castRef . unFileError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileError . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileError :: IsGObject obj => obj -> FileError
+castToFileError = castTo gTypeFileError "FileError"
+
+foreign import javascript unsafe "window[\"FileError\"]" gTypeFileError' :: JSRef GType
+gTypeFileError = GType gTypeFileError'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef FileList }
+
+instance Eq (FileList) where
+  (FileList a) == (FileList b) = js_eq a b
+
+instance PToJSRef FileList where
+  pToJSRef = unFileList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef FileList where
+  pFromJSRef = FileList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef FileList where
+  toJSRef = return . unFileList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef FileList where
+  fromJSRef = return . fmap FileList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject FileList where
+  toGObject = GObject . castRef . unFileList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileList :: IsGObject obj => obj -> FileList
+castToFileList = castTo gTypeFileList "FileList"
+
+foreign import javascript unsafe "window[\"FileList\"]" gTypeFileList' :: JSRef GType
+gTypeFileList = GType gTypeFileList'
+#else
+type IsFileList o = FileListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef FileReader }
+
+instance Eq (FileReader) where
+  (FileReader a) == (FileReader b) = js_eq a b
+
+instance PToJSRef FileReader where
+  pToJSRef = unFileReader
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef FileReader where
+  pFromJSRef = FileReader
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef FileReader where
+  toJSRef = return . unFileReader
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef FileReader where
+  fromJSRef = return . fmap FileReader . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget FileReader
+instance IsGObject FileReader where
+  toGObject = GObject . castRef . unFileReader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileReader . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileReader :: IsGObject obj => obj -> FileReader
+castToFileReader = castTo gTypeFileReader "FileReader"
+
+foreign import javascript unsafe "window[\"FileReader\"]" gTypeFileReader' :: JSRef GType
+gTypeFileReader = GType gTypeFileReader'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef FileReaderSync }
+
+instance Eq (FileReaderSync) where
+  (FileReaderSync a) == (FileReaderSync b) = js_eq a b
+
+instance PToJSRef FileReaderSync where
+  pToJSRef = unFileReaderSync
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef FileReaderSync where
+  pFromJSRef = FileReaderSync
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef FileReaderSync where
+  toJSRef = return . unFileReaderSync
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef FileReaderSync where
+  fromJSRef = return . fmap FileReaderSync . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject FileReaderSync where
+  toGObject = GObject . castRef . unFileReaderSync
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FileReaderSync . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFileReaderSync :: IsGObject obj => obj -> FileReaderSync
+castToFileReaderSync = castTo gTypeFileReaderSync "FileReaderSync"
+
+foreign import javascript unsafe "window[\"FileReaderSync\"]" gTypeFileReaderSync' :: JSRef GType
+gTypeFileReaderSync = GType gTypeFileReaderSync'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef FocusEvent }
+
+instance Eq (FocusEvent) where
+  (FocusEvent a) == (FocusEvent b) = js_eq a b
+
+instance PToJSRef FocusEvent where
+  pToJSRef = unFocusEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef FocusEvent where
+  pFromJSRef = FocusEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef FocusEvent where
+  toJSRef = return . unFocusEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef FocusEvent where
+  fromJSRef = return . fmap FocusEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsUIEvent FocusEvent
+instance IsEvent FocusEvent
+instance IsGObject FocusEvent where
+  toGObject = GObject . castRef . unFocusEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FocusEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFocusEvent :: IsGObject obj => obj -> FocusEvent
+castToFocusEvent = castTo gTypeFocusEvent "FocusEvent"
+
+foreign import javascript unsafe "window[\"FocusEvent\"]" gTypeFocusEvent' :: JSRef GType
+gTypeFocusEvent = GType gTypeFocusEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef FontLoader }
+
+instance Eq (FontLoader) where
+  (FontLoader a) == (FontLoader b) = js_eq a b
+
+instance PToJSRef FontLoader where
+  pToJSRef = unFontLoader
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef FontLoader where
+  pFromJSRef = FontLoader
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef FontLoader where
+  toJSRef = return . unFontLoader
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef FontLoader where
+  fromJSRef = return . fmap FontLoader . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget FontLoader
+instance IsGObject FontLoader where
+  toGObject = GObject . castRef . unFontLoader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FontLoader . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFontLoader :: IsGObject obj => obj -> FontLoader
+castToFontLoader = castTo gTypeFontLoader "FontLoader"
+
+foreign import javascript unsafe "window[\"FontLoader\"]" gTypeFontLoader' :: JSRef GType
+gTypeFontLoader = GType gTypeFontLoader'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef FormData }
+
+instance Eq (FormData) where
+  (FormData a) == (FormData b) = js_eq a b
+
+instance PToJSRef FormData where
+  pToJSRef = unFormData
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef FormData where
+  pFromJSRef = FormData
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef FormData where
+  toJSRef = return . unFormData
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef FormData where
+  fromJSRef = return . fmap FormData . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject FormData where
+  toGObject = GObject . castRef . unFormData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = FormData . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToFormData :: IsGObject obj => obj -> FormData
+castToFormData = castTo gTypeFormData "FormData"
+
+foreign import javascript unsafe "window[\"FormData\"]" gTypeFormData' :: JSRef GType
+gTypeFormData = GType gTypeFormData'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef GainNode }
+
+instance Eq (GainNode) where
+  (GainNode a) == (GainNode b) = js_eq a b
+
+instance PToJSRef GainNode where
+  pToJSRef = unGainNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef GainNode where
+  pFromJSRef = GainNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef GainNode where
+  toJSRef = return . unGainNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef GainNode where
+  fromJSRef = return . fmap GainNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode GainNode
+instance IsEventTarget GainNode
+instance IsGObject GainNode where
+  toGObject = GObject . castRef . unGainNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GainNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGainNode :: IsGObject obj => obj -> GainNode
+castToGainNode = castTo gTypeGainNode "GainNode"
+
+foreign import javascript unsafe "window[\"GainNode\"]" gTypeGainNode' :: JSRef GType
+gTypeGainNode = GType gTypeGainNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Gamepad }
+
+instance Eq (Gamepad) where
+  (Gamepad a) == (Gamepad b) = js_eq a b
+
+instance PToJSRef Gamepad where
+  pToJSRef = unGamepad
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Gamepad where
+  pFromJSRef = Gamepad
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Gamepad where
+  toJSRef = return . unGamepad
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Gamepad where
+  fromJSRef = return . fmap Gamepad . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Gamepad where
+  toGObject = GObject . castRef . unGamepad
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Gamepad . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepad :: IsGObject obj => obj -> Gamepad
+castToGamepad = castTo gTypeGamepad "Gamepad"
+
+foreign import javascript unsafe "window[\"Gamepad\"]" gTypeGamepad' :: JSRef GType
+gTypeGamepad = GType gTypeGamepad'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef GamepadButton }
+
+instance Eq (GamepadButton) where
+  (GamepadButton a) == (GamepadButton b) = js_eq a b
+
+instance PToJSRef GamepadButton where
+  pToJSRef = unGamepadButton
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef GamepadButton where
+  pFromJSRef = GamepadButton
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef GamepadButton where
+  toJSRef = return . unGamepadButton
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef GamepadButton where
+  fromJSRef = return . fmap GamepadButton . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject GamepadButton where
+  toGObject = GObject . castRef . unGamepadButton
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GamepadButton . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepadButton :: IsGObject obj => obj -> GamepadButton
+castToGamepadButton = castTo gTypeGamepadButton "GamepadButton"
+
+foreign import javascript unsafe "window[\"GamepadButton\"]" gTypeGamepadButton' :: JSRef GType
+gTypeGamepadButton = GType gTypeGamepadButton'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef GamepadEvent }
+
+instance Eq (GamepadEvent) where
+  (GamepadEvent a) == (GamepadEvent b) = js_eq a b
+
+instance PToJSRef GamepadEvent where
+  pToJSRef = unGamepadEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef GamepadEvent where
+  pFromJSRef = GamepadEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef GamepadEvent where
+  toJSRef = return . unGamepadEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef GamepadEvent where
+  fromJSRef = return . fmap GamepadEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent GamepadEvent
+instance IsGObject GamepadEvent where
+  toGObject = GObject . castRef . unGamepadEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = GamepadEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGamepadEvent :: IsGObject obj => obj -> GamepadEvent
+castToGamepadEvent = castTo gTypeGamepadEvent "GamepadEvent"
+
+foreign import javascript unsafe "window[\"GamepadEvent\"]" gTypeGamepadEvent' :: JSRef GType
+gTypeGamepadEvent = GType gTypeGamepadEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Geolocation }
+
+instance Eq (Geolocation) where
+  (Geolocation a) == (Geolocation b) = js_eq a b
+
+instance PToJSRef Geolocation where
+  pToJSRef = unGeolocation
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Geolocation where
+  pFromJSRef = Geolocation
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Geolocation where
+  toJSRef = return . unGeolocation
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Geolocation where
+  fromJSRef = return . fmap Geolocation . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Geolocation where
+  toGObject = GObject . castRef . unGeolocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Geolocation . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGeolocation :: IsGObject obj => obj -> Geolocation
+castToGeolocation = castTo gTypeGeolocation "Geolocation"
+
+foreign import javascript unsafe "window[\"Geolocation\"]" gTypeGeolocation' :: JSRef GType
+gTypeGeolocation = GType gTypeGeolocation'
+#else
+type IsGeolocation o = GeolocationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Geoposition }
+
+instance Eq (Geoposition) where
+  (Geoposition a) == (Geoposition b) = js_eq a b
+
+instance PToJSRef Geoposition where
+  pToJSRef = unGeoposition
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Geoposition where
+  pFromJSRef = Geoposition
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Geoposition where
+  toJSRef = return . unGeoposition
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Geoposition where
+  fromJSRef = return . fmap Geoposition . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Geoposition where
+  toGObject = GObject . castRef . unGeoposition
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Geoposition . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToGeoposition :: IsGObject obj => obj -> Geoposition
+castToGeoposition = castTo gTypeGeoposition "Geoposition"
+
+foreign import javascript unsafe "window[\"Geoposition\"]" gTypeGeoposition' :: JSRef GType
+gTypeGeoposition = GType gTypeGeoposition'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLAllCollection }
+
+instance Eq (HTMLAllCollection) where
+  (HTMLAllCollection a) == (HTMLAllCollection b) = js_eq a b
+
+instance PToJSRef HTMLAllCollection where
+  pToJSRef = unHTMLAllCollection
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLAllCollection where
+  pFromJSRef = HTMLAllCollection
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLAllCollection where
+  toJSRef = return . unHTMLAllCollection
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLAllCollection where
+  fromJSRef = return . fmap HTMLAllCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject HTMLAllCollection where
+  toGObject = GObject . castRef . unHTMLAllCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAllCollection . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAllCollection :: IsGObject obj => obj -> HTMLAllCollection
+castToHTMLAllCollection = castTo gTypeHTMLAllCollection "HTMLAllCollection"
+
+foreign import javascript unsafe "window[\"HTMLAllCollection\"]" gTypeHTMLAllCollection' :: JSRef GType
+gTypeHTMLAllCollection = GType gTypeHTMLAllCollection'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLAnchorElement }
+
+instance Eq (HTMLAnchorElement) where
+  (HTMLAnchorElement a) == (HTMLAnchorElement b) = js_eq a b
+
+instance PToJSRef HTMLAnchorElement where
+  pToJSRef = unHTMLAnchorElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLAnchorElement where
+  pFromJSRef = HTMLAnchorElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLAnchorElement where
+  toJSRef = return . unHTMLAnchorElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLAnchorElement where
+  fromJSRef = return . fmap HTMLAnchorElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLAnchorElement
+instance IsElement HTMLAnchorElement
+instance IsNode HTMLAnchorElement
+instance IsEventTarget HTMLAnchorElement
+instance IsGObject HTMLAnchorElement where
+  toGObject = GObject . castRef . unHTMLAnchorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAnchorElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAnchorElement :: IsGObject obj => obj -> HTMLAnchorElement
+castToHTMLAnchorElement = castTo gTypeHTMLAnchorElement "HTMLAnchorElement"
+
+foreign import javascript unsafe "window[\"HTMLAnchorElement\"]" gTypeHTMLAnchorElement' :: JSRef GType
+gTypeHTMLAnchorElement = GType gTypeHTMLAnchorElement'
+#else
+type IsHTMLAnchorElement o = HTMLAnchorElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLAppletElement }
+
+instance Eq (HTMLAppletElement) where
+  (HTMLAppletElement a) == (HTMLAppletElement b) = js_eq a b
+
+instance PToJSRef HTMLAppletElement where
+  pToJSRef = unHTMLAppletElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLAppletElement where
+  pFromJSRef = HTMLAppletElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLAppletElement where
+  toJSRef = return . unHTMLAppletElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLAppletElement where
+  fromJSRef = return . fmap HTMLAppletElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLAppletElement
+instance IsElement HTMLAppletElement
+instance IsNode HTMLAppletElement
+instance IsEventTarget HTMLAppletElement
+instance IsGObject HTMLAppletElement where
+  toGObject = GObject . castRef . unHTMLAppletElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAppletElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAppletElement :: IsGObject obj => obj -> HTMLAppletElement
+castToHTMLAppletElement = castTo gTypeHTMLAppletElement "HTMLAppletElement"
+
+foreign import javascript unsafe "window[\"HTMLAppletElement\"]" gTypeHTMLAppletElement' :: JSRef GType
+gTypeHTMLAppletElement = GType gTypeHTMLAppletElement'
+#else
+type IsHTMLAppletElement o = HTMLAppletElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLAreaElement }
+
+instance Eq (HTMLAreaElement) where
+  (HTMLAreaElement a) == (HTMLAreaElement b) = js_eq a b
+
+instance PToJSRef HTMLAreaElement where
+  pToJSRef = unHTMLAreaElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLAreaElement where
+  pFromJSRef = HTMLAreaElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLAreaElement where
+  toJSRef = return . unHTMLAreaElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLAreaElement where
+  fromJSRef = return . fmap HTMLAreaElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLAreaElement
+instance IsElement HTMLAreaElement
+instance IsNode HTMLAreaElement
+instance IsEventTarget HTMLAreaElement
+instance IsGObject HTMLAreaElement where
+  toGObject = GObject . castRef . unHTMLAreaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAreaElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAreaElement :: IsGObject obj => obj -> HTMLAreaElement
+castToHTMLAreaElement = castTo gTypeHTMLAreaElement "HTMLAreaElement"
+
+foreign import javascript unsafe "window[\"HTMLAreaElement\"]" gTypeHTMLAreaElement' :: JSRef GType
+gTypeHTMLAreaElement = GType gTypeHTMLAreaElement'
+#else
+type IsHTMLAreaElement o = HTMLAreaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLAudioElement }
+
+instance Eq (HTMLAudioElement) where
+  (HTMLAudioElement a) == (HTMLAudioElement b) = js_eq a b
+
+instance PToJSRef HTMLAudioElement where
+  pToJSRef = unHTMLAudioElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLAudioElement where
+  pFromJSRef = HTMLAudioElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLAudioElement where
+  toJSRef = return . unHTMLAudioElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLAudioElement where
+  fromJSRef = return . fmap HTMLAudioElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLMediaElement HTMLAudioElement
+instance IsHTMLElement HTMLAudioElement
+instance IsElement HTMLAudioElement
+instance IsNode HTMLAudioElement
+instance IsEventTarget HTMLAudioElement
+instance IsGObject HTMLAudioElement where
+  toGObject = GObject . castRef . unHTMLAudioElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLAudioElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLAudioElement :: IsGObject obj => obj -> HTMLAudioElement
+castToHTMLAudioElement = castTo gTypeHTMLAudioElement "HTMLAudioElement"
+
+foreign import javascript unsafe "window[\"HTMLAudioElement\"]" gTypeHTMLAudioElement' :: JSRef GType
+gTypeHTMLAudioElement = GType gTypeHTMLAudioElement'
+#else
+type IsHTMLAudioElement o = HTMLAudioElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLBRElement }
+
+instance Eq (HTMLBRElement) where
+  (HTMLBRElement a) == (HTMLBRElement b) = js_eq a b
+
+instance PToJSRef HTMLBRElement where
+  pToJSRef = unHTMLBRElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLBRElement where
+  pFromJSRef = HTMLBRElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLBRElement where
+  toJSRef = return . unHTMLBRElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLBRElement where
+  fromJSRef = return . fmap HTMLBRElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLBRElement
+instance IsElement HTMLBRElement
+instance IsNode HTMLBRElement
+instance IsEventTarget HTMLBRElement
+instance IsGObject HTMLBRElement where
+  toGObject = GObject . castRef . unHTMLBRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBRElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBRElement :: IsGObject obj => obj -> HTMLBRElement
+castToHTMLBRElement = castTo gTypeHTMLBRElement "HTMLBRElement"
+
+foreign import javascript unsafe "window[\"HTMLBRElement\"]" gTypeHTMLBRElement' :: JSRef GType
+gTypeHTMLBRElement = GType gTypeHTMLBRElement'
+#else
+type IsHTMLBRElement o = HTMLBRElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLBaseElement }
+
+instance Eq (HTMLBaseElement) where
+  (HTMLBaseElement a) == (HTMLBaseElement b) = js_eq a b
+
+instance PToJSRef HTMLBaseElement where
+  pToJSRef = unHTMLBaseElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLBaseElement where
+  pFromJSRef = HTMLBaseElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLBaseElement where
+  toJSRef = return . unHTMLBaseElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLBaseElement where
+  fromJSRef = return . fmap HTMLBaseElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLBaseElement
+instance IsElement HTMLBaseElement
+instance IsNode HTMLBaseElement
+instance IsEventTarget HTMLBaseElement
+instance IsGObject HTMLBaseElement where
+  toGObject = GObject . castRef . unHTMLBaseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBaseElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBaseElement :: IsGObject obj => obj -> HTMLBaseElement
+castToHTMLBaseElement = castTo gTypeHTMLBaseElement "HTMLBaseElement"
+
+foreign import javascript unsafe "window[\"HTMLBaseElement\"]" gTypeHTMLBaseElement' :: JSRef GType
+gTypeHTMLBaseElement = GType gTypeHTMLBaseElement'
+#else
+type IsHTMLBaseElement o = HTMLBaseElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLBaseFontElement }
+
+instance Eq (HTMLBaseFontElement) where
+  (HTMLBaseFontElement a) == (HTMLBaseFontElement b) = js_eq a b
+
+instance PToJSRef HTMLBaseFontElement where
+  pToJSRef = unHTMLBaseFontElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLBaseFontElement where
+  pFromJSRef = HTMLBaseFontElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLBaseFontElement where
+  toJSRef = return . unHTMLBaseFontElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLBaseFontElement where
+  fromJSRef = return . fmap HTMLBaseFontElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLBaseFontElement
+instance IsElement HTMLBaseFontElement
+instance IsNode HTMLBaseFontElement
+instance IsEventTarget HTMLBaseFontElement
+instance IsGObject HTMLBaseFontElement where
+  toGObject = GObject . castRef . unHTMLBaseFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBaseFontElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBaseFontElement :: IsGObject obj => obj -> HTMLBaseFontElement
+castToHTMLBaseFontElement = castTo gTypeHTMLBaseFontElement "HTMLBaseFontElement"
+
+foreign import javascript unsafe "window[\"HTMLBaseFontElement\"]" gTypeHTMLBaseFontElement' :: JSRef GType
+gTypeHTMLBaseFontElement = GType gTypeHTMLBaseFontElement'
+#else
+type IsHTMLBaseFontElement o = HTMLBaseFontElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLBodyElement }
+
+instance Eq (HTMLBodyElement) where
+  (HTMLBodyElement a) == (HTMLBodyElement b) = js_eq a b
+
+instance PToJSRef HTMLBodyElement where
+  pToJSRef = unHTMLBodyElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLBodyElement where
+  pFromJSRef = HTMLBodyElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLBodyElement where
+  toJSRef = return . unHTMLBodyElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLBodyElement where
+  fromJSRef = return . fmap HTMLBodyElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLBodyElement
+instance IsElement HTMLBodyElement
+instance IsNode HTMLBodyElement
+instance IsEventTarget HTMLBodyElement
+instance IsGObject HTMLBodyElement where
+  toGObject = GObject . castRef . unHTMLBodyElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLBodyElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLBodyElement :: IsGObject obj => obj -> HTMLBodyElement
+castToHTMLBodyElement = castTo gTypeHTMLBodyElement "HTMLBodyElement"
+
+foreign import javascript unsafe "window[\"HTMLBodyElement\"]" gTypeHTMLBodyElement' :: JSRef GType
+gTypeHTMLBodyElement = GType gTypeHTMLBodyElement'
+#else
+type IsHTMLBodyElement o = HTMLBodyElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLButtonElement }
+
+instance Eq (HTMLButtonElement) where
+  (HTMLButtonElement a) == (HTMLButtonElement b) = js_eq a b
+
+instance PToJSRef HTMLButtonElement where
+  pToJSRef = unHTMLButtonElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLButtonElement where
+  pFromJSRef = HTMLButtonElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLButtonElement where
+  toJSRef = return . unHTMLButtonElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLButtonElement where
+  fromJSRef = return . fmap HTMLButtonElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLButtonElement
+instance IsElement HTMLButtonElement
+instance IsNode HTMLButtonElement
+instance IsEventTarget HTMLButtonElement
+instance IsGObject HTMLButtonElement where
+  toGObject = GObject . castRef . unHTMLButtonElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLButtonElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLButtonElement :: IsGObject obj => obj -> HTMLButtonElement
+castToHTMLButtonElement = castTo gTypeHTMLButtonElement "HTMLButtonElement"
+
+foreign import javascript unsafe "window[\"HTMLButtonElement\"]" gTypeHTMLButtonElement' :: JSRef GType
+gTypeHTMLButtonElement = GType gTypeHTMLButtonElement'
+#else
+type IsHTMLButtonElement o = HTMLButtonElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLCanvasElement }
+
+instance Eq (HTMLCanvasElement) where
+  (HTMLCanvasElement a) == (HTMLCanvasElement b) = js_eq a b
+
+instance PToJSRef HTMLCanvasElement where
+  pToJSRef = unHTMLCanvasElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLCanvasElement where
+  pFromJSRef = HTMLCanvasElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLCanvasElement where
+  toJSRef = return . unHTMLCanvasElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLCanvasElement where
+  fromJSRef = return . fmap HTMLCanvasElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLCanvasElement
+instance IsElement HTMLCanvasElement
+instance IsNode HTMLCanvasElement
+instance IsEventTarget HTMLCanvasElement
+instance IsGObject HTMLCanvasElement where
+  toGObject = GObject . castRef . unHTMLCanvasElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLCanvasElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLCanvasElement :: IsGObject obj => obj -> HTMLCanvasElement
+castToHTMLCanvasElement = castTo gTypeHTMLCanvasElement "HTMLCanvasElement"
+
+foreign import javascript unsafe "window[\"HTMLCanvasElement\"]" gTypeHTMLCanvasElement' :: JSRef GType
+gTypeHTMLCanvasElement = GType gTypeHTMLCanvasElement'
+#else
+type IsHTMLCanvasElement o = HTMLCanvasElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLCollection }
+
+instance Eq (HTMLCollection) where
+  (HTMLCollection a) == (HTMLCollection b) = js_eq a b
+
+instance PToJSRef HTMLCollection where
+  pToJSRef = unHTMLCollection
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLCollection where
+  pFromJSRef = HTMLCollection
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLCollection where
+  toJSRef = return . unHTMLCollection
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLCollection where
+  fromJSRef = return . fmap HTMLCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsHTMLCollection o
+toHTMLCollection :: IsHTMLCollection o => o -> HTMLCollection
+toHTMLCollection = unsafeCastGObject . toGObject
+
+instance IsHTMLCollection HTMLCollection
+instance IsGObject HTMLCollection where
+  toGObject = GObject . castRef . unHTMLCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLCollection . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLCollection :: IsGObject obj => obj -> HTMLCollection
+castToHTMLCollection = castTo gTypeHTMLCollection "HTMLCollection"
+
+foreign import javascript unsafe "window[\"HTMLCollection\"]" gTypeHTMLCollection' :: JSRef GType
+gTypeHTMLCollection = GType gTypeHTMLCollection'
+#else
+type IsHTMLCollection o = HTMLCollectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLDListElement }
+
+instance Eq (HTMLDListElement) where
+  (HTMLDListElement a) == (HTMLDListElement b) = js_eq a b
+
+instance PToJSRef HTMLDListElement where
+  pToJSRef = unHTMLDListElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLDListElement where
+  pFromJSRef = HTMLDListElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLDListElement where
+  toJSRef = return . unHTMLDListElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLDListElement where
+  fromJSRef = return . fmap HTMLDListElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLDListElement
+instance IsElement HTMLDListElement
+instance IsNode HTMLDListElement
+instance IsEventTarget HTMLDListElement
+instance IsGObject HTMLDListElement where
+  toGObject = GObject . castRef . unHTMLDListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDListElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDListElement :: IsGObject obj => obj -> HTMLDListElement
+castToHTMLDListElement = castTo gTypeHTMLDListElement "HTMLDListElement"
+
+foreign import javascript unsafe "window[\"HTMLDListElement\"]" gTypeHTMLDListElement' :: JSRef GType
+gTypeHTMLDListElement = GType gTypeHTMLDListElement'
+#else
+type IsHTMLDListElement o = HTMLDListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLDataListElement }
+
+instance Eq (HTMLDataListElement) where
+  (HTMLDataListElement a) == (HTMLDataListElement b) = js_eq a b
+
+instance PToJSRef HTMLDataListElement where
+  pToJSRef = unHTMLDataListElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLDataListElement where
+  pFromJSRef = HTMLDataListElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLDataListElement where
+  toJSRef = return . unHTMLDataListElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLDataListElement where
+  fromJSRef = return . fmap HTMLDataListElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLDataListElement
+instance IsElement HTMLDataListElement
+instance IsNode HTMLDataListElement
+instance IsEventTarget HTMLDataListElement
+instance IsGObject HTMLDataListElement where
+  toGObject = GObject . castRef . unHTMLDataListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDataListElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDataListElement :: IsGObject obj => obj -> HTMLDataListElement
+castToHTMLDataListElement = castTo gTypeHTMLDataListElement "HTMLDataListElement"
+
+foreign import javascript unsafe "window[\"HTMLDataListElement\"]" gTypeHTMLDataListElement' :: JSRef GType
+gTypeHTMLDataListElement = GType gTypeHTMLDataListElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLDetailsElement }
+
+instance Eq (HTMLDetailsElement) where
+  (HTMLDetailsElement a) == (HTMLDetailsElement b) = js_eq a b
+
+instance PToJSRef HTMLDetailsElement where
+  pToJSRef = unHTMLDetailsElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLDetailsElement where
+  pFromJSRef = HTMLDetailsElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLDetailsElement where
+  toJSRef = return . unHTMLDetailsElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLDetailsElement where
+  fromJSRef = return . fmap HTMLDetailsElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLDetailsElement
+instance IsElement HTMLDetailsElement
+instance IsNode HTMLDetailsElement
+instance IsEventTarget HTMLDetailsElement
+instance IsGObject HTMLDetailsElement where
+  toGObject = GObject . castRef . unHTMLDetailsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDetailsElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDetailsElement :: IsGObject obj => obj -> HTMLDetailsElement
+castToHTMLDetailsElement = castTo gTypeHTMLDetailsElement "HTMLDetailsElement"
+
+foreign import javascript unsafe "window[\"HTMLDetailsElement\"]" gTypeHTMLDetailsElement' :: JSRef GType
+gTypeHTMLDetailsElement = GType gTypeHTMLDetailsElement'
+#else
+type IsHTMLDetailsElement o = HTMLDetailsElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLDirectoryElement }
+
+instance Eq (HTMLDirectoryElement) where
+  (HTMLDirectoryElement a) == (HTMLDirectoryElement b) = js_eq a b
+
+instance PToJSRef HTMLDirectoryElement where
+  pToJSRef = unHTMLDirectoryElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLDirectoryElement where
+  pFromJSRef = HTMLDirectoryElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLDirectoryElement where
+  toJSRef = return . unHTMLDirectoryElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLDirectoryElement where
+  fromJSRef = return . fmap HTMLDirectoryElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLDirectoryElement
+instance IsElement HTMLDirectoryElement
+instance IsNode HTMLDirectoryElement
+instance IsEventTarget HTMLDirectoryElement
+instance IsGObject HTMLDirectoryElement where
+  toGObject = GObject . castRef . unHTMLDirectoryElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDirectoryElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDirectoryElement :: IsGObject obj => obj -> HTMLDirectoryElement
+castToHTMLDirectoryElement = castTo gTypeHTMLDirectoryElement "HTMLDirectoryElement"
+
+foreign import javascript unsafe "window[\"HTMLDirectoryElement\"]" gTypeHTMLDirectoryElement' :: JSRef GType
+gTypeHTMLDirectoryElement = GType gTypeHTMLDirectoryElement'
+#else
+type IsHTMLDirectoryElement o = HTMLDirectoryElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLDivElement }
+
+instance Eq (HTMLDivElement) where
+  (HTMLDivElement a) == (HTMLDivElement b) = js_eq a b
+
+instance PToJSRef HTMLDivElement where
+  pToJSRef = unHTMLDivElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLDivElement where
+  pFromJSRef = HTMLDivElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLDivElement where
+  toJSRef = return . unHTMLDivElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLDivElement where
+  fromJSRef = return . fmap HTMLDivElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLDivElement
+instance IsElement HTMLDivElement
+instance IsNode HTMLDivElement
+instance IsEventTarget HTMLDivElement
+instance IsGObject HTMLDivElement where
+  toGObject = GObject . castRef . unHTMLDivElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDivElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDivElement :: IsGObject obj => obj -> HTMLDivElement
+castToHTMLDivElement = castTo gTypeHTMLDivElement "HTMLDivElement"
+
+foreign import javascript unsafe "window[\"HTMLDivElement\"]" gTypeHTMLDivElement' :: JSRef GType
+gTypeHTMLDivElement = GType gTypeHTMLDivElement'
+#else
+type IsHTMLDivElement o = HTMLDivElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLDocument }
+
+instance Eq (HTMLDocument) where
+  (HTMLDocument a) == (HTMLDocument b) = js_eq a b
+
+instance PToJSRef HTMLDocument where
+  pToJSRef = unHTMLDocument
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLDocument where
+  pFromJSRef = HTMLDocument
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLDocument where
+  toJSRef = return . unHTMLDocument
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLDocument where
+  fromJSRef = return . fmap HTMLDocument . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsDocument HTMLDocument
+instance IsNode HTMLDocument
+instance IsEventTarget HTMLDocument
+instance IsGObject HTMLDocument where
+  toGObject = GObject . castRef . unHTMLDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLDocument . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLDocument :: IsGObject obj => obj -> HTMLDocument
+castToHTMLDocument = castTo gTypeHTMLDocument "HTMLDocument"
+
+foreign import javascript unsafe "window[\"HTMLDocument\"]" gTypeHTMLDocument' :: JSRef GType
+gTypeHTMLDocument = GType gTypeHTMLDocument'
+#else
+type IsHTMLDocument o = HTMLDocumentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLElement }
+
+instance Eq (HTMLElement) where
+  (HTMLElement a) == (HTMLElement b) = js_eq a b
+
+instance PToJSRef HTMLElement where
+  pToJSRef = unHTMLElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLElement where
+  pFromJSRef = HTMLElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLElement where
+  toJSRef = return . unHTMLElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLElement where
+  fromJSRef = return . fmap HTMLElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unHTMLElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLElement :: IsGObject obj => obj -> HTMLElement
+castToHTMLElement = castTo gTypeHTMLElement "HTMLElement"
+
+foreign import javascript unsafe "window[\"HTMLElement\"]" gTypeHTMLElement' :: JSRef GType
+gTypeHTMLElement = GType gTypeHTMLElement'
+#else
+type IsHTMLElement o = HTMLElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLEmbedElement }
+
+instance Eq (HTMLEmbedElement) where
+  (HTMLEmbedElement a) == (HTMLEmbedElement b) = js_eq a b
+
+instance PToJSRef HTMLEmbedElement where
+  pToJSRef = unHTMLEmbedElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLEmbedElement where
+  pFromJSRef = HTMLEmbedElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLEmbedElement where
+  toJSRef = return . unHTMLEmbedElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLEmbedElement where
+  fromJSRef = return . fmap HTMLEmbedElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLEmbedElement
+instance IsElement HTMLEmbedElement
+instance IsNode HTMLEmbedElement
+instance IsEventTarget HTMLEmbedElement
+instance IsGObject HTMLEmbedElement where
+  toGObject = GObject . castRef . unHTMLEmbedElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLEmbedElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLEmbedElement :: IsGObject obj => obj -> HTMLEmbedElement
+castToHTMLEmbedElement = castTo gTypeHTMLEmbedElement "HTMLEmbedElement"
+
+foreign import javascript unsafe "window[\"HTMLEmbedElement\"]" gTypeHTMLEmbedElement' :: JSRef GType
+gTypeHTMLEmbedElement = GType gTypeHTMLEmbedElement'
+#else
+type IsHTMLEmbedElement o = HTMLEmbedElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLFieldSetElement }
+
+instance Eq (HTMLFieldSetElement) where
+  (HTMLFieldSetElement a) == (HTMLFieldSetElement b) = js_eq a b
+
+instance PToJSRef HTMLFieldSetElement where
+  pToJSRef = unHTMLFieldSetElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLFieldSetElement where
+  pFromJSRef = HTMLFieldSetElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLFieldSetElement where
+  toJSRef = return . unHTMLFieldSetElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLFieldSetElement where
+  fromJSRef = return . fmap HTMLFieldSetElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLFieldSetElement
+instance IsElement HTMLFieldSetElement
+instance IsNode HTMLFieldSetElement
+instance IsEventTarget HTMLFieldSetElement
+instance IsGObject HTMLFieldSetElement where
+  toGObject = GObject . castRef . unHTMLFieldSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFieldSetElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFieldSetElement :: IsGObject obj => obj -> HTMLFieldSetElement
+castToHTMLFieldSetElement = castTo gTypeHTMLFieldSetElement "HTMLFieldSetElement"
+
+foreign import javascript unsafe "window[\"HTMLFieldSetElement\"]" gTypeHTMLFieldSetElement' :: JSRef GType
+gTypeHTMLFieldSetElement = GType gTypeHTMLFieldSetElement'
+#else
+type IsHTMLFieldSetElement o = HTMLFieldSetElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLFontElement }
+
+instance Eq (HTMLFontElement) where
+  (HTMLFontElement a) == (HTMLFontElement b) = js_eq a b
+
+instance PToJSRef HTMLFontElement where
+  pToJSRef = unHTMLFontElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLFontElement where
+  pFromJSRef = HTMLFontElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLFontElement where
+  toJSRef = return . unHTMLFontElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLFontElement where
+  fromJSRef = return . fmap HTMLFontElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLFontElement
+instance IsElement HTMLFontElement
+instance IsNode HTMLFontElement
+instance IsEventTarget HTMLFontElement
+instance IsGObject HTMLFontElement where
+  toGObject = GObject . castRef . unHTMLFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFontElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFontElement :: IsGObject obj => obj -> HTMLFontElement
+castToHTMLFontElement = castTo gTypeHTMLFontElement "HTMLFontElement"
+
+foreign import javascript unsafe "window[\"HTMLFontElement\"]" gTypeHTMLFontElement' :: JSRef GType
+gTypeHTMLFontElement = GType gTypeHTMLFontElement'
+#else
+type IsHTMLFontElement o = HTMLFontElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLFormControlsCollection }
+
+instance Eq (HTMLFormControlsCollection) where
+  (HTMLFormControlsCollection a) == (HTMLFormControlsCollection b) = js_eq a b
+
+instance PToJSRef HTMLFormControlsCollection where
+  pToJSRef = unHTMLFormControlsCollection
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLFormControlsCollection where
+  pFromJSRef = HTMLFormControlsCollection
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLFormControlsCollection where
+  toJSRef = return . unHTMLFormControlsCollection
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLFormControlsCollection where
+  fromJSRef = return . fmap HTMLFormControlsCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLCollection HTMLFormControlsCollection
+instance IsGObject HTMLFormControlsCollection where
+  toGObject = GObject . castRef . unHTMLFormControlsCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFormControlsCollection . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFormControlsCollection :: IsGObject obj => obj -> HTMLFormControlsCollection
+castToHTMLFormControlsCollection = castTo gTypeHTMLFormControlsCollection "HTMLFormControlsCollection"
+
+foreign import javascript unsafe "window[\"HTMLFormControlsCollection\"]" gTypeHTMLFormControlsCollection' :: JSRef GType
+gTypeHTMLFormControlsCollection = GType gTypeHTMLFormControlsCollection'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLFormElement }
+
+instance Eq (HTMLFormElement) where
+  (HTMLFormElement a) == (HTMLFormElement b) = js_eq a b
+
+instance PToJSRef HTMLFormElement where
+  pToJSRef = unHTMLFormElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLFormElement where
+  pFromJSRef = HTMLFormElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLFormElement where
+  toJSRef = return . unHTMLFormElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLFormElement where
+  fromJSRef = return . fmap HTMLFormElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLFormElement
+instance IsElement HTMLFormElement
+instance IsNode HTMLFormElement
+instance IsEventTarget HTMLFormElement
+instance IsGObject HTMLFormElement where
+  toGObject = GObject . castRef . unHTMLFormElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFormElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFormElement :: IsGObject obj => obj -> HTMLFormElement
+castToHTMLFormElement = castTo gTypeHTMLFormElement "HTMLFormElement"
+
+foreign import javascript unsafe "window[\"HTMLFormElement\"]" gTypeHTMLFormElement' :: JSRef GType
+gTypeHTMLFormElement = GType gTypeHTMLFormElement'
+#else
+type IsHTMLFormElement o = HTMLFormElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLFrameElement }
+
+instance Eq (HTMLFrameElement) where
+  (HTMLFrameElement a) == (HTMLFrameElement b) = js_eq a b
+
+instance PToJSRef HTMLFrameElement where
+  pToJSRef = unHTMLFrameElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLFrameElement where
+  pFromJSRef = HTMLFrameElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLFrameElement where
+  toJSRef = return . unHTMLFrameElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLFrameElement where
+  fromJSRef = return . fmap HTMLFrameElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLFrameElement
+instance IsElement HTMLFrameElement
+instance IsNode HTMLFrameElement
+instance IsEventTarget HTMLFrameElement
+instance IsGObject HTMLFrameElement where
+  toGObject = GObject . castRef . unHTMLFrameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFrameElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFrameElement :: IsGObject obj => obj -> HTMLFrameElement
+castToHTMLFrameElement = castTo gTypeHTMLFrameElement "HTMLFrameElement"
+
+foreign import javascript unsafe "window[\"HTMLFrameElement\"]" gTypeHTMLFrameElement' :: JSRef GType
+gTypeHTMLFrameElement = GType gTypeHTMLFrameElement'
+#else
+type IsHTMLFrameElement o = HTMLFrameElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLFrameSetElement }
+
+instance Eq (HTMLFrameSetElement) where
+  (HTMLFrameSetElement a) == (HTMLFrameSetElement b) = js_eq a b
+
+instance PToJSRef HTMLFrameSetElement where
+  pToJSRef = unHTMLFrameSetElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLFrameSetElement where
+  pFromJSRef = HTMLFrameSetElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLFrameSetElement where
+  toJSRef = return . unHTMLFrameSetElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLFrameSetElement where
+  fromJSRef = return . fmap HTMLFrameSetElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLFrameSetElement
+instance IsElement HTMLFrameSetElement
+instance IsNode HTMLFrameSetElement
+instance IsEventTarget HTMLFrameSetElement
+instance IsGObject HTMLFrameSetElement where
+  toGObject = GObject . castRef . unHTMLFrameSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLFrameSetElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLFrameSetElement :: IsGObject obj => obj -> HTMLFrameSetElement
+castToHTMLFrameSetElement = castTo gTypeHTMLFrameSetElement "HTMLFrameSetElement"
+
+foreign import javascript unsafe "window[\"HTMLFrameSetElement\"]" gTypeHTMLFrameSetElement' :: JSRef GType
+gTypeHTMLFrameSetElement = GType gTypeHTMLFrameSetElement'
+#else
+type IsHTMLFrameSetElement o = HTMLFrameSetElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLHRElement }
+
+instance Eq (HTMLHRElement) where
+  (HTMLHRElement a) == (HTMLHRElement b) = js_eq a b
+
+instance PToJSRef HTMLHRElement where
+  pToJSRef = unHTMLHRElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLHRElement where
+  pFromJSRef = HTMLHRElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLHRElement where
+  toJSRef = return . unHTMLHRElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLHRElement where
+  fromJSRef = return . fmap HTMLHRElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLHRElement
+instance IsElement HTMLHRElement
+instance IsNode HTMLHRElement
+instance IsEventTarget HTMLHRElement
+instance IsGObject HTMLHRElement where
+  toGObject = GObject . castRef . unHTMLHRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHRElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHRElement :: IsGObject obj => obj -> HTMLHRElement
+castToHTMLHRElement = castTo gTypeHTMLHRElement "HTMLHRElement"
+
+foreign import javascript unsafe "window[\"HTMLHRElement\"]" gTypeHTMLHRElement' :: JSRef GType
+gTypeHTMLHRElement = GType gTypeHTMLHRElement'
+#else
+type IsHTMLHRElement o = HTMLHRElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLHeadElement }
+
+instance Eq (HTMLHeadElement) where
+  (HTMLHeadElement a) == (HTMLHeadElement b) = js_eq a b
+
+instance PToJSRef HTMLHeadElement where
+  pToJSRef = unHTMLHeadElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLHeadElement where
+  pFromJSRef = HTMLHeadElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLHeadElement where
+  toJSRef = return . unHTMLHeadElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLHeadElement where
+  fromJSRef = return . fmap HTMLHeadElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLHeadElement
+instance IsElement HTMLHeadElement
+instance IsNode HTMLHeadElement
+instance IsEventTarget HTMLHeadElement
+instance IsGObject HTMLHeadElement where
+  toGObject = GObject . castRef . unHTMLHeadElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHeadElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHeadElement :: IsGObject obj => obj -> HTMLHeadElement
+castToHTMLHeadElement = castTo gTypeHTMLHeadElement "HTMLHeadElement"
+
+foreign import javascript unsafe "window[\"HTMLHeadElement\"]" gTypeHTMLHeadElement' :: JSRef GType
+gTypeHTMLHeadElement = GType gTypeHTMLHeadElement'
+#else
+type IsHTMLHeadElement o = HTMLHeadElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLHeadingElement }
+
+instance Eq (HTMLHeadingElement) where
+  (HTMLHeadingElement a) == (HTMLHeadingElement b) = js_eq a b
+
+instance PToJSRef HTMLHeadingElement where
+  pToJSRef = unHTMLHeadingElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLHeadingElement where
+  pFromJSRef = HTMLHeadingElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLHeadingElement where
+  toJSRef = return . unHTMLHeadingElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLHeadingElement where
+  fromJSRef = return . fmap HTMLHeadingElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLHeadingElement
+instance IsElement HTMLHeadingElement
+instance IsNode HTMLHeadingElement
+instance IsEventTarget HTMLHeadingElement
+instance IsGObject HTMLHeadingElement where
+  toGObject = GObject . castRef . unHTMLHeadingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHeadingElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHeadingElement :: IsGObject obj => obj -> HTMLHeadingElement
+castToHTMLHeadingElement = castTo gTypeHTMLHeadingElement "HTMLHeadingElement"
+
+foreign import javascript unsafe "window[\"HTMLHeadingElement\"]" gTypeHTMLHeadingElement' :: JSRef GType
+gTypeHTMLHeadingElement = GType gTypeHTMLHeadingElement'
+#else
+type IsHTMLHeadingElement o = HTMLHeadingElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLHtmlElement }
+
+instance Eq (HTMLHtmlElement) where
+  (HTMLHtmlElement a) == (HTMLHtmlElement b) = js_eq a b
+
+instance PToJSRef HTMLHtmlElement where
+  pToJSRef = unHTMLHtmlElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLHtmlElement where
+  pFromJSRef = HTMLHtmlElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLHtmlElement where
+  toJSRef = return . unHTMLHtmlElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLHtmlElement where
+  fromJSRef = return . fmap HTMLHtmlElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLHtmlElement
+instance IsElement HTMLHtmlElement
+instance IsNode HTMLHtmlElement
+instance IsEventTarget HTMLHtmlElement
+instance IsGObject HTMLHtmlElement where
+  toGObject = GObject . castRef . unHTMLHtmlElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLHtmlElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLHtmlElement :: IsGObject obj => obj -> HTMLHtmlElement
+castToHTMLHtmlElement = castTo gTypeHTMLHtmlElement "HTMLHtmlElement"
+
+foreign import javascript unsafe "window[\"HTMLHtmlElement\"]" gTypeHTMLHtmlElement' :: JSRef GType
+gTypeHTMLHtmlElement = GType gTypeHTMLHtmlElement'
+#else
+type IsHTMLHtmlElement o = HTMLHtmlElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLIFrameElement }
+
+instance Eq (HTMLIFrameElement) where
+  (HTMLIFrameElement a) == (HTMLIFrameElement b) = js_eq a b
+
+instance PToJSRef HTMLIFrameElement where
+  pToJSRef = unHTMLIFrameElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLIFrameElement where
+  pFromJSRef = HTMLIFrameElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLIFrameElement where
+  toJSRef = return . unHTMLIFrameElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLIFrameElement where
+  fromJSRef = return . fmap HTMLIFrameElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLIFrameElement
+instance IsElement HTMLIFrameElement
+instance IsNode HTMLIFrameElement
+instance IsEventTarget HTMLIFrameElement
+instance IsGObject HTMLIFrameElement where
+  toGObject = GObject . castRef . unHTMLIFrameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLIFrameElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLIFrameElement :: IsGObject obj => obj -> HTMLIFrameElement
+castToHTMLIFrameElement = castTo gTypeHTMLIFrameElement "HTMLIFrameElement"
+
+foreign import javascript unsafe "window[\"HTMLIFrameElement\"]" gTypeHTMLIFrameElement' :: JSRef GType
+gTypeHTMLIFrameElement = GType gTypeHTMLIFrameElement'
+#else
+type IsHTMLIFrameElement o = HTMLIFrameElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLImageElement }
+
+instance Eq (HTMLImageElement) where
+  (HTMLImageElement a) == (HTMLImageElement b) = js_eq a b
+
+instance PToJSRef HTMLImageElement where
+  pToJSRef = unHTMLImageElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLImageElement where
+  pFromJSRef = HTMLImageElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLImageElement where
+  toJSRef = return . unHTMLImageElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLImageElement where
+  fromJSRef = return . fmap HTMLImageElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLImageElement
+instance IsElement HTMLImageElement
+instance IsNode HTMLImageElement
+instance IsEventTarget HTMLImageElement
+instance IsGObject HTMLImageElement where
+  toGObject = GObject . castRef . unHTMLImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLImageElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLImageElement :: IsGObject obj => obj -> HTMLImageElement
+castToHTMLImageElement = castTo gTypeHTMLImageElement "HTMLImageElement"
+
+foreign import javascript unsafe "window[\"HTMLImageElement\"]" gTypeHTMLImageElement' :: JSRef GType
+gTypeHTMLImageElement = GType gTypeHTMLImageElement'
+#else
+type IsHTMLImageElement o = HTMLImageElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLInputElement }
+
+instance Eq (HTMLInputElement) where
+  (HTMLInputElement a) == (HTMLInputElement b) = js_eq a b
+
+instance PToJSRef HTMLInputElement where
+  pToJSRef = unHTMLInputElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLInputElement where
+  pFromJSRef = HTMLInputElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLInputElement where
+  toJSRef = return . unHTMLInputElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLInputElement where
+  fromJSRef = return . fmap HTMLInputElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLInputElement
+instance IsElement HTMLInputElement
+instance IsNode HTMLInputElement
+instance IsEventTarget HTMLInputElement
+instance IsGObject HTMLInputElement where
+  toGObject = GObject . castRef . unHTMLInputElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLInputElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLInputElement :: IsGObject obj => obj -> HTMLInputElement
+castToHTMLInputElement = castTo gTypeHTMLInputElement "HTMLInputElement"
+
+foreign import javascript unsafe "window[\"HTMLInputElement\"]" gTypeHTMLInputElement' :: JSRef GType
+gTypeHTMLInputElement = GType gTypeHTMLInputElement'
+#else
+type IsHTMLInputElement o = HTMLInputElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLKeygenElement }
+
+instance Eq (HTMLKeygenElement) where
+  (HTMLKeygenElement a) == (HTMLKeygenElement b) = js_eq a b
+
+instance PToJSRef HTMLKeygenElement where
+  pToJSRef = unHTMLKeygenElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLKeygenElement where
+  pFromJSRef = HTMLKeygenElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLKeygenElement where
+  toJSRef = return . unHTMLKeygenElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLKeygenElement where
+  fromJSRef = return . fmap HTMLKeygenElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLKeygenElement
+instance IsElement HTMLKeygenElement
+instance IsNode HTMLKeygenElement
+instance IsEventTarget HTMLKeygenElement
+instance IsGObject HTMLKeygenElement where
+  toGObject = GObject . castRef . unHTMLKeygenElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLKeygenElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLKeygenElement :: IsGObject obj => obj -> HTMLKeygenElement
+castToHTMLKeygenElement = castTo gTypeHTMLKeygenElement "HTMLKeygenElement"
+
+foreign import javascript unsafe "window[\"HTMLKeygenElement\"]" gTypeHTMLKeygenElement' :: JSRef GType
+gTypeHTMLKeygenElement = GType gTypeHTMLKeygenElement'
+#else
+type IsHTMLKeygenElement o = HTMLKeygenElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLLIElement }
+
+instance Eq (HTMLLIElement) where
+  (HTMLLIElement a) == (HTMLLIElement b) = js_eq a b
+
+instance PToJSRef HTMLLIElement where
+  pToJSRef = unHTMLLIElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLLIElement where
+  pFromJSRef = HTMLLIElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLLIElement where
+  toJSRef = return . unHTMLLIElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLLIElement where
+  fromJSRef = return . fmap HTMLLIElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLLIElement
+instance IsElement HTMLLIElement
+instance IsNode HTMLLIElement
+instance IsEventTarget HTMLLIElement
+instance IsGObject HTMLLIElement where
+  toGObject = GObject . castRef . unHTMLLIElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLIElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLIElement :: IsGObject obj => obj -> HTMLLIElement
+castToHTMLLIElement = castTo gTypeHTMLLIElement "HTMLLIElement"
+
+foreign import javascript unsafe "window[\"HTMLLIElement\"]" gTypeHTMLLIElement' :: JSRef GType
+gTypeHTMLLIElement = GType gTypeHTMLLIElement'
+#else
+type IsHTMLLIElement o = HTMLLIElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLLabelElement }
+
+instance Eq (HTMLLabelElement) where
+  (HTMLLabelElement a) == (HTMLLabelElement b) = js_eq a b
+
+instance PToJSRef HTMLLabelElement where
+  pToJSRef = unHTMLLabelElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLLabelElement where
+  pFromJSRef = HTMLLabelElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLLabelElement where
+  toJSRef = return . unHTMLLabelElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLLabelElement where
+  fromJSRef = return . fmap HTMLLabelElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLLabelElement
+instance IsElement HTMLLabelElement
+instance IsNode HTMLLabelElement
+instance IsEventTarget HTMLLabelElement
+instance IsGObject HTMLLabelElement where
+  toGObject = GObject . castRef . unHTMLLabelElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLabelElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLabelElement :: IsGObject obj => obj -> HTMLLabelElement
+castToHTMLLabelElement = castTo gTypeHTMLLabelElement "HTMLLabelElement"
+
+foreign import javascript unsafe "window[\"HTMLLabelElement\"]" gTypeHTMLLabelElement' :: JSRef GType
+gTypeHTMLLabelElement = GType gTypeHTMLLabelElement'
+#else
+type IsHTMLLabelElement o = HTMLLabelElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLLegendElement }
+
+instance Eq (HTMLLegendElement) where
+  (HTMLLegendElement a) == (HTMLLegendElement b) = js_eq a b
+
+instance PToJSRef HTMLLegendElement where
+  pToJSRef = unHTMLLegendElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLLegendElement where
+  pFromJSRef = HTMLLegendElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLLegendElement where
+  toJSRef = return . unHTMLLegendElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLLegendElement where
+  fromJSRef = return . fmap HTMLLegendElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLLegendElement
+instance IsElement HTMLLegendElement
+instance IsNode HTMLLegendElement
+instance IsEventTarget HTMLLegendElement
+instance IsGObject HTMLLegendElement where
+  toGObject = GObject . castRef . unHTMLLegendElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLegendElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLegendElement :: IsGObject obj => obj -> HTMLLegendElement
+castToHTMLLegendElement = castTo gTypeHTMLLegendElement "HTMLLegendElement"
+
+foreign import javascript unsafe "window[\"HTMLLegendElement\"]" gTypeHTMLLegendElement' :: JSRef GType
+gTypeHTMLLegendElement = GType gTypeHTMLLegendElement'
+#else
+type IsHTMLLegendElement o = HTMLLegendElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLLinkElement }
+
+instance Eq (HTMLLinkElement) where
+  (HTMLLinkElement a) == (HTMLLinkElement b) = js_eq a b
+
+instance PToJSRef HTMLLinkElement where
+  pToJSRef = unHTMLLinkElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLLinkElement where
+  pFromJSRef = HTMLLinkElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLLinkElement where
+  toJSRef = return . unHTMLLinkElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLLinkElement where
+  fromJSRef = return . fmap HTMLLinkElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLLinkElement
+instance IsElement HTMLLinkElement
+instance IsNode HTMLLinkElement
+instance IsEventTarget HTMLLinkElement
+instance IsGObject HTMLLinkElement where
+  toGObject = GObject . castRef . unHTMLLinkElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLLinkElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLLinkElement :: IsGObject obj => obj -> HTMLLinkElement
+castToHTMLLinkElement = castTo gTypeHTMLLinkElement "HTMLLinkElement"
+
+foreign import javascript unsafe "window[\"HTMLLinkElement\"]" gTypeHTMLLinkElement' :: JSRef GType
+gTypeHTMLLinkElement = GType gTypeHTMLLinkElement'
+#else
+type IsHTMLLinkElement o = HTMLLinkElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLMapElement }
+
+instance Eq (HTMLMapElement) where
+  (HTMLMapElement a) == (HTMLMapElement b) = js_eq a b
+
+instance PToJSRef HTMLMapElement where
+  pToJSRef = unHTMLMapElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLMapElement where
+  pFromJSRef = HTMLMapElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLMapElement where
+  toJSRef = return . unHTMLMapElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLMapElement where
+  fromJSRef = return . fmap HTMLMapElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLMapElement
+instance IsElement HTMLMapElement
+instance IsNode HTMLMapElement
+instance IsEventTarget HTMLMapElement
+instance IsGObject HTMLMapElement where
+  toGObject = GObject . castRef . unHTMLMapElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMapElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMapElement :: IsGObject obj => obj -> HTMLMapElement
+castToHTMLMapElement = castTo gTypeHTMLMapElement "HTMLMapElement"
+
+foreign import javascript unsafe "window[\"HTMLMapElement\"]" gTypeHTMLMapElement' :: JSRef GType
+gTypeHTMLMapElement = GType gTypeHTMLMapElement'
+#else
+type IsHTMLMapElement o = HTMLMapElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLMarqueeElement }
+
+instance Eq (HTMLMarqueeElement) where
+  (HTMLMarqueeElement a) == (HTMLMarqueeElement b) = js_eq a b
+
+instance PToJSRef HTMLMarqueeElement where
+  pToJSRef = unHTMLMarqueeElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLMarqueeElement where
+  pFromJSRef = HTMLMarqueeElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLMarqueeElement where
+  toJSRef = return . unHTMLMarqueeElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLMarqueeElement where
+  fromJSRef = return . fmap HTMLMarqueeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLMarqueeElement
+instance IsElement HTMLMarqueeElement
+instance IsNode HTMLMarqueeElement
+instance IsEventTarget HTMLMarqueeElement
+instance IsGObject HTMLMarqueeElement where
+  toGObject = GObject . castRef . unHTMLMarqueeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMarqueeElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMarqueeElement :: IsGObject obj => obj -> HTMLMarqueeElement
+castToHTMLMarqueeElement = castTo gTypeHTMLMarqueeElement "HTMLMarqueeElement"
+
+foreign import javascript unsafe "window[\"HTMLMarqueeElement\"]" gTypeHTMLMarqueeElement' :: JSRef GType
+gTypeHTMLMarqueeElement = GType gTypeHTMLMarqueeElement'
+#else
+type IsHTMLMarqueeElement o = HTMLMarqueeElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLMediaElement }
+
+instance Eq (HTMLMediaElement) where
+  (HTMLMediaElement a) == (HTMLMediaElement b) = js_eq a b
+
+instance PToJSRef HTMLMediaElement where
+  pToJSRef = unHTMLMediaElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLMediaElement where
+  pFromJSRef = HTMLMediaElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLMediaElement where
+  toJSRef = return . unHTMLMediaElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLMediaElement where
+  fromJSRef = return . fmap HTMLMediaElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unHTMLMediaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMediaElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMediaElement :: IsGObject obj => obj -> HTMLMediaElement
+castToHTMLMediaElement = castTo gTypeHTMLMediaElement "HTMLMediaElement"
+
+foreign import javascript unsafe "window[\"HTMLMediaElement\"]" gTypeHTMLMediaElement' :: JSRef GType
+gTypeHTMLMediaElement = GType gTypeHTMLMediaElement'
+#else
+type IsHTMLMediaElement o = HTMLMediaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLMenuElement }
+
+instance Eq (HTMLMenuElement) where
+  (HTMLMenuElement a) == (HTMLMenuElement b) = js_eq a b
+
+instance PToJSRef HTMLMenuElement where
+  pToJSRef = unHTMLMenuElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLMenuElement where
+  pFromJSRef = HTMLMenuElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLMenuElement where
+  toJSRef = return . unHTMLMenuElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLMenuElement where
+  fromJSRef = return . fmap HTMLMenuElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLMenuElement
+instance IsElement HTMLMenuElement
+instance IsNode HTMLMenuElement
+instance IsEventTarget HTMLMenuElement
+instance IsGObject HTMLMenuElement where
+  toGObject = GObject . castRef . unHTMLMenuElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMenuElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMenuElement :: IsGObject obj => obj -> HTMLMenuElement
+castToHTMLMenuElement = castTo gTypeHTMLMenuElement "HTMLMenuElement"
+
+foreign import javascript unsafe "window[\"HTMLMenuElement\"]" gTypeHTMLMenuElement' :: JSRef GType
+gTypeHTMLMenuElement = GType gTypeHTMLMenuElement'
+#else
+type IsHTMLMenuElement o = HTMLMenuElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLMetaElement }
+
+instance Eq (HTMLMetaElement) where
+  (HTMLMetaElement a) == (HTMLMetaElement b) = js_eq a b
+
+instance PToJSRef HTMLMetaElement where
+  pToJSRef = unHTMLMetaElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLMetaElement where
+  pFromJSRef = HTMLMetaElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLMetaElement where
+  toJSRef = return . unHTMLMetaElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLMetaElement where
+  fromJSRef = return . fmap HTMLMetaElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLMetaElement
+instance IsElement HTMLMetaElement
+instance IsNode HTMLMetaElement
+instance IsEventTarget HTMLMetaElement
+instance IsGObject HTMLMetaElement where
+  toGObject = GObject . castRef . unHTMLMetaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMetaElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMetaElement :: IsGObject obj => obj -> HTMLMetaElement
+castToHTMLMetaElement = castTo gTypeHTMLMetaElement "HTMLMetaElement"
+
+foreign import javascript unsafe "window[\"HTMLMetaElement\"]" gTypeHTMLMetaElement' :: JSRef GType
+gTypeHTMLMetaElement = GType gTypeHTMLMetaElement'
+#else
+type IsHTMLMetaElement o = HTMLMetaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLMeterElement }
+
+instance Eq (HTMLMeterElement) where
+  (HTMLMeterElement a) == (HTMLMeterElement b) = js_eq a b
+
+instance PToJSRef HTMLMeterElement where
+  pToJSRef = unHTMLMeterElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLMeterElement where
+  pFromJSRef = HTMLMeterElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLMeterElement where
+  toJSRef = return . unHTMLMeterElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLMeterElement where
+  fromJSRef = return . fmap HTMLMeterElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLMeterElement
+instance IsElement HTMLMeterElement
+instance IsNode HTMLMeterElement
+instance IsEventTarget HTMLMeterElement
+instance IsGObject HTMLMeterElement where
+  toGObject = GObject . castRef . unHTMLMeterElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLMeterElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLMeterElement :: IsGObject obj => obj -> HTMLMeterElement
+castToHTMLMeterElement = castTo gTypeHTMLMeterElement "HTMLMeterElement"
+
+foreign import javascript unsafe "window[\"HTMLMeterElement\"]" gTypeHTMLMeterElement' :: JSRef GType
+gTypeHTMLMeterElement = GType gTypeHTMLMeterElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLModElement }
+
+instance Eq (HTMLModElement) where
+  (HTMLModElement a) == (HTMLModElement b) = js_eq a b
+
+instance PToJSRef HTMLModElement where
+  pToJSRef = unHTMLModElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLModElement where
+  pFromJSRef = HTMLModElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLModElement where
+  toJSRef = return . unHTMLModElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLModElement where
+  fromJSRef = return . fmap HTMLModElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLModElement
+instance IsElement HTMLModElement
+instance IsNode HTMLModElement
+instance IsEventTarget HTMLModElement
+instance IsGObject HTMLModElement where
+  toGObject = GObject . castRef . unHTMLModElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLModElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLModElement :: IsGObject obj => obj -> HTMLModElement
+castToHTMLModElement = castTo gTypeHTMLModElement "HTMLModElement"
+
+foreign import javascript unsafe "window[\"HTMLModElement\"]" gTypeHTMLModElement' :: JSRef GType
+gTypeHTMLModElement = GType gTypeHTMLModElement'
+#else
+type IsHTMLModElement o = HTMLModElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLOListElement }
+
+instance Eq (HTMLOListElement) where
+  (HTMLOListElement a) == (HTMLOListElement b) = js_eq a b
+
+instance PToJSRef HTMLOListElement where
+  pToJSRef = unHTMLOListElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLOListElement where
+  pFromJSRef = HTMLOListElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLOListElement where
+  toJSRef = return . unHTMLOListElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLOListElement where
+  fromJSRef = return . fmap HTMLOListElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLOListElement
+instance IsElement HTMLOListElement
+instance IsNode HTMLOListElement
+instance IsEventTarget HTMLOListElement
+instance IsGObject HTMLOListElement where
+  toGObject = GObject . castRef . unHTMLOListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOListElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOListElement :: IsGObject obj => obj -> HTMLOListElement
+castToHTMLOListElement = castTo gTypeHTMLOListElement "HTMLOListElement"
+
+foreign import javascript unsafe "window[\"HTMLOListElement\"]" gTypeHTMLOListElement' :: JSRef GType
+gTypeHTMLOListElement = GType gTypeHTMLOListElement'
+#else
+type IsHTMLOListElement o = HTMLOListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLObjectElement }
+
+instance Eq (HTMLObjectElement) where
+  (HTMLObjectElement a) == (HTMLObjectElement b) = js_eq a b
+
+instance PToJSRef HTMLObjectElement where
+  pToJSRef = unHTMLObjectElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLObjectElement where
+  pFromJSRef = HTMLObjectElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLObjectElement where
+  toJSRef = return . unHTMLObjectElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLObjectElement where
+  fromJSRef = return . fmap HTMLObjectElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLObjectElement
+instance IsElement HTMLObjectElement
+instance IsNode HTMLObjectElement
+instance IsEventTarget HTMLObjectElement
+instance IsGObject HTMLObjectElement where
+  toGObject = GObject . castRef . unHTMLObjectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLObjectElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLObjectElement :: IsGObject obj => obj -> HTMLObjectElement
+castToHTMLObjectElement = castTo gTypeHTMLObjectElement "HTMLObjectElement"
+
+foreign import javascript unsafe "window[\"HTMLObjectElement\"]" gTypeHTMLObjectElement' :: JSRef GType
+gTypeHTMLObjectElement = GType gTypeHTMLObjectElement'
+#else
+type IsHTMLObjectElement o = HTMLObjectElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLOptGroupElement }
+
+instance Eq (HTMLOptGroupElement) where
+  (HTMLOptGroupElement a) == (HTMLOptGroupElement b) = js_eq a b
+
+instance PToJSRef HTMLOptGroupElement where
+  pToJSRef = unHTMLOptGroupElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLOptGroupElement where
+  pFromJSRef = HTMLOptGroupElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLOptGroupElement where
+  toJSRef = return . unHTMLOptGroupElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLOptGroupElement where
+  fromJSRef = return . fmap HTMLOptGroupElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLOptGroupElement
+instance IsElement HTMLOptGroupElement
+instance IsNode HTMLOptGroupElement
+instance IsEventTarget HTMLOptGroupElement
+instance IsGObject HTMLOptGroupElement where
+  toGObject = GObject . castRef . unHTMLOptGroupElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptGroupElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptGroupElement :: IsGObject obj => obj -> HTMLOptGroupElement
+castToHTMLOptGroupElement = castTo gTypeHTMLOptGroupElement "HTMLOptGroupElement"
+
+foreign import javascript unsafe "window[\"HTMLOptGroupElement\"]" gTypeHTMLOptGroupElement' :: JSRef GType
+gTypeHTMLOptGroupElement = GType gTypeHTMLOptGroupElement'
+#else
+type IsHTMLOptGroupElement o = HTMLOptGroupElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLOptionElement }
+
+instance Eq (HTMLOptionElement) where
+  (HTMLOptionElement a) == (HTMLOptionElement b) = js_eq a b
+
+instance PToJSRef HTMLOptionElement where
+  pToJSRef = unHTMLOptionElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLOptionElement where
+  pFromJSRef = HTMLOptionElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLOptionElement where
+  toJSRef = return . unHTMLOptionElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLOptionElement where
+  fromJSRef = return . fmap HTMLOptionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLOptionElement
+instance IsElement HTMLOptionElement
+instance IsNode HTMLOptionElement
+instance IsEventTarget HTMLOptionElement
+instance IsGObject HTMLOptionElement where
+  toGObject = GObject . castRef . unHTMLOptionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptionElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptionElement :: IsGObject obj => obj -> HTMLOptionElement
+castToHTMLOptionElement = castTo gTypeHTMLOptionElement "HTMLOptionElement"
+
+foreign import javascript unsafe "window[\"HTMLOptionElement\"]" gTypeHTMLOptionElement' :: JSRef GType
+gTypeHTMLOptionElement = GType gTypeHTMLOptionElement'
+#else
+type IsHTMLOptionElement o = HTMLOptionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLOptionsCollection }
+
+instance Eq (HTMLOptionsCollection) where
+  (HTMLOptionsCollection a) == (HTMLOptionsCollection b) = js_eq a b
+
+instance PToJSRef HTMLOptionsCollection where
+  pToJSRef = unHTMLOptionsCollection
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLOptionsCollection where
+  pFromJSRef = HTMLOptionsCollection
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLOptionsCollection where
+  toJSRef = return . unHTMLOptionsCollection
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLOptionsCollection where
+  fromJSRef = return . fmap HTMLOptionsCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLCollection HTMLOptionsCollection
+instance IsGObject HTMLOptionsCollection where
+  toGObject = GObject . castRef . unHTMLOptionsCollection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOptionsCollection . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOptionsCollection :: IsGObject obj => obj -> HTMLOptionsCollection
+castToHTMLOptionsCollection = castTo gTypeHTMLOptionsCollection "HTMLOptionsCollection"
+
+foreign import javascript unsafe "window[\"HTMLOptionsCollection\"]" gTypeHTMLOptionsCollection' :: JSRef GType
+gTypeHTMLOptionsCollection = GType gTypeHTMLOptionsCollection'
+#else
+type IsHTMLOptionsCollection o = HTMLOptionsCollectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLOutputElement }
+
+instance Eq (HTMLOutputElement) where
+  (HTMLOutputElement a) == (HTMLOutputElement b) = js_eq a b
+
+instance PToJSRef HTMLOutputElement where
+  pToJSRef = unHTMLOutputElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLOutputElement where
+  pFromJSRef = HTMLOutputElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLOutputElement where
+  toJSRef = return . unHTMLOutputElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLOutputElement where
+  fromJSRef = return . fmap HTMLOutputElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLOutputElement
+instance IsElement HTMLOutputElement
+instance IsNode HTMLOutputElement
+instance IsEventTarget HTMLOutputElement
+instance IsGObject HTMLOutputElement where
+  toGObject = GObject . castRef . unHTMLOutputElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLOutputElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLOutputElement :: IsGObject obj => obj -> HTMLOutputElement
+castToHTMLOutputElement = castTo gTypeHTMLOutputElement "HTMLOutputElement"
+
+foreign import javascript unsafe "window[\"HTMLOutputElement\"]" gTypeHTMLOutputElement' :: JSRef GType
+gTypeHTMLOutputElement = GType gTypeHTMLOutputElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLParagraphElement }
+
+instance Eq (HTMLParagraphElement) where
+  (HTMLParagraphElement a) == (HTMLParagraphElement b) = js_eq a b
+
+instance PToJSRef HTMLParagraphElement where
+  pToJSRef = unHTMLParagraphElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLParagraphElement where
+  pFromJSRef = HTMLParagraphElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLParagraphElement where
+  toJSRef = return . unHTMLParagraphElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLParagraphElement where
+  fromJSRef = return . fmap HTMLParagraphElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLParagraphElement
+instance IsElement HTMLParagraphElement
+instance IsNode HTMLParagraphElement
+instance IsEventTarget HTMLParagraphElement
+instance IsGObject HTMLParagraphElement where
+  toGObject = GObject . castRef . unHTMLParagraphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLParagraphElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLParagraphElement :: IsGObject obj => obj -> HTMLParagraphElement
+castToHTMLParagraphElement = castTo gTypeHTMLParagraphElement "HTMLParagraphElement"
+
+foreign import javascript unsafe "window[\"HTMLParagraphElement\"]" gTypeHTMLParagraphElement' :: JSRef GType
+gTypeHTMLParagraphElement = GType gTypeHTMLParagraphElement'
+#else
+type IsHTMLParagraphElement o = HTMLParagraphElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLParamElement }
+
+instance Eq (HTMLParamElement) where
+  (HTMLParamElement a) == (HTMLParamElement b) = js_eq a b
+
+instance PToJSRef HTMLParamElement where
+  pToJSRef = unHTMLParamElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLParamElement where
+  pFromJSRef = HTMLParamElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLParamElement where
+  toJSRef = return . unHTMLParamElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLParamElement where
+  fromJSRef = return . fmap HTMLParamElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLParamElement
+instance IsElement HTMLParamElement
+instance IsNode HTMLParamElement
+instance IsEventTarget HTMLParamElement
+instance IsGObject HTMLParamElement where
+  toGObject = GObject . castRef . unHTMLParamElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLParamElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLParamElement :: IsGObject obj => obj -> HTMLParamElement
+castToHTMLParamElement = castTo gTypeHTMLParamElement "HTMLParamElement"
+
+foreign import javascript unsafe "window[\"HTMLParamElement\"]" gTypeHTMLParamElement' :: JSRef GType
+gTypeHTMLParamElement = GType gTypeHTMLParamElement'
+#else
+type IsHTMLParamElement o = HTMLParamElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLPreElement }
+
+instance Eq (HTMLPreElement) where
+  (HTMLPreElement a) == (HTMLPreElement b) = js_eq a b
+
+instance PToJSRef HTMLPreElement where
+  pToJSRef = unHTMLPreElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLPreElement where
+  pFromJSRef = HTMLPreElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLPreElement where
+  toJSRef = return . unHTMLPreElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLPreElement where
+  fromJSRef = return . fmap HTMLPreElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLPreElement
+instance IsElement HTMLPreElement
+instance IsNode HTMLPreElement
+instance IsEventTarget HTMLPreElement
+instance IsGObject HTMLPreElement where
+  toGObject = GObject . castRef . unHTMLPreElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLPreElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLPreElement :: IsGObject obj => obj -> HTMLPreElement
+castToHTMLPreElement = castTo gTypeHTMLPreElement "HTMLPreElement"
+
+foreign import javascript unsafe "window[\"HTMLPreElement\"]" gTypeHTMLPreElement' :: JSRef GType
+gTypeHTMLPreElement = GType gTypeHTMLPreElement'
+#else
+type IsHTMLPreElement o = HTMLPreElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLProgressElement }
+
+instance Eq (HTMLProgressElement) where
+  (HTMLProgressElement a) == (HTMLProgressElement b) = js_eq a b
+
+instance PToJSRef HTMLProgressElement where
+  pToJSRef = unHTMLProgressElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLProgressElement where
+  pFromJSRef = HTMLProgressElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLProgressElement where
+  toJSRef = return . unHTMLProgressElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLProgressElement where
+  fromJSRef = return . fmap HTMLProgressElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLProgressElement
+instance IsElement HTMLProgressElement
+instance IsNode HTMLProgressElement
+instance IsEventTarget HTMLProgressElement
+instance IsGObject HTMLProgressElement where
+  toGObject = GObject . castRef . unHTMLProgressElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLProgressElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLProgressElement :: IsGObject obj => obj -> HTMLProgressElement
+castToHTMLProgressElement = castTo gTypeHTMLProgressElement "HTMLProgressElement"
+
+foreign import javascript unsafe "window[\"HTMLProgressElement\"]" gTypeHTMLProgressElement' :: JSRef GType
+gTypeHTMLProgressElement = GType gTypeHTMLProgressElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLQuoteElement }
+
+instance Eq (HTMLQuoteElement) where
+  (HTMLQuoteElement a) == (HTMLQuoteElement b) = js_eq a b
+
+instance PToJSRef HTMLQuoteElement where
+  pToJSRef = unHTMLQuoteElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLQuoteElement where
+  pFromJSRef = HTMLQuoteElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLQuoteElement where
+  toJSRef = return . unHTMLQuoteElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLQuoteElement where
+  fromJSRef = return . fmap HTMLQuoteElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLQuoteElement
+instance IsElement HTMLQuoteElement
+instance IsNode HTMLQuoteElement
+instance IsEventTarget HTMLQuoteElement
+instance IsGObject HTMLQuoteElement where
+  toGObject = GObject . castRef . unHTMLQuoteElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLQuoteElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLQuoteElement :: IsGObject obj => obj -> HTMLQuoteElement
+castToHTMLQuoteElement = castTo gTypeHTMLQuoteElement "HTMLQuoteElement"
+
+foreign import javascript unsafe "window[\"HTMLQuoteElement\"]" gTypeHTMLQuoteElement' :: JSRef GType
+gTypeHTMLQuoteElement = GType gTypeHTMLQuoteElement'
+#else
+type IsHTMLQuoteElement o = HTMLQuoteElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLScriptElement }
+
+instance Eq (HTMLScriptElement) where
+  (HTMLScriptElement a) == (HTMLScriptElement b) = js_eq a b
+
+instance PToJSRef HTMLScriptElement where
+  pToJSRef = unHTMLScriptElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLScriptElement where
+  pFromJSRef = HTMLScriptElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLScriptElement where
+  toJSRef = return . unHTMLScriptElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLScriptElement where
+  fromJSRef = return . fmap HTMLScriptElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLScriptElement
+instance IsElement HTMLScriptElement
+instance IsNode HTMLScriptElement
+instance IsEventTarget HTMLScriptElement
+instance IsGObject HTMLScriptElement where
+  toGObject = GObject . castRef . unHTMLScriptElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLScriptElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLScriptElement :: IsGObject obj => obj -> HTMLScriptElement
+castToHTMLScriptElement = castTo gTypeHTMLScriptElement "HTMLScriptElement"
+
+foreign import javascript unsafe "window[\"HTMLScriptElement\"]" gTypeHTMLScriptElement' :: JSRef GType
+gTypeHTMLScriptElement = GType gTypeHTMLScriptElement'
+#else
+type IsHTMLScriptElement o = HTMLScriptElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLSelectElement }
+
+instance Eq (HTMLSelectElement) where
+  (HTMLSelectElement a) == (HTMLSelectElement b) = js_eq a b
+
+instance PToJSRef HTMLSelectElement where
+  pToJSRef = unHTMLSelectElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLSelectElement where
+  pFromJSRef = HTMLSelectElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLSelectElement where
+  toJSRef = return . unHTMLSelectElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLSelectElement where
+  fromJSRef = return . fmap HTMLSelectElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLSelectElement
+instance IsElement HTMLSelectElement
+instance IsNode HTMLSelectElement
+instance IsEventTarget HTMLSelectElement
+instance IsGObject HTMLSelectElement where
+  toGObject = GObject . castRef . unHTMLSelectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSelectElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSelectElement :: IsGObject obj => obj -> HTMLSelectElement
+castToHTMLSelectElement = castTo gTypeHTMLSelectElement "HTMLSelectElement"
+
+foreign import javascript unsafe "window[\"HTMLSelectElement\"]" gTypeHTMLSelectElement' :: JSRef GType
+gTypeHTMLSelectElement = GType gTypeHTMLSelectElement'
+#else
+type IsHTMLSelectElement o = HTMLSelectElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLSourceElement }
+
+instance Eq (HTMLSourceElement) where
+  (HTMLSourceElement a) == (HTMLSourceElement b) = js_eq a b
+
+instance PToJSRef HTMLSourceElement where
+  pToJSRef = unHTMLSourceElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLSourceElement where
+  pFromJSRef = HTMLSourceElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLSourceElement where
+  toJSRef = return . unHTMLSourceElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLSourceElement where
+  fromJSRef = return . fmap HTMLSourceElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLSourceElement
+instance IsElement HTMLSourceElement
+instance IsNode HTMLSourceElement
+instance IsEventTarget HTMLSourceElement
+instance IsGObject HTMLSourceElement where
+  toGObject = GObject . castRef . unHTMLSourceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSourceElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSourceElement :: IsGObject obj => obj -> HTMLSourceElement
+castToHTMLSourceElement = castTo gTypeHTMLSourceElement "HTMLSourceElement"
+
+foreign import javascript unsafe "window[\"HTMLSourceElement\"]" gTypeHTMLSourceElement' :: JSRef GType
+gTypeHTMLSourceElement = GType gTypeHTMLSourceElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLSpanElement }
+
+instance Eq (HTMLSpanElement) where
+  (HTMLSpanElement a) == (HTMLSpanElement b) = js_eq a b
+
+instance PToJSRef HTMLSpanElement where
+  pToJSRef = unHTMLSpanElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLSpanElement where
+  pFromJSRef = HTMLSpanElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLSpanElement where
+  toJSRef = return . unHTMLSpanElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLSpanElement where
+  fromJSRef = return . fmap HTMLSpanElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLSpanElement
+instance IsElement HTMLSpanElement
+instance IsNode HTMLSpanElement
+instance IsEventTarget HTMLSpanElement
+instance IsGObject HTMLSpanElement where
+  toGObject = GObject . castRef . unHTMLSpanElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLSpanElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLSpanElement :: IsGObject obj => obj -> HTMLSpanElement
+castToHTMLSpanElement = castTo gTypeHTMLSpanElement "HTMLSpanElement"
+
+foreign import javascript unsafe "window[\"HTMLSpanElement\"]" gTypeHTMLSpanElement' :: JSRef GType
+gTypeHTMLSpanElement = GType gTypeHTMLSpanElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLStyleElement }
+
+instance Eq (HTMLStyleElement) where
+  (HTMLStyleElement a) == (HTMLStyleElement b) = js_eq a b
+
+instance PToJSRef HTMLStyleElement where
+  pToJSRef = unHTMLStyleElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLStyleElement where
+  pFromJSRef = HTMLStyleElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLStyleElement where
+  toJSRef = return . unHTMLStyleElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLStyleElement where
+  fromJSRef = return . fmap HTMLStyleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLStyleElement
+instance IsElement HTMLStyleElement
+instance IsNode HTMLStyleElement
+instance IsEventTarget HTMLStyleElement
+instance IsGObject HTMLStyleElement where
+  toGObject = GObject . castRef . unHTMLStyleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLStyleElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLStyleElement :: IsGObject obj => obj -> HTMLStyleElement
+castToHTMLStyleElement = castTo gTypeHTMLStyleElement "HTMLStyleElement"
+
+foreign import javascript unsafe "window[\"HTMLStyleElement\"]" gTypeHTMLStyleElement' :: JSRef GType
+gTypeHTMLStyleElement = GType gTypeHTMLStyleElement'
+#else
+type IsHTMLStyleElement o = HTMLStyleElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTableCaptionElement }
+
+instance Eq (HTMLTableCaptionElement) where
+  (HTMLTableCaptionElement a) == (HTMLTableCaptionElement b) = js_eq a b
+
+instance PToJSRef HTMLTableCaptionElement where
+  pToJSRef = unHTMLTableCaptionElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTableCaptionElement where
+  pFromJSRef = HTMLTableCaptionElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTableCaptionElement where
+  toJSRef = return . unHTMLTableCaptionElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTableCaptionElement where
+  fromJSRef = return . fmap HTMLTableCaptionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTableCaptionElement
+instance IsElement HTMLTableCaptionElement
+instance IsNode HTMLTableCaptionElement
+instance IsEventTarget HTMLTableCaptionElement
+instance IsGObject HTMLTableCaptionElement where
+  toGObject = GObject . castRef . unHTMLTableCaptionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableCaptionElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableCaptionElement :: IsGObject obj => obj -> HTMLTableCaptionElement
+castToHTMLTableCaptionElement = castTo gTypeHTMLTableCaptionElement "HTMLTableCaptionElement"
+
+foreign import javascript unsafe "window[\"HTMLTableCaptionElement\"]" gTypeHTMLTableCaptionElement' :: JSRef GType
+gTypeHTMLTableCaptionElement = GType gTypeHTMLTableCaptionElement'
+#else
+type IsHTMLTableCaptionElement o = HTMLTableCaptionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTableCellElement }
+
+instance Eq (HTMLTableCellElement) where
+  (HTMLTableCellElement a) == (HTMLTableCellElement b) = js_eq a b
+
+instance PToJSRef HTMLTableCellElement where
+  pToJSRef = unHTMLTableCellElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTableCellElement where
+  pFromJSRef = HTMLTableCellElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTableCellElement where
+  toJSRef = return . unHTMLTableCellElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTableCellElement where
+  fromJSRef = return . fmap HTMLTableCellElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTableCellElement
+instance IsElement HTMLTableCellElement
+instance IsNode HTMLTableCellElement
+instance IsEventTarget HTMLTableCellElement
+instance IsGObject HTMLTableCellElement where
+  toGObject = GObject . castRef . unHTMLTableCellElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableCellElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableCellElement :: IsGObject obj => obj -> HTMLTableCellElement
+castToHTMLTableCellElement = castTo gTypeHTMLTableCellElement "HTMLTableCellElement"
+
+foreign import javascript unsafe "window[\"HTMLTableCellElement\"]" gTypeHTMLTableCellElement' :: JSRef GType
+gTypeHTMLTableCellElement = GType gTypeHTMLTableCellElement'
+#else
+type IsHTMLTableCellElement o = HTMLTableCellElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTableColElement }
+
+instance Eq (HTMLTableColElement) where
+  (HTMLTableColElement a) == (HTMLTableColElement b) = js_eq a b
+
+instance PToJSRef HTMLTableColElement where
+  pToJSRef = unHTMLTableColElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTableColElement where
+  pFromJSRef = HTMLTableColElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTableColElement where
+  toJSRef = return . unHTMLTableColElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTableColElement where
+  fromJSRef = return . fmap HTMLTableColElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTableColElement
+instance IsElement HTMLTableColElement
+instance IsNode HTMLTableColElement
+instance IsEventTarget HTMLTableColElement
+instance IsGObject HTMLTableColElement where
+  toGObject = GObject . castRef . unHTMLTableColElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableColElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableColElement :: IsGObject obj => obj -> HTMLTableColElement
+castToHTMLTableColElement = castTo gTypeHTMLTableColElement "HTMLTableColElement"
+
+foreign import javascript unsafe "window[\"HTMLTableColElement\"]" gTypeHTMLTableColElement' :: JSRef GType
+gTypeHTMLTableColElement = GType gTypeHTMLTableColElement'
+#else
+type IsHTMLTableColElement o = HTMLTableColElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTableElement }
+
+instance Eq (HTMLTableElement) where
+  (HTMLTableElement a) == (HTMLTableElement b) = js_eq a b
+
+instance PToJSRef HTMLTableElement where
+  pToJSRef = unHTMLTableElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTableElement where
+  pFromJSRef = HTMLTableElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTableElement where
+  toJSRef = return . unHTMLTableElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTableElement where
+  fromJSRef = return . fmap HTMLTableElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTableElement
+instance IsElement HTMLTableElement
+instance IsNode HTMLTableElement
+instance IsEventTarget HTMLTableElement
+instance IsGObject HTMLTableElement where
+  toGObject = GObject . castRef . unHTMLTableElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableElement :: IsGObject obj => obj -> HTMLTableElement
+castToHTMLTableElement = castTo gTypeHTMLTableElement "HTMLTableElement"
+
+foreign import javascript unsafe "window[\"HTMLTableElement\"]" gTypeHTMLTableElement' :: JSRef GType
+gTypeHTMLTableElement = GType gTypeHTMLTableElement'
+#else
+type IsHTMLTableElement o = HTMLTableElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTableRowElement }
+
+instance Eq (HTMLTableRowElement) where
+  (HTMLTableRowElement a) == (HTMLTableRowElement b) = js_eq a b
+
+instance PToJSRef HTMLTableRowElement where
+  pToJSRef = unHTMLTableRowElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTableRowElement where
+  pFromJSRef = HTMLTableRowElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTableRowElement where
+  toJSRef = return . unHTMLTableRowElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTableRowElement where
+  fromJSRef = return . fmap HTMLTableRowElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTableRowElement
+instance IsElement HTMLTableRowElement
+instance IsNode HTMLTableRowElement
+instance IsEventTarget HTMLTableRowElement
+instance IsGObject HTMLTableRowElement where
+  toGObject = GObject . castRef . unHTMLTableRowElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableRowElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableRowElement :: IsGObject obj => obj -> HTMLTableRowElement
+castToHTMLTableRowElement = castTo gTypeHTMLTableRowElement "HTMLTableRowElement"
+
+foreign import javascript unsafe "window[\"HTMLTableRowElement\"]" gTypeHTMLTableRowElement' :: JSRef GType
+gTypeHTMLTableRowElement = GType gTypeHTMLTableRowElement'
+#else
+type IsHTMLTableRowElement o = HTMLTableRowElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTableSectionElement }
+
+instance Eq (HTMLTableSectionElement) where
+  (HTMLTableSectionElement a) == (HTMLTableSectionElement b) = js_eq a b
+
+instance PToJSRef HTMLTableSectionElement where
+  pToJSRef = unHTMLTableSectionElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTableSectionElement where
+  pFromJSRef = HTMLTableSectionElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTableSectionElement where
+  toJSRef = return . unHTMLTableSectionElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTableSectionElement where
+  fromJSRef = return . fmap HTMLTableSectionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTableSectionElement
+instance IsElement HTMLTableSectionElement
+instance IsNode HTMLTableSectionElement
+instance IsEventTarget HTMLTableSectionElement
+instance IsGObject HTMLTableSectionElement where
+  toGObject = GObject . castRef . unHTMLTableSectionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTableSectionElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTableSectionElement :: IsGObject obj => obj -> HTMLTableSectionElement
+castToHTMLTableSectionElement = castTo gTypeHTMLTableSectionElement "HTMLTableSectionElement"
+
+foreign import javascript unsafe "window[\"HTMLTableSectionElement\"]" gTypeHTMLTableSectionElement' :: JSRef GType
+gTypeHTMLTableSectionElement = GType gTypeHTMLTableSectionElement'
+#else
+type IsHTMLTableSectionElement o = HTMLTableSectionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTemplateElement }
+
+instance Eq (HTMLTemplateElement) where
+  (HTMLTemplateElement a) == (HTMLTemplateElement b) = js_eq a b
+
+instance PToJSRef HTMLTemplateElement where
+  pToJSRef = unHTMLTemplateElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTemplateElement where
+  pFromJSRef = HTMLTemplateElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTemplateElement where
+  toJSRef = return . unHTMLTemplateElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTemplateElement where
+  fromJSRef = return . fmap HTMLTemplateElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTemplateElement
+instance IsElement HTMLTemplateElement
+instance IsNode HTMLTemplateElement
+instance IsEventTarget HTMLTemplateElement
+instance IsGObject HTMLTemplateElement where
+  toGObject = GObject . castRef . unHTMLTemplateElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTemplateElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTemplateElement :: IsGObject obj => obj -> HTMLTemplateElement
+castToHTMLTemplateElement = castTo gTypeHTMLTemplateElement "HTMLTemplateElement"
+
+foreign import javascript unsafe "window[\"HTMLTemplateElement\"]" gTypeHTMLTemplateElement' :: JSRef GType
+gTypeHTMLTemplateElement = GType gTypeHTMLTemplateElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTextAreaElement }
+
+instance Eq (HTMLTextAreaElement) where
+  (HTMLTextAreaElement a) == (HTMLTextAreaElement b) = js_eq a b
+
+instance PToJSRef HTMLTextAreaElement where
+  pToJSRef = unHTMLTextAreaElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTextAreaElement where
+  pFromJSRef = HTMLTextAreaElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTextAreaElement where
+  toJSRef = return . unHTMLTextAreaElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTextAreaElement where
+  fromJSRef = return . fmap HTMLTextAreaElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTextAreaElement
+instance IsElement HTMLTextAreaElement
+instance IsNode HTMLTextAreaElement
+instance IsEventTarget HTMLTextAreaElement
+instance IsGObject HTMLTextAreaElement where
+  toGObject = GObject . castRef . unHTMLTextAreaElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTextAreaElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTextAreaElement :: IsGObject obj => obj -> HTMLTextAreaElement
+castToHTMLTextAreaElement = castTo gTypeHTMLTextAreaElement "HTMLTextAreaElement"
+
+foreign import javascript unsafe "window[\"HTMLTextAreaElement\"]" gTypeHTMLTextAreaElement' :: JSRef GType
+gTypeHTMLTextAreaElement = GType gTypeHTMLTextAreaElement'
+#else
+type IsHTMLTextAreaElement o = HTMLTextAreaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTitleElement }
+
+instance Eq (HTMLTitleElement) where
+  (HTMLTitleElement a) == (HTMLTitleElement b) = js_eq a b
+
+instance PToJSRef HTMLTitleElement where
+  pToJSRef = unHTMLTitleElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTitleElement where
+  pFromJSRef = HTMLTitleElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTitleElement where
+  toJSRef = return . unHTMLTitleElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTitleElement where
+  fromJSRef = return . fmap HTMLTitleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTitleElement
+instance IsElement HTMLTitleElement
+instance IsNode HTMLTitleElement
+instance IsEventTarget HTMLTitleElement
+instance IsGObject HTMLTitleElement where
+  toGObject = GObject . castRef . unHTMLTitleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTitleElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTitleElement :: IsGObject obj => obj -> HTMLTitleElement
+castToHTMLTitleElement = castTo gTypeHTMLTitleElement "HTMLTitleElement"
+
+foreign import javascript unsafe "window[\"HTMLTitleElement\"]" gTypeHTMLTitleElement' :: JSRef GType
+gTypeHTMLTitleElement = GType gTypeHTMLTitleElement'
+#else
+type IsHTMLTitleElement o = HTMLTitleElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLTrackElement }
+
+instance Eq (HTMLTrackElement) where
+  (HTMLTrackElement a) == (HTMLTrackElement b) = js_eq a b
+
+instance PToJSRef HTMLTrackElement where
+  pToJSRef = unHTMLTrackElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLTrackElement where
+  pFromJSRef = HTMLTrackElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLTrackElement where
+  toJSRef = return . unHTMLTrackElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLTrackElement where
+  fromJSRef = return . fmap HTMLTrackElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLTrackElement
+instance IsElement HTMLTrackElement
+instance IsNode HTMLTrackElement
+instance IsEventTarget HTMLTrackElement
+instance IsGObject HTMLTrackElement where
+  toGObject = GObject . castRef . unHTMLTrackElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLTrackElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLTrackElement :: IsGObject obj => obj -> HTMLTrackElement
+castToHTMLTrackElement = castTo gTypeHTMLTrackElement "HTMLTrackElement"
+
+foreign import javascript unsafe "window[\"HTMLTrackElement\"]" gTypeHTMLTrackElement' :: JSRef GType
+gTypeHTMLTrackElement = GType gTypeHTMLTrackElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLUListElement }
+
+instance Eq (HTMLUListElement) where
+  (HTMLUListElement a) == (HTMLUListElement b) = js_eq a b
+
+instance PToJSRef HTMLUListElement where
+  pToJSRef = unHTMLUListElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLUListElement where
+  pFromJSRef = HTMLUListElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLUListElement where
+  toJSRef = return . unHTMLUListElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLUListElement where
+  fromJSRef = return . fmap HTMLUListElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLUListElement
+instance IsElement HTMLUListElement
+instance IsNode HTMLUListElement
+instance IsEventTarget HTMLUListElement
+instance IsGObject HTMLUListElement where
+  toGObject = GObject . castRef . unHTMLUListElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLUListElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLUListElement :: IsGObject obj => obj -> HTMLUListElement
+castToHTMLUListElement = castTo gTypeHTMLUListElement "HTMLUListElement"
+
+foreign import javascript unsafe "window[\"HTMLUListElement\"]" gTypeHTMLUListElement' :: JSRef GType
+gTypeHTMLUListElement = GType gTypeHTMLUListElement'
+#else
+type IsHTMLUListElement o = HTMLUListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLUnknownElement }
+
+instance Eq (HTMLUnknownElement) where
+  (HTMLUnknownElement a) == (HTMLUnknownElement b) = js_eq a b
+
+instance PToJSRef HTMLUnknownElement where
+  pToJSRef = unHTMLUnknownElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLUnknownElement where
+  pFromJSRef = HTMLUnknownElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLUnknownElement where
+  toJSRef = return . unHTMLUnknownElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLUnknownElement where
+  fromJSRef = return . fmap HTMLUnknownElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLElement HTMLUnknownElement
+instance IsElement HTMLUnknownElement
+instance IsNode HTMLUnknownElement
+instance IsEventTarget HTMLUnknownElement
+instance IsGObject HTMLUnknownElement where
+  toGObject = GObject . castRef . unHTMLUnknownElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLUnknownElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLUnknownElement :: IsGObject obj => obj -> HTMLUnknownElement
+castToHTMLUnknownElement = castTo gTypeHTMLUnknownElement "HTMLUnknownElement"
+
+foreign import javascript unsafe "window[\"HTMLUnknownElement\"]" gTypeHTMLUnknownElement' :: JSRef GType
+gTypeHTMLUnknownElement = GType gTypeHTMLUnknownElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HTMLVideoElement }
+
+instance Eq (HTMLVideoElement) where
+  (HTMLVideoElement a) == (HTMLVideoElement b) = js_eq a b
+
+instance PToJSRef HTMLVideoElement where
+  pToJSRef = unHTMLVideoElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HTMLVideoElement where
+  pFromJSRef = HTMLVideoElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HTMLVideoElement where
+  toJSRef = return . unHTMLVideoElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HTMLVideoElement where
+  fromJSRef = return . fmap HTMLVideoElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsHTMLMediaElement HTMLVideoElement
+instance IsHTMLElement HTMLVideoElement
+instance IsElement HTMLVideoElement
+instance IsNode HTMLVideoElement
+instance IsEventTarget HTMLVideoElement
+instance IsGObject HTMLVideoElement where
+  toGObject = GObject . castRef . unHTMLVideoElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HTMLVideoElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHTMLVideoElement :: IsGObject obj => obj -> HTMLVideoElement
+castToHTMLVideoElement = castTo gTypeHTMLVideoElement "HTMLVideoElement"
+
+foreign import javascript unsafe "window[\"HTMLVideoElement\"]" gTypeHTMLVideoElement' :: JSRef GType
+gTypeHTMLVideoElement = GType gTypeHTMLVideoElement'
+#else
+type IsHTMLVideoElement o = HTMLVideoElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef HashChangeEvent }
+
+instance Eq (HashChangeEvent) where
+  (HashChangeEvent a) == (HashChangeEvent b) = js_eq a b
+
+instance PToJSRef HashChangeEvent where
+  pToJSRef = unHashChangeEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef HashChangeEvent where
+  pFromJSRef = HashChangeEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef HashChangeEvent where
+  toJSRef = return . unHashChangeEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef HashChangeEvent where
+  fromJSRef = return . fmap HashChangeEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent HashChangeEvent
+instance IsGObject HashChangeEvent where
+  toGObject = GObject . castRef . unHashChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = HashChangeEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHashChangeEvent :: IsGObject obj => obj -> HashChangeEvent
+castToHashChangeEvent = castTo gTypeHashChangeEvent "HashChangeEvent"
+
+foreign import javascript unsafe "window[\"HashChangeEvent\"]" gTypeHashChangeEvent' :: JSRef GType
+gTypeHashChangeEvent = GType gTypeHashChangeEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef History }
+
+instance Eq (History) where
+  (History a) == (History b) = js_eq a b
+
+instance PToJSRef History where
+  pToJSRef = unHistory
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef History where
+  pFromJSRef = History
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef History where
+  toJSRef = return . unHistory
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef History where
+  fromJSRef = return . fmap History . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject History where
+  toGObject = GObject . castRef . unHistory
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = History . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToHistory :: IsGObject obj => obj -> History
+castToHistory = castTo gTypeHistory "History"
+
+foreign import javascript unsafe "window[\"History\"]" gTypeHistory' :: JSRef GType
+gTypeHistory = GType gTypeHistory'
+#else
+type IsHistory o = HistoryClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBAny }
+
+instance Eq (IDBAny) where
+  (IDBAny a) == (IDBAny b) = js_eq a b
+
+instance PToJSRef IDBAny where
+  pToJSRef = unIDBAny
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBAny where
+  pFromJSRef = IDBAny
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBAny where
+  toJSRef = return . unIDBAny
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBAny where
+  fromJSRef = return . fmap IDBAny . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject IDBAny where
+  toGObject = GObject . castRef . unIDBAny
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBAny . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBAny :: IsGObject obj => obj -> IDBAny
+castToIDBAny = castTo gTypeIDBAny "IDBAny"
+
+foreign import javascript unsafe "window[\"IDBAny\"]" gTypeIDBAny' :: JSRef GType
+gTypeIDBAny = GType gTypeIDBAny'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBCursor }
+
+instance Eq (IDBCursor) where
+  (IDBCursor a) == (IDBCursor b) = js_eq a b
+
+instance PToJSRef IDBCursor where
+  pToJSRef = unIDBCursor
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBCursor where
+  pFromJSRef = IDBCursor
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBCursor where
+  toJSRef = return . unIDBCursor
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBCursor where
+  fromJSRef = return . fmap IDBCursor . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsIDBCursor o
+toIDBCursor :: IsIDBCursor o => o -> IDBCursor
+toIDBCursor = unsafeCastGObject . toGObject
+
+instance IsIDBCursor IDBCursor
+instance IsGObject IDBCursor where
+  toGObject = GObject . castRef . unIDBCursor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBCursor . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBCursor :: IsGObject obj => obj -> IDBCursor
+castToIDBCursor = castTo gTypeIDBCursor "IDBCursor"
+
+foreign import javascript unsafe "window[\"IDBCursor\"]" gTypeIDBCursor' :: JSRef GType
+gTypeIDBCursor = GType gTypeIDBCursor'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBCursorWithValue }
+
+instance Eq (IDBCursorWithValue) where
+  (IDBCursorWithValue a) == (IDBCursorWithValue b) = js_eq a b
+
+instance PToJSRef IDBCursorWithValue where
+  pToJSRef = unIDBCursorWithValue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBCursorWithValue where
+  pFromJSRef = IDBCursorWithValue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBCursorWithValue where
+  toJSRef = return . unIDBCursorWithValue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBCursorWithValue where
+  fromJSRef = return . fmap IDBCursorWithValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsIDBCursor IDBCursorWithValue
+instance IsGObject IDBCursorWithValue where
+  toGObject = GObject . castRef . unIDBCursorWithValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBCursorWithValue . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBCursorWithValue :: IsGObject obj => obj -> IDBCursorWithValue
+castToIDBCursorWithValue = castTo gTypeIDBCursorWithValue "IDBCursorWithValue"
+
+foreign import javascript unsafe "window[\"IDBCursorWithValue\"]" gTypeIDBCursorWithValue' :: JSRef GType
+gTypeIDBCursorWithValue = GType gTypeIDBCursorWithValue'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBDatabase }
+
+instance Eq (IDBDatabase) where
+  (IDBDatabase a) == (IDBDatabase b) = js_eq a b
+
+instance PToJSRef IDBDatabase where
+  pToJSRef = unIDBDatabase
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBDatabase where
+  pFromJSRef = IDBDatabase
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBDatabase where
+  toJSRef = return . unIDBDatabase
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBDatabase where
+  fromJSRef = return . fmap IDBDatabase . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget IDBDatabase
+instance IsGObject IDBDatabase where
+  toGObject = GObject . castRef . unIDBDatabase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBDatabase . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBDatabase :: IsGObject obj => obj -> IDBDatabase
+castToIDBDatabase = castTo gTypeIDBDatabase "IDBDatabase"
+
+foreign import javascript unsafe "window[\"IDBDatabase\"]" gTypeIDBDatabase' :: JSRef GType
+gTypeIDBDatabase = GType gTypeIDBDatabase'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBFactory }
+
+instance Eq (IDBFactory) where
+  (IDBFactory a) == (IDBFactory b) = js_eq a b
+
+instance PToJSRef IDBFactory where
+  pToJSRef = unIDBFactory
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBFactory where
+  pFromJSRef = IDBFactory
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBFactory where
+  toJSRef = return . unIDBFactory
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBFactory where
+  fromJSRef = return . fmap IDBFactory . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject IDBFactory where
+  toGObject = GObject . castRef . unIDBFactory
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBFactory . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBFactory :: IsGObject obj => obj -> IDBFactory
+castToIDBFactory = castTo gTypeIDBFactory "IDBFactory"
+
+foreign import javascript unsafe "window[\"IDBFactory\"]" gTypeIDBFactory' :: JSRef GType
+gTypeIDBFactory = GType gTypeIDBFactory'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBIndex }
+
+instance Eq (IDBIndex) where
+  (IDBIndex a) == (IDBIndex b) = js_eq a b
+
+instance PToJSRef IDBIndex where
+  pToJSRef = unIDBIndex
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBIndex where
+  pFromJSRef = IDBIndex
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBIndex where
+  toJSRef = return . unIDBIndex
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBIndex where
+  fromJSRef = return . fmap IDBIndex . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject IDBIndex where
+  toGObject = GObject . castRef . unIDBIndex
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBIndex . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBIndex :: IsGObject obj => obj -> IDBIndex
+castToIDBIndex = castTo gTypeIDBIndex "IDBIndex"
+
+foreign import javascript unsafe "window[\"IDBIndex\"]" gTypeIDBIndex' :: JSRef GType
+gTypeIDBIndex = GType gTypeIDBIndex'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBKeyRange }
+
+instance Eq (IDBKeyRange) where
+  (IDBKeyRange a) == (IDBKeyRange b) = js_eq a b
+
+instance PToJSRef IDBKeyRange where
+  pToJSRef = unIDBKeyRange
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBKeyRange where
+  pFromJSRef = IDBKeyRange
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBKeyRange where
+  toJSRef = return . unIDBKeyRange
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBKeyRange where
+  fromJSRef = return . fmap IDBKeyRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject IDBKeyRange where
+  toGObject = GObject . castRef . unIDBKeyRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBKeyRange . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBKeyRange :: IsGObject obj => obj -> IDBKeyRange
+castToIDBKeyRange = castTo gTypeIDBKeyRange "IDBKeyRange"
+
+foreign import javascript unsafe "window[\"IDBKeyRange\"]" gTypeIDBKeyRange' :: JSRef GType
+gTypeIDBKeyRange = GType gTypeIDBKeyRange'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBObjectStore }
+
+instance Eq (IDBObjectStore) where
+  (IDBObjectStore a) == (IDBObjectStore b) = js_eq a b
+
+instance PToJSRef IDBObjectStore where
+  pToJSRef = unIDBObjectStore
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBObjectStore where
+  pFromJSRef = IDBObjectStore
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBObjectStore where
+  toJSRef = return . unIDBObjectStore
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBObjectStore where
+  fromJSRef = return . fmap IDBObjectStore . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject IDBObjectStore where
+  toGObject = GObject . castRef . unIDBObjectStore
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBObjectStore . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBObjectStore :: IsGObject obj => obj -> IDBObjectStore
+castToIDBObjectStore = castTo gTypeIDBObjectStore "IDBObjectStore"
+
+foreign import javascript unsafe "window[\"IDBObjectStore\"]" gTypeIDBObjectStore' :: JSRef GType
+gTypeIDBObjectStore = GType gTypeIDBObjectStore'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBOpenDBRequest }
+
+instance Eq (IDBOpenDBRequest) where
+  (IDBOpenDBRequest a) == (IDBOpenDBRequest b) = js_eq a b
+
+instance PToJSRef IDBOpenDBRequest where
+  pToJSRef = unIDBOpenDBRequest
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBOpenDBRequest where
+  pFromJSRef = IDBOpenDBRequest
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBOpenDBRequest where
+  toJSRef = return . unIDBOpenDBRequest
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBOpenDBRequest where
+  fromJSRef = return . fmap IDBOpenDBRequest . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsIDBRequest IDBOpenDBRequest
+instance IsEventTarget IDBOpenDBRequest
+instance IsGObject IDBOpenDBRequest where
+  toGObject = GObject . castRef . unIDBOpenDBRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBOpenDBRequest . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBOpenDBRequest :: IsGObject obj => obj -> IDBOpenDBRequest
+castToIDBOpenDBRequest = castTo gTypeIDBOpenDBRequest "IDBOpenDBRequest"
+
+foreign import javascript unsafe "window[\"IDBOpenDBRequest\"]" gTypeIDBOpenDBRequest' :: JSRef GType
+gTypeIDBOpenDBRequest = GType gTypeIDBOpenDBRequest'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBRequest }
+
+instance Eq (IDBRequest) where
+  (IDBRequest a) == (IDBRequest b) = js_eq a b
+
+instance PToJSRef IDBRequest where
+  pToJSRef = unIDBRequest
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBRequest where
+  pFromJSRef = IDBRequest
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBRequest where
+  toJSRef = return . unIDBRequest
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBRequest where
+  fromJSRef = return . fmap IDBRequest . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unIDBRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBRequest . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBRequest :: IsGObject obj => obj -> IDBRequest
+castToIDBRequest = castTo gTypeIDBRequest "IDBRequest"
+
+foreign import javascript unsafe "window[\"IDBRequest\"]" gTypeIDBRequest' :: JSRef GType
+gTypeIDBRequest = GType gTypeIDBRequest'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBTransaction }
+
+instance Eq (IDBTransaction) where
+  (IDBTransaction a) == (IDBTransaction b) = js_eq a b
+
+instance PToJSRef IDBTransaction where
+  pToJSRef = unIDBTransaction
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBTransaction where
+  pFromJSRef = IDBTransaction
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBTransaction where
+  toJSRef = return . unIDBTransaction
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBTransaction where
+  fromJSRef = return . fmap IDBTransaction . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget IDBTransaction
+instance IsGObject IDBTransaction where
+  toGObject = GObject . castRef . unIDBTransaction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBTransaction . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBTransaction :: IsGObject obj => obj -> IDBTransaction
+castToIDBTransaction = castTo gTypeIDBTransaction "IDBTransaction"
+
+foreign import javascript unsafe "window[\"IDBTransaction\"]" gTypeIDBTransaction' :: JSRef GType
+gTypeIDBTransaction = GType gTypeIDBTransaction'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef IDBVersionChangeEvent }
+
+instance Eq (IDBVersionChangeEvent) where
+  (IDBVersionChangeEvent a) == (IDBVersionChangeEvent b) = js_eq a b
+
+instance PToJSRef IDBVersionChangeEvent where
+  pToJSRef = unIDBVersionChangeEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef IDBVersionChangeEvent where
+  pFromJSRef = IDBVersionChangeEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef IDBVersionChangeEvent where
+  toJSRef = return . unIDBVersionChangeEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef IDBVersionChangeEvent where
+  fromJSRef = return . fmap IDBVersionChangeEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent IDBVersionChangeEvent
+instance IsGObject IDBVersionChangeEvent where
+  toGObject = GObject . castRef . unIDBVersionChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = IDBVersionChangeEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToIDBVersionChangeEvent :: IsGObject obj => obj -> IDBVersionChangeEvent
+castToIDBVersionChangeEvent = castTo gTypeIDBVersionChangeEvent "IDBVersionChangeEvent"
+
+foreign import javascript unsafe "window[\"IDBVersionChangeEvent\"]" gTypeIDBVersionChangeEvent' :: JSRef GType
+gTypeIDBVersionChangeEvent = GType gTypeIDBVersionChangeEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ImageData }
+
+instance Eq (ImageData) where
+  (ImageData a) == (ImageData b) = js_eq a b
+
+instance PToJSRef ImageData where
+  pToJSRef = unImageData
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ImageData where
+  pFromJSRef = ImageData
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ImageData where
+  toJSRef = return . unImageData
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ImageData where
+  fromJSRef = return . fmap ImageData . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ImageData where
+  toGObject = GObject . castRef . unImageData
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ImageData . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToImageData :: IsGObject obj => obj -> ImageData
+castToImageData = castTo gTypeImageData "ImageData"
+
+foreign import javascript unsafe "window[\"ImageData\"]" gTypeImageData' :: JSRef GType
+gTypeImageData = GType gTypeImageData'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef InspectorFrontendHost }
+
+instance Eq (InspectorFrontendHost) where
+  (InspectorFrontendHost a) == (InspectorFrontendHost b) = js_eq a b
+
+instance PToJSRef InspectorFrontendHost where
+  pToJSRef = unInspectorFrontendHost
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef InspectorFrontendHost where
+  pFromJSRef = InspectorFrontendHost
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef InspectorFrontendHost where
+  toJSRef = return . unInspectorFrontendHost
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef InspectorFrontendHost where
+  fromJSRef = return . fmap InspectorFrontendHost . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject InspectorFrontendHost where
+  toGObject = GObject . castRef . unInspectorFrontendHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = InspectorFrontendHost . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInspectorFrontendHost :: IsGObject obj => obj -> InspectorFrontendHost
+castToInspectorFrontendHost = castTo gTypeInspectorFrontendHost "InspectorFrontendHost"
+
+foreign import javascript unsafe "window[\"InspectorFrontendHost\"]" gTypeInspectorFrontendHost' :: JSRef GType
+gTypeInspectorFrontendHost = GType gTypeInspectorFrontendHost'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef InternalSettings }
+
+instance Eq (InternalSettings) where
+  (InternalSettings a) == (InternalSettings b) = js_eq a b
+
+instance PToJSRef InternalSettings where
+  pToJSRef = unInternalSettings
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef InternalSettings where
+  pFromJSRef = InternalSettings
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef InternalSettings where
+  toJSRef = return . unInternalSettings
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef InternalSettings where
+  fromJSRef = return . fmap InternalSettings . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject InternalSettings where
+  toGObject = GObject . castRef . unInternalSettings
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = InternalSettings . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInternalSettings :: IsGObject obj => obj -> InternalSettings
+castToInternalSettings = castTo gTypeInternalSettings "InternalSettings"
+
+foreign import javascript unsafe "window[\"InternalSettings\"]" gTypeInternalSettings' :: JSRef GType
+gTypeInternalSettings = GType gTypeInternalSettings'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Internals }
+
+instance Eq (Internals) where
+  (Internals a) == (Internals b) = js_eq a b
+
+instance PToJSRef Internals where
+  pToJSRef = unInternals
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Internals where
+  pFromJSRef = Internals
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Internals where
+  toJSRef = return . unInternals
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Internals where
+  fromJSRef = return . fmap Internals . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Internals where
+  toGObject = GObject . castRef . unInternals
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Internals . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToInternals :: IsGObject obj => obj -> Internals
+castToInternals = castTo gTypeInternals "Internals"
+
+foreign import javascript unsafe "window[\"Internals\"]" gTypeInternals' :: JSRef GType
+gTypeInternals = GType gTypeInternals'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef KeyboardEvent }
+
+instance Eq (KeyboardEvent) where
+  (KeyboardEvent a) == (KeyboardEvent b) = js_eq a b
+
+instance PToJSRef KeyboardEvent where
+  pToJSRef = unKeyboardEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef KeyboardEvent where
+  pFromJSRef = KeyboardEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef KeyboardEvent where
+  toJSRef = return . unKeyboardEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef KeyboardEvent where
+  fromJSRef = return . fmap KeyboardEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsUIEvent KeyboardEvent
+instance IsEvent KeyboardEvent
+instance IsGObject KeyboardEvent where
+  toGObject = GObject . castRef . unKeyboardEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = KeyboardEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToKeyboardEvent :: IsGObject obj => obj -> KeyboardEvent
+castToKeyboardEvent = castTo gTypeKeyboardEvent "KeyboardEvent"
+
+foreign import javascript unsafe "window[\"KeyboardEvent\"]" gTypeKeyboardEvent' :: JSRef GType
+gTypeKeyboardEvent = GType gTypeKeyboardEvent'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsKeyboardEvent o = KeyboardEventClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Location }
+
+instance Eq (Location) where
+  (Location a) == (Location b) = js_eq a b
+
+instance PToJSRef Location where
+  pToJSRef = unLocation
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Location where
+  pFromJSRef = Location
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Location where
+  toJSRef = return . unLocation
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Location where
+  fromJSRef = return . fmap Location . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Location where
+  toGObject = GObject . castRef . unLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Location . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToLocation :: IsGObject obj => obj -> Location
+castToLocation = castTo gTypeLocation "Location"
+
+foreign import javascript unsafe "window[\"Location\"]" gTypeLocation' :: JSRef GType
+gTypeLocation = GType gTypeLocation'
+#else
+type IsLocation o = LocationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MallocStatistics }
+
+instance Eq (MallocStatistics) where
+  (MallocStatistics a) == (MallocStatistics b) = js_eq a b
+
+instance PToJSRef MallocStatistics where
+  pToJSRef = unMallocStatistics
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MallocStatistics where
+  pFromJSRef = MallocStatistics
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MallocStatistics where
+  toJSRef = return . unMallocStatistics
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MallocStatistics where
+  fromJSRef = return . fmap MallocStatistics . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MallocStatistics where
+  toGObject = GObject . castRef . unMallocStatistics
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MallocStatistics . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMallocStatistics :: IsGObject obj => obj -> MallocStatistics
+castToMallocStatistics = castTo gTypeMallocStatistics "MallocStatistics"
+
+foreign import javascript unsafe "window[\"MallocStatistics\"]" gTypeMallocStatistics' :: JSRef GType
+gTypeMallocStatistics = GType gTypeMallocStatistics'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaController }
+
+instance Eq (MediaController) where
+  (MediaController a) == (MediaController b) = js_eq a b
+
+instance PToJSRef MediaController where
+  pToJSRef = unMediaController
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaController where
+  pFromJSRef = MediaController
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaController where
+  toJSRef = return . unMediaController
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaController where
+  fromJSRef = return . fmap MediaController . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget MediaController
+instance IsGObject MediaController where
+  toGObject = GObject . castRef . unMediaController
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaController . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaController :: IsGObject obj => obj -> MediaController
+castToMediaController = castTo gTypeMediaController "MediaController"
+
+foreign import javascript unsafe "window[\"MediaController\"]" gTypeMediaController' :: JSRef GType
+gTypeMediaController = GType gTypeMediaController'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaControlsHost }
+
+instance Eq (MediaControlsHost) where
+  (MediaControlsHost a) == (MediaControlsHost b) = js_eq a b
+
+instance PToJSRef MediaControlsHost where
+  pToJSRef = unMediaControlsHost
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaControlsHost where
+  pFromJSRef = MediaControlsHost
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaControlsHost where
+  toJSRef = return . unMediaControlsHost
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaControlsHost where
+  fromJSRef = return . fmap MediaControlsHost . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaControlsHost where
+  toGObject = GObject . castRef . unMediaControlsHost
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaControlsHost . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaControlsHost :: IsGObject obj => obj -> MediaControlsHost
+castToMediaControlsHost = castTo gTypeMediaControlsHost "MediaControlsHost"
+
+foreign import javascript unsafe "window[\"MediaControlsHost\"]" gTypeMediaControlsHost' :: JSRef GType
+gTypeMediaControlsHost = GType gTypeMediaControlsHost'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaElementAudioSourceNode }
+
+instance Eq (MediaElementAudioSourceNode) where
+  (MediaElementAudioSourceNode a) == (MediaElementAudioSourceNode b) = js_eq a b
+
+instance PToJSRef MediaElementAudioSourceNode where
+  pToJSRef = unMediaElementAudioSourceNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaElementAudioSourceNode where
+  pFromJSRef = MediaElementAudioSourceNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaElementAudioSourceNode where
+  toJSRef = return . unMediaElementAudioSourceNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaElementAudioSourceNode where
+  fromJSRef = return . fmap MediaElementAudioSourceNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode MediaElementAudioSourceNode
+instance IsEventTarget MediaElementAudioSourceNode
+instance IsGObject MediaElementAudioSourceNode where
+  toGObject = GObject . castRef . unMediaElementAudioSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaElementAudioSourceNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaElementAudioSourceNode :: IsGObject obj => obj -> MediaElementAudioSourceNode
+castToMediaElementAudioSourceNode = castTo gTypeMediaElementAudioSourceNode "MediaElementAudioSourceNode"
+
+foreign import javascript unsafe "window[\"MediaElementAudioSourceNode\"]" gTypeMediaElementAudioSourceNode' :: JSRef GType
+gTypeMediaElementAudioSourceNode = GType gTypeMediaElementAudioSourceNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaError }
+
+instance Eq (MediaError) where
+  (MediaError a) == (MediaError b) = js_eq a b
+
+instance PToJSRef MediaError where
+  pToJSRef = unMediaError
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaError where
+  pFromJSRef = MediaError
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaError where
+  toJSRef = return . unMediaError
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaError where
+  fromJSRef = return . fmap MediaError . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaError where
+  toGObject = GObject . castRef . unMediaError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaError . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaError :: IsGObject obj => obj -> MediaError
+castToMediaError = castTo gTypeMediaError "MediaError"
+
+foreign import javascript unsafe "window[\"MediaError\"]" gTypeMediaError' :: JSRef GType
+gTypeMediaError = GType gTypeMediaError'
+#else
+type IsMediaError o = MediaErrorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaKeyError }
+
+instance Eq (MediaKeyError) where
+  (MediaKeyError a) == (MediaKeyError b) = js_eq a b
+
+instance PToJSRef MediaKeyError where
+  pToJSRef = unMediaKeyError
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaKeyError where
+  pFromJSRef = MediaKeyError
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaKeyError where
+  toJSRef = return . unMediaKeyError
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaKeyError where
+  fromJSRef = return . fmap MediaKeyError . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaKeyError where
+  toGObject = GObject . castRef . unMediaKeyError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyError . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyError :: IsGObject obj => obj -> MediaKeyError
+castToMediaKeyError = castTo gTypeMediaKeyError "MediaKeyError"
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyError\"]" gTypeMediaKeyError' :: JSRef GType
+gTypeMediaKeyError = GType gTypeMediaKeyError'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaKeyEvent }
+
+instance Eq (MediaKeyEvent) where
+  (MediaKeyEvent a) == (MediaKeyEvent b) = js_eq a b
+
+instance PToJSRef MediaKeyEvent where
+  pToJSRef = unMediaKeyEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaKeyEvent where
+  pFromJSRef = MediaKeyEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaKeyEvent where
+  toJSRef = return . unMediaKeyEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaKeyEvent where
+  fromJSRef = return . fmap MediaKeyEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent MediaKeyEvent
+instance IsGObject MediaKeyEvent where
+  toGObject = GObject . castRef . unMediaKeyEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyEvent :: IsGObject obj => obj -> MediaKeyEvent
+castToMediaKeyEvent = castTo gTypeMediaKeyEvent "MediaKeyEvent"
+
+foreign import javascript unsafe "window[\"MediaKeyEvent\"]" gTypeMediaKeyEvent' :: JSRef GType
+gTypeMediaKeyEvent = GType gTypeMediaKeyEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaKeyMessageEvent }
+
+instance Eq (MediaKeyMessageEvent) where
+  (MediaKeyMessageEvent a) == (MediaKeyMessageEvent b) = js_eq a b
+
+instance PToJSRef MediaKeyMessageEvent where
+  pToJSRef = unMediaKeyMessageEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaKeyMessageEvent where
+  pFromJSRef = MediaKeyMessageEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaKeyMessageEvent where
+  toJSRef = return . unMediaKeyMessageEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaKeyMessageEvent where
+  fromJSRef = return . fmap MediaKeyMessageEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent MediaKeyMessageEvent
+instance IsGObject MediaKeyMessageEvent where
+  toGObject = GObject . castRef . unMediaKeyMessageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyMessageEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyMessageEvent :: IsGObject obj => obj -> MediaKeyMessageEvent
+castToMediaKeyMessageEvent = castTo gTypeMediaKeyMessageEvent "MediaKeyMessageEvent"
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyMessageEvent\"]" gTypeMediaKeyMessageEvent' :: JSRef GType
+gTypeMediaKeyMessageEvent = GType gTypeMediaKeyMessageEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaKeyNeededEvent }
+
+instance Eq (MediaKeyNeededEvent) where
+  (MediaKeyNeededEvent a) == (MediaKeyNeededEvent b) = js_eq a b
+
+instance PToJSRef MediaKeyNeededEvent where
+  pToJSRef = unMediaKeyNeededEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaKeyNeededEvent where
+  pFromJSRef = MediaKeyNeededEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaKeyNeededEvent where
+  toJSRef = return . unMediaKeyNeededEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaKeyNeededEvent where
+  fromJSRef = return . fmap MediaKeyNeededEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent MediaKeyNeededEvent
+instance IsGObject MediaKeyNeededEvent where
+  toGObject = GObject . castRef . unMediaKeyNeededEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeyNeededEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeyNeededEvent :: IsGObject obj => obj -> MediaKeyNeededEvent
+castToMediaKeyNeededEvent = castTo gTypeMediaKeyNeededEvent "MediaKeyNeededEvent"
+
+foreign import javascript unsafe "window[\"MediaKeyNeededEvent\"]" gTypeMediaKeyNeededEvent' :: JSRef GType
+gTypeMediaKeyNeededEvent = GType gTypeMediaKeyNeededEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaKeySession }
+
+instance Eq (MediaKeySession) where
+  (MediaKeySession a) == (MediaKeySession b) = js_eq a b
+
+instance PToJSRef MediaKeySession where
+  pToJSRef = unMediaKeySession
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaKeySession where
+  pFromJSRef = MediaKeySession
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaKeySession where
+  toJSRef = return . unMediaKeySession
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaKeySession where
+  fromJSRef = return . fmap MediaKeySession . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget MediaKeySession
+instance IsGObject MediaKeySession where
+  toGObject = GObject . castRef . unMediaKeySession
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeySession . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeySession :: IsGObject obj => obj -> MediaKeySession
+castToMediaKeySession = castTo gTypeMediaKeySession "MediaKeySession"
+
+foreign import javascript unsafe "window[\"WebKitMediaKeySession\"]" gTypeMediaKeySession' :: JSRef GType
+gTypeMediaKeySession = GType gTypeMediaKeySession'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaKeys }
+
+instance Eq (MediaKeys) where
+  (MediaKeys a) == (MediaKeys b) = js_eq a b
+
+instance PToJSRef MediaKeys where
+  pToJSRef = unMediaKeys
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaKeys where
+  pFromJSRef = MediaKeys
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaKeys where
+  toJSRef = return . unMediaKeys
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaKeys where
+  fromJSRef = return . fmap MediaKeys . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaKeys where
+  toGObject = GObject . castRef . unMediaKeys
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaKeys . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaKeys :: IsGObject obj => obj -> MediaKeys
+castToMediaKeys = castTo gTypeMediaKeys "MediaKeys"
+
+foreign import javascript unsafe "window[\"WebKitMediaKeys\"]" gTypeMediaKeys' :: JSRef GType
+gTypeMediaKeys = GType gTypeMediaKeys'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaList }
+
+instance Eq (MediaList) where
+  (MediaList a) == (MediaList b) = js_eq a b
+
+instance PToJSRef MediaList where
+  pToJSRef = unMediaList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaList where
+  pFromJSRef = MediaList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaList where
+  toJSRef = return . unMediaList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaList where
+  fromJSRef = return . fmap MediaList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaList where
+  toGObject = GObject . castRef . unMediaList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaList :: IsGObject obj => obj -> MediaList
+castToMediaList = castTo gTypeMediaList "MediaList"
+
+foreign import javascript unsafe "window[\"MediaList\"]" gTypeMediaList' :: JSRef GType
+gTypeMediaList = GType gTypeMediaList'
+#else
+type IsMediaList o = MediaListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaQueryList }
+
+instance Eq (MediaQueryList) where
+  (MediaQueryList a) == (MediaQueryList b) = js_eq a b
+
+instance PToJSRef MediaQueryList where
+  pToJSRef = unMediaQueryList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaQueryList where
+  pFromJSRef = MediaQueryList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaQueryList where
+  toJSRef = return . unMediaQueryList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaQueryList where
+  fromJSRef = return . fmap MediaQueryList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaQueryList where
+  toGObject = GObject . castRef . unMediaQueryList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaQueryList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaQueryList :: IsGObject obj => obj -> MediaQueryList
+castToMediaQueryList = castTo gTypeMediaQueryList "MediaQueryList"
+
+foreign import javascript unsafe "window[\"MediaQueryList\"]" gTypeMediaQueryList' :: JSRef GType
+gTypeMediaQueryList = GType gTypeMediaQueryList'
+#else
+type IsMediaQueryList o = MediaQueryListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaSource }
+
+instance Eq (MediaSource) where
+  (MediaSource a) == (MediaSource b) = js_eq a b
+
+instance PToJSRef MediaSource where
+  pToJSRef = unMediaSource
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaSource where
+  pFromJSRef = MediaSource
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaSource where
+  toJSRef = return . unMediaSource
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaSource where
+  fromJSRef = return . fmap MediaSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget MediaSource
+instance IsGObject MediaSource where
+  toGObject = GObject . castRef . unMediaSource
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaSource . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaSource :: IsGObject obj => obj -> MediaSource
+castToMediaSource = castTo gTypeMediaSource "MediaSource"
+
+foreign import javascript unsafe "window[\"MediaSource\"]" gTypeMediaSource' :: JSRef GType
+gTypeMediaSource = GType gTypeMediaSource'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaSourceStates }
+
+instance Eq (MediaSourceStates) where
+  (MediaSourceStates a) == (MediaSourceStates b) = js_eq a b
+
+instance PToJSRef MediaSourceStates where
+  pToJSRef = unMediaSourceStates
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaSourceStates where
+  pFromJSRef = MediaSourceStates
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaSourceStates where
+  toJSRef = return . unMediaSourceStates
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaSourceStates where
+  fromJSRef = return . fmap MediaSourceStates . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaSourceStates where
+  toGObject = GObject . castRef . unMediaSourceStates
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaSourceStates . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaSourceStates :: IsGObject obj => obj -> MediaSourceStates
+castToMediaSourceStates = castTo gTypeMediaSourceStates "MediaSourceStates"
+
+foreign import javascript unsafe "window[\"MediaSourceStates\"]" gTypeMediaSourceStates' :: JSRef GType
+gTypeMediaSourceStates = GType gTypeMediaSourceStates'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaStream }
+
+instance Eq (MediaStream) where
+  (MediaStream a) == (MediaStream b) = js_eq a b
+
+instance PToJSRef MediaStream where
+  pToJSRef = unMediaStream
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaStream where
+  pFromJSRef = MediaStream
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaStream where
+  toJSRef = return . unMediaStream
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaStream where
+  fromJSRef = return . fmap MediaStream . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget MediaStream
+instance IsGObject MediaStream where
+  toGObject = GObject . castRef . unMediaStream
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStream . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStream :: IsGObject obj => obj -> MediaStream
+castToMediaStream = castTo gTypeMediaStream "MediaStream"
+
+foreign import javascript unsafe "window[\"webkitMediaStream\"]" gTypeMediaStream' :: JSRef GType
+gTypeMediaStream = GType gTypeMediaStream'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaStreamAudioDestinationNode }
+
+instance Eq (MediaStreamAudioDestinationNode) where
+  (MediaStreamAudioDestinationNode a) == (MediaStreamAudioDestinationNode b) = js_eq a b
+
+instance PToJSRef MediaStreamAudioDestinationNode where
+  pToJSRef = unMediaStreamAudioDestinationNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaStreamAudioDestinationNode where
+  pFromJSRef = MediaStreamAudioDestinationNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaStreamAudioDestinationNode where
+  toJSRef = return . unMediaStreamAudioDestinationNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaStreamAudioDestinationNode where
+  fromJSRef = return . fmap MediaStreamAudioDestinationNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode MediaStreamAudioDestinationNode
+instance IsEventTarget MediaStreamAudioDestinationNode
+instance IsGObject MediaStreamAudioDestinationNode where
+  toGObject = GObject . castRef . unMediaStreamAudioDestinationNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamAudioDestinationNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamAudioDestinationNode :: IsGObject obj => obj -> MediaStreamAudioDestinationNode
+castToMediaStreamAudioDestinationNode = castTo gTypeMediaStreamAudioDestinationNode "MediaStreamAudioDestinationNode"
+
+foreign import javascript unsafe "window[\"MediaStreamAudioDestinationNode\"]" gTypeMediaStreamAudioDestinationNode' :: JSRef GType
+gTypeMediaStreamAudioDestinationNode = GType gTypeMediaStreamAudioDestinationNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaStreamAudioSourceNode }
+
+instance Eq (MediaStreamAudioSourceNode) where
+  (MediaStreamAudioSourceNode a) == (MediaStreamAudioSourceNode b) = js_eq a b
+
+instance PToJSRef MediaStreamAudioSourceNode where
+  pToJSRef = unMediaStreamAudioSourceNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaStreamAudioSourceNode where
+  pFromJSRef = MediaStreamAudioSourceNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaStreamAudioSourceNode where
+  toJSRef = return . unMediaStreamAudioSourceNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaStreamAudioSourceNode where
+  fromJSRef = return . fmap MediaStreamAudioSourceNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode MediaStreamAudioSourceNode
+instance IsEventTarget MediaStreamAudioSourceNode
+instance IsGObject MediaStreamAudioSourceNode where
+  toGObject = GObject . castRef . unMediaStreamAudioSourceNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamAudioSourceNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamAudioSourceNode :: IsGObject obj => obj -> MediaStreamAudioSourceNode
+castToMediaStreamAudioSourceNode = castTo gTypeMediaStreamAudioSourceNode "MediaStreamAudioSourceNode"
+
+foreign import javascript unsafe "window[\"MediaStreamAudioSourceNode\"]" gTypeMediaStreamAudioSourceNode' :: JSRef GType
+gTypeMediaStreamAudioSourceNode = GType gTypeMediaStreamAudioSourceNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaStreamCapabilities }
+
+instance Eq (MediaStreamCapabilities) where
+  (MediaStreamCapabilities a) == (MediaStreamCapabilities b) = js_eq a b
+
+instance PToJSRef MediaStreamCapabilities where
+  pToJSRef = unMediaStreamCapabilities
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaStreamCapabilities where
+  pFromJSRef = MediaStreamCapabilities
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaStreamCapabilities where
+  toJSRef = return . unMediaStreamCapabilities
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaStreamCapabilities where
+  fromJSRef = return . fmap MediaStreamCapabilities . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsMediaStreamCapabilities o
+toMediaStreamCapabilities :: IsMediaStreamCapabilities o => o -> MediaStreamCapabilities
+toMediaStreamCapabilities = unsafeCastGObject . toGObject
+
+instance IsMediaStreamCapabilities MediaStreamCapabilities
+instance IsGObject MediaStreamCapabilities where
+  toGObject = GObject . castRef . unMediaStreamCapabilities
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamCapabilities . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamCapabilities :: IsGObject obj => obj -> MediaStreamCapabilities
+castToMediaStreamCapabilities = castTo gTypeMediaStreamCapabilities "MediaStreamCapabilities"
+
+foreign import javascript unsafe "window[\"MediaStreamCapabilities\"]" gTypeMediaStreamCapabilities' :: JSRef GType
+gTypeMediaStreamCapabilities = GType gTypeMediaStreamCapabilities'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaStreamEvent }
+
+instance Eq (MediaStreamEvent) where
+  (MediaStreamEvent a) == (MediaStreamEvent b) = js_eq a b
+
+instance PToJSRef MediaStreamEvent where
+  pToJSRef = unMediaStreamEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaStreamEvent where
+  pFromJSRef = MediaStreamEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaStreamEvent where
+  toJSRef = return . unMediaStreamEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaStreamEvent where
+  fromJSRef = return . fmap MediaStreamEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent MediaStreamEvent
+instance IsGObject MediaStreamEvent where
+  toGObject = GObject . castRef . unMediaStreamEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamEvent :: IsGObject obj => obj -> MediaStreamEvent
+castToMediaStreamEvent = castTo gTypeMediaStreamEvent "MediaStreamEvent"
+
+foreign import javascript unsafe "window[\"MediaStreamEvent\"]" gTypeMediaStreamEvent' :: JSRef GType
+gTypeMediaStreamEvent = GType gTypeMediaStreamEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaStreamTrack }
+
+instance Eq (MediaStreamTrack) where
+  (MediaStreamTrack a) == (MediaStreamTrack b) = js_eq a b
+
+instance PToJSRef MediaStreamTrack where
+  pToJSRef = unMediaStreamTrack
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaStreamTrack where
+  pFromJSRef = MediaStreamTrack
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaStreamTrack where
+  toJSRef = return . unMediaStreamTrack
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaStreamTrack where
+  fromJSRef = return . fmap MediaStreamTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unMediaStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamTrack . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamTrack :: IsGObject obj => obj -> MediaStreamTrack
+castToMediaStreamTrack = castTo gTypeMediaStreamTrack "MediaStreamTrack"
+
+foreign import javascript unsafe "window[\"MediaStreamTrack\"]" gTypeMediaStreamTrack' :: JSRef GType
+gTypeMediaStreamTrack = GType gTypeMediaStreamTrack'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaStreamTrackEvent }
+
+instance Eq (MediaStreamTrackEvent) where
+  (MediaStreamTrackEvent a) == (MediaStreamTrackEvent b) = js_eq a b
+
+instance PToJSRef MediaStreamTrackEvent where
+  pToJSRef = unMediaStreamTrackEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaStreamTrackEvent where
+  pFromJSRef = MediaStreamTrackEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaStreamTrackEvent where
+  toJSRef = return . unMediaStreamTrackEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaStreamTrackEvent where
+  fromJSRef = return . fmap MediaStreamTrackEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent MediaStreamTrackEvent
+instance IsGObject MediaStreamTrackEvent where
+  toGObject = GObject . castRef . unMediaStreamTrackEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaStreamTrackEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaStreamTrackEvent :: IsGObject obj => obj -> MediaStreamTrackEvent
+castToMediaStreamTrackEvent = castTo gTypeMediaStreamTrackEvent "MediaStreamTrackEvent"
+
+foreign import javascript unsafe "window[\"MediaStreamTrackEvent\"]" gTypeMediaStreamTrackEvent' :: JSRef GType
+gTypeMediaStreamTrackEvent = GType gTypeMediaStreamTrackEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaTrackConstraint }
+
+instance Eq (MediaTrackConstraint) where
+  (MediaTrackConstraint a) == (MediaTrackConstraint b) = js_eq a b
+
+instance PToJSRef MediaTrackConstraint where
+  pToJSRef = unMediaTrackConstraint
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaTrackConstraint where
+  pFromJSRef = MediaTrackConstraint
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaTrackConstraint where
+  toJSRef = return . unMediaTrackConstraint
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaTrackConstraint where
+  fromJSRef = return . fmap MediaTrackConstraint . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaTrackConstraint where
+  toGObject = GObject . castRef . unMediaTrackConstraint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraint . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraint :: IsGObject obj => obj -> MediaTrackConstraint
+castToMediaTrackConstraint = castTo gTypeMediaTrackConstraint "MediaTrackConstraint"
+
+foreign import javascript unsafe "window[\"MediaTrackConstraint\"]" gTypeMediaTrackConstraint' :: JSRef GType
+gTypeMediaTrackConstraint = GType gTypeMediaTrackConstraint'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaTrackConstraintSet }
+
+instance Eq (MediaTrackConstraintSet) where
+  (MediaTrackConstraintSet a) == (MediaTrackConstraintSet b) = js_eq a b
+
+instance PToJSRef MediaTrackConstraintSet where
+  pToJSRef = unMediaTrackConstraintSet
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaTrackConstraintSet where
+  pFromJSRef = MediaTrackConstraintSet
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaTrackConstraintSet where
+  toJSRef = return . unMediaTrackConstraintSet
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaTrackConstraintSet where
+  fromJSRef = return . fmap MediaTrackConstraintSet . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaTrackConstraintSet where
+  toGObject = GObject . castRef . unMediaTrackConstraintSet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraintSet . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraintSet :: IsGObject obj => obj -> MediaTrackConstraintSet
+castToMediaTrackConstraintSet = castTo gTypeMediaTrackConstraintSet "MediaTrackConstraintSet"
+
+foreign import javascript unsafe "window[\"MediaTrackConstraintSet\"]" gTypeMediaTrackConstraintSet' :: JSRef GType
+gTypeMediaTrackConstraintSet = GType gTypeMediaTrackConstraintSet'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MediaTrackConstraints }
+
+instance Eq (MediaTrackConstraints) where
+  (MediaTrackConstraints a) == (MediaTrackConstraints b) = js_eq a b
+
+instance PToJSRef MediaTrackConstraints where
+  pToJSRef = unMediaTrackConstraints
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MediaTrackConstraints where
+  pFromJSRef = MediaTrackConstraints
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MediaTrackConstraints where
+  toJSRef = return . unMediaTrackConstraints
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MediaTrackConstraints where
+  fromJSRef = return . fmap MediaTrackConstraints . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MediaTrackConstraints where
+  toGObject = GObject . castRef . unMediaTrackConstraints
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MediaTrackConstraints . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMediaTrackConstraints :: IsGObject obj => obj -> MediaTrackConstraints
+castToMediaTrackConstraints = castTo gTypeMediaTrackConstraints "MediaTrackConstraints"
+
+foreign import javascript unsafe "window[\"MediaTrackConstraints\"]" gTypeMediaTrackConstraints' :: JSRef GType
+gTypeMediaTrackConstraints = GType gTypeMediaTrackConstraints'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MemoryInfo }
+
+instance Eq (MemoryInfo) where
+  (MemoryInfo a) == (MemoryInfo b) = js_eq a b
+
+instance PToJSRef MemoryInfo where
+  pToJSRef = unMemoryInfo
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MemoryInfo where
+  pFromJSRef = MemoryInfo
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MemoryInfo where
+  toJSRef = return . unMemoryInfo
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MemoryInfo where
+  fromJSRef = return . fmap MemoryInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MemoryInfo where
+  toGObject = GObject . castRef . unMemoryInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MemoryInfo . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMemoryInfo :: IsGObject obj => obj -> MemoryInfo
+castToMemoryInfo = castTo gTypeMemoryInfo "MemoryInfo"
+
+foreign import javascript unsafe "window[\"MemoryInfo\"]" gTypeMemoryInfo' :: JSRef GType
+gTypeMemoryInfo = GType gTypeMemoryInfo'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MessageChannel }
+
+instance Eq (MessageChannel) where
+  (MessageChannel a) == (MessageChannel b) = js_eq a b
+
+instance PToJSRef MessageChannel where
+  pToJSRef = unMessageChannel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MessageChannel where
+  pFromJSRef = MessageChannel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MessageChannel where
+  toJSRef = return . unMessageChannel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MessageChannel where
+  fromJSRef = return . fmap MessageChannel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MessageChannel where
+  toGObject = GObject . castRef . unMessageChannel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessageChannel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessageChannel :: IsGObject obj => obj -> MessageChannel
+castToMessageChannel = castTo gTypeMessageChannel "MessageChannel"
+
+foreign import javascript unsafe "window[\"MessageChannel\"]" gTypeMessageChannel' :: JSRef GType
+gTypeMessageChannel = GType gTypeMessageChannel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MessageEvent }
+
+instance Eq (MessageEvent) where
+  (MessageEvent a) == (MessageEvent b) = js_eq a b
+
+instance PToJSRef MessageEvent where
+  pToJSRef = unMessageEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MessageEvent where
+  pFromJSRef = MessageEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MessageEvent where
+  toJSRef = return . unMessageEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MessageEvent where
+  fromJSRef = return . fmap MessageEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent MessageEvent
+instance IsGObject MessageEvent where
+  toGObject = GObject . castRef . unMessageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessageEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessageEvent :: IsGObject obj => obj -> MessageEvent
+castToMessageEvent = castTo gTypeMessageEvent "MessageEvent"
+
+foreign import javascript unsafe "window[\"MessageEvent\"]" gTypeMessageEvent' :: JSRef GType
+gTypeMessageEvent = GType gTypeMessageEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MessagePort }
+
+instance Eq (MessagePort) where
+  (MessagePort a) == (MessagePort b) = js_eq a b
+
+instance PToJSRef MessagePort where
+  pToJSRef = unMessagePort
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MessagePort where
+  pFromJSRef = MessagePort
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MessagePort where
+  toJSRef = return . unMessagePort
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MessagePort where
+  fromJSRef = return . fmap MessagePort . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget MessagePort
+instance IsGObject MessagePort where
+  toGObject = GObject . castRef . unMessagePort
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MessagePort . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMessagePort :: IsGObject obj => obj -> MessagePort
+castToMessagePort = castTo gTypeMessagePort "MessagePort"
+
+foreign import javascript unsafe "window[\"MessagePort\"]" gTypeMessagePort' :: JSRef GType
+gTypeMessagePort = GType gTypeMessagePort'
+#else
+type IsMessagePort o = MessagePortClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MimeType }
+
+instance Eq (MimeType) where
+  (MimeType a) == (MimeType b) = js_eq a b
+
+instance PToJSRef MimeType where
+  pToJSRef = unMimeType
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MimeType where
+  pFromJSRef = MimeType
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MimeType where
+  toJSRef = return . unMimeType
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MimeType where
+  fromJSRef = return . fmap MimeType . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MimeType where
+  toGObject = GObject . castRef . unMimeType
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MimeType . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMimeType :: IsGObject obj => obj -> MimeType
+castToMimeType = castTo gTypeMimeType "MimeType"
+
+foreign import javascript unsafe "window[\"MimeType\"]" gTypeMimeType' :: JSRef GType
+gTypeMimeType = GType gTypeMimeType'
+#else
+type IsMimeType o = MimeTypeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MimeTypeArray }
+
+instance Eq (MimeTypeArray) where
+  (MimeTypeArray a) == (MimeTypeArray b) = js_eq a b
+
+instance PToJSRef MimeTypeArray where
+  pToJSRef = unMimeTypeArray
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MimeTypeArray where
+  pFromJSRef = MimeTypeArray
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MimeTypeArray where
+  toJSRef = return . unMimeTypeArray
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MimeTypeArray where
+  fromJSRef = return . fmap MimeTypeArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MimeTypeArray where
+  toGObject = GObject . castRef . unMimeTypeArray
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MimeTypeArray . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMimeTypeArray :: IsGObject obj => obj -> MimeTypeArray
+castToMimeTypeArray = castTo gTypeMimeTypeArray "MimeTypeArray"
+
+foreign import javascript unsafe "window[\"MimeTypeArray\"]" gTypeMimeTypeArray' :: JSRef GType
+gTypeMimeTypeArray = GType gTypeMimeTypeArray'
+#else
+type IsMimeTypeArray o = MimeTypeArrayClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MouseEvent }
+
+instance Eq (MouseEvent) where
+  (MouseEvent a) == (MouseEvent b) = js_eq a b
+
+instance PToJSRef MouseEvent where
+  pToJSRef = unMouseEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MouseEvent where
+  pFromJSRef = MouseEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MouseEvent where
+  toJSRef = return . unMouseEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MouseEvent where
+  fromJSRef = return . fmap MouseEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unMouseEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MouseEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMouseEvent :: IsGObject obj => obj -> MouseEvent
+castToMouseEvent = castTo gTypeMouseEvent "MouseEvent"
+
+foreign import javascript unsafe "window[\"MouseEvent\"]" gTypeMouseEvent' :: JSRef GType
+gTypeMouseEvent = GType gTypeMouseEvent'
+#else
+type IsMouseEvent o = MouseEventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MutationEvent }
+
+instance Eq (MutationEvent) where
+  (MutationEvent a) == (MutationEvent b) = js_eq a b
+
+instance PToJSRef MutationEvent where
+  pToJSRef = unMutationEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MutationEvent where
+  pFromJSRef = MutationEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MutationEvent where
+  toJSRef = return . unMutationEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MutationEvent where
+  fromJSRef = return . fmap MutationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent MutationEvent
+instance IsGObject MutationEvent where
+  toGObject = GObject . castRef . unMutationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationEvent :: IsGObject obj => obj -> MutationEvent
+castToMutationEvent = castTo gTypeMutationEvent "MutationEvent"
+
+foreign import javascript unsafe "window[\"MutationEvent\"]" gTypeMutationEvent' :: JSRef GType
+gTypeMutationEvent = GType gTypeMutationEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MutationObserver }
+
+instance Eq (MutationObserver) where
+  (MutationObserver a) == (MutationObserver b) = js_eq a b
+
+instance PToJSRef MutationObserver where
+  pToJSRef = unMutationObserver
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MutationObserver where
+  pFromJSRef = MutationObserver
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MutationObserver where
+  toJSRef = return . unMutationObserver
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MutationObserver where
+  fromJSRef = return . fmap MutationObserver . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MutationObserver where
+  toGObject = GObject . castRef . unMutationObserver
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationObserver . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationObserver :: IsGObject obj => obj -> MutationObserver
+castToMutationObserver = castTo gTypeMutationObserver "MutationObserver"
+
+foreign import javascript unsafe "window[\"MutationObserver\"]" gTypeMutationObserver' :: JSRef GType
+gTypeMutationObserver = GType gTypeMutationObserver'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef MutationRecord }
+
+instance Eq (MutationRecord) where
+  (MutationRecord a) == (MutationRecord b) = js_eq a b
+
+instance PToJSRef MutationRecord where
+  pToJSRef = unMutationRecord
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef MutationRecord where
+  pFromJSRef = MutationRecord
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef MutationRecord where
+  toJSRef = return . unMutationRecord
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef MutationRecord where
+  fromJSRef = return . fmap MutationRecord . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject MutationRecord where
+  toGObject = GObject . castRef . unMutationRecord
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = MutationRecord . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToMutationRecord :: IsGObject obj => obj -> MutationRecord
+castToMutationRecord = castTo gTypeMutationRecord "MutationRecord"
+
+foreign import javascript unsafe "window[\"MutationRecord\"]" gTypeMutationRecord' :: JSRef GType
+gTypeMutationRecord = GType gTypeMutationRecord'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef NamedNodeMap }
+
+instance Eq (NamedNodeMap) where
+  (NamedNodeMap a) == (NamedNodeMap b) = js_eq a b
+
+instance PToJSRef NamedNodeMap where
+  pToJSRef = unNamedNodeMap
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef NamedNodeMap where
+  pFromJSRef = NamedNodeMap
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef NamedNodeMap where
+  toJSRef = return . unNamedNodeMap
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef NamedNodeMap where
+  fromJSRef = return . fmap NamedNodeMap . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject NamedNodeMap where
+  toGObject = GObject . castRef . unNamedNodeMap
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NamedNodeMap . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNamedNodeMap :: IsGObject obj => obj -> NamedNodeMap
+castToNamedNodeMap = castTo gTypeNamedNodeMap "NamedNodeMap"
+
+foreign import javascript unsafe "window[\"NamedNodeMap\"]" gTypeNamedNodeMap' :: JSRef GType
+gTypeNamedNodeMap = GType gTypeNamedNodeMap'
+#else
+type IsNamedNodeMap o = NamedNodeMapClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Navigator }
+
+instance Eq (Navigator) where
+  (Navigator a) == (Navigator b) = js_eq a b
+
+instance PToJSRef Navigator where
+  pToJSRef = unNavigator
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Navigator where
+  pFromJSRef = Navigator
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Navigator where
+  toJSRef = return . unNavigator
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Navigator where
+  fromJSRef = return . fmap Navigator . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Navigator where
+  toGObject = GObject . castRef . unNavigator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Navigator . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNavigator :: IsGObject obj => obj -> Navigator
+castToNavigator = castTo gTypeNavigator "Navigator"
+
+foreign import javascript unsafe "window[\"Navigator\"]" gTypeNavigator' :: JSRef GType
+gTypeNavigator = GType gTypeNavigator'
+#else
+type IsNavigator o = NavigatorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef NavigatorUserMediaError }
+
+instance Eq (NavigatorUserMediaError) where
+  (NavigatorUserMediaError a) == (NavigatorUserMediaError b) = js_eq a b
+
+instance PToJSRef NavigatorUserMediaError where
+  pToJSRef = unNavigatorUserMediaError
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef NavigatorUserMediaError where
+  pFromJSRef = NavigatorUserMediaError
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef NavigatorUserMediaError where
+  toJSRef = return . unNavigatorUserMediaError
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef NavigatorUserMediaError where
+  fromJSRef = return . fmap NavigatorUserMediaError . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsDOMError NavigatorUserMediaError
+instance IsGObject NavigatorUserMediaError where
+  toGObject = GObject . castRef . unNavigatorUserMediaError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NavigatorUserMediaError . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNavigatorUserMediaError :: IsGObject obj => obj -> NavigatorUserMediaError
+castToNavigatorUserMediaError = castTo gTypeNavigatorUserMediaError "NavigatorUserMediaError"
+
+foreign import javascript unsafe "window[\"NavigatorUserMediaError\"]" gTypeNavigatorUserMediaError' :: JSRef GType
+gTypeNavigatorUserMediaError = GType gTypeNavigatorUserMediaError'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Node }
+
+instance Eq (Node) where
+  (Node a) == (Node b) = js_eq a b
+
+instance PToJSRef Node where
+  pToJSRef = unNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Node where
+  pFromJSRef = Node
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Node where
+  toJSRef = return . unNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Node where
+  fromJSRef = return . fmap Node . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Node . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNode :: IsGObject obj => obj -> Node
+castToNode = castTo gTypeNode "Node"
+
+foreign import javascript unsafe "window[\"Node\"]" gTypeNode' :: JSRef GType
+gTypeNode = GType gTypeNode'
+#else
+type IsNode o = NodeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef NodeFilter }
+
+instance Eq (NodeFilter) where
+  (NodeFilter a) == (NodeFilter b) = js_eq a b
+
+instance PToJSRef NodeFilter where
+  pToJSRef = unNodeFilter
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef NodeFilter where
+  pFromJSRef = NodeFilter
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef NodeFilter where
+  toJSRef = return . unNodeFilter
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef NodeFilter where
+  fromJSRef = return . fmap NodeFilter . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject NodeFilter where
+  toGObject = GObject . castRef . unNodeFilter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeFilter . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeFilter :: IsGObject obj => obj -> NodeFilter
+castToNodeFilter = castTo gTypeNodeFilter "NodeFilter"
+
+foreign import javascript unsafe "window[\"NodeFilter\"]" gTypeNodeFilter' :: JSRef GType
+gTypeNodeFilter = GType gTypeNodeFilter'
+#else
+type IsNodeFilter o = NodeFilterClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef NodeIterator }
+
+instance Eq (NodeIterator) where
+  (NodeIterator a) == (NodeIterator b) = js_eq a b
+
+instance PToJSRef NodeIterator where
+  pToJSRef = unNodeIterator
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef NodeIterator where
+  pFromJSRef = NodeIterator
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef NodeIterator where
+  toJSRef = return . unNodeIterator
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef NodeIterator where
+  fromJSRef = return . fmap NodeIterator . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject NodeIterator where
+  toGObject = GObject . castRef . unNodeIterator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeIterator . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeIterator :: IsGObject obj => obj -> NodeIterator
+castToNodeIterator = castTo gTypeNodeIterator "NodeIterator"
+
+foreign import javascript unsafe "window[\"NodeIterator\"]" gTypeNodeIterator' :: JSRef GType
+gTypeNodeIterator = GType gTypeNodeIterator'
+#else
+type IsNodeIterator o = NodeIteratorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef NodeList }
+
+instance Eq (NodeList) where
+  (NodeList a) == (NodeList b) = js_eq a b
+
+instance PToJSRef NodeList where
+  pToJSRef = unNodeList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef NodeList where
+  pFromJSRef = NodeList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef NodeList where
+  toJSRef = return . unNodeList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef NodeList where
+  fromJSRef = return . fmap NodeList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsNodeList o
+toNodeList :: IsNodeList o => o -> NodeList
+toNodeList = unsafeCastGObject . toGObject
+
+instance IsNodeList NodeList
+instance IsGObject NodeList where
+  toGObject = GObject . castRef . unNodeList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NodeList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNodeList :: IsGObject obj => obj -> NodeList
+castToNodeList = castTo gTypeNodeList "NodeList"
+
+foreign import javascript unsafe "window[\"NodeList\"]" gTypeNodeList' :: JSRef GType
+gTypeNodeList = GType gTypeNodeList'
+#else
+type IsNodeList o = NodeListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Notification }
+
+instance Eq (Notification) where
+  (Notification a) == (Notification b) = js_eq a b
+
+instance PToJSRef Notification where
+  pToJSRef = unNotification
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Notification where
+  pFromJSRef = Notification
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Notification where
+  toJSRef = return . unNotification
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Notification where
+  fromJSRef = return . fmap Notification . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget Notification
+instance IsGObject Notification where
+  toGObject = GObject . castRef . unNotification
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Notification . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNotification :: IsGObject obj => obj -> Notification
+castToNotification = castTo gTypeNotification "Notification"
+
+foreign import javascript unsafe "window[\"Notification\"]" gTypeNotification' :: JSRef GType
+gTypeNotification = GType gTypeNotification'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef NotificationCenter }
+
+instance Eq (NotificationCenter) where
+  (NotificationCenter a) == (NotificationCenter b) = js_eq a b
+
+instance PToJSRef NotificationCenter where
+  pToJSRef = unNotificationCenter
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef NotificationCenter where
+  pFromJSRef = NotificationCenter
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef NotificationCenter where
+  toJSRef = return . unNotificationCenter
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef NotificationCenter where
+  fromJSRef = return . fmap NotificationCenter . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject NotificationCenter where
+  toGObject = GObject . castRef . unNotificationCenter
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = NotificationCenter . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToNotificationCenter :: IsGObject obj => obj -> NotificationCenter
+castToNotificationCenter = castTo gTypeNotificationCenter "NotificationCenter"
+
+foreign import javascript unsafe "window[\"NotificationCenter\"]" gTypeNotificationCenter' :: JSRef GType
+gTypeNotificationCenter = GType gTypeNotificationCenter'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OESElementIndexUint }
+
+instance Eq (OESElementIndexUint) where
+  (OESElementIndexUint a) == (OESElementIndexUint b) = js_eq a b
+
+instance PToJSRef OESElementIndexUint where
+  pToJSRef = unOESElementIndexUint
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OESElementIndexUint where
+  pFromJSRef = OESElementIndexUint
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OESElementIndexUint where
+  toJSRef = return . unOESElementIndexUint
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OESElementIndexUint where
+  fromJSRef = return . fmap OESElementIndexUint . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject OESElementIndexUint where
+  toGObject = GObject . castRef . unOESElementIndexUint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESElementIndexUint . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESElementIndexUint :: IsGObject obj => obj -> OESElementIndexUint
+castToOESElementIndexUint = castTo gTypeOESElementIndexUint "OESElementIndexUint"
+
+foreign import javascript unsafe "window[\"OESElementIndexUint\"]" gTypeOESElementIndexUint' :: JSRef GType
+gTypeOESElementIndexUint = GType gTypeOESElementIndexUint'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OESStandardDerivatives }
+
+instance Eq (OESStandardDerivatives) where
+  (OESStandardDerivatives a) == (OESStandardDerivatives b) = js_eq a b
+
+instance PToJSRef OESStandardDerivatives where
+  pToJSRef = unOESStandardDerivatives
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OESStandardDerivatives where
+  pFromJSRef = OESStandardDerivatives
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OESStandardDerivatives where
+  toJSRef = return . unOESStandardDerivatives
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OESStandardDerivatives where
+  fromJSRef = return . fmap OESStandardDerivatives . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject OESStandardDerivatives where
+  toGObject = GObject . castRef . unOESStandardDerivatives
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESStandardDerivatives . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESStandardDerivatives :: IsGObject obj => obj -> OESStandardDerivatives
+castToOESStandardDerivatives = castTo gTypeOESStandardDerivatives "OESStandardDerivatives"
+
+foreign import javascript unsafe "window[\"OESStandardDerivatives\"]" gTypeOESStandardDerivatives' :: JSRef GType
+gTypeOESStandardDerivatives = GType gTypeOESStandardDerivatives'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OESTextureFloat }
+
+instance Eq (OESTextureFloat) where
+  (OESTextureFloat a) == (OESTextureFloat b) = js_eq a b
+
+instance PToJSRef OESTextureFloat where
+  pToJSRef = unOESTextureFloat
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OESTextureFloat where
+  pFromJSRef = OESTextureFloat
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OESTextureFloat where
+  toJSRef = return . unOESTextureFloat
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OESTextureFloat where
+  fromJSRef = return . fmap OESTextureFloat . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject OESTextureFloat where
+  toGObject = GObject . castRef . unOESTextureFloat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureFloat . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureFloat :: IsGObject obj => obj -> OESTextureFloat
+castToOESTextureFloat = castTo gTypeOESTextureFloat "OESTextureFloat"
+
+foreign import javascript unsafe "window[\"OESTextureFloat\"]" gTypeOESTextureFloat' :: JSRef GType
+gTypeOESTextureFloat = GType gTypeOESTextureFloat'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OESTextureFloatLinear }
+
+instance Eq (OESTextureFloatLinear) where
+  (OESTextureFloatLinear a) == (OESTextureFloatLinear b) = js_eq a b
+
+instance PToJSRef OESTextureFloatLinear where
+  pToJSRef = unOESTextureFloatLinear
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OESTextureFloatLinear where
+  pFromJSRef = OESTextureFloatLinear
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OESTextureFloatLinear where
+  toJSRef = return . unOESTextureFloatLinear
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OESTextureFloatLinear where
+  fromJSRef = return . fmap OESTextureFloatLinear . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject OESTextureFloatLinear where
+  toGObject = GObject . castRef . unOESTextureFloatLinear
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureFloatLinear . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureFloatLinear :: IsGObject obj => obj -> OESTextureFloatLinear
+castToOESTextureFloatLinear = castTo gTypeOESTextureFloatLinear "OESTextureFloatLinear"
+
+foreign import javascript unsafe "window[\"OESTextureFloatLinear\"]" gTypeOESTextureFloatLinear' :: JSRef GType
+gTypeOESTextureFloatLinear = GType gTypeOESTextureFloatLinear'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OESTextureHalfFloat }
+
+instance Eq (OESTextureHalfFloat) where
+  (OESTextureHalfFloat a) == (OESTextureHalfFloat b) = js_eq a b
+
+instance PToJSRef OESTextureHalfFloat where
+  pToJSRef = unOESTextureHalfFloat
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OESTextureHalfFloat where
+  pFromJSRef = OESTextureHalfFloat
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OESTextureHalfFloat where
+  toJSRef = return . unOESTextureHalfFloat
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OESTextureHalfFloat where
+  fromJSRef = return . fmap OESTextureHalfFloat . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject OESTextureHalfFloat where
+  toGObject = GObject . castRef . unOESTextureHalfFloat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureHalfFloat . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureHalfFloat :: IsGObject obj => obj -> OESTextureHalfFloat
+castToOESTextureHalfFloat = castTo gTypeOESTextureHalfFloat "OESTextureHalfFloat"
+
+foreign import javascript unsafe "window[\"OESTextureHalfFloat\"]" gTypeOESTextureHalfFloat' :: JSRef GType
+gTypeOESTextureHalfFloat = GType gTypeOESTextureHalfFloat'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OESTextureHalfFloatLinear }
+
+instance Eq (OESTextureHalfFloatLinear) where
+  (OESTextureHalfFloatLinear a) == (OESTextureHalfFloatLinear b) = js_eq a b
+
+instance PToJSRef OESTextureHalfFloatLinear where
+  pToJSRef = unOESTextureHalfFloatLinear
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OESTextureHalfFloatLinear where
+  pFromJSRef = OESTextureHalfFloatLinear
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OESTextureHalfFloatLinear where
+  toJSRef = return . unOESTextureHalfFloatLinear
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OESTextureHalfFloatLinear where
+  fromJSRef = return . fmap OESTextureHalfFloatLinear . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject OESTextureHalfFloatLinear where
+  toGObject = GObject . castRef . unOESTextureHalfFloatLinear
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESTextureHalfFloatLinear . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESTextureHalfFloatLinear :: IsGObject obj => obj -> OESTextureHalfFloatLinear
+castToOESTextureHalfFloatLinear = castTo gTypeOESTextureHalfFloatLinear "OESTextureHalfFloatLinear"
+
+foreign import javascript unsafe "window[\"OESTextureHalfFloatLinear\"]" gTypeOESTextureHalfFloatLinear' :: JSRef GType
+gTypeOESTextureHalfFloatLinear = GType gTypeOESTextureHalfFloatLinear'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OESVertexArrayObject }
+
+instance Eq (OESVertexArrayObject) where
+  (OESVertexArrayObject a) == (OESVertexArrayObject b) = js_eq a b
+
+instance PToJSRef OESVertexArrayObject where
+  pToJSRef = unOESVertexArrayObject
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OESVertexArrayObject where
+  pFromJSRef = OESVertexArrayObject
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OESVertexArrayObject where
+  toJSRef = return . unOESVertexArrayObject
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OESVertexArrayObject where
+  fromJSRef = return . fmap OESVertexArrayObject . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject OESVertexArrayObject where
+  toGObject = GObject . castRef . unOESVertexArrayObject
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OESVertexArrayObject . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOESVertexArrayObject :: IsGObject obj => obj -> OESVertexArrayObject
+castToOESVertexArrayObject = castTo gTypeOESVertexArrayObject "OESVertexArrayObject"
+
+foreign import javascript unsafe "window[\"OESVertexArrayObject\"]" gTypeOESVertexArrayObject' :: JSRef GType
+gTypeOESVertexArrayObject = GType gTypeOESVertexArrayObject'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OfflineAudioCompletionEvent }
+
+instance Eq (OfflineAudioCompletionEvent) where
+  (OfflineAudioCompletionEvent a) == (OfflineAudioCompletionEvent b) = js_eq a b
+
+instance PToJSRef OfflineAudioCompletionEvent where
+  pToJSRef = unOfflineAudioCompletionEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OfflineAudioCompletionEvent where
+  pFromJSRef = OfflineAudioCompletionEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OfflineAudioCompletionEvent where
+  toJSRef = return . unOfflineAudioCompletionEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OfflineAudioCompletionEvent where
+  fromJSRef = return . fmap OfflineAudioCompletionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent OfflineAudioCompletionEvent
+instance IsGObject OfflineAudioCompletionEvent where
+  toGObject = GObject . castRef . unOfflineAudioCompletionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OfflineAudioCompletionEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOfflineAudioCompletionEvent :: IsGObject obj => obj -> OfflineAudioCompletionEvent
+castToOfflineAudioCompletionEvent = castTo gTypeOfflineAudioCompletionEvent "OfflineAudioCompletionEvent"
+
+foreign import javascript unsafe "window[\"OfflineAudioCompletionEvent\"]" gTypeOfflineAudioCompletionEvent' :: JSRef GType
+gTypeOfflineAudioCompletionEvent = GType gTypeOfflineAudioCompletionEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OfflineAudioContext }
+
+instance Eq (OfflineAudioContext) where
+  (OfflineAudioContext a) == (OfflineAudioContext b) = js_eq a b
+
+instance PToJSRef OfflineAudioContext where
+  pToJSRef = unOfflineAudioContext
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OfflineAudioContext where
+  pFromJSRef = OfflineAudioContext
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OfflineAudioContext where
+  toJSRef = return . unOfflineAudioContext
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OfflineAudioContext where
+  fromJSRef = return . fmap OfflineAudioContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioContext OfflineAudioContext
+instance IsEventTarget OfflineAudioContext
+instance IsGObject OfflineAudioContext where
+  toGObject = GObject . castRef . unOfflineAudioContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OfflineAudioContext . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOfflineAudioContext :: IsGObject obj => obj -> OfflineAudioContext
+castToOfflineAudioContext = castTo gTypeOfflineAudioContext "OfflineAudioContext"
+
+foreign import javascript unsafe "window[\"OfflineAudioContext\"]" gTypeOfflineAudioContext' :: JSRef GType
+gTypeOfflineAudioContext = GType gTypeOfflineAudioContext'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OscillatorNode }
+
+instance Eq (OscillatorNode) where
+  (OscillatorNode a) == (OscillatorNode b) = js_eq a b
+
+instance PToJSRef OscillatorNode where
+  pToJSRef = unOscillatorNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OscillatorNode where
+  pFromJSRef = OscillatorNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OscillatorNode where
+  toJSRef = return . unOscillatorNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OscillatorNode where
+  fromJSRef = return . fmap OscillatorNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode OscillatorNode
+instance IsEventTarget OscillatorNode
+instance IsGObject OscillatorNode where
+  toGObject = GObject . castRef . unOscillatorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OscillatorNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOscillatorNode :: IsGObject obj => obj -> OscillatorNode
+castToOscillatorNode = castTo gTypeOscillatorNode "OscillatorNode"
+
+foreign import javascript unsafe "window[\"OscillatorNode\"]" gTypeOscillatorNode' :: JSRef GType
+gTypeOscillatorNode = GType gTypeOscillatorNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef OverflowEvent }
+
+instance Eq (OverflowEvent) where
+  (OverflowEvent a) == (OverflowEvent b) = js_eq a b
+
+instance PToJSRef OverflowEvent where
+  pToJSRef = unOverflowEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef OverflowEvent where
+  pFromJSRef = OverflowEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef OverflowEvent where
+  toJSRef = return . unOverflowEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef OverflowEvent where
+  fromJSRef = return . fmap OverflowEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent OverflowEvent
+instance IsGObject OverflowEvent where
+  toGObject = GObject . castRef . unOverflowEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = OverflowEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToOverflowEvent :: IsGObject obj => obj -> OverflowEvent
+castToOverflowEvent = castTo gTypeOverflowEvent "OverflowEvent"
+
+foreign import javascript unsafe "window[\"OverflowEvent\"]" gTypeOverflowEvent' :: JSRef GType
+gTypeOverflowEvent = GType gTypeOverflowEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PageTransitionEvent }
+
+instance Eq (PageTransitionEvent) where
+  (PageTransitionEvent a) == (PageTransitionEvent b) = js_eq a b
+
+instance PToJSRef PageTransitionEvent where
+  pToJSRef = unPageTransitionEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PageTransitionEvent where
+  pFromJSRef = PageTransitionEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PageTransitionEvent where
+  toJSRef = return . unPageTransitionEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PageTransitionEvent where
+  fromJSRef = return . fmap PageTransitionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent PageTransitionEvent
+instance IsGObject PageTransitionEvent where
+  toGObject = GObject . castRef . unPageTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PageTransitionEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPageTransitionEvent :: IsGObject obj => obj -> PageTransitionEvent
+castToPageTransitionEvent = castTo gTypePageTransitionEvent "PageTransitionEvent"
+
+foreign import javascript unsafe "window[\"PageTransitionEvent\"]" gTypePageTransitionEvent' :: JSRef GType
+gTypePageTransitionEvent = GType gTypePageTransitionEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PannerNode }
+
+instance Eq (PannerNode) where
+  (PannerNode a) == (PannerNode b) = js_eq a b
+
+instance PToJSRef PannerNode where
+  pToJSRef = unPannerNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PannerNode where
+  pFromJSRef = PannerNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PannerNode where
+  toJSRef = return . unPannerNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PannerNode where
+  fromJSRef = return . fmap PannerNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode PannerNode
+instance IsEventTarget PannerNode
+instance IsGObject PannerNode where
+  toGObject = GObject . castRef . unPannerNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PannerNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPannerNode :: IsGObject obj => obj -> PannerNode
+castToPannerNode = castTo gTypePannerNode "PannerNode"
+
+foreign import javascript unsafe "window[\"webkitAudioPannerNode\"]" gTypePannerNode' :: JSRef GType
+gTypePannerNode = GType gTypePannerNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Path2D }
+
+instance Eq (Path2D) where
+  (Path2D a) == (Path2D b) = js_eq a b
+
+instance PToJSRef Path2D where
+  pToJSRef = unPath2D
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Path2D where
+  pFromJSRef = Path2D
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Path2D where
+  toJSRef = return . unPath2D
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Path2D where
+  fromJSRef = return . fmap Path2D . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Path2D where
+  toGObject = GObject . castRef . unPath2D
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Path2D . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPath2D :: IsGObject obj => obj -> Path2D
+castToPath2D = castTo gTypePath2D "Path2D"
+
+foreign import javascript unsafe "window[\"Path2D\"]" gTypePath2D' :: JSRef GType
+gTypePath2D = GType gTypePath2D'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Performance }
+
+instance Eq (Performance) where
+  (Performance a) == (Performance b) = js_eq a b
+
+instance PToJSRef Performance where
+  pToJSRef = unPerformance
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Performance where
+  pFromJSRef = Performance
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Performance where
+  toJSRef = return . unPerformance
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Performance where
+  fromJSRef = return . fmap Performance . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget Performance
+instance IsGObject Performance where
+  toGObject = GObject . castRef . unPerformance
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Performance . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformance :: IsGObject obj => obj -> Performance
+castToPerformance = castTo gTypePerformance "Performance"
+
+foreign import javascript unsafe "window[\"Performance\"]" gTypePerformance' :: JSRef GType
+gTypePerformance = GType gTypePerformance'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsPerformance o = PerformanceClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PerformanceEntry }
+
+instance Eq (PerformanceEntry) where
+  (PerformanceEntry a) == (PerformanceEntry b) = js_eq a b
+
+instance PToJSRef PerformanceEntry where
+  pToJSRef = unPerformanceEntry
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PerformanceEntry where
+  pFromJSRef = PerformanceEntry
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PerformanceEntry where
+  toJSRef = return . unPerformanceEntry
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PerformanceEntry where
+  fromJSRef = return . fmap PerformanceEntry . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsPerformanceEntry o
+toPerformanceEntry :: IsPerformanceEntry o => o -> PerformanceEntry
+toPerformanceEntry = unsafeCastGObject . toGObject
+
+instance IsPerformanceEntry PerformanceEntry
+instance IsGObject PerformanceEntry where
+  toGObject = GObject . castRef . unPerformanceEntry
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceEntry . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceEntry :: IsGObject obj => obj -> PerformanceEntry
+castToPerformanceEntry = castTo gTypePerformanceEntry "PerformanceEntry"
+
+foreign import javascript unsafe "window[\"PerformanceEntry\"]" gTypePerformanceEntry' :: JSRef GType
+gTypePerformanceEntry = GType gTypePerformanceEntry'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PerformanceEntryList }
+
+instance Eq (PerformanceEntryList) where
+  (PerformanceEntryList a) == (PerformanceEntryList b) = js_eq a b
+
+instance PToJSRef PerformanceEntryList where
+  pToJSRef = unPerformanceEntryList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PerformanceEntryList where
+  pFromJSRef = PerformanceEntryList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PerformanceEntryList where
+  toJSRef = return . unPerformanceEntryList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PerformanceEntryList where
+  fromJSRef = return . fmap PerformanceEntryList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject PerformanceEntryList where
+  toGObject = GObject . castRef . unPerformanceEntryList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceEntryList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceEntryList :: IsGObject obj => obj -> PerformanceEntryList
+castToPerformanceEntryList = castTo gTypePerformanceEntryList "PerformanceEntryList"
+
+foreign import javascript unsafe "window[\"PerformanceEntryList\"]" gTypePerformanceEntryList' :: JSRef GType
+gTypePerformanceEntryList = GType gTypePerformanceEntryList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PerformanceMark }
+
+instance Eq (PerformanceMark) where
+  (PerformanceMark a) == (PerformanceMark b) = js_eq a b
+
+instance PToJSRef PerformanceMark where
+  pToJSRef = unPerformanceMark
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PerformanceMark where
+  pFromJSRef = PerformanceMark
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PerformanceMark where
+  toJSRef = return . unPerformanceMark
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PerformanceMark where
+  fromJSRef = return . fmap PerformanceMark . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsPerformanceEntry PerformanceMark
+instance IsGObject PerformanceMark where
+  toGObject = GObject . castRef . unPerformanceMark
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceMark . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceMark :: IsGObject obj => obj -> PerformanceMark
+castToPerformanceMark = castTo gTypePerformanceMark "PerformanceMark"
+
+foreign import javascript unsafe "window[\"PerformanceMark\"]" gTypePerformanceMark' :: JSRef GType
+gTypePerformanceMark = GType gTypePerformanceMark'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PerformanceMeasure }
+
+instance Eq (PerformanceMeasure) where
+  (PerformanceMeasure a) == (PerformanceMeasure b) = js_eq a b
+
+instance PToJSRef PerformanceMeasure where
+  pToJSRef = unPerformanceMeasure
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PerformanceMeasure where
+  pFromJSRef = PerformanceMeasure
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PerformanceMeasure where
+  toJSRef = return . unPerformanceMeasure
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PerformanceMeasure where
+  fromJSRef = return . fmap PerformanceMeasure . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsPerformanceEntry PerformanceMeasure
+instance IsGObject PerformanceMeasure where
+  toGObject = GObject . castRef . unPerformanceMeasure
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceMeasure . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceMeasure :: IsGObject obj => obj -> PerformanceMeasure
+castToPerformanceMeasure = castTo gTypePerformanceMeasure "PerformanceMeasure"
+
+foreign import javascript unsafe "window[\"PerformanceMeasure\"]" gTypePerformanceMeasure' :: JSRef GType
+gTypePerformanceMeasure = GType gTypePerformanceMeasure'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PerformanceNavigation }
+
+instance Eq (PerformanceNavigation) where
+  (PerformanceNavigation a) == (PerformanceNavigation b) = js_eq a b
+
+instance PToJSRef PerformanceNavigation where
+  pToJSRef = unPerformanceNavigation
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PerformanceNavigation where
+  pFromJSRef = PerformanceNavigation
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PerformanceNavigation where
+  toJSRef = return . unPerformanceNavigation
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PerformanceNavigation where
+  fromJSRef = return . fmap PerformanceNavigation . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject PerformanceNavigation where
+  toGObject = GObject . castRef . unPerformanceNavigation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceNavigation . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceNavigation :: IsGObject obj => obj -> PerformanceNavigation
+castToPerformanceNavigation = castTo gTypePerformanceNavigation "PerformanceNavigation"
+
+foreign import javascript unsafe "window[\"PerformanceNavigation\"]" gTypePerformanceNavigation' :: JSRef GType
+gTypePerformanceNavigation = GType gTypePerformanceNavigation'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsPerformanceNavigation o = PerformanceNavigationClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PerformanceResourceTiming }
+
+instance Eq (PerformanceResourceTiming) where
+  (PerformanceResourceTiming a) == (PerformanceResourceTiming b) = js_eq a b
+
+instance PToJSRef PerformanceResourceTiming where
+  pToJSRef = unPerformanceResourceTiming
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PerformanceResourceTiming where
+  pFromJSRef = PerformanceResourceTiming
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PerformanceResourceTiming where
+  toJSRef = return . unPerformanceResourceTiming
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PerformanceResourceTiming where
+  fromJSRef = return . fmap PerformanceResourceTiming . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsPerformanceEntry PerformanceResourceTiming
+instance IsGObject PerformanceResourceTiming where
+  toGObject = GObject . castRef . unPerformanceResourceTiming
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceResourceTiming . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceResourceTiming :: IsGObject obj => obj -> PerformanceResourceTiming
+castToPerformanceResourceTiming = castTo gTypePerformanceResourceTiming "PerformanceResourceTiming"
+
+foreign import javascript unsafe "window[\"PerformanceResourceTiming\"]" gTypePerformanceResourceTiming' :: JSRef GType
+gTypePerformanceResourceTiming = GType gTypePerformanceResourceTiming'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PerformanceTiming }
+
+instance Eq (PerformanceTiming) where
+  (PerformanceTiming a) == (PerformanceTiming b) = js_eq a b
+
+instance PToJSRef PerformanceTiming where
+  pToJSRef = unPerformanceTiming
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PerformanceTiming where
+  pFromJSRef = PerformanceTiming
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PerformanceTiming where
+  toJSRef = return . unPerformanceTiming
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PerformanceTiming where
+  fromJSRef = return . fmap PerformanceTiming . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject PerformanceTiming where
+  toGObject = GObject . castRef . unPerformanceTiming
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PerformanceTiming . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPerformanceTiming :: IsGObject obj => obj -> PerformanceTiming
+castToPerformanceTiming = castTo gTypePerformanceTiming "PerformanceTiming"
+
+foreign import javascript unsafe "window[\"PerformanceTiming\"]" gTypePerformanceTiming' :: JSRef GType
+gTypePerformanceTiming = GType gTypePerformanceTiming'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsPerformanceTiming o = PerformanceTimingClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PeriodicWave }
+
+instance Eq (PeriodicWave) where
+  (PeriodicWave a) == (PeriodicWave b) = js_eq a b
+
+instance PToJSRef PeriodicWave where
+  pToJSRef = unPeriodicWave
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PeriodicWave where
+  pFromJSRef = PeriodicWave
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PeriodicWave where
+  toJSRef = return . unPeriodicWave
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PeriodicWave where
+  fromJSRef = return . fmap PeriodicWave . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject PeriodicWave where
+  toGObject = GObject . castRef . unPeriodicWave
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PeriodicWave . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPeriodicWave :: IsGObject obj => obj -> PeriodicWave
+castToPeriodicWave = castTo gTypePeriodicWave "PeriodicWave"
+
+foreign import javascript unsafe "window[\"PeriodicWave\"]" gTypePeriodicWave' :: JSRef GType
+gTypePeriodicWave = GType gTypePeriodicWave'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Plugin }
+
+instance Eq (Plugin) where
+  (Plugin a) == (Plugin b) = js_eq a b
+
+instance PToJSRef Plugin where
+  pToJSRef = unPlugin
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Plugin where
+  pFromJSRef = Plugin
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Plugin where
+  toJSRef = return . unPlugin
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Plugin where
+  fromJSRef = return . fmap Plugin . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Plugin where
+  toGObject = GObject . castRef . unPlugin
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Plugin . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPlugin :: IsGObject obj => obj -> Plugin
+castToPlugin = castTo gTypePlugin "Plugin"
+
+foreign import javascript unsafe "window[\"Plugin\"]" gTypePlugin' :: JSRef GType
+gTypePlugin = GType gTypePlugin'
+#else
+type IsPlugin o = PluginClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PluginArray }
+
+instance Eq (PluginArray) where
+  (PluginArray a) == (PluginArray b) = js_eq a b
+
+instance PToJSRef PluginArray where
+  pToJSRef = unPluginArray
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PluginArray where
+  pFromJSRef = PluginArray
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PluginArray where
+  toJSRef = return . unPluginArray
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PluginArray where
+  fromJSRef = return . fmap PluginArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject PluginArray where
+  toGObject = GObject . castRef . unPluginArray
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PluginArray . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPluginArray :: IsGObject obj => obj -> PluginArray
+castToPluginArray = castTo gTypePluginArray "PluginArray"
+
+foreign import javascript unsafe "window[\"PluginArray\"]" gTypePluginArray' :: JSRef GType
+gTypePluginArray = GType gTypePluginArray'
+#else
+type IsPluginArray o = PluginArrayClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PopStateEvent }
+
+instance Eq (PopStateEvent) where
+  (PopStateEvent a) == (PopStateEvent b) = js_eq a b
+
+instance PToJSRef PopStateEvent where
+  pToJSRef = unPopStateEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PopStateEvent where
+  pFromJSRef = PopStateEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PopStateEvent where
+  toJSRef = return . unPopStateEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PopStateEvent where
+  fromJSRef = return . fmap PopStateEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent PopStateEvent
+instance IsGObject PopStateEvent where
+  toGObject = GObject . castRef . unPopStateEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PopStateEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPopStateEvent :: IsGObject obj => obj -> PopStateEvent
+castToPopStateEvent = castTo gTypePopStateEvent "PopStateEvent"
+
+foreign import javascript unsafe "window[\"PopStateEvent\"]" gTypePopStateEvent' :: JSRef GType
+gTypePopStateEvent = GType gTypePopStateEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef PositionError }
+
+instance Eq (PositionError) where
+  (PositionError a) == (PositionError b) = js_eq a b
+
+instance PToJSRef PositionError where
+  pToJSRef = unPositionError
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef PositionError where
+  pFromJSRef = PositionError
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef PositionError where
+  toJSRef = return . unPositionError
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef PositionError where
+  fromJSRef = return . fmap PositionError . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject PositionError where
+  toGObject = GObject . castRef . unPositionError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = PositionError . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToPositionError :: IsGObject obj => obj -> PositionError
+castToPositionError = castTo gTypePositionError "PositionError"
+
+foreign import javascript unsafe "window[\"PositionError\"]" gTypePositionError' :: JSRef GType
+gTypePositionError = GType gTypePositionError'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ProcessingInstruction }
+
+instance Eq (ProcessingInstruction) where
+  (ProcessingInstruction a) == (ProcessingInstruction b) = js_eq a b
+
+instance PToJSRef ProcessingInstruction where
+  pToJSRef = unProcessingInstruction
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ProcessingInstruction where
+  pFromJSRef = ProcessingInstruction
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ProcessingInstruction where
+  toJSRef = return . unProcessingInstruction
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ProcessingInstruction where
+  fromJSRef = return . fmap ProcessingInstruction . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCharacterData ProcessingInstruction
+instance IsNode ProcessingInstruction
+instance IsEventTarget ProcessingInstruction
+instance IsGObject ProcessingInstruction where
+  toGObject = GObject . castRef . unProcessingInstruction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ProcessingInstruction . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToProcessingInstruction :: IsGObject obj => obj -> ProcessingInstruction
+castToProcessingInstruction = castTo gTypeProcessingInstruction "ProcessingInstruction"
+
+foreign import javascript unsafe "window[\"ProcessingInstruction\"]" gTypeProcessingInstruction' :: JSRef GType
+gTypeProcessingInstruction = GType gTypeProcessingInstruction'
+#else
+type IsProcessingInstruction o = ProcessingInstructionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ProgressEvent }
+
+instance Eq (ProgressEvent) where
+  (ProgressEvent a) == (ProgressEvent b) = js_eq a b
+
+instance PToJSRef ProgressEvent where
+  pToJSRef = unProgressEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ProgressEvent where
+  pFromJSRef = ProgressEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ProgressEvent where
+  toJSRef = return . unProgressEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ProgressEvent where
+  fromJSRef = return . fmap ProgressEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unProgressEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ProgressEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToProgressEvent :: IsGObject obj => obj -> ProgressEvent
+castToProgressEvent = castTo gTypeProgressEvent "ProgressEvent"
+
+foreign import javascript unsafe "window[\"ProgressEvent\"]" gTypeProgressEvent' :: JSRef GType
+gTypeProgressEvent = GType gTypeProgressEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef QuickTimePluginReplacement }
+
+instance Eq (QuickTimePluginReplacement) where
+  (QuickTimePluginReplacement a) == (QuickTimePluginReplacement b) = js_eq a b
+
+instance PToJSRef QuickTimePluginReplacement where
+  pToJSRef = unQuickTimePluginReplacement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef QuickTimePluginReplacement where
+  pFromJSRef = QuickTimePluginReplacement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef QuickTimePluginReplacement where
+  toJSRef = return . unQuickTimePluginReplacement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef QuickTimePluginReplacement where
+  fromJSRef = return . fmap QuickTimePluginReplacement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject QuickTimePluginReplacement where
+  toGObject = GObject . castRef . unQuickTimePluginReplacement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = QuickTimePluginReplacement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToQuickTimePluginReplacement :: IsGObject obj => obj -> QuickTimePluginReplacement
+castToQuickTimePluginReplacement = castTo gTypeQuickTimePluginReplacement "QuickTimePluginReplacement"
+
+foreign import javascript unsafe "window[\"QuickTimePluginReplacement\"]" gTypeQuickTimePluginReplacement' :: JSRef GType
+gTypeQuickTimePluginReplacement = GType gTypeQuickTimePluginReplacement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RGBColor }
+
+instance Eq (RGBColor) where
+  (RGBColor a) == (RGBColor b) = js_eq a b
+
+instance PToJSRef RGBColor where
+  pToJSRef = unRGBColor
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RGBColor where
+  pFromJSRef = RGBColor
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RGBColor where
+  toJSRef = return . unRGBColor
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RGBColor where
+  fromJSRef = return . fmap RGBColor . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject RGBColor where
+  toGObject = GObject . castRef . unRGBColor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RGBColor . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRGBColor :: IsGObject obj => obj -> RGBColor
+castToRGBColor = castTo gTypeRGBColor "RGBColor"
+
+foreign import javascript unsafe "window[\"RGBColor\"]" gTypeRGBColor' :: JSRef GType
+gTypeRGBColor = GType gTypeRGBColor'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCConfiguration }
+
+instance Eq (RTCConfiguration) where
+  (RTCConfiguration a) == (RTCConfiguration b) = js_eq a b
+
+instance PToJSRef RTCConfiguration where
+  pToJSRef = unRTCConfiguration
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCConfiguration where
+  pFromJSRef = RTCConfiguration
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCConfiguration where
+  toJSRef = return . unRTCConfiguration
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCConfiguration where
+  fromJSRef = return . fmap RTCConfiguration . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject RTCConfiguration where
+  toGObject = GObject . castRef . unRTCConfiguration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCConfiguration . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCConfiguration :: IsGObject obj => obj -> RTCConfiguration
+castToRTCConfiguration = castTo gTypeRTCConfiguration "RTCConfiguration"
+
+foreign import javascript unsafe "window[\"RTCConfiguration\"]" gTypeRTCConfiguration' :: JSRef GType
+gTypeRTCConfiguration = GType gTypeRTCConfiguration'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCDTMFSender }
+
+instance Eq (RTCDTMFSender) where
+  (RTCDTMFSender a) == (RTCDTMFSender b) = js_eq a b
+
+instance PToJSRef RTCDTMFSender where
+  pToJSRef = unRTCDTMFSender
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCDTMFSender where
+  pFromJSRef = RTCDTMFSender
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCDTMFSender where
+  toJSRef = return . unRTCDTMFSender
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCDTMFSender where
+  fromJSRef = return . fmap RTCDTMFSender . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget RTCDTMFSender
+instance IsGObject RTCDTMFSender where
+  toGObject = GObject . castRef . unRTCDTMFSender
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDTMFSender . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDTMFSender :: IsGObject obj => obj -> RTCDTMFSender
+castToRTCDTMFSender = castTo gTypeRTCDTMFSender "RTCDTMFSender"
+
+foreign import javascript unsafe "window[\"RTCDTMFSender\"]" gTypeRTCDTMFSender' :: JSRef GType
+gTypeRTCDTMFSender = GType gTypeRTCDTMFSender'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCDTMFToneChangeEvent }
+
+instance Eq (RTCDTMFToneChangeEvent) where
+  (RTCDTMFToneChangeEvent a) == (RTCDTMFToneChangeEvent b) = js_eq a b
+
+instance PToJSRef RTCDTMFToneChangeEvent where
+  pToJSRef = unRTCDTMFToneChangeEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCDTMFToneChangeEvent where
+  pFromJSRef = RTCDTMFToneChangeEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCDTMFToneChangeEvent where
+  toJSRef = return . unRTCDTMFToneChangeEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCDTMFToneChangeEvent where
+  fromJSRef = return . fmap RTCDTMFToneChangeEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent RTCDTMFToneChangeEvent
+instance IsGObject RTCDTMFToneChangeEvent where
+  toGObject = GObject . castRef . unRTCDTMFToneChangeEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDTMFToneChangeEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDTMFToneChangeEvent :: IsGObject obj => obj -> RTCDTMFToneChangeEvent
+castToRTCDTMFToneChangeEvent = castTo gTypeRTCDTMFToneChangeEvent "RTCDTMFToneChangeEvent"
+
+foreign import javascript unsafe "window[\"RTCDTMFToneChangeEvent\"]" gTypeRTCDTMFToneChangeEvent' :: JSRef GType
+gTypeRTCDTMFToneChangeEvent = GType gTypeRTCDTMFToneChangeEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCDataChannel }
+
+instance Eq (RTCDataChannel) where
+  (RTCDataChannel a) == (RTCDataChannel b) = js_eq a b
+
+instance PToJSRef RTCDataChannel where
+  pToJSRef = unRTCDataChannel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCDataChannel where
+  pFromJSRef = RTCDataChannel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCDataChannel where
+  toJSRef = return . unRTCDataChannel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCDataChannel where
+  fromJSRef = return . fmap RTCDataChannel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget RTCDataChannel
+instance IsGObject RTCDataChannel where
+  toGObject = GObject . castRef . unRTCDataChannel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDataChannel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDataChannel :: IsGObject obj => obj -> RTCDataChannel
+castToRTCDataChannel = castTo gTypeRTCDataChannel "RTCDataChannel"
+
+foreign import javascript unsafe "window[\"RTCDataChannel\"]" gTypeRTCDataChannel' :: JSRef GType
+gTypeRTCDataChannel = GType gTypeRTCDataChannel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCDataChannelEvent }
+
+instance Eq (RTCDataChannelEvent) where
+  (RTCDataChannelEvent a) == (RTCDataChannelEvent b) = js_eq a b
+
+instance PToJSRef RTCDataChannelEvent where
+  pToJSRef = unRTCDataChannelEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCDataChannelEvent where
+  pFromJSRef = RTCDataChannelEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCDataChannelEvent where
+  toJSRef = return . unRTCDataChannelEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCDataChannelEvent where
+  fromJSRef = return . fmap RTCDataChannelEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent RTCDataChannelEvent
+instance IsGObject RTCDataChannelEvent where
+  toGObject = GObject . castRef . unRTCDataChannelEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCDataChannelEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCDataChannelEvent :: IsGObject obj => obj -> RTCDataChannelEvent
+castToRTCDataChannelEvent = castTo gTypeRTCDataChannelEvent "RTCDataChannelEvent"
+
+foreign import javascript unsafe "window[\"RTCDataChannelEvent\"]" gTypeRTCDataChannelEvent' :: JSRef GType
+gTypeRTCDataChannelEvent = GType gTypeRTCDataChannelEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCIceCandidate }
+
+instance Eq (RTCIceCandidate) where
+  (RTCIceCandidate a) == (RTCIceCandidate b) = js_eq a b
+
+instance PToJSRef RTCIceCandidate where
+  pToJSRef = unRTCIceCandidate
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCIceCandidate where
+  pFromJSRef = RTCIceCandidate
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCIceCandidate where
+  toJSRef = return . unRTCIceCandidate
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCIceCandidate where
+  fromJSRef = return . fmap RTCIceCandidate . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject RTCIceCandidate where
+  toGObject = GObject . castRef . unRTCIceCandidate
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceCandidate . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceCandidate :: IsGObject obj => obj -> RTCIceCandidate
+castToRTCIceCandidate = castTo gTypeRTCIceCandidate "RTCIceCandidate"
+
+foreign import javascript unsafe "window[\"RTCIceCandidate\"]" gTypeRTCIceCandidate' :: JSRef GType
+gTypeRTCIceCandidate = GType gTypeRTCIceCandidate'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCIceCandidateEvent }
+
+instance Eq (RTCIceCandidateEvent) where
+  (RTCIceCandidateEvent a) == (RTCIceCandidateEvent b) = js_eq a b
+
+instance PToJSRef RTCIceCandidateEvent where
+  pToJSRef = unRTCIceCandidateEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCIceCandidateEvent where
+  pFromJSRef = RTCIceCandidateEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCIceCandidateEvent where
+  toJSRef = return . unRTCIceCandidateEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCIceCandidateEvent where
+  fromJSRef = return . fmap RTCIceCandidateEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent RTCIceCandidateEvent
+instance IsGObject RTCIceCandidateEvent where
+  toGObject = GObject . castRef . unRTCIceCandidateEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceCandidateEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceCandidateEvent :: IsGObject obj => obj -> RTCIceCandidateEvent
+castToRTCIceCandidateEvent = castTo gTypeRTCIceCandidateEvent "RTCIceCandidateEvent"
+
+foreign import javascript unsafe "window[\"RTCIceCandidateEvent\"]" gTypeRTCIceCandidateEvent' :: JSRef GType
+gTypeRTCIceCandidateEvent = GType gTypeRTCIceCandidateEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCIceServer }
+
+instance Eq (RTCIceServer) where
+  (RTCIceServer a) == (RTCIceServer b) = js_eq a b
+
+instance PToJSRef RTCIceServer where
+  pToJSRef = unRTCIceServer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCIceServer where
+  pFromJSRef = RTCIceServer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCIceServer where
+  toJSRef = return . unRTCIceServer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCIceServer where
+  fromJSRef = return . fmap RTCIceServer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject RTCIceServer where
+  toGObject = GObject . castRef . unRTCIceServer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCIceServer . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCIceServer :: IsGObject obj => obj -> RTCIceServer
+castToRTCIceServer = castTo gTypeRTCIceServer "RTCIceServer"
+
+foreign import javascript unsafe "window[\"RTCIceServer\"]" gTypeRTCIceServer' :: JSRef GType
+gTypeRTCIceServer = GType gTypeRTCIceServer'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCPeerConnection }
+
+instance Eq (RTCPeerConnection) where
+  (RTCPeerConnection a) == (RTCPeerConnection b) = js_eq a b
+
+instance PToJSRef RTCPeerConnection where
+  pToJSRef = unRTCPeerConnection
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCPeerConnection where
+  pFromJSRef = RTCPeerConnection
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCPeerConnection where
+  toJSRef = return . unRTCPeerConnection
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCPeerConnection where
+  fromJSRef = return . fmap RTCPeerConnection . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget RTCPeerConnection
+instance IsGObject RTCPeerConnection where
+  toGObject = GObject . castRef . unRTCPeerConnection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCPeerConnection . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCPeerConnection :: IsGObject obj => obj -> RTCPeerConnection
+castToRTCPeerConnection = castTo gTypeRTCPeerConnection "RTCPeerConnection"
+
+foreign import javascript unsafe "window[\"webkitRTCPeerConnection\"]" gTypeRTCPeerConnection' :: JSRef GType
+gTypeRTCPeerConnection = GType gTypeRTCPeerConnection'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCSessionDescription }
+
+instance Eq (RTCSessionDescription) where
+  (RTCSessionDescription a) == (RTCSessionDescription b) = js_eq a b
+
+instance PToJSRef RTCSessionDescription where
+  pToJSRef = unRTCSessionDescription
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCSessionDescription where
+  pFromJSRef = RTCSessionDescription
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCSessionDescription where
+  toJSRef = return . unRTCSessionDescription
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCSessionDescription where
+  fromJSRef = return . fmap RTCSessionDescription . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject RTCSessionDescription where
+  toGObject = GObject . castRef . unRTCSessionDescription
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCSessionDescription . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCSessionDescription :: IsGObject obj => obj -> RTCSessionDescription
+castToRTCSessionDescription = castTo gTypeRTCSessionDescription "RTCSessionDescription"
+
+foreign import javascript unsafe "window[\"RTCSessionDescription\"]" gTypeRTCSessionDescription' :: JSRef GType
+gTypeRTCSessionDescription = GType gTypeRTCSessionDescription'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCStatsReport }
+
+instance Eq (RTCStatsReport) where
+  (RTCStatsReport a) == (RTCStatsReport b) = js_eq a b
+
+instance PToJSRef RTCStatsReport where
+  pToJSRef = unRTCStatsReport
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCStatsReport where
+  pFromJSRef = RTCStatsReport
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCStatsReport where
+  toJSRef = return . unRTCStatsReport
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCStatsReport where
+  fromJSRef = return . fmap RTCStatsReport . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject RTCStatsReport where
+  toGObject = GObject . castRef . unRTCStatsReport
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCStatsReport . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCStatsReport :: IsGObject obj => obj -> RTCStatsReport
+castToRTCStatsReport = castTo gTypeRTCStatsReport "RTCStatsReport"
+
+foreign import javascript unsafe "window[\"RTCStatsReport\"]" gTypeRTCStatsReport' :: JSRef GType
+gTypeRTCStatsReport = GType gTypeRTCStatsReport'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RTCStatsResponse }
+
+instance Eq (RTCStatsResponse) where
+  (RTCStatsResponse a) == (RTCStatsResponse b) = js_eq a b
+
+instance PToJSRef RTCStatsResponse where
+  pToJSRef = unRTCStatsResponse
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RTCStatsResponse where
+  pFromJSRef = RTCStatsResponse
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RTCStatsResponse where
+  toJSRef = return . unRTCStatsResponse
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RTCStatsResponse where
+  fromJSRef = return . fmap RTCStatsResponse . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject RTCStatsResponse where
+  toGObject = GObject . castRef . unRTCStatsResponse
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RTCStatsResponse . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRTCStatsResponse :: IsGObject obj => obj -> RTCStatsResponse
+castToRTCStatsResponse = castTo gTypeRTCStatsResponse "RTCStatsResponse"
+
+foreign import javascript unsafe "window[\"RTCStatsResponse\"]" gTypeRTCStatsResponse' :: JSRef GType
+gTypeRTCStatsResponse = GType gTypeRTCStatsResponse'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef RadioNodeList }
+
+instance Eq (RadioNodeList) where
+  (RadioNodeList a) == (RadioNodeList b) = js_eq a b
+
+instance PToJSRef RadioNodeList where
+  pToJSRef = unRadioNodeList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef RadioNodeList where
+  pFromJSRef = RadioNodeList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef RadioNodeList where
+  toJSRef = return . unRadioNodeList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef RadioNodeList where
+  fromJSRef = return . fmap RadioNodeList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsNodeList RadioNodeList
+instance IsGObject RadioNodeList where
+  toGObject = GObject . castRef . unRadioNodeList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = RadioNodeList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRadioNodeList :: IsGObject obj => obj -> RadioNodeList
+castToRadioNodeList = castTo gTypeRadioNodeList "RadioNodeList"
+
+foreign import javascript unsafe "window[\"RadioNodeList\"]" gTypeRadioNodeList' :: JSRef GType
+gTypeRadioNodeList = GType gTypeRadioNodeList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Range }
+
+instance Eq (Range) where
+  (Range a) == (Range b) = js_eq a b
+
+instance PToJSRef Range where
+  pToJSRef = unRange
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Range where
+  pFromJSRef = Range
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Range where
+  toJSRef = return . unRange
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Range where
+  fromJSRef = return . fmap Range . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Range where
+  toGObject = GObject . castRef . unRange
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Range . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRange :: IsGObject obj => obj -> Range
+castToRange = castTo gTypeRange "Range"
+
+foreign import javascript unsafe "window[\"Range\"]" gTypeRange' :: JSRef GType
+gTypeRange = GType gTypeRange'
+#else
+type IsRange o = RangeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ReadableStream }
+
+instance Eq (ReadableStream) where
+  (ReadableStream a) == (ReadableStream b) = js_eq a b
+
+instance PToJSRef ReadableStream where
+  pToJSRef = unReadableStream
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ReadableStream where
+  pFromJSRef = ReadableStream
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ReadableStream where
+  toJSRef = return . unReadableStream
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ReadableStream where
+  fromJSRef = return . fmap ReadableStream . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ReadableStream where
+  toGObject = GObject . castRef . unReadableStream
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ReadableStream . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToReadableStream :: IsGObject obj => obj -> ReadableStream
+castToReadableStream = castTo gTypeReadableStream "ReadableStream"
+
+foreign import javascript unsafe "window[\"ReadableStream\"]" gTypeReadableStream' :: JSRef GType
+gTypeReadableStream = GType gTypeReadableStream'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Rect }
+
+instance Eq (Rect) where
+  (Rect a) == (Rect b) = js_eq a b
+
+instance PToJSRef Rect where
+  pToJSRef = unRect
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Rect where
+  pFromJSRef = Rect
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Rect where
+  toJSRef = return . unRect
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Rect where
+  fromJSRef = return . fmap Rect . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Rect where
+  toGObject = GObject . castRef . unRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Rect . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToRect :: IsGObject obj => obj -> Rect
+castToRect = castTo gTypeRect "Rect"
+
+foreign import javascript unsafe "window[\"Rect\"]" gTypeRect' :: JSRef GType
+gTypeRect = GType gTypeRect'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SQLError }
+
+instance Eq (SQLError) where
+  (SQLError a) == (SQLError b) = js_eq a b
+
+instance PToJSRef SQLError where
+  pToJSRef = unSQLError
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SQLError where
+  pFromJSRef = SQLError
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SQLError where
+  toJSRef = return . unSQLError
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SQLError where
+  fromJSRef = return . fmap SQLError . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SQLError where
+  toGObject = GObject . castRef . unSQLError
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLError . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLError :: IsGObject obj => obj -> SQLError
+castToSQLError = castTo gTypeSQLError "SQLError"
+
+foreign import javascript unsafe "window[\"SQLError\"]" gTypeSQLError' :: JSRef GType
+gTypeSQLError = GType gTypeSQLError'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SQLResultSet }
+
+instance Eq (SQLResultSet) where
+  (SQLResultSet a) == (SQLResultSet b) = js_eq a b
+
+instance PToJSRef SQLResultSet where
+  pToJSRef = unSQLResultSet
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SQLResultSet where
+  pFromJSRef = SQLResultSet
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SQLResultSet where
+  toJSRef = return . unSQLResultSet
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SQLResultSet where
+  fromJSRef = return . fmap SQLResultSet . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SQLResultSet where
+  toGObject = GObject . castRef . unSQLResultSet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLResultSet . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLResultSet :: IsGObject obj => obj -> SQLResultSet
+castToSQLResultSet = castTo gTypeSQLResultSet "SQLResultSet"
+
+foreign import javascript unsafe "window[\"SQLResultSet\"]" gTypeSQLResultSet' :: JSRef GType
+gTypeSQLResultSet = GType gTypeSQLResultSet'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SQLResultSetRowList }
+
+instance Eq (SQLResultSetRowList) where
+  (SQLResultSetRowList a) == (SQLResultSetRowList b) = js_eq a b
+
+instance PToJSRef SQLResultSetRowList where
+  pToJSRef = unSQLResultSetRowList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SQLResultSetRowList where
+  pFromJSRef = SQLResultSetRowList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SQLResultSetRowList where
+  toJSRef = return . unSQLResultSetRowList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SQLResultSetRowList where
+  fromJSRef = return . fmap SQLResultSetRowList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SQLResultSetRowList where
+  toGObject = GObject . castRef . unSQLResultSetRowList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLResultSetRowList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLResultSetRowList :: IsGObject obj => obj -> SQLResultSetRowList
+castToSQLResultSetRowList = castTo gTypeSQLResultSetRowList "SQLResultSetRowList"
+
+foreign import javascript unsafe "window[\"SQLResultSetRowList\"]" gTypeSQLResultSetRowList' :: JSRef GType
+gTypeSQLResultSetRowList = GType gTypeSQLResultSetRowList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SQLTransaction }
+
+instance Eq (SQLTransaction) where
+  (SQLTransaction a) == (SQLTransaction b) = js_eq a b
+
+instance PToJSRef SQLTransaction where
+  pToJSRef = unSQLTransaction
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SQLTransaction where
+  pFromJSRef = SQLTransaction
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SQLTransaction where
+  toJSRef = return . unSQLTransaction
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SQLTransaction where
+  fromJSRef = return . fmap SQLTransaction . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SQLTransaction where
+  toGObject = GObject . castRef . unSQLTransaction
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SQLTransaction . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSQLTransaction :: IsGObject obj => obj -> SQLTransaction
+castToSQLTransaction = castTo gTypeSQLTransaction "SQLTransaction"
+
+foreign import javascript unsafe "window[\"SQLTransaction\"]" gTypeSQLTransaction' :: JSRef GType
+gTypeSQLTransaction = GType gTypeSQLTransaction'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAElement }
+
+instance Eq (SVGAElement) where
+  (SVGAElement a) == (SVGAElement b) = js_eq a b
+
+instance PToJSRef SVGAElement where
+  pToJSRef = unSVGAElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAElement where
+  pFromJSRef = SVGAElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAElement where
+  toJSRef = return . unSVGAElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAElement where
+  fromJSRef = return . fmap SVGAElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGAElement
+instance IsSVGElement SVGAElement
+instance IsElement SVGAElement
+instance IsNode SVGAElement
+instance IsEventTarget SVGAElement
+instance IsGObject SVGAElement where
+  toGObject = GObject . castRef . unSVGAElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAElement :: IsGObject obj => obj -> SVGAElement
+castToSVGAElement = castTo gTypeSVGAElement "SVGAElement"
+
+foreign import javascript unsafe "window[\"SVGAElement\"]" gTypeSVGAElement' :: JSRef GType
+gTypeSVGAElement = GType gTypeSVGAElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAltGlyphDefElement }
+
+instance Eq (SVGAltGlyphDefElement) where
+  (SVGAltGlyphDefElement a) == (SVGAltGlyphDefElement b) = js_eq a b
+
+instance PToJSRef SVGAltGlyphDefElement where
+  pToJSRef = unSVGAltGlyphDefElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAltGlyphDefElement where
+  pFromJSRef = SVGAltGlyphDefElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAltGlyphDefElement where
+  toJSRef = return . unSVGAltGlyphDefElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAltGlyphDefElement where
+  fromJSRef = return . fmap SVGAltGlyphDefElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGAltGlyphDefElement
+instance IsElement SVGAltGlyphDefElement
+instance IsNode SVGAltGlyphDefElement
+instance IsEventTarget SVGAltGlyphDefElement
+instance IsGObject SVGAltGlyphDefElement where
+  toGObject = GObject . castRef . unSVGAltGlyphDefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphDefElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphDefElement :: IsGObject obj => obj -> SVGAltGlyphDefElement
+castToSVGAltGlyphDefElement = castTo gTypeSVGAltGlyphDefElement "SVGAltGlyphDefElement"
+
+foreign import javascript unsafe "window[\"SVGAltGlyphDefElement\"]" gTypeSVGAltGlyphDefElement' :: JSRef GType
+gTypeSVGAltGlyphDefElement = GType gTypeSVGAltGlyphDefElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAltGlyphElement }
+
+instance Eq (SVGAltGlyphElement) where
+  (SVGAltGlyphElement a) == (SVGAltGlyphElement b) = js_eq a b
+
+instance PToJSRef SVGAltGlyphElement where
+  pToJSRef = unSVGAltGlyphElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAltGlyphElement where
+  pFromJSRef = SVGAltGlyphElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAltGlyphElement where
+  toJSRef = return . unSVGAltGlyphElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAltGlyphElement where
+  fromJSRef = return . fmap SVGAltGlyphElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGAltGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphElement :: IsGObject obj => obj -> SVGAltGlyphElement
+castToSVGAltGlyphElement = castTo gTypeSVGAltGlyphElement "SVGAltGlyphElement"
+
+foreign import javascript unsafe "window[\"SVGAltGlyphElement\"]" gTypeSVGAltGlyphElement' :: JSRef GType
+gTypeSVGAltGlyphElement = GType gTypeSVGAltGlyphElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAltGlyphItemElement }
+
+instance Eq (SVGAltGlyphItemElement) where
+  (SVGAltGlyphItemElement a) == (SVGAltGlyphItemElement b) = js_eq a b
+
+instance PToJSRef SVGAltGlyphItemElement where
+  pToJSRef = unSVGAltGlyphItemElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAltGlyphItemElement where
+  pFromJSRef = SVGAltGlyphItemElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAltGlyphItemElement where
+  toJSRef = return . unSVGAltGlyphItemElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAltGlyphItemElement where
+  fromJSRef = return . fmap SVGAltGlyphItemElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGAltGlyphItemElement
+instance IsElement SVGAltGlyphItemElement
+instance IsNode SVGAltGlyphItemElement
+instance IsEventTarget SVGAltGlyphItemElement
+instance IsGObject SVGAltGlyphItemElement where
+  toGObject = GObject . castRef . unSVGAltGlyphItemElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAltGlyphItemElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAltGlyphItemElement :: IsGObject obj => obj -> SVGAltGlyphItemElement
+castToSVGAltGlyphItemElement = castTo gTypeSVGAltGlyphItemElement "SVGAltGlyphItemElement"
+
+foreign import javascript unsafe "window[\"SVGAltGlyphItemElement\"]" gTypeSVGAltGlyphItemElement' :: JSRef GType
+gTypeSVGAltGlyphItemElement = GType gTypeSVGAltGlyphItemElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAngle }
+
+instance Eq (SVGAngle) where
+  (SVGAngle a) == (SVGAngle b) = js_eq a b
+
+instance PToJSRef SVGAngle where
+  pToJSRef = unSVGAngle
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAngle where
+  pFromJSRef = SVGAngle
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAngle where
+  toJSRef = return . unSVGAngle
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAngle where
+  fromJSRef = return . fmap SVGAngle . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAngle where
+  toGObject = GObject . castRef . unSVGAngle
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAngle . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAngle :: IsGObject obj => obj -> SVGAngle
+castToSVGAngle = castTo gTypeSVGAngle "SVGAngle"
+
+foreign import javascript unsafe "window[\"SVGAngle\"]" gTypeSVGAngle' :: JSRef GType
+gTypeSVGAngle = GType gTypeSVGAngle'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimateColorElement }
+
+instance Eq (SVGAnimateColorElement) where
+  (SVGAnimateColorElement a) == (SVGAnimateColorElement b) = js_eq a b
+
+instance PToJSRef SVGAnimateColorElement where
+  pToJSRef = unSVGAnimateColorElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimateColorElement where
+  pFromJSRef = SVGAnimateColorElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimateColorElement where
+  toJSRef = return . unSVGAnimateColorElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimateColorElement where
+  fromJSRef = return . fmap SVGAnimateColorElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGAnimationElement SVGAnimateColorElement
+instance IsSVGElement SVGAnimateColorElement
+instance IsElement SVGAnimateColorElement
+instance IsNode SVGAnimateColorElement
+instance IsEventTarget SVGAnimateColorElement
+instance IsGObject SVGAnimateColorElement where
+  toGObject = GObject . castRef . unSVGAnimateColorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateColorElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateColorElement :: IsGObject obj => obj -> SVGAnimateColorElement
+castToSVGAnimateColorElement = castTo gTypeSVGAnimateColorElement "SVGAnimateColorElement"
+
+foreign import javascript unsafe "window[\"SVGAnimateColorElement\"]" gTypeSVGAnimateColorElement' :: JSRef GType
+gTypeSVGAnimateColorElement = GType gTypeSVGAnimateColorElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimateElement }
+
+instance Eq (SVGAnimateElement) where
+  (SVGAnimateElement a) == (SVGAnimateElement b) = js_eq a b
+
+instance PToJSRef SVGAnimateElement where
+  pToJSRef = unSVGAnimateElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimateElement where
+  pFromJSRef = SVGAnimateElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimateElement where
+  toJSRef = return . unSVGAnimateElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimateElement where
+  fromJSRef = return . fmap SVGAnimateElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGAnimationElement SVGAnimateElement
+instance IsSVGElement SVGAnimateElement
+instance IsElement SVGAnimateElement
+instance IsNode SVGAnimateElement
+instance IsEventTarget SVGAnimateElement
+instance IsGObject SVGAnimateElement where
+  toGObject = GObject . castRef . unSVGAnimateElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateElement :: IsGObject obj => obj -> SVGAnimateElement
+castToSVGAnimateElement = castTo gTypeSVGAnimateElement "SVGAnimateElement"
+
+foreign import javascript unsafe "window[\"SVGAnimateElement\"]" gTypeSVGAnimateElement' :: JSRef GType
+gTypeSVGAnimateElement = GType gTypeSVGAnimateElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimateMotionElement }
+
+instance Eq (SVGAnimateMotionElement) where
+  (SVGAnimateMotionElement a) == (SVGAnimateMotionElement b) = js_eq a b
+
+instance PToJSRef SVGAnimateMotionElement where
+  pToJSRef = unSVGAnimateMotionElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimateMotionElement where
+  pFromJSRef = SVGAnimateMotionElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimateMotionElement where
+  toJSRef = return . unSVGAnimateMotionElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimateMotionElement where
+  fromJSRef = return . fmap SVGAnimateMotionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGAnimationElement SVGAnimateMotionElement
+instance IsSVGElement SVGAnimateMotionElement
+instance IsElement SVGAnimateMotionElement
+instance IsNode SVGAnimateMotionElement
+instance IsEventTarget SVGAnimateMotionElement
+instance IsGObject SVGAnimateMotionElement where
+  toGObject = GObject . castRef . unSVGAnimateMotionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateMotionElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateMotionElement :: IsGObject obj => obj -> SVGAnimateMotionElement
+castToSVGAnimateMotionElement = castTo gTypeSVGAnimateMotionElement "SVGAnimateMotionElement"
+
+foreign import javascript unsafe "window[\"SVGAnimateMotionElement\"]" gTypeSVGAnimateMotionElement' :: JSRef GType
+gTypeSVGAnimateMotionElement = GType gTypeSVGAnimateMotionElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimateTransformElement }
+
+instance Eq (SVGAnimateTransformElement) where
+  (SVGAnimateTransformElement a) == (SVGAnimateTransformElement b) = js_eq a b
+
+instance PToJSRef SVGAnimateTransformElement where
+  pToJSRef = unSVGAnimateTransformElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimateTransformElement where
+  pFromJSRef = SVGAnimateTransformElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimateTransformElement where
+  toJSRef = return . unSVGAnimateTransformElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimateTransformElement where
+  fromJSRef = return . fmap SVGAnimateTransformElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGAnimationElement SVGAnimateTransformElement
+instance IsSVGElement SVGAnimateTransformElement
+instance IsElement SVGAnimateTransformElement
+instance IsNode SVGAnimateTransformElement
+instance IsEventTarget SVGAnimateTransformElement
+instance IsGObject SVGAnimateTransformElement where
+  toGObject = GObject . castRef . unSVGAnimateTransformElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimateTransformElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimateTransformElement :: IsGObject obj => obj -> SVGAnimateTransformElement
+castToSVGAnimateTransformElement = castTo gTypeSVGAnimateTransformElement "SVGAnimateTransformElement"
+
+foreign import javascript unsafe "window[\"SVGAnimateTransformElement\"]" gTypeSVGAnimateTransformElement' :: JSRef GType
+gTypeSVGAnimateTransformElement = GType gTypeSVGAnimateTransformElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedAngle }
+
+instance Eq (SVGAnimatedAngle) where
+  (SVGAnimatedAngle a) == (SVGAnimatedAngle b) = js_eq a b
+
+instance PToJSRef SVGAnimatedAngle where
+  pToJSRef = unSVGAnimatedAngle
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedAngle where
+  pFromJSRef = SVGAnimatedAngle
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedAngle where
+  toJSRef = return . unSVGAnimatedAngle
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedAngle where
+  fromJSRef = return . fmap SVGAnimatedAngle . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedAngle where
+  toGObject = GObject . castRef . unSVGAnimatedAngle
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedAngle . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedAngle :: IsGObject obj => obj -> SVGAnimatedAngle
+castToSVGAnimatedAngle = castTo gTypeSVGAnimatedAngle "SVGAnimatedAngle"
+
+foreign import javascript unsafe "window[\"SVGAnimatedAngle\"]" gTypeSVGAnimatedAngle' :: JSRef GType
+gTypeSVGAnimatedAngle = GType gTypeSVGAnimatedAngle'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedBoolean }
+
+instance Eq (SVGAnimatedBoolean) where
+  (SVGAnimatedBoolean a) == (SVGAnimatedBoolean b) = js_eq a b
+
+instance PToJSRef SVGAnimatedBoolean where
+  pToJSRef = unSVGAnimatedBoolean
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedBoolean where
+  pFromJSRef = SVGAnimatedBoolean
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedBoolean where
+  toJSRef = return . unSVGAnimatedBoolean
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedBoolean where
+  fromJSRef = return . fmap SVGAnimatedBoolean . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedBoolean where
+  toGObject = GObject . castRef . unSVGAnimatedBoolean
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedBoolean . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedBoolean :: IsGObject obj => obj -> SVGAnimatedBoolean
+castToSVGAnimatedBoolean = castTo gTypeSVGAnimatedBoolean "SVGAnimatedBoolean"
+
+foreign import javascript unsafe "window[\"SVGAnimatedBoolean\"]" gTypeSVGAnimatedBoolean' :: JSRef GType
+gTypeSVGAnimatedBoolean = GType gTypeSVGAnimatedBoolean'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedEnumeration }
+
+instance Eq (SVGAnimatedEnumeration) where
+  (SVGAnimatedEnumeration a) == (SVGAnimatedEnumeration b) = js_eq a b
+
+instance PToJSRef SVGAnimatedEnumeration where
+  pToJSRef = unSVGAnimatedEnumeration
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedEnumeration where
+  pFromJSRef = SVGAnimatedEnumeration
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedEnumeration where
+  toJSRef = return . unSVGAnimatedEnumeration
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedEnumeration where
+  fromJSRef = return . fmap SVGAnimatedEnumeration . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedEnumeration where
+  toGObject = GObject . castRef . unSVGAnimatedEnumeration
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedEnumeration . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedEnumeration :: IsGObject obj => obj -> SVGAnimatedEnumeration
+castToSVGAnimatedEnumeration = castTo gTypeSVGAnimatedEnumeration "SVGAnimatedEnumeration"
+
+foreign import javascript unsafe "window[\"SVGAnimatedEnumeration\"]" gTypeSVGAnimatedEnumeration' :: JSRef GType
+gTypeSVGAnimatedEnumeration = GType gTypeSVGAnimatedEnumeration'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedInteger }
+
+instance Eq (SVGAnimatedInteger) where
+  (SVGAnimatedInteger a) == (SVGAnimatedInteger b) = js_eq a b
+
+instance PToJSRef SVGAnimatedInteger where
+  pToJSRef = unSVGAnimatedInteger
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedInteger where
+  pFromJSRef = SVGAnimatedInteger
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedInteger where
+  toJSRef = return . unSVGAnimatedInteger
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedInteger where
+  fromJSRef = return . fmap SVGAnimatedInteger . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedInteger where
+  toGObject = GObject . castRef . unSVGAnimatedInteger
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedInteger . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedInteger :: IsGObject obj => obj -> SVGAnimatedInteger
+castToSVGAnimatedInteger = castTo gTypeSVGAnimatedInteger "SVGAnimatedInteger"
+
+foreign import javascript unsafe "window[\"SVGAnimatedInteger\"]" gTypeSVGAnimatedInteger' :: JSRef GType
+gTypeSVGAnimatedInteger = GType gTypeSVGAnimatedInteger'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedLength }
+
+instance Eq (SVGAnimatedLength) where
+  (SVGAnimatedLength a) == (SVGAnimatedLength b) = js_eq a b
+
+instance PToJSRef SVGAnimatedLength where
+  pToJSRef = unSVGAnimatedLength
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedLength where
+  pFromJSRef = SVGAnimatedLength
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedLength where
+  toJSRef = return . unSVGAnimatedLength
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedLength where
+  fromJSRef = return . fmap SVGAnimatedLength . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedLength where
+  toGObject = GObject . castRef . unSVGAnimatedLength
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedLength . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedLength :: IsGObject obj => obj -> SVGAnimatedLength
+castToSVGAnimatedLength = castTo gTypeSVGAnimatedLength "SVGAnimatedLength"
+
+foreign import javascript unsafe "window[\"SVGAnimatedLength\"]" gTypeSVGAnimatedLength' :: JSRef GType
+gTypeSVGAnimatedLength = GType gTypeSVGAnimatedLength'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedLengthList }
+
+instance Eq (SVGAnimatedLengthList) where
+  (SVGAnimatedLengthList a) == (SVGAnimatedLengthList b) = js_eq a b
+
+instance PToJSRef SVGAnimatedLengthList where
+  pToJSRef = unSVGAnimatedLengthList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedLengthList where
+  pFromJSRef = SVGAnimatedLengthList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedLengthList where
+  toJSRef = return . unSVGAnimatedLengthList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedLengthList where
+  fromJSRef = return . fmap SVGAnimatedLengthList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedLengthList where
+  toGObject = GObject . castRef . unSVGAnimatedLengthList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedLengthList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedLengthList :: IsGObject obj => obj -> SVGAnimatedLengthList
+castToSVGAnimatedLengthList = castTo gTypeSVGAnimatedLengthList "SVGAnimatedLengthList"
+
+foreign import javascript unsafe "window[\"SVGAnimatedLengthList\"]" gTypeSVGAnimatedLengthList' :: JSRef GType
+gTypeSVGAnimatedLengthList = GType gTypeSVGAnimatedLengthList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedNumber }
+
+instance Eq (SVGAnimatedNumber) where
+  (SVGAnimatedNumber a) == (SVGAnimatedNumber b) = js_eq a b
+
+instance PToJSRef SVGAnimatedNumber where
+  pToJSRef = unSVGAnimatedNumber
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedNumber where
+  pFromJSRef = SVGAnimatedNumber
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedNumber where
+  toJSRef = return . unSVGAnimatedNumber
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedNumber where
+  fromJSRef = return . fmap SVGAnimatedNumber . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedNumber where
+  toGObject = GObject . castRef . unSVGAnimatedNumber
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedNumber . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedNumber :: IsGObject obj => obj -> SVGAnimatedNumber
+castToSVGAnimatedNumber = castTo gTypeSVGAnimatedNumber "SVGAnimatedNumber"
+
+foreign import javascript unsafe "window[\"SVGAnimatedNumber\"]" gTypeSVGAnimatedNumber' :: JSRef GType
+gTypeSVGAnimatedNumber = GType gTypeSVGAnimatedNumber'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedNumberList }
+
+instance Eq (SVGAnimatedNumberList) where
+  (SVGAnimatedNumberList a) == (SVGAnimatedNumberList b) = js_eq a b
+
+instance PToJSRef SVGAnimatedNumberList where
+  pToJSRef = unSVGAnimatedNumberList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedNumberList where
+  pFromJSRef = SVGAnimatedNumberList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedNumberList where
+  toJSRef = return . unSVGAnimatedNumberList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedNumberList where
+  fromJSRef = return . fmap SVGAnimatedNumberList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedNumberList where
+  toGObject = GObject . castRef . unSVGAnimatedNumberList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedNumberList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedNumberList :: IsGObject obj => obj -> SVGAnimatedNumberList
+castToSVGAnimatedNumberList = castTo gTypeSVGAnimatedNumberList "SVGAnimatedNumberList"
+
+foreign import javascript unsafe "window[\"SVGAnimatedNumberList\"]" gTypeSVGAnimatedNumberList' :: JSRef GType
+gTypeSVGAnimatedNumberList = GType gTypeSVGAnimatedNumberList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedPreserveAspectRatio }
+
+instance Eq (SVGAnimatedPreserveAspectRatio) where
+  (SVGAnimatedPreserveAspectRatio a) == (SVGAnimatedPreserveAspectRatio b) = js_eq a b
+
+instance PToJSRef SVGAnimatedPreserveAspectRatio where
+  pToJSRef = unSVGAnimatedPreserveAspectRatio
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedPreserveAspectRatio where
+  pFromJSRef = SVGAnimatedPreserveAspectRatio
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedPreserveAspectRatio where
+  toJSRef = return . unSVGAnimatedPreserveAspectRatio
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedPreserveAspectRatio where
+  fromJSRef = return . fmap SVGAnimatedPreserveAspectRatio . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedPreserveAspectRatio where
+  toGObject = GObject . castRef . unSVGAnimatedPreserveAspectRatio
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedPreserveAspectRatio . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedPreserveAspectRatio :: IsGObject obj => obj -> SVGAnimatedPreserveAspectRatio
+castToSVGAnimatedPreserveAspectRatio = castTo gTypeSVGAnimatedPreserveAspectRatio "SVGAnimatedPreserveAspectRatio"
+
+foreign import javascript unsafe "window[\"SVGAnimatedPreserveAspectRatio\"]" gTypeSVGAnimatedPreserveAspectRatio' :: JSRef GType
+gTypeSVGAnimatedPreserveAspectRatio = GType gTypeSVGAnimatedPreserveAspectRatio'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedRect }
+
+instance Eq (SVGAnimatedRect) where
+  (SVGAnimatedRect a) == (SVGAnimatedRect b) = js_eq a b
+
+instance PToJSRef SVGAnimatedRect where
+  pToJSRef = unSVGAnimatedRect
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedRect where
+  pFromJSRef = SVGAnimatedRect
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedRect where
+  toJSRef = return . unSVGAnimatedRect
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedRect where
+  fromJSRef = return . fmap SVGAnimatedRect . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedRect where
+  toGObject = GObject . castRef . unSVGAnimatedRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedRect . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedRect :: IsGObject obj => obj -> SVGAnimatedRect
+castToSVGAnimatedRect = castTo gTypeSVGAnimatedRect "SVGAnimatedRect"
+
+foreign import javascript unsafe "window[\"SVGAnimatedRect\"]" gTypeSVGAnimatedRect' :: JSRef GType
+gTypeSVGAnimatedRect = GType gTypeSVGAnimatedRect'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedString }
+
+instance Eq (SVGAnimatedString) where
+  (SVGAnimatedString a) == (SVGAnimatedString b) = js_eq a b
+
+instance PToJSRef SVGAnimatedString where
+  pToJSRef = unSVGAnimatedString
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedString where
+  pFromJSRef = SVGAnimatedString
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedString where
+  toJSRef = return . unSVGAnimatedString
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedString where
+  fromJSRef = return . fmap SVGAnimatedString . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedString where
+  toGObject = GObject . castRef . unSVGAnimatedString
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedString . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedString :: IsGObject obj => obj -> SVGAnimatedString
+castToSVGAnimatedString = castTo gTypeSVGAnimatedString "SVGAnimatedString"
+
+foreign import javascript unsafe "window[\"SVGAnimatedString\"]" gTypeSVGAnimatedString' :: JSRef GType
+gTypeSVGAnimatedString = GType gTypeSVGAnimatedString'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimatedTransformList }
+
+instance Eq (SVGAnimatedTransformList) where
+  (SVGAnimatedTransformList a) == (SVGAnimatedTransformList b) = js_eq a b
+
+instance PToJSRef SVGAnimatedTransformList where
+  pToJSRef = unSVGAnimatedTransformList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimatedTransformList where
+  pFromJSRef = SVGAnimatedTransformList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimatedTransformList where
+  toJSRef = return . unSVGAnimatedTransformList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimatedTransformList where
+  fromJSRef = return . fmap SVGAnimatedTransformList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGAnimatedTransformList where
+  toGObject = GObject . castRef . unSVGAnimatedTransformList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimatedTransformList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimatedTransformList :: IsGObject obj => obj -> SVGAnimatedTransformList
+castToSVGAnimatedTransformList = castTo gTypeSVGAnimatedTransformList "SVGAnimatedTransformList"
+
+foreign import javascript unsafe "window[\"SVGAnimatedTransformList\"]" gTypeSVGAnimatedTransformList' :: JSRef GType
+gTypeSVGAnimatedTransformList = GType gTypeSVGAnimatedTransformList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGAnimationElement }
+
+instance Eq (SVGAnimationElement) where
+  (SVGAnimationElement a) == (SVGAnimationElement b) = js_eq a b
+
+instance PToJSRef SVGAnimationElement where
+  pToJSRef = unSVGAnimationElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGAnimationElement where
+  pFromJSRef = SVGAnimationElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGAnimationElement where
+  toJSRef = return . unSVGAnimationElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGAnimationElement where
+  fromJSRef = return . fmap SVGAnimationElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGAnimationElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGAnimationElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGAnimationElement :: IsGObject obj => obj -> SVGAnimationElement
+castToSVGAnimationElement = castTo gTypeSVGAnimationElement "SVGAnimationElement"
+
+foreign import javascript unsafe "window[\"SVGAnimationElement\"]" gTypeSVGAnimationElement' :: JSRef GType
+gTypeSVGAnimationElement = GType gTypeSVGAnimationElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGCircleElement }
+
+instance Eq (SVGCircleElement) where
+  (SVGCircleElement a) == (SVGCircleElement b) = js_eq a b
+
+instance PToJSRef SVGCircleElement where
+  pToJSRef = unSVGCircleElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGCircleElement where
+  pFromJSRef = SVGCircleElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGCircleElement where
+  toJSRef = return . unSVGCircleElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGCircleElement where
+  fromJSRef = return . fmap SVGCircleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGCircleElement
+instance IsSVGElement SVGCircleElement
+instance IsElement SVGCircleElement
+instance IsNode SVGCircleElement
+instance IsEventTarget SVGCircleElement
+instance IsGObject SVGCircleElement where
+  toGObject = GObject . castRef . unSVGCircleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGCircleElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGCircleElement :: IsGObject obj => obj -> SVGCircleElement
+castToSVGCircleElement = castTo gTypeSVGCircleElement "SVGCircleElement"
+
+foreign import javascript unsafe "window[\"SVGCircleElement\"]" gTypeSVGCircleElement' :: JSRef GType
+gTypeSVGCircleElement = GType gTypeSVGCircleElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGClipPathElement }
+
+instance Eq (SVGClipPathElement) where
+  (SVGClipPathElement a) == (SVGClipPathElement b) = js_eq a b
+
+instance PToJSRef SVGClipPathElement where
+  pToJSRef = unSVGClipPathElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGClipPathElement where
+  pFromJSRef = SVGClipPathElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGClipPathElement where
+  toJSRef = return . unSVGClipPathElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGClipPathElement where
+  fromJSRef = return . fmap SVGClipPathElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGClipPathElement
+instance IsSVGElement SVGClipPathElement
+instance IsElement SVGClipPathElement
+instance IsNode SVGClipPathElement
+instance IsEventTarget SVGClipPathElement
+instance IsGObject SVGClipPathElement where
+  toGObject = GObject . castRef . unSVGClipPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGClipPathElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGClipPathElement :: IsGObject obj => obj -> SVGClipPathElement
+castToSVGClipPathElement = castTo gTypeSVGClipPathElement "SVGClipPathElement"
+
+foreign import javascript unsafe "window[\"SVGClipPathElement\"]" gTypeSVGClipPathElement' :: JSRef GType
+gTypeSVGClipPathElement = GType gTypeSVGClipPathElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGColor }
+
+instance Eq (SVGColor) where
+  (SVGColor a) == (SVGColor b) = js_eq a b
+
+instance PToJSRef SVGColor where
+  pToJSRef = unSVGColor
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGColor where
+  pFromJSRef = SVGColor
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGColor where
+  toJSRef = return . unSVGColor
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGColor where
+  fromJSRef = return . fmap SVGColor . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGColor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGColor . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGColor :: IsGObject obj => obj -> SVGColor
+castToSVGColor = castTo gTypeSVGColor "SVGColor"
+
+foreign import javascript unsafe "window[\"SVGColor\"]" gTypeSVGColor' :: JSRef GType
+gTypeSVGColor = GType gTypeSVGColor'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGComponentTransferFunctionElement }
+
+instance Eq (SVGComponentTransferFunctionElement) where
+  (SVGComponentTransferFunctionElement a) == (SVGComponentTransferFunctionElement b) = js_eq a b
+
+instance PToJSRef SVGComponentTransferFunctionElement where
+  pToJSRef = unSVGComponentTransferFunctionElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGComponentTransferFunctionElement where
+  pFromJSRef = SVGComponentTransferFunctionElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGComponentTransferFunctionElement where
+  toJSRef = return . unSVGComponentTransferFunctionElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGComponentTransferFunctionElement where
+  fromJSRef = return . fmap SVGComponentTransferFunctionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGComponentTransferFunctionElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGComponentTransferFunctionElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGComponentTransferFunctionElement :: IsGObject obj => obj -> SVGComponentTransferFunctionElement
+castToSVGComponentTransferFunctionElement = castTo gTypeSVGComponentTransferFunctionElement "SVGComponentTransferFunctionElement"
+
+foreign import javascript unsafe "window[\"SVGComponentTransferFunctionElement\"]" gTypeSVGComponentTransferFunctionElement' :: JSRef GType
+gTypeSVGComponentTransferFunctionElement = GType gTypeSVGComponentTransferFunctionElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGCursorElement }
+
+instance Eq (SVGCursorElement) where
+  (SVGCursorElement a) == (SVGCursorElement b) = js_eq a b
+
+instance PToJSRef SVGCursorElement where
+  pToJSRef = unSVGCursorElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGCursorElement where
+  pFromJSRef = SVGCursorElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGCursorElement where
+  toJSRef = return . unSVGCursorElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGCursorElement where
+  fromJSRef = return . fmap SVGCursorElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGCursorElement
+instance IsElement SVGCursorElement
+instance IsNode SVGCursorElement
+instance IsEventTarget SVGCursorElement
+instance IsGObject SVGCursorElement where
+  toGObject = GObject . castRef . unSVGCursorElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGCursorElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGCursorElement :: IsGObject obj => obj -> SVGCursorElement
+castToSVGCursorElement = castTo gTypeSVGCursorElement "SVGCursorElement"
+
+foreign import javascript unsafe "window[\"SVGCursorElement\"]" gTypeSVGCursorElement' :: JSRef GType
+gTypeSVGCursorElement = GType gTypeSVGCursorElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGDefsElement }
+
+instance Eq (SVGDefsElement) where
+  (SVGDefsElement a) == (SVGDefsElement b) = js_eq a b
+
+instance PToJSRef SVGDefsElement where
+  pToJSRef = unSVGDefsElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGDefsElement where
+  pFromJSRef = SVGDefsElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGDefsElement where
+  toJSRef = return . unSVGDefsElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGDefsElement where
+  fromJSRef = return . fmap SVGDefsElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGDefsElement
+instance IsSVGElement SVGDefsElement
+instance IsElement SVGDefsElement
+instance IsNode SVGDefsElement
+instance IsEventTarget SVGDefsElement
+instance IsGObject SVGDefsElement where
+  toGObject = GObject . castRef . unSVGDefsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDefsElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDefsElement :: IsGObject obj => obj -> SVGDefsElement
+castToSVGDefsElement = castTo gTypeSVGDefsElement "SVGDefsElement"
+
+foreign import javascript unsafe "window[\"SVGDefsElement\"]" gTypeSVGDefsElement' :: JSRef GType
+gTypeSVGDefsElement = GType gTypeSVGDefsElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGDescElement }
+
+instance Eq (SVGDescElement) where
+  (SVGDescElement a) == (SVGDescElement b) = js_eq a b
+
+instance PToJSRef SVGDescElement where
+  pToJSRef = unSVGDescElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGDescElement where
+  pFromJSRef = SVGDescElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGDescElement where
+  toJSRef = return . unSVGDescElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGDescElement where
+  fromJSRef = return . fmap SVGDescElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGDescElement
+instance IsElement SVGDescElement
+instance IsNode SVGDescElement
+instance IsEventTarget SVGDescElement
+instance IsGObject SVGDescElement where
+  toGObject = GObject . castRef . unSVGDescElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDescElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDescElement :: IsGObject obj => obj -> SVGDescElement
+castToSVGDescElement = castTo gTypeSVGDescElement "SVGDescElement"
+
+foreign import javascript unsafe "window[\"SVGDescElement\"]" gTypeSVGDescElement' :: JSRef GType
+gTypeSVGDescElement = GType gTypeSVGDescElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGDocument }
+
+instance Eq (SVGDocument) where
+  (SVGDocument a) == (SVGDocument b) = js_eq a b
+
+instance PToJSRef SVGDocument where
+  pToJSRef = unSVGDocument
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGDocument where
+  pFromJSRef = SVGDocument
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGDocument where
+  toJSRef = return . unSVGDocument
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGDocument where
+  fromJSRef = return . fmap SVGDocument . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsDocument SVGDocument
+instance IsNode SVGDocument
+instance IsEventTarget SVGDocument
+instance IsGObject SVGDocument where
+  toGObject = GObject . castRef . unSVGDocument
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGDocument . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGDocument :: IsGObject obj => obj -> SVGDocument
+castToSVGDocument = castTo gTypeSVGDocument "SVGDocument"
+
+foreign import javascript unsafe "window[\"SVGDocument\"]" gTypeSVGDocument' :: JSRef GType
+gTypeSVGDocument = GType gTypeSVGDocument'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGElement }
+
+instance Eq (SVGElement) where
+  (SVGElement a) == (SVGElement b) = js_eq a b
+
+instance PToJSRef SVGElement where
+  pToJSRef = unSVGElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGElement where
+  pFromJSRef = SVGElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGElement where
+  toJSRef = return . unSVGElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGElement where
+  fromJSRef = return . fmap SVGElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGElement :: IsGObject obj => obj -> SVGElement
+castToSVGElement = castTo gTypeSVGElement "SVGElement"
+
+foreign import javascript unsafe "window[\"SVGElement\"]" gTypeSVGElement' :: JSRef GType
+gTypeSVGElement = GType gTypeSVGElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGEllipseElement }
+
+instance Eq (SVGEllipseElement) where
+  (SVGEllipseElement a) == (SVGEllipseElement b) = js_eq a b
+
+instance PToJSRef SVGEllipseElement where
+  pToJSRef = unSVGEllipseElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGEllipseElement where
+  pFromJSRef = SVGEllipseElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGEllipseElement where
+  toJSRef = return . unSVGEllipseElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGEllipseElement where
+  fromJSRef = return . fmap SVGEllipseElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGEllipseElement
+instance IsSVGElement SVGEllipseElement
+instance IsElement SVGEllipseElement
+instance IsNode SVGEllipseElement
+instance IsEventTarget SVGEllipseElement
+instance IsGObject SVGEllipseElement where
+  toGObject = GObject . castRef . unSVGEllipseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGEllipseElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGEllipseElement :: IsGObject obj => obj -> SVGEllipseElement
+castToSVGEllipseElement = castTo gTypeSVGEllipseElement "SVGEllipseElement"
+
+foreign import javascript unsafe "window[\"SVGEllipseElement\"]" gTypeSVGEllipseElement' :: JSRef GType
+gTypeSVGEllipseElement = GType gTypeSVGEllipseElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGExternalResourcesRequired }
+
+instance Eq (SVGExternalResourcesRequired) where
+  (SVGExternalResourcesRequired a) == (SVGExternalResourcesRequired b) = js_eq a b
+
+instance PToJSRef SVGExternalResourcesRequired where
+  pToJSRef = unSVGExternalResourcesRequired
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGExternalResourcesRequired where
+  pFromJSRef = SVGExternalResourcesRequired
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGExternalResourcesRequired where
+  toJSRef = return . unSVGExternalResourcesRequired
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGExternalResourcesRequired where
+  fromJSRef = return . fmap SVGExternalResourcesRequired . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGExternalResourcesRequired where
+  toGObject = GObject . castRef . unSVGExternalResourcesRequired
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGExternalResourcesRequired . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGExternalResourcesRequired :: IsGObject obj => obj -> SVGExternalResourcesRequired
+castToSVGExternalResourcesRequired = castTo gTypeSVGExternalResourcesRequired "SVGExternalResourcesRequired"
+
+foreign import javascript unsafe "window[\"SVGExternalResourcesRequired\"]" gTypeSVGExternalResourcesRequired' :: JSRef GType
+gTypeSVGExternalResourcesRequired = GType gTypeSVGExternalResourcesRequired'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEBlendElement }
+
+instance Eq (SVGFEBlendElement) where
+  (SVGFEBlendElement a) == (SVGFEBlendElement b) = js_eq a b
+
+instance PToJSRef SVGFEBlendElement where
+  pToJSRef = unSVGFEBlendElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEBlendElement where
+  pFromJSRef = SVGFEBlendElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEBlendElement where
+  toJSRef = return . unSVGFEBlendElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEBlendElement where
+  fromJSRef = return . fmap SVGFEBlendElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEBlendElement
+instance IsElement SVGFEBlendElement
+instance IsNode SVGFEBlendElement
+instance IsEventTarget SVGFEBlendElement
+instance IsGObject SVGFEBlendElement where
+  toGObject = GObject . castRef . unSVGFEBlendElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEBlendElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEBlendElement :: IsGObject obj => obj -> SVGFEBlendElement
+castToSVGFEBlendElement = castTo gTypeSVGFEBlendElement "SVGFEBlendElement"
+
+foreign import javascript unsafe "window[\"SVGFEBlendElement\"]" gTypeSVGFEBlendElement' :: JSRef GType
+gTypeSVGFEBlendElement = GType gTypeSVGFEBlendElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEColorMatrixElement }
+
+instance Eq (SVGFEColorMatrixElement) where
+  (SVGFEColorMatrixElement a) == (SVGFEColorMatrixElement b) = js_eq a b
+
+instance PToJSRef SVGFEColorMatrixElement where
+  pToJSRef = unSVGFEColorMatrixElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEColorMatrixElement where
+  pFromJSRef = SVGFEColorMatrixElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEColorMatrixElement where
+  toJSRef = return . unSVGFEColorMatrixElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEColorMatrixElement where
+  fromJSRef = return . fmap SVGFEColorMatrixElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEColorMatrixElement
+instance IsElement SVGFEColorMatrixElement
+instance IsNode SVGFEColorMatrixElement
+instance IsEventTarget SVGFEColorMatrixElement
+instance IsGObject SVGFEColorMatrixElement where
+  toGObject = GObject . castRef . unSVGFEColorMatrixElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEColorMatrixElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEColorMatrixElement :: IsGObject obj => obj -> SVGFEColorMatrixElement
+castToSVGFEColorMatrixElement = castTo gTypeSVGFEColorMatrixElement "SVGFEColorMatrixElement"
+
+foreign import javascript unsafe "window[\"SVGFEColorMatrixElement\"]" gTypeSVGFEColorMatrixElement' :: JSRef GType
+gTypeSVGFEColorMatrixElement = GType gTypeSVGFEColorMatrixElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEComponentTransferElement }
+
+instance Eq (SVGFEComponentTransferElement) where
+  (SVGFEComponentTransferElement a) == (SVGFEComponentTransferElement b) = js_eq a b
+
+instance PToJSRef SVGFEComponentTransferElement where
+  pToJSRef = unSVGFEComponentTransferElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEComponentTransferElement where
+  pFromJSRef = SVGFEComponentTransferElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEComponentTransferElement where
+  toJSRef = return . unSVGFEComponentTransferElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEComponentTransferElement where
+  fromJSRef = return . fmap SVGFEComponentTransferElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEComponentTransferElement
+instance IsElement SVGFEComponentTransferElement
+instance IsNode SVGFEComponentTransferElement
+instance IsEventTarget SVGFEComponentTransferElement
+instance IsGObject SVGFEComponentTransferElement where
+  toGObject = GObject . castRef . unSVGFEComponentTransferElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEComponentTransferElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEComponentTransferElement :: IsGObject obj => obj -> SVGFEComponentTransferElement
+castToSVGFEComponentTransferElement = castTo gTypeSVGFEComponentTransferElement "SVGFEComponentTransferElement"
+
+foreign import javascript unsafe "window[\"SVGFEComponentTransferElement\"]" gTypeSVGFEComponentTransferElement' :: JSRef GType
+gTypeSVGFEComponentTransferElement = GType gTypeSVGFEComponentTransferElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFECompositeElement }
+
+instance Eq (SVGFECompositeElement) where
+  (SVGFECompositeElement a) == (SVGFECompositeElement b) = js_eq a b
+
+instance PToJSRef SVGFECompositeElement where
+  pToJSRef = unSVGFECompositeElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFECompositeElement where
+  pFromJSRef = SVGFECompositeElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFECompositeElement where
+  toJSRef = return . unSVGFECompositeElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFECompositeElement where
+  fromJSRef = return . fmap SVGFECompositeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFECompositeElement
+instance IsElement SVGFECompositeElement
+instance IsNode SVGFECompositeElement
+instance IsEventTarget SVGFECompositeElement
+instance IsGObject SVGFECompositeElement where
+  toGObject = GObject . castRef . unSVGFECompositeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFECompositeElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFECompositeElement :: IsGObject obj => obj -> SVGFECompositeElement
+castToSVGFECompositeElement = castTo gTypeSVGFECompositeElement "SVGFECompositeElement"
+
+foreign import javascript unsafe "window[\"SVGFECompositeElement\"]" gTypeSVGFECompositeElement' :: JSRef GType
+gTypeSVGFECompositeElement = GType gTypeSVGFECompositeElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEConvolveMatrixElement }
+
+instance Eq (SVGFEConvolveMatrixElement) where
+  (SVGFEConvolveMatrixElement a) == (SVGFEConvolveMatrixElement b) = js_eq a b
+
+instance PToJSRef SVGFEConvolveMatrixElement where
+  pToJSRef = unSVGFEConvolveMatrixElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEConvolveMatrixElement where
+  pFromJSRef = SVGFEConvolveMatrixElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEConvolveMatrixElement where
+  toJSRef = return . unSVGFEConvolveMatrixElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEConvolveMatrixElement where
+  fromJSRef = return . fmap SVGFEConvolveMatrixElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEConvolveMatrixElement
+instance IsElement SVGFEConvolveMatrixElement
+instance IsNode SVGFEConvolveMatrixElement
+instance IsEventTarget SVGFEConvolveMatrixElement
+instance IsGObject SVGFEConvolveMatrixElement where
+  toGObject = GObject . castRef . unSVGFEConvolveMatrixElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEConvolveMatrixElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEConvolveMatrixElement :: IsGObject obj => obj -> SVGFEConvolveMatrixElement
+castToSVGFEConvolveMatrixElement = castTo gTypeSVGFEConvolveMatrixElement "SVGFEConvolveMatrixElement"
+
+foreign import javascript unsafe "window[\"SVGFEConvolveMatrixElement\"]" gTypeSVGFEConvolveMatrixElement' :: JSRef GType
+gTypeSVGFEConvolveMatrixElement = GType gTypeSVGFEConvolveMatrixElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEDiffuseLightingElement }
+
+instance Eq (SVGFEDiffuseLightingElement) where
+  (SVGFEDiffuseLightingElement a) == (SVGFEDiffuseLightingElement b) = js_eq a b
+
+instance PToJSRef SVGFEDiffuseLightingElement where
+  pToJSRef = unSVGFEDiffuseLightingElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEDiffuseLightingElement where
+  pFromJSRef = SVGFEDiffuseLightingElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEDiffuseLightingElement where
+  toJSRef = return . unSVGFEDiffuseLightingElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEDiffuseLightingElement where
+  fromJSRef = return . fmap SVGFEDiffuseLightingElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEDiffuseLightingElement
+instance IsElement SVGFEDiffuseLightingElement
+instance IsNode SVGFEDiffuseLightingElement
+instance IsEventTarget SVGFEDiffuseLightingElement
+instance IsGObject SVGFEDiffuseLightingElement where
+  toGObject = GObject . castRef . unSVGFEDiffuseLightingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDiffuseLightingElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDiffuseLightingElement :: IsGObject obj => obj -> SVGFEDiffuseLightingElement
+castToSVGFEDiffuseLightingElement = castTo gTypeSVGFEDiffuseLightingElement "SVGFEDiffuseLightingElement"
+
+foreign import javascript unsafe "window[\"SVGFEDiffuseLightingElement\"]" gTypeSVGFEDiffuseLightingElement' :: JSRef GType
+gTypeSVGFEDiffuseLightingElement = GType gTypeSVGFEDiffuseLightingElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEDisplacementMapElement }
+
+instance Eq (SVGFEDisplacementMapElement) where
+  (SVGFEDisplacementMapElement a) == (SVGFEDisplacementMapElement b) = js_eq a b
+
+instance PToJSRef SVGFEDisplacementMapElement where
+  pToJSRef = unSVGFEDisplacementMapElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEDisplacementMapElement where
+  pFromJSRef = SVGFEDisplacementMapElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEDisplacementMapElement where
+  toJSRef = return . unSVGFEDisplacementMapElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEDisplacementMapElement where
+  fromJSRef = return . fmap SVGFEDisplacementMapElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEDisplacementMapElement
+instance IsElement SVGFEDisplacementMapElement
+instance IsNode SVGFEDisplacementMapElement
+instance IsEventTarget SVGFEDisplacementMapElement
+instance IsGObject SVGFEDisplacementMapElement where
+  toGObject = GObject . castRef . unSVGFEDisplacementMapElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDisplacementMapElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDisplacementMapElement :: IsGObject obj => obj -> SVGFEDisplacementMapElement
+castToSVGFEDisplacementMapElement = castTo gTypeSVGFEDisplacementMapElement "SVGFEDisplacementMapElement"
+
+foreign import javascript unsafe "window[\"SVGFEDisplacementMapElement\"]" gTypeSVGFEDisplacementMapElement' :: JSRef GType
+gTypeSVGFEDisplacementMapElement = GType gTypeSVGFEDisplacementMapElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEDistantLightElement }
+
+instance Eq (SVGFEDistantLightElement) where
+  (SVGFEDistantLightElement a) == (SVGFEDistantLightElement b) = js_eq a b
+
+instance PToJSRef SVGFEDistantLightElement where
+  pToJSRef = unSVGFEDistantLightElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEDistantLightElement where
+  pFromJSRef = SVGFEDistantLightElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEDistantLightElement where
+  toJSRef = return . unSVGFEDistantLightElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEDistantLightElement where
+  fromJSRef = return . fmap SVGFEDistantLightElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEDistantLightElement
+instance IsElement SVGFEDistantLightElement
+instance IsNode SVGFEDistantLightElement
+instance IsEventTarget SVGFEDistantLightElement
+instance IsGObject SVGFEDistantLightElement where
+  toGObject = GObject . castRef . unSVGFEDistantLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDistantLightElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDistantLightElement :: IsGObject obj => obj -> SVGFEDistantLightElement
+castToSVGFEDistantLightElement = castTo gTypeSVGFEDistantLightElement "SVGFEDistantLightElement"
+
+foreign import javascript unsafe "window[\"SVGFEDistantLightElement\"]" gTypeSVGFEDistantLightElement' :: JSRef GType
+gTypeSVGFEDistantLightElement = GType gTypeSVGFEDistantLightElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEDropShadowElement }
+
+instance Eq (SVGFEDropShadowElement) where
+  (SVGFEDropShadowElement a) == (SVGFEDropShadowElement b) = js_eq a b
+
+instance PToJSRef SVGFEDropShadowElement where
+  pToJSRef = unSVGFEDropShadowElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEDropShadowElement where
+  pFromJSRef = SVGFEDropShadowElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEDropShadowElement where
+  toJSRef = return . unSVGFEDropShadowElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEDropShadowElement where
+  fromJSRef = return . fmap SVGFEDropShadowElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEDropShadowElement
+instance IsElement SVGFEDropShadowElement
+instance IsNode SVGFEDropShadowElement
+instance IsEventTarget SVGFEDropShadowElement
+instance IsGObject SVGFEDropShadowElement where
+  toGObject = GObject . castRef . unSVGFEDropShadowElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEDropShadowElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEDropShadowElement :: IsGObject obj => obj -> SVGFEDropShadowElement
+castToSVGFEDropShadowElement = castTo gTypeSVGFEDropShadowElement "SVGFEDropShadowElement"
+
+foreign import javascript unsafe "window[\"SVGFEDropShadowElement\"]" gTypeSVGFEDropShadowElement' :: JSRef GType
+gTypeSVGFEDropShadowElement = GType gTypeSVGFEDropShadowElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEFloodElement }
+
+instance Eq (SVGFEFloodElement) where
+  (SVGFEFloodElement a) == (SVGFEFloodElement b) = js_eq a b
+
+instance PToJSRef SVGFEFloodElement where
+  pToJSRef = unSVGFEFloodElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEFloodElement where
+  pFromJSRef = SVGFEFloodElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEFloodElement where
+  toJSRef = return . unSVGFEFloodElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEFloodElement where
+  fromJSRef = return . fmap SVGFEFloodElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEFloodElement
+instance IsElement SVGFEFloodElement
+instance IsNode SVGFEFloodElement
+instance IsEventTarget SVGFEFloodElement
+instance IsGObject SVGFEFloodElement where
+  toGObject = GObject . castRef . unSVGFEFloodElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFloodElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFloodElement :: IsGObject obj => obj -> SVGFEFloodElement
+castToSVGFEFloodElement = castTo gTypeSVGFEFloodElement "SVGFEFloodElement"
+
+foreign import javascript unsafe "window[\"SVGFEFloodElement\"]" gTypeSVGFEFloodElement' :: JSRef GType
+gTypeSVGFEFloodElement = GType gTypeSVGFEFloodElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEFuncAElement }
+
+instance Eq (SVGFEFuncAElement) where
+  (SVGFEFuncAElement a) == (SVGFEFuncAElement b) = js_eq a b
+
+instance PToJSRef SVGFEFuncAElement where
+  pToJSRef = unSVGFEFuncAElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEFuncAElement where
+  pFromJSRef = SVGFEFuncAElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEFuncAElement where
+  toJSRef = return . unSVGFEFuncAElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEFuncAElement where
+  fromJSRef = return . fmap SVGFEFuncAElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncAElement
+instance IsSVGElement SVGFEFuncAElement
+instance IsElement SVGFEFuncAElement
+instance IsNode SVGFEFuncAElement
+instance IsEventTarget SVGFEFuncAElement
+instance IsGObject SVGFEFuncAElement where
+  toGObject = GObject . castRef . unSVGFEFuncAElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncAElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncAElement :: IsGObject obj => obj -> SVGFEFuncAElement
+castToSVGFEFuncAElement = castTo gTypeSVGFEFuncAElement "SVGFEFuncAElement"
+
+foreign import javascript unsafe "window[\"SVGFEFuncAElement\"]" gTypeSVGFEFuncAElement' :: JSRef GType
+gTypeSVGFEFuncAElement = GType gTypeSVGFEFuncAElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEFuncBElement }
+
+instance Eq (SVGFEFuncBElement) where
+  (SVGFEFuncBElement a) == (SVGFEFuncBElement b) = js_eq a b
+
+instance PToJSRef SVGFEFuncBElement where
+  pToJSRef = unSVGFEFuncBElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEFuncBElement where
+  pFromJSRef = SVGFEFuncBElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEFuncBElement where
+  toJSRef = return . unSVGFEFuncBElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEFuncBElement where
+  fromJSRef = return . fmap SVGFEFuncBElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncBElement
+instance IsSVGElement SVGFEFuncBElement
+instance IsElement SVGFEFuncBElement
+instance IsNode SVGFEFuncBElement
+instance IsEventTarget SVGFEFuncBElement
+instance IsGObject SVGFEFuncBElement where
+  toGObject = GObject . castRef . unSVGFEFuncBElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncBElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncBElement :: IsGObject obj => obj -> SVGFEFuncBElement
+castToSVGFEFuncBElement = castTo gTypeSVGFEFuncBElement "SVGFEFuncBElement"
+
+foreign import javascript unsafe "window[\"SVGFEFuncBElement\"]" gTypeSVGFEFuncBElement' :: JSRef GType
+gTypeSVGFEFuncBElement = GType gTypeSVGFEFuncBElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEFuncGElement }
+
+instance Eq (SVGFEFuncGElement) where
+  (SVGFEFuncGElement a) == (SVGFEFuncGElement b) = js_eq a b
+
+instance PToJSRef SVGFEFuncGElement where
+  pToJSRef = unSVGFEFuncGElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEFuncGElement where
+  pFromJSRef = SVGFEFuncGElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEFuncGElement where
+  toJSRef = return . unSVGFEFuncGElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEFuncGElement where
+  fromJSRef = return . fmap SVGFEFuncGElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncGElement
+instance IsSVGElement SVGFEFuncGElement
+instance IsElement SVGFEFuncGElement
+instance IsNode SVGFEFuncGElement
+instance IsEventTarget SVGFEFuncGElement
+instance IsGObject SVGFEFuncGElement where
+  toGObject = GObject . castRef . unSVGFEFuncGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncGElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncGElement :: IsGObject obj => obj -> SVGFEFuncGElement
+castToSVGFEFuncGElement = castTo gTypeSVGFEFuncGElement "SVGFEFuncGElement"
+
+foreign import javascript unsafe "window[\"SVGFEFuncGElement\"]" gTypeSVGFEFuncGElement' :: JSRef GType
+gTypeSVGFEFuncGElement = GType gTypeSVGFEFuncGElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEFuncRElement }
+
+instance Eq (SVGFEFuncRElement) where
+  (SVGFEFuncRElement a) == (SVGFEFuncRElement b) = js_eq a b
+
+instance PToJSRef SVGFEFuncRElement where
+  pToJSRef = unSVGFEFuncRElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEFuncRElement where
+  pFromJSRef = SVGFEFuncRElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEFuncRElement where
+  toJSRef = return . unSVGFEFuncRElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEFuncRElement where
+  fromJSRef = return . fmap SVGFEFuncRElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncRElement
+instance IsSVGElement SVGFEFuncRElement
+instance IsElement SVGFEFuncRElement
+instance IsNode SVGFEFuncRElement
+instance IsEventTarget SVGFEFuncRElement
+instance IsGObject SVGFEFuncRElement where
+  toGObject = GObject . castRef . unSVGFEFuncRElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEFuncRElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEFuncRElement :: IsGObject obj => obj -> SVGFEFuncRElement
+castToSVGFEFuncRElement = castTo gTypeSVGFEFuncRElement "SVGFEFuncRElement"
+
+foreign import javascript unsafe "window[\"SVGFEFuncRElement\"]" gTypeSVGFEFuncRElement' :: JSRef GType
+gTypeSVGFEFuncRElement = GType gTypeSVGFEFuncRElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEGaussianBlurElement }
+
+instance Eq (SVGFEGaussianBlurElement) where
+  (SVGFEGaussianBlurElement a) == (SVGFEGaussianBlurElement b) = js_eq a b
+
+instance PToJSRef SVGFEGaussianBlurElement where
+  pToJSRef = unSVGFEGaussianBlurElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEGaussianBlurElement where
+  pFromJSRef = SVGFEGaussianBlurElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEGaussianBlurElement where
+  toJSRef = return . unSVGFEGaussianBlurElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEGaussianBlurElement where
+  fromJSRef = return . fmap SVGFEGaussianBlurElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEGaussianBlurElement
+instance IsElement SVGFEGaussianBlurElement
+instance IsNode SVGFEGaussianBlurElement
+instance IsEventTarget SVGFEGaussianBlurElement
+instance IsGObject SVGFEGaussianBlurElement where
+  toGObject = GObject . castRef . unSVGFEGaussianBlurElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEGaussianBlurElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEGaussianBlurElement :: IsGObject obj => obj -> SVGFEGaussianBlurElement
+castToSVGFEGaussianBlurElement = castTo gTypeSVGFEGaussianBlurElement "SVGFEGaussianBlurElement"
+
+foreign import javascript unsafe "window[\"SVGFEGaussianBlurElement\"]" gTypeSVGFEGaussianBlurElement' :: JSRef GType
+gTypeSVGFEGaussianBlurElement = GType gTypeSVGFEGaussianBlurElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEImageElement }
+
+instance Eq (SVGFEImageElement) where
+  (SVGFEImageElement a) == (SVGFEImageElement b) = js_eq a b
+
+instance PToJSRef SVGFEImageElement where
+  pToJSRef = unSVGFEImageElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEImageElement where
+  pFromJSRef = SVGFEImageElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEImageElement where
+  toJSRef = return . unSVGFEImageElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEImageElement where
+  fromJSRef = return . fmap SVGFEImageElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEImageElement
+instance IsElement SVGFEImageElement
+instance IsNode SVGFEImageElement
+instance IsEventTarget SVGFEImageElement
+instance IsGObject SVGFEImageElement where
+  toGObject = GObject . castRef . unSVGFEImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEImageElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEImageElement :: IsGObject obj => obj -> SVGFEImageElement
+castToSVGFEImageElement = castTo gTypeSVGFEImageElement "SVGFEImageElement"
+
+foreign import javascript unsafe "window[\"SVGFEImageElement\"]" gTypeSVGFEImageElement' :: JSRef GType
+gTypeSVGFEImageElement = GType gTypeSVGFEImageElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEMergeElement }
+
+instance Eq (SVGFEMergeElement) where
+  (SVGFEMergeElement a) == (SVGFEMergeElement b) = js_eq a b
+
+instance PToJSRef SVGFEMergeElement where
+  pToJSRef = unSVGFEMergeElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEMergeElement where
+  pFromJSRef = SVGFEMergeElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEMergeElement where
+  toJSRef = return . unSVGFEMergeElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEMergeElement where
+  fromJSRef = return . fmap SVGFEMergeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEMergeElement
+instance IsElement SVGFEMergeElement
+instance IsNode SVGFEMergeElement
+instance IsEventTarget SVGFEMergeElement
+instance IsGObject SVGFEMergeElement where
+  toGObject = GObject . castRef . unSVGFEMergeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMergeElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMergeElement :: IsGObject obj => obj -> SVGFEMergeElement
+castToSVGFEMergeElement = castTo gTypeSVGFEMergeElement "SVGFEMergeElement"
+
+foreign import javascript unsafe "window[\"SVGFEMergeElement\"]" gTypeSVGFEMergeElement' :: JSRef GType
+gTypeSVGFEMergeElement = GType gTypeSVGFEMergeElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEMergeNodeElement }
+
+instance Eq (SVGFEMergeNodeElement) where
+  (SVGFEMergeNodeElement a) == (SVGFEMergeNodeElement b) = js_eq a b
+
+instance PToJSRef SVGFEMergeNodeElement where
+  pToJSRef = unSVGFEMergeNodeElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEMergeNodeElement where
+  pFromJSRef = SVGFEMergeNodeElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEMergeNodeElement where
+  toJSRef = return . unSVGFEMergeNodeElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEMergeNodeElement where
+  fromJSRef = return . fmap SVGFEMergeNodeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEMergeNodeElement
+instance IsElement SVGFEMergeNodeElement
+instance IsNode SVGFEMergeNodeElement
+instance IsEventTarget SVGFEMergeNodeElement
+instance IsGObject SVGFEMergeNodeElement where
+  toGObject = GObject . castRef . unSVGFEMergeNodeElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMergeNodeElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMergeNodeElement :: IsGObject obj => obj -> SVGFEMergeNodeElement
+castToSVGFEMergeNodeElement = castTo gTypeSVGFEMergeNodeElement "SVGFEMergeNodeElement"
+
+foreign import javascript unsafe "window[\"SVGFEMergeNodeElement\"]" gTypeSVGFEMergeNodeElement' :: JSRef GType
+gTypeSVGFEMergeNodeElement = GType gTypeSVGFEMergeNodeElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEMorphologyElement }
+
+instance Eq (SVGFEMorphologyElement) where
+  (SVGFEMorphologyElement a) == (SVGFEMorphologyElement b) = js_eq a b
+
+instance PToJSRef SVGFEMorphologyElement where
+  pToJSRef = unSVGFEMorphologyElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEMorphologyElement where
+  pFromJSRef = SVGFEMorphologyElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEMorphologyElement where
+  toJSRef = return . unSVGFEMorphologyElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEMorphologyElement where
+  fromJSRef = return . fmap SVGFEMorphologyElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEMorphologyElement
+instance IsElement SVGFEMorphologyElement
+instance IsNode SVGFEMorphologyElement
+instance IsEventTarget SVGFEMorphologyElement
+instance IsGObject SVGFEMorphologyElement where
+  toGObject = GObject . castRef . unSVGFEMorphologyElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEMorphologyElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEMorphologyElement :: IsGObject obj => obj -> SVGFEMorphologyElement
+castToSVGFEMorphologyElement = castTo gTypeSVGFEMorphologyElement "SVGFEMorphologyElement"
+
+foreign import javascript unsafe "window[\"SVGFEMorphologyElement\"]" gTypeSVGFEMorphologyElement' :: JSRef GType
+gTypeSVGFEMorphologyElement = GType gTypeSVGFEMorphologyElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEOffsetElement }
+
+instance Eq (SVGFEOffsetElement) where
+  (SVGFEOffsetElement a) == (SVGFEOffsetElement b) = js_eq a b
+
+instance PToJSRef SVGFEOffsetElement where
+  pToJSRef = unSVGFEOffsetElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEOffsetElement where
+  pFromJSRef = SVGFEOffsetElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEOffsetElement where
+  toJSRef = return . unSVGFEOffsetElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEOffsetElement where
+  fromJSRef = return . fmap SVGFEOffsetElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEOffsetElement
+instance IsElement SVGFEOffsetElement
+instance IsNode SVGFEOffsetElement
+instance IsEventTarget SVGFEOffsetElement
+instance IsGObject SVGFEOffsetElement where
+  toGObject = GObject . castRef . unSVGFEOffsetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEOffsetElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEOffsetElement :: IsGObject obj => obj -> SVGFEOffsetElement
+castToSVGFEOffsetElement = castTo gTypeSVGFEOffsetElement "SVGFEOffsetElement"
+
+foreign import javascript unsafe "window[\"SVGFEOffsetElement\"]" gTypeSVGFEOffsetElement' :: JSRef GType
+gTypeSVGFEOffsetElement = GType gTypeSVGFEOffsetElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFEPointLightElement }
+
+instance Eq (SVGFEPointLightElement) where
+  (SVGFEPointLightElement a) == (SVGFEPointLightElement b) = js_eq a b
+
+instance PToJSRef SVGFEPointLightElement where
+  pToJSRef = unSVGFEPointLightElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFEPointLightElement where
+  pFromJSRef = SVGFEPointLightElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFEPointLightElement where
+  toJSRef = return . unSVGFEPointLightElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFEPointLightElement where
+  fromJSRef = return . fmap SVGFEPointLightElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFEPointLightElement
+instance IsElement SVGFEPointLightElement
+instance IsNode SVGFEPointLightElement
+instance IsEventTarget SVGFEPointLightElement
+instance IsGObject SVGFEPointLightElement where
+  toGObject = GObject . castRef . unSVGFEPointLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFEPointLightElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFEPointLightElement :: IsGObject obj => obj -> SVGFEPointLightElement
+castToSVGFEPointLightElement = castTo gTypeSVGFEPointLightElement "SVGFEPointLightElement"
+
+foreign import javascript unsafe "window[\"SVGFEPointLightElement\"]" gTypeSVGFEPointLightElement' :: JSRef GType
+gTypeSVGFEPointLightElement = GType gTypeSVGFEPointLightElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFESpecularLightingElement }
+
+instance Eq (SVGFESpecularLightingElement) where
+  (SVGFESpecularLightingElement a) == (SVGFESpecularLightingElement b) = js_eq a b
+
+instance PToJSRef SVGFESpecularLightingElement where
+  pToJSRef = unSVGFESpecularLightingElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFESpecularLightingElement where
+  pFromJSRef = SVGFESpecularLightingElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFESpecularLightingElement where
+  toJSRef = return . unSVGFESpecularLightingElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFESpecularLightingElement where
+  fromJSRef = return . fmap SVGFESpecularLightingElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFESpecularLightingElement
+instance IsElement SVGFESpecularLightingElement
+instance IsNode SVGFESpecularLightingElement
+instance IsEventTarget SVGFESpecularLightingElement
+instance IsGObject SVGFESpecularLightingElement where
+  toGObject = GObject . castRef . unSVGFESpecularLightingElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFESpecularLightingElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFESpecularLightingElement :: IsGObject obj => obj -> SVGFESpecularLightingElement
+castToSVGFESpecularLightingElement = castTo gTypeSVGFESpecularLightingElement "SVGFESpecularLightingElement"
+
+foreign import javascript unsafe "window[\"SVGFESpecularLightingElement\"]" gTypeSVGFESpecularLightingElement' :: JSRef GType
+gTypeSVGFESpecularLightingElement = GType gTypeSVGFESpecularLightingElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFESpotLightElement }
+
+instance Eq (SVGFESpotLightElement) where
+  (SVGFESpotLightElement a) == (SVGFESpotLightElement b) = js_eq a b
+
+instance PToJSRef SVGFESpotLightElement where
+  pToJSRef = unSVGFESpotLightElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFESpotLightElement where
+  pFromJSRef = SVGFESpotLightElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFESpotLightElement where
+  toJSRef = return . unSVGFESpotLightElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFESpotLightElement where
+  fromJSRef = return . fmap SVGFESpotLightElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFESpotLightElement
+instance IsElement SVGFESpotLightElement
+instance IsNode SVGFESpotLightElement
+instance IsEventTarget SVGFESpotLightElement
+instance IsGObject SVGFESpotLightElement where
+  toGObject = GObject . castRef . unSVGFESpotLightElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFESpotLightElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFESpotLightElement :: IsGObject obj => obj -> SVGFESpotLightElement
+castToSVGFESpotLightElement = castTo gTypeSVGFESpotLightElement "SVGFESpotLightElement"
+
+foreign import javascript unsafe "window[\"SVGFESpotLightElement\"]" gTypeSVGFESpotLightElement' :: JSRef GType
+gTypeSVGFESpotLightElement = GType gTypeSVGFESpotLightElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFETileElement }
+
+instance Eq (SVGFETileElement) where
+  (SVGFETileElement a) == (SVGFETileElement b) = js_eq a b
+
+instance PToJSRef SVGFETileElement where
+  pToJSRef = unSVGFETileElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFETileElement where
+  pFromJSRef = SVGFETileElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFETileElement where
+  toJSRef = return . unSVGFETileElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFETileElement where
+  fromJSRef = return . fmap SVGFETileElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFETileElement
+instance IsElement SVGFETileElement
+instance IsNode SVGFETileElement
+instance IsEventTarget SVGFETileElement
+instance IsGObject SVGFETileElement where
+  toGObject = GObject . castRef . unSVGFETileElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFETileElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFETileElement :: IsGObject obj => obj -> SVGFETileElement
+castToSVGFETileElement = castTo gTypeSVGFETileElement "SVGFETileElement"
+
+foreign import javascript unsafe "window[\"SVGFETileElement\"]" gTypeSVGFETileElement' :: JSRef GType
+gTypeSVGFETileElement = GType gTypeSVGFETileElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFETurbulenceElement }
+
+instance Eq (SVGFETurbulenceElement) where
+  (SVGFETurbulenceElement a) == (SVGFETurbulenceElement b) = js_eq a b
+
+instance PToJSRef SVGFETurbulenceElement where
+  pToJSRef = unSVGFETurbulenceElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFETurbulenceElement where
+  pFromJSRef = SVGFETurbulenceElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFETurbulenceElement where
+  toJSRef = return . unSVGFETurbulenceElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFETurbulenceElement where
+  fromJSRef = return . fmap SVGFETurbulenceElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFETurbulenceElement
+instance IsElement SVGFETurbulenceElement
+instance IsNode SVGFETurbulenceElement
+instance IsEventTarget SVGFETurbulenceElement
+instance IsGObject SVGFETurbulenceElement where
+  toGObject = GObject . castRef . unSVGFETurbulenceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFETurbulenceElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFETurbulenceElement :: IsGObject obj => obj -> SVGFETurbulenceElement
+castToSVGFETurbulenceElement = castTo gTypeSVGFETurbulenceElement "SVGFETurbulenceElement"
+
+foreign import javascript unsafe "window[\"SVGFETurbulenceElement\"]" gTypeSVGFETurbulenceElement' :: JSRef GType
+gTypeSVGFETurbulenceElement = GType gTypeSVGFETurbulenceElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFilterElement }
+
+instance Eq (SVGFilterElement) where
+  (SVGFilterElement a) == (SVGFilterElement b) = js_eq a b
+
+instance PToJSRef SVGFilterElement where
+  pToJSRef = unSVGFilterElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFilterElement where
+  pFromJSRef = SVGFilterElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFilterElement where
+  toJSRef = return . unSVGFilterElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFilterElement where
+  fromJSRef = return . fmap SVGFilterElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFilterElement
+instance IsElement SVGFilterElement
+instance IsNode SVGFilterElement
+instance IsEventTarget SVGFilterElement
+instance IsGObject SVGFilterElement where
+  toGObject = GObject . castRef . unSVGFilterElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFilterElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFilterElement :: IsGObject obj => obj -> SVGFilterElement
+castToSVGFilterElement = castTo gTypeSVGFilterElement "SVGFilterElement"
+
+foreign import javascript unsafe "window[\"SVGFilterElement\"]" gTypeSVGFilterElement' :: JSRef GType
+gTypeSVGFilterElement = GType gTypeSVGFilterElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFilterPrimitiveStandardAttributes }
+
+instance Eq (SVGFilterPrimitiveStandardAttributes) where
+  (SVGFilterPrimitiveStandardAttributes a) == (SVGFilterPrimitiveStandardAttributes b) = js_eq a b
+
+instance PToJSRef SVGFilterPrimitiveStandardAttributes where
+  pToJSRef = unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFilterPrimitiveStandardAttributes where
+  pFromJSRef = SVGFilterPrimitiveStandardAttributes
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFilterPrimitiveStandardAttributes where
+  toJSRef = return . unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFilterPrimitiveStandardAttributes where
+  fromJSRef = return . fmap SVGFilterPrimitiveStandardAttributes . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGFilterPrimitiveStandardAttributes where
+  toGObject = GObject . castRef . unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFilterPrimitiveStandardAttributes . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFilterPrimitiveStandardAttributes :: IsGObject obj => obj -> SVGFilterPrimitiveStandardAttributes
+castToSVGFilterPrimitiveStandardAttributes = castTo gTypeSVGFilterPrimitiveStandardAttributes "SVGFilterPrimitiveStandardAttributes"
+
+foreign import javascript unsafe "window[\"SVGFilterPrimitiveStandardAttributes\"]" gTypeSVGFilterPrimitiveStandardAttributes' :: JSRef GType
+gTypeSVGFilterPrimitiveStandardAttributes = GType gTypeSVGFilterPrimitiveStandardAttributes'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFitToViewBox }
+
+instance Eq (SVGFitToViewBox) where
+  (SVGFitToViewBox a) == (SVGFitToViewBox b) = js_eq a b
+
+instance PToJSRef SVGFitToViewBox where
+  pToJSRef = unSVGFitToViewBox
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFitToViewBox where
+  pFromJSRef = SVGFitToViewBox
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFitToViewBox where
+  toJSRef = return . unSVGFitToViewBox
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFitToViewBox where
+  fromJSRef = return . fmap SVGFitToViewBox . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGFitToViewBox where
+  toGObject = GObject . castRef . unSVGFitToViewBox
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFitToViewBox . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFitToViewBox :: IsGObject obj => obj -> SVGFitToViewBox
+castToSVGFitToViewBox = castTo gTypeSVGFitToViewBox "SVGFitToViewBox"
+
+foreign import javascript unsafe "window[\"SVGFitToViewBox\"]" gTypeSVGFitToViewBox' :: JSRef GType
+gTypeSVGFitToViewBox = GType gTypeSVGFitToViewBox'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFontElement }
+
+instance Eq (SVGFontElement) where
+  (SVGFontElement a) == (SVGFontElement b) = js_eq a b
+
+instance PToJSRef SVGFontElement where
+  pToJSRef = unSVGFontElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFontElement where
+  pFromJSRef = SVGFontElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFontElement where
+  toJSRef = return . unSVGFontElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFontElement where
+  fromJSRef = return . fmap SVGFontElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFontElement
+instance IsElement SVGFontElement
+instance IsNode SVGFontElement
+instance IsEventTarget SVGFontElement
+instance IsGObject SVGFontElement where
+  toGObject = GObject . castRef . unSVGFontElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontElement :: IsGObject obj => obj -> SVGFontElement
+castToSVGFontElement = castTo gTypeSVGFontElement "SVGFontElement"
+
+foreign import javascript unsafe "window[\"SVGFontElement\"]" gTypeSVGFontElement' :: JSRef GType
+gTypeSVGFontElement = GType gTypeSVGFontElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFontFaceElement }
+
+instance Eq (SVGFontFaceElement) where
+  (SVGFontFaceElement a) == (SVGFontFaceElement b) = js_eq a b
+
+instance PToJSRef SVGFontFaceElement where
+  pToJSRef = unSVGFontFaceElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFontFaceElement where
+  pFromJSRef = SVGFontFaceElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFontFaceElement where
+  toJSRef = return . unSVGFontFaceElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFontFaceElement where
+  fromJSRef = return . fmap SVGFontFaceElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFontFaceElement
+instance IsElement SVGFontFaceElement
+instance IsNode SVGFontFaceElement
+instance IsEventTarget SVGFontFaceElement
+instance IsGObject SVGFontFaceElement where
+  toGObject = GObject . castRef . unSVGFontFaceElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceElement :: IsGObject obj => obj -> SVGFontFaceElement
+castToSVGFontFaceElement = castTo gTypeSVGFontFaceElement "SVGFontFaceElement"
+
+foreign import javascript unsafe "window[\"SVGFontFaceElement\"]" gTypeSVGFontFaceElement' :: JSRef GType
+gTypeSVGFontFaceElement = GType gTypeSVGFontFaceElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFontFaceFormatElement }
+
+instance Eq (SVGFontFaceFormatElement) where
+  (SVGFontFaceFormatElement a) == (SVGFontFaceFormatElement b) = js_eq a b
+
+instance PToJSRef SVGFontFaceFormatElement where
+  pToJSRef = unSVGFontFaceFormatElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFontFaceFormatElement where
+  pFromJSRef = SVGFontFaceFormatElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFontFaceFormatElement where
+  toJSRef = return . unSVGFontFaceFormatElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFontFaceFormatElement where
+  fromJSRef = return . fmap SVGFontFaceFormatElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFontFaceFormatElement
+instance IsElement SVGFontFaceFormatElement
+instance IsNode SVGFontFaceFormatElement
+instance IsEventTarget SVGFontFaceFormatElement
+instance IsGObject SVGFontFaceFormatElement where
+  toGObject = GObject . castRef . unSVGFontFaceFormatElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceFormatElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceFormatElement :: IsGObject obj => obj -> SVGFontFaceFormatElement
+castToSVGFontFaceFormatElement = castTo gTypeSVGFontFaceFormatElement "SVGFontFaceFormatElement"
+
+foreign import javascript unsafe "window[\"SVGFontFaceFormatElement\"]" gTypeSVGFontFaceFormatElement' :: JSRef GType
+gTypeSVGFontFaceFormatElement = GType gTypeSVGFontFaceFormatElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFontFaceNameElement }
+
+instance Eq (SVGFontFaceNameElement) where
+  (SVGFontFaceNameElement a) == (SVGFontFaceNameElement b) = js_eq a b
+
+instance PToJSRef SVGFontFaceNameElement where
+  pToJSRef = unSVGFontFaceNameElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFontFaceNameElement where
+  pFromJSRef = SVGFontFaceNameElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFontFaceNameElement where
+  toJSRef = return . unSVGFontFaceNameElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFontFaceNameElement where
+  fromJSRef = return . fmap SVGFontFaceNameElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFontFaceNameElement
+instance IsElement SVGFontFaceNameElement
+instance IsNode SVGFontFaceNameElement
+instance IsEventTarget SVGFontFaceNameElement
+instance IsGObject SVGFontFaceNameElement where
+  toGObject = GObject . castRef . unSVGFontFaceNameElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceNameElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceNameElement :: IsGObject obj => obj -> SVGFontFaceNameElement
+castToSVGFontFaceNameElement = castTo gTypeSVGFontFaceNameElement "SVGFontFaceNameElement"
+
+foreign import javascript unsafe "window[\"SVGFontFaceNameElement\"]" gTypeSVGFontFaceNameElement' :: JSRef GType
+gTypeSVGFontFaceNameElement = GType gTypeSVGFontFaceNameElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFontFaceSrcElement }
+
+instance Eq (SVGFontFaceSrcElement) where
+  (SVGFontFaceSrcElement a) == (SVGFontFaceSrcElement b) = js_eq a b
+
+instance PToJSRef SVGFontFaceSrcElement where
+  pToJSRef = unSVGFontFaceSrcElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFontFaceSrcElement where
+  pFromJSRef = SVGFontFaceSrcElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFontFaceSrcElement where
+  toJSRef = return . unSVGFontFaceSrcElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFontFaceSrcElement where
+  fromJSRef = return . fmap SVGFontFaceSrcElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFontFaceSrcElement
+instance IsElement SVGFontFaceSrcElement
+instance IsNode SVGFontFaceSrcElement
+instance IsEventTarget SVGFontFaceSrcElement
+instance IsGObject SVGFontFaceSrcElement where
+  toGObject = GObject . castRef . unSVGFontFaceSrcElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceSrcElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceSrcElement :: IsGObject obj => obj -> SVGFontFaceSrcElement
+castToSVGFontFaceSrcElement = castTo gTypeSVGFontFaceSrcElement "SVGFontFaceSrcElement"
+
+foreign import javascript unsafe "window[\"SVGFontFaceSrcElement\"]" gTypeSVGFontFaceSrcElement' :: JSRef GType
+gTypeSVGFontFaceSrcElement = GType gTypeSVGFontFaceSrcElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGFontFaceUriElement }
+
+instance Eq (SVGFontFaceUriElement) where
+  (SVGFontFaceUriElement a) == (SVGFontFaceUriElement b) = js_eq a b
+
+instance PToJSRef SVGFontFaceUriElement where
+  pToJSRef = unSVGFontFaceUriElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGFontFaceUriElement where
+  pFromJSRef = SVGFontFaceUriElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGFontFaceUriElement where
+  toJSRef = return . unSVGFontFaceUriElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGFontFaceUriElement where
+  fromJSRef = return . fmap SVGFontFaceUriElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGFontFaceUriElement
+instance IsElement SVGFontFaceUriElement
+instance IsNode SVGFontFaceUriElement
+instance IsEventTarget SVGFontFaceUriElement
+instance IsGObject SVGFontFaceUriElement where
+  toGObject = GObject . castRef . unSVGFontFaceUriElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGFontFaceUriElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGFontFaceUriElement :: IsGObject obj => obj -> SVGFontFaceUriElement
+castToSVGFontFaceUriElement = castTo gTypeSVGFontFaceUriElement "SVGFontFaceUriElement"
+
+foreign import javascript unsafe "window[\"SVGFontFaceUriElement\"]" gTypeSVGFontFaceUriElement' :: JSRef GType
+gTypeSVGFontFaceUriElement = GType gTypeSVGFontFaceUriElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGForeignObjectElement }
+
+instance Eq (SVGForeignObjectElement) where
+  (SVGForeignObjectElement a) == (SVGForeignObjectElement b) = js_eq a b
+
+instance PToJSRef SVGForeignObjectElement where
+  pToJSRef = unSVGForeignObjectElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGForeignObjectElement where
+  pFromJSRef = SVGForeignObjectElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGForeignObjectElement where
+  toJSRef = return . unSVGForeignObjectElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGForeignObjectElement where
+  fromJSRef = return . fmap SVGForeignObjectElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGForeignObjectElement
+instance IsSVGElement SVGForeignObjectElement
+instance IsElement SVGForeignObjectElement
+instance IsNode SVGForeignObjectElement
+instance IsEventTarget SVGForeignObjectElement
+instance IsGObject SVGForeignObjectElement where
+  toGObject = GObject . castRef . unSVGForeignObjectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGForeignObjectElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGForeignObjectElement :: IsGObject obj => obj -> SVGForeignObjectElement
+castToSVGForeignObjectElement = castTo gTypeSVGForeignObjectElement "SVGForeignObjectElement"
+
+foreign import javascript unsafe "window[\"SVGForeignObjectElement\"]" gTypeSVGForeignObjectElement' :: JSRef GType
+gTypeSVGForeignObjectElement = GType gTypeSVGForeignObjectElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGGElement }
+
+instance Eq (SVGGElement) where
+  (SVGGElement a) == (SVGGElement b) = js_eq a b
+
+instance PToJSRef SVGGElement where
+  pToJSRef = unSVGGElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGGElement where
+  pFromJSRef = SVGGElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGGElement where
+  toJSRef = return . unSVGGElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGGElement where
+  fromJSRef = return . fmap SVGGElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGGElement
+instance IsSVGElement SVGGElement
+instance IsElement SVGGElement
+instance IsNode SVGGElement
+instance IsEventTarget SVGGElement
+instance IsGObject SVGGElement where
+  toGObject = GObject . castRef . unSVGGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGElement :: IsGObject obj => obj -> SVGGElement
+castToSVGGElement = castTo gTypeSVGGElement "SVGGElement"
+
+foreign import javascript unsafe "window[\"SVGGElement\"]" gTypeSVGGElement' :: JSRef GType
+gTypeSVGGElement = GType gTypeSVGGElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGGlyphElement }
+
+instance Eq (SVGGlyphElement) where
+  (SVGGlyphElement a) == (SVGGlyphElement b) = js_eq a b
+
+instance PToJSRef SVGGlyphElement where
+  pToJSRef = unSVGGlyphElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGGlyphElement where
+  pFromJSRef = SVGGlyphElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGGlyphElement where
+  toJSRef = return . unSVGGlyphElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGGlyphElement where
+  fromJSRef = return . fmap SVGGlyphElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGGlyphElement
+instance IsElement SVGGlyphElement
+instance IsNode SVGGlyphElement
+instance IsEventTarget SVGGlyphElement
+instance IsGObject SVGGlyphElement where
+  toGObject = GObject . castRef . unSVGGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGlyphElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGlyphElement :: IsGObject obj => obj -> SVGGlyphElement
+castToSVGGlyphElement = castTo gTypeSVGGlyphElement "SVGGlyphElement"
+
+foreign import javascript unsafe "window[\"SVGGlyphElement\"]" gTypeSVGGlyphElement' :: JSRef GType
+gTypeSVGGlyphElement = GType gTypeSVGGlyphElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGGlyphRefElement }
+
+instance Eq (SVGGlyphRefElement) where
+  (SVGGlyphRefElement a) == (SVGGlyphRefElement b) = js_eq a b
+
+instance PToJSRef SVGGlyphRefElement where
+  pToJSRef = unSVGGlyphRefElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGGlyphRefElement where
+  pFromJSRef = SVGGlyphRefElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGGlyphRefElement where
+  toJSRef = return . unSVGGlyphRefElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGGlyphRefElement where
+  fromJSRef = return . fmap SVGGlyphRefElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGGlyphRefElement
+instance IsElement SVGGlyphRefElement
+instance IsNode SVGGlyphRefElement
+instance IsEventTarget SVGGlyphRefElement
+instance IsGObject SVGGlyphRefElement where
+  toGObject = GObject . castRef . unSVGGlyphRefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGlyphRefElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGlyphRefElement :: IsGObject obj => obj -> SVGGlyphRefElement
+castToSVGGlyphRefElement = castTo gTypeSVGGlyphRefElement "SVGGlyphRefElement"
+
+foreign import javascript unsafe "window[\"SVGGlyphRefElement\"]" gTypeSVGGlyphRefElement' :: JSRef GType
+gTypeSVGGlyphRefElement = GType gTypeSVGGlyphRefElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGGradientElement }
+
+instance Eq (SVGGradientElement) where
+  (SVGGradientElement a) == (SVGGradientElement b) = js_eq a b
+
+instance PToJSRef SVGGradientElement where
+  pToJSRef = unSVGGradientElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGGradientElement where
+  pFromJSRef = SVGGradientElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGGradientElement where
+  toJSRef = return . unSVGGradientElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGGradientElement where
+  fromJSRef = return . fmap SVGGradientElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGradientElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGradientElement :: IsGObject obj => obj -> SVGGradientElement
+castToSVGGradientElement = castTo gTypeSVGGradientElement "SVGGradientElement"
+
+foreign import javascript unsafe "window[\"SVGGradientElement\"]" gTypeSVGGradientElement' :: JSRef GType
+gTypeSVGGradientElement = GType gTypeSVGGradientElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGGraphicsElement }
+
+instance Eq (SVGGraphicsElement) where
+  (SVGGraphicsElement a) == (SVGGraphicsElement b) = js_eq a b
+
+instance PToJSRef SVGGraphicsElement where
+  pToJSRef = unSVGGraphicsElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGGraphicsElement where
+  pFromJSRef = SVGGraphicsElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGGraphicsElement where
+  toJSRef = return . unSVGGraphicsElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGGraphicsElement where
+  fromJSRef = return . fmap SVGGraphicsElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGGraphicsElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGGraphicsElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGGraphicsElement :: IsGObject obj => obj -> SVGGraphicsElement
+castToSVGGraphicsElement = castTo gTypeSVGGraphicsElement "SVGGraphicsElement"
+
+foreign import javascript unsafe "window[\"SVGGraphicsElement\"]" gTypeSVGGraphicsElement' :: JSRef GType
+gTypeSVGGraphicsElement = GType gTypeSVGGraphicsElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGHKernElement }
+
+instance Eq (SVGHKernElement) where
+  (SVGHKernElement a) == (SVGHKernElement b) = js_eq a b
+
+instance PToJSRef SVGHKernElement where
+  pToJSRef = unSVGHKernElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGHKernElement where
+  pFromJSRef = SVGHKernElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGHKernElement where
+  toJSRef = return . unSVGHKernElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGHKernElement where
+  fromJSRef = return . fmap SVGHKernElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGHKernElement
+instance IsElement SVGHKernElement
+instance IsNode SVGHKernElement
+instance IsEventTarget SVGHKernElement
+instance IsGObject SVGHKernElement where
+  toGObject = GObject . castRef . unSVGHKernElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGHKernElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGHKernElement :: IsGObject obj => obj -> SVGHKernElement
+castToSVGHKernElement = castTo gTypeSVGHKernElement "SVGHKernElement"
+
+foreign import javascript unsafe "window[\"SVGHKernElement\"]" gTypeSVGHKernElement' :: JSRef GType
+gTypeSVGHKernElement = GType gTypeSVGHKernElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGImageElement }
+
+instance Eq (SVGImageElement) where
+  (SVGImageElement a) == (SVGImageElement b) = js_eq a b
+
+instance PToJSRef SVGImageElement where
+  pToJSRef = unSVGImageElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGImageElement where
+  pFromJSRef = SVGImageElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGImageElement where
+  toJSRef = return . unSVGImageElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGImageElement where
+  fromJSRef = return . fmap SVGImageElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGImageElement
+instance IsSVGElement SVGImageElement
+instance IsElement SVGImageElement
+instance IsNode SVGImageElement
+instance IsEventTarget SVGImageElement
+instance IsGObject SVGImageElement where
+  toGObject = GObject . castRef . unSVGImageElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGImageElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGImageElement :: IsGObject obj => obj -> SVGImageElement
+castToSVGImageElement = castTo gTypeSVGImageElement "SVGImageElement"
+
+foreign import javascript unsafe "window[\"SVGImageElement\"]" gTypeSVGImageElement' :: JSRef GType
+gTypeSVGImageElement = GType gTypeSVGImageElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGLength }
+
+instance Eq (SVGLength) where
+  (SVGLength a) == (SVGLength b) = js_eq a b
+
+instance PToJSRef SVGLength where
+  pToJSRef = unSVGLength
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGLength where
+  pFromJSRef = SVGLength
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGLength where
+  toJSRef = return . unSVGLength
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGLength where
+  fromJSRef = return . fmap SVGLength . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGLength where
+  toGObject = GObject . castRef . unSVGLength
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLength . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLength :: IsGObject obj => obj -> SVGLength
+castToSVGLength = castTo gTypeSVGLength "SVGLength"
+
+foreign import javascript unsafe "window[\"SVGLength\"]" gTypeSVGLength' :: JSRef GType
+gTypeSVGLength = GType gTypeSVGLength'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGLengthList }
+
+instance Eq (SVGLengthList) where
+  (SVGLengthList a) == (SVGLengthList b) = js_eq a b
+
+instance PToJSRef SVGLengthList where
+  pToJSRef = unSVGLengthList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGLengthList where
+  pFromJSRef = SVGLengthList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGLengthList where
+  toJSRef = return . unSVGLengthList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGLengthList where
+  fromJSRef = return . fmap SVGLengthList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGLengthList where
+  toGObject = GObject . castRef . unSVGLengthList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLengthList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLengthList :: IsGObject obj => obj -> SVGLengthList
+castToSVGLengthList = castTo gTypeSVGLengthList "SVGLengthList"
+
+foreign import javascript unsafe "window[\"SVGLengthList\"]" gTypeSVGLengthList' :: JSRef GType
+gTypeSVGLengthList = GType gTypeSVGLengthList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGLineElement }
+
+instance Eq (SVGLineElement) where
+  (SVGLineElement a) == (SVGLineElement b) = js_eq a b
+
+instance PToJSRef SVGLineElement where
+  pToJSRef = unSVGLineElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGLineElement where
+  pFromJSRef = SVGLineElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGLineElement where
+  toJSRef = return . unSVGLineElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGLineElement where
+  fromJSRef = return . fmap SVGLineElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGLineElement
+instance IsSVGElement SVGLineElement
+instance IsElement SVGLineElement
+instance IsNode SVGLineElement
+instance IsEventTarget SVGLineElement
+instance IsGObject SVGLineElement where
+  toGObject = GObject . castRef . unSVGLineElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLineElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLineElement :: IsGObject obj => obj -> SVGLineElement
+castToSVGLineElement = castTo gTypeSVGLineElement "SVGLineElement"
+
+foreign import javascript unsafe "window[\"SVGLineElement\"]" gTypeSVGLineElement' :: JSRef GType
+gTypeSVGLineElement = GType gTypeSVGLineElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGLinearGradientElement }
+
+instance Eq (SVGLinearGradientElement) where
+  (SVGLinearGradientElement a) == (SVGLinearGradientElement b) = js_eq a b
+
+instance PToJSRef SVGLinearGradientElement where
+  pToJSRef = unSVGLinearGradientElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGLinearGradientElement where
+  pFromJSRef = SVGLinearGradientElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGLinearGradientElement where
+  toJSRef = return . unSVGLinearGradientElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGLinearGradientElement where
+  fromJSRef = return . fmap SVGLinearGradientElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGradientElement SVGLinearGradientElement
+instance IsSVGElement SVGLinearGradientElement
+instance IsElement SVGLinearGradientElement
+instance IsNode SVGLinearGradientElement
+instance IsEventTarget SVGLinearGradientElement
+instance IsGObject SVGLinearGradientElement where
+  toGObject = GObject . castRef . unSVGLinearGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGLinearGradientElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGLinearGradientElement :: IsGObject obj => obj -> SVGLinearGradientElement
+castToSVGLinearGradientElement = castTo gTypeSVGLinearGradientElement "SVGLinearGradientElement"
+
+foreign import javascript unsafe "window[\"SVGLinearGradientElement\"]" gTypeSVGLinearGradientElement' :: JSRef GType
+gTypeSVGLinearGradientElement = GType gTypeSVGLinearGradientElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGMPathElement }
+
+instance Eq (SVGMPathElement) where
+  (SVGMPathElement a) == (SVGMPathElement b) = js_eq a b
+
+instance PToJSRef SVGMPathElement where
+  pToJSRef = unSVGMPathElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGMPathElement where
+  pFromJSRef = SVGMPathElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGMPathElement where
+  toJSRef = return . unSVGMPathElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGMPathElement where
+  fromJSRef = return . fmap SVGMPathElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGMPathElement
+instance IsElement SVGMPathElement
+instance IsNode SVGMPathElement
+instance IsEventTarget SVGMPathElement
+instance IsGObject SVGMPathElement where
+  toGObject = GObject . castRef . unSVGMPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMPathElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMPathElement :: IsGObject obj => obj -> SVGMPathElement
+castToSVGMPathElement = castTo gTypeSVGMPathElement "SVGMPathElement"
+
+foreign import javascript unsafe "window[\"SVGMPathElement\"]" gTypeSVGMPathElement' :: JSRef GType
+gTypeSVGMPathElement = GType gTypeSVGMPathElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGMarkerElement }
+
+instance Eq (SVGMarkerElement) where
+  (SVGMarkerElement a) == (SVGMarkerElement b) = js_eq a b
+
+instance PToJSRef SVGMarkerElement where
+  pToJSRef = unSVGMarkerElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGMarkerElement where
+  pFromJSRef = SVGMarkerElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGMarkerElement where
+  toJSRef = return . unSVGMarkerElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGMarkerElement where
+  fromJSRef = return . fmap SVGMarkerElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGMarkerElement
+instance IsElement SVGMarkerElement
+instance IsNode SVGMarkerElement
+instance IsEventTarget SVGMarkerElement
+instance IsGObject SVGMarkerElement where
+  toGObject = GObject . castRef . unSVGMarkerElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMarkerElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMarkerElement :: IsGObject obj => obj -> SVGMarkerElement
+castToSVGMarkerElement = castTo gTypeSVGMarkerElement "SVGMarkerElement"
+
+foreign import javascript unsafe "window[\"SVGMarkerElement\"]" gTypeSVGMarkerElement' :: JSRef GType
+gTypeSVGMarkerElement = GType gTypeSVGMarkerElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGMaskElement }
+
+instance Eq (SVGMaskElement) where
+  (SVGMaskElement a) == (SVGMaskElement b) = js_eq a b
+
+instance PToJSRef SVGMaskElement where
+  pToJSRef = unSVGMaskElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGMaskElement where
+  pFromJSRef = SVGMaskElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGMaskElement where
+  toJSRef = return . unSVGMaskElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGMaskElement where
+  fromJSRef = return . fmap SVGMaskElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGMaskElement
+instance IsElement SVGMaskElement
+instance IsNode SVGMaskElement
+instance IsEventTarget SVGMaskElement
+instance IsGObject SVGMaskElement where
+  toGObject = GObject . castRef . unSVGMaskElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMaskElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMaskElement :: IsGObject obj => obj -> SVGMaskElement
+castToSVGMaskElement = castTo gTypeSVGMaskElement "SVGMaskElement"
+
+foreign import javascript unsafe "window[\"SVGMaskElement\"]" gTypeSVGMaskElement' :: JSRef GType
+gTypeSVGMaskElement = GType gTypeSVGMaskElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGMatrix }
+
+instance Eq (SVGMatrix) where
+  (SVGMatrix a) == (SVGMatrix b) = js_eq a b
+
+instance PToJSRef SVGMatrix where
+  pToJSRef = unSVGMatrix
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGMatrix where
+  pFromJSRef = SVGMatrix
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGMatrix where
+  toJSRef = return . unSVGMatrix
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGMatrix where
+  fromJSRef = return . fmap SVGMatrix . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGMatrix where
+  toGObject = GObject . castRef . unSVGMatrix
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMatrix . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMatrix :: IsGObject obj => obj -> SVGMatrix
+castToSVGMatrix = castTo gTypeSVGMatrix "SVGMatrix"
+
+foreign import javascript unsafe "window[\"SVGMatrix\"]" gTypeSVGMatrix' :: JSRef GType
+gTypeSVGMatrix = GType gTypeSVGMatrix'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGMetadataElement }
+
+instance Eq (SVGMetadataElement) where
+  (SVGMetadataElement a) == (SVGMetadataElement b) = js_eq a b
+
+instance PToJSRef SVGMetadataElement where
+  pToJSRef = unSVGMetadataElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGMetadataElement where
+  pFromJSRef = SVGMetadataElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGMetadataElement where
+  toJSRef = return . unSVGMetadataElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGMetadataElement where
+  fromJSRef = return . fmap SVGMetadataElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGMetadataElement
+instance IsElement SVGMetadataElement
+instance IsNode SVGMetadataElement
+instance IsEventTarget SVGMetadataElement
+instance IsGObject SVGMetadataElement where
+  toGObject = GObject . castRef . unSVGMetadataElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMetadataElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMetadataElement :: IsGObject obj => obj -> SVGMetadataElement
+castToSVGMetadataElement = castTo gTypeSVGMetadataElement "SVGMetadataElement"
+
+foreign import javascript unsafe "window[\"SVGMetadataElement\"]" gTypeSVGMetadataElement' :: JSRef GType
+gTypeSVGMetadataElement = GType gTypeSVGMetadataElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGMissingGlyphElement }
+
+instance Eq (SVGMissingGlyphElement) where
+  (SVGMissingGlyphElement a) == (SVGMissingGlyphElement b) = js_eq a b
+
+instance PToJSRef SVGMissingGlyphElement where
+  pToJSRef = unSVGMissingGlyphElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGMissingGlyphElement where
+  pFromJSRef = SVGMissingGlyphElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGMissingGlyphElement where
+  toJSRef = return . unSVGMissingGlyphElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGMissingGlyphElement where
+  fromJSRef = return . fmap SVGMissingGlyphElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGMissingGlyphElement
+instance IsElement SVGMissingGlyphElement
+instance IsNode SVGMissingGlyphElement
+instance IsEventTarget SVGMissingGlyphElement
+instance IsGObject SVGMissingGlyphElement where
+  toGObject = GObject . castRef . unSVGMissingGlyphElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGMissingGlyphElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGMissingGlyphElement :: IsGObject obj => obj -> SVGMissingGlyphElement
+castToSVGMissingGlyphElement = castTo gTypeSVGMissingGlyphElement "SVGMissingGlyphElement"
+
+foreign import javascript unsafe "window[\"SVGMissingGlyphElement\"]" gTypeSVGMissingGlyphElement' :: JSRef GType
+gTypeSVGMissingGlyphElement = GType gTypeSVGMissingGlyphElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGNumber }
+
+instance Eq (SVGNumber) where
+  (SVGNumber a) == (SVGNumber b) = js_eq a b
+
+instance PToJSRef SVGNumber where
+  pToJSRef = unSVGNumber
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGNumber where
+  pFromJSRef = SVGNumber
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGNumber where
+  toJSRef = return . unSVGNumber
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGNumber where
+  fromJSRef = return . fmap SVGNumber . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGNumber where
+  toGObject = GObject . castRef . unSVGNumber
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGNumber . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGNumber :: IsGObject obj => obj -> SVGNumber
+castToSVGNumber = castTo gTypeSVGNumber "SVGNumber"
+
+foreign import javascript unsafe "window[\"SVGNumber\"]" gTypeSVGNumber' :: JSRef GType
+gTypeSVGNumber = GType gTypeSVGNumber'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGNumberList }
+
+instance Eq (SVGNumberList) where
+  (SVGNumberList a) == (SVGNumberList b) = js_eq a b
+
+instance PToJSRef SVGNumberList where
+  pToJSRef = unSVGNumberList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGNumberList where
+  pFromJSRef = SVGNumberList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGNumberList where
+  toJSRef = return . unSVGNumberList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGNumberList where
+  fromJSRef = return . fmap SVGNumberList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGNumberList where
+  toGObject = GObject . castRef . unSVGNumberList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGNumberList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGNumberList :: IsGObject obj => obj -> SVGNumberList
+castToSVGNumberList = castTo gTypeSVGNumberList "SVGNumberList"
+
+foreign import javascript unsafe "window[\"SVGNumberList\"]" gTypeSVGNumberList' :: JSRef GType
+gTypeSVGNumberList = GType gTypeSVGNumberList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPaint }
+
+instance Eq (SVGPaint) where
+  (SVGPaint a) == (SVGPaint b) = js_eq a b
+
+instance PToJSRef SVGPaint where
+  pToJSRef = unSVGPaint
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPaint where
+  pFromJSRef = SVGPaint
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPaint where
+  toJSRef = return . unSVGPaint
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPaint where
+  fromJSRef = return . fmap SVGPaint . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGColor SVGPaint
+instance IsCSSValue SVGPaint
+instance IsGObject SVGPaint where
+  toGObject = GObject . castRef . unSVGPaint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPaint . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPaint :: IsGObject obj => obj -> SVGPaint
+castToSVGPaint = castTo gTypeSVGPaint "SVGPaint"
+
+foreign import javascript unsafe "window[\"SVGPaint\"]" gTypeSVGPaint' :: JSRef GType
+gTypeSVGPaint = GType gTypeSVGPaint'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathElement }
+
+instance Eq (SVGPathElement) where
+  (SVGPathElement a) == (SVGPathElement b) = js_eq a b
+
+instance PToJSRef SVGPathElement where
+  pToJSRef = unSVGPathElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathElement where
+  pFromJSRef = SVGPathElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathElement where
+  toJSRef = return . unSVGPathElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathElement where
+  fromJSRef = return . fmap SVGPathElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGPathElement
+instance IsSVGElement SVGPathElement
+instance IsElement SVGPathElement
+instance IsNode SVGPathElement
+instance IsEventTarget SVGPathElement
+instance IsGObject SVGPathElement where
+  toGObject = GObject . castRef . unSVGPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathElement :: IsGObject obj => obj -> SVGPathElement
+castToSVGPathElement = castTo gTypeSVGPathElement "SVGPathElement"
+
+foreign import javascript unsafe "window[\"SVGPathElement\"]" gTypeSVGPathElement' :: JSRef GType
+gTypeSVGPathElement = GType gTypeSVGPathElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSeg }
+
+instance Eq (SVGPathSeg) where
+  (SVGPathSeg a) == (SVGPathSeg b) = js_eq a b
+
+instance PToJSRef SVGPathSeg where
+  pToJSRef = unSVGPathSeg
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSeg where
+  pFromJSRef = SVGPathSeg
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSeg where
+  toJSRef = return . unSVGPathSeg
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSeg where
+  fromJSRef = return . fmap SVGPathSeg . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsSVGPathSeg o
+toSVGPathSeg :: IsSVGPathSeg o => o -> SVGPathSeg
+toSVGPathSeg = unsafeCastGObject . toGObject
+
+instance IsSVGPathSeg SVGPathSeg
+instance IsGObject SVGPathSeg where
+  toGObject = GObject . castRef . unSVGPathSeg
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSeg . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSeg :: IsGObject obj => obj -> SVGPathSeg
+castToSVGPathSeg = castTo gTypeSVGPathSeg "SVGPathSeg"
+
+foreign import javascript unsafe "window[\"SVGPathSeg\"]" gTypeSVGPathSeg' :: JSRef GType
+gTypeSVGPathSeg = GType gTypeSVGPathSeg'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegArcAbs }
+
+instance Eq (SVGPathSegArcAbs) where
+  (SVGPathSegArcAbs a) == (SVGPathSegArcAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegArcAbs where
+  pToJSRef = unSVGPathSegArcAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegArcAbs where
+  pFromJSRef = SVGPathSegArcAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegArcAbs where
+  toJSRef = return . unSVGPathSegArcAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegArcAbs where
+  fromJSRef = return . fmap SVGPathSegArcAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegArcAbs
+instance IsGObject SVGPathSegArcAbs where
+  toGObject = GObject . castRef . unSVGPathSegArcAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegArcAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegArcAbs :: IsGObject obj => obj -> SVGPathSegArcAbs
+castToSVGPathSegArcAbs = castTo gTypeSVGPathSegArcAbs "SVGPathSegArcAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegArcAbs\"]" gTypeSVGPathSegArcAbs' :: JSRef GType
+gTypeSVGPathSegArcAbs = GType gTypeSVGPathSegArcAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegArcRel }
+
+instance Eq (SVGPathSegArcRel) where
+  (SVGPathSegArcRel a) == (SVGPathSegArcRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegArcRel where
+  pToJSRef = unSVGPathSegArcRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegArcRel where
+  pFromJSRef = SVGPathSegArcRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegArcRel where
+  toJSRef = return . unSVGPathSegArcRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegArcRel where
+  fromJSRef = return . fmap SVGPathSegArcRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegArcRel
+instance IsGObject SVGPathSegArcRel where
+  toGObject = GObject . castRef . unSVGPathSegArcRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegArcRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegArcRel :: IsGObject obj => obj -> SVGPathSegArcRel
+castToSVGPathSegArcRel = castTo gTypeSVGPathSegArcRel "SVGPathSegArcRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegArcRel\"]" gTypeSVGPathSegArcRel' :: JSRef GType
+gTypeSVGPathSegArcRel = GType gTypeSVGPathSegArcRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegClosePath }
+
+instance Eq (SVGPathSegClosePath) where
+  (SVGPathSegClosePath a) == (SVGPathSegClosePath b) = js_eq a b
+
+instance PToJSRef SVGPathSegClosePath where
+  pToJSRef = unSVGPathSegClosePath
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegClosePath where
+  pFromJSRef = SVGPathSegClosePath
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegClosePath where
+  toJSRef = return . unSVGPathSegClosePath
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegClosePath where
+  fromJSRef = return . fmap SVGPathSegClosePath . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegClosePath
+instance IsGObject SVGPathSegClosePath where
+  toGObject = GObject . castRef . unSVGPathSegClosePath
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegClosePath . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegClosePath :: IsGObject obj => obj -> SVGPathSegClosePath
+castToSVGPathSegClosePath = castTo gTypeSVGPathSegClosePath "SVGPathSegClosePath"
+
+foreign import javascript unsafe "window[\"SVGPathSegClosePath\"]" gTypeSVGPathSegClosePath' :: JSRef GType
+gTypeSVGPathSegClosePath = GType gTypeSVGPathSegClosePath'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegCurvetoCubicAbs }
+
+instance Eq (SVGPathSegCurvetoCubicAbs) where
+  (SVGPathSegCurvetoCubicAbs a) == (SVGPathSegCurvetoCubicAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegCurvetoCubicAbs where
+  pToJSRef = unSVGPathSegCurvetoCubicAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegCurvetoCubicAbs where
+  pFromJSRef = SVGPathSegCurvetoCubicAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegCurvetoCubicAbs where
+  toJSRef = return . unSVGPathSegCurvetoCubicAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegCurvetoCubicAbs where
+  fromJSRef = return . fmap SVGPathSegCurvetoCubicAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicAbs
+instance IsGObject SVGPathSegCurvetoCubicAbs where
+  toGObject = GObject . castRef . unSVGPathSegCurvetoCubicAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicAbs :: IsGObject obj => obj -> SVGPathSegCurvetoCubicAbs
+castToSVGPathSegCurvetoCubicAbs = castTo gTypeSVGPathSegCurvetoCubicAbs "SVGPathSegCurvetoCubicAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoCubicAbs\"]" gTypeSVGPathSegCurvetoCubicAbs' :: JSRef GType
+gTypeSVGPathSegCurvetoCubicAbs = GType gTypeSVGPathSegCurvetoCubicAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegCurvetoCubicRel }
+
+instance Eq (SVGPathSegCurvetoCubicRel) where
+  (SVGPathSegCurvetoCubicRel a) == (SVGPathSegCurvetoCubicRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegCurvetoCubicRel where
+  pToJSRef = unSVGPathSegCurvetoCubicRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegCurvetoCubicRel where
+  pFromJSRef = SVGPathSegCurvetoCubicRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegCurvetoCubicRel where
+  toJSRef = return . unSVGPathSegCurvetoCubicRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegCurvetoCubicRel where
+  fromJSRef = return . fmap SVGPathSegCurvetoCubicRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicRel
+instance IsGObject SVGPathSegCurvetoCubicRel where
+  toGObject = GObject . castRef . unSVGPathSegCurvetoCubicRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicRel :: IsGObject obj => obj -> SVGPathSegCurvetoCubicRel
+castToSVGPathSegCurvetoCubicRel = castTo gTypeSVGPathSegCurvetoCubicRel "SVGPathSegCurvetoCubicRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoCubicRel\"]" gTypeSVGPathSegCurvetoCubicRel' :: JSRef GType
+gTypeSVGPathSegCurvetoCubicRel = GType gTypeSVGPathSegCurvetoCubicRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegCurvetoCubicSmoothAbs }
+
+instance Eq (SVGPathSegCurvetoCubicSmoothAbs) where
+  (SVGPathSegCurvetoCubicSmoothAbs a) == (SVGPathSegCurvetoCubicSmoothAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegCurvetoCubicSmoothAbs where
+  pToJSRef = unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegCurvetoCubicSmoothAbs where
+  pFromJSRef = SVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegCurvetoCubicSmoothAbs where
+  toJSRef = return . unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegCurvetoCubicSmoothAbs where
+  fromJSRef = return . fmap SVGPathSegCurvetoCubicSmoothAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothAbs
+instance IsGObject SVGPathSegCurvetoCubicSmoothAbs where
+  toGObject = GObject . castRef . unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicSmoothAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicSmoothAbs :: IsGObject obj => obj -> SVGPathSegCurvetoCubicSmoothAbs
+castToSVGPathSegCurvetoCubicSmoothAbs = castTo gTypeSVGPathSegCurvetoCubicSmoothAbs "SVGPathSegCurvetoCubicSmoothAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoCubicSmoothAbs\"]" gTypeSVGPathSegCurvetoCubicSmoothAbs' :: JSRef GType
+gTypeSVGPathSegCurvetoCubicSmoothAbs = GType gTypeSVGPathSegCurvetoCubicSmoothAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegCurvetoCubicSmoothRel }
+
+instance Eq (SVGPathSegCurvetoCubicSmoothRel) where
+  (SVGPathSegCurvetoCubicSmoothRel a) == (SVGPathSegCurvetoCubicSmoothRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegCurvetoCubicSmoothRel where
+  pToJSRef = unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegCurvetoCubicSmoothRel where
+  pFromJSRef = SVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegCurvetoCubicSmoothRel where
+  toJSRef = return . unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegCurvetoCubicSmoothRel where
+  fromJSRef = return . fmap SVGPathSegCurvetoCubicSmoothRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothRel
+instance IsGObject SVGPathSegCurvetoCubicSmoothRel where
+  toGObject = GObject . castRef . unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoCubicSmoothRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoCubicSmoothRel :: IsGObject obj => obj -> SVGPathSegCurvetoCubicSmoothRel
+castToSVGPathSegCurvetoCubicSmoothRel = castTo gTypeSVGPathSegCurvetoCubicSmoothRel "SVGPathSegCurvetoCubicSmoothRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoCubicSmoothRel\"]" gTypeSVGPathSegCurvetoCubicSmoothRel' :: JSRef GType
+gTypeSVGPathSegCurvetoCubicSmoothRel = GType gTypeSVGPathSegCurvetoCubicSmoothRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegCurvetoQuadraticAbs }
+
+instance Eq (SVGPathSegCurvetoQuadraticAbs) where
+  (SVGPathSegCurvetoQuadraticAbs a) == (SVGPathSegCurvetoQuadraticAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegCurvetoQuadraticAbs where
+  pToJSRef = unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegCurvetoQuadraticAbs where
+  pFromJSRef = SVGPathSegCurvetoQuadraticAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegCurvetoQuadraticAbs where
+  toJSRef = return . unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegCurvetoQuadraticAbs where
+  fromJSRef = return . fmap SVGPathSegCurvetoQuadraticAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticAbs
+instance IsGObject SVGPathSegCurvetoQuadraticAbs where
+  toGObject = GObject . castRef . unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticAbs :: IsGObject obj => obj -> SVGPathSegCurvetoQuadraticAbs
+castToSVGPathSegCurvetoQuadraticAbs = castTo gTypeSVGPathSegCurvetoQuadraticAbs "SVGPathSegCurvetoQuadraticAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoQuadraticAbs\"]" gTypeSVGPathSegCurvetoQuadraticAbs' :: JSRef GType
+gTypeSVGPathSegCurvetoQuadraticAbs = GType gTypeSVGPathSegCurvetoQuadraticAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegCurvetoQuadraticRel }
+
+instance Eq (SVGPathSegCurvetoQuadraticRel) where
+  (SVGPathSegCurvetoQuadraticRel a) == (SVGPathSegCurvetoQuadraticRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegCurvetoQuadraticRel where
+  pToJSRef = unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegCurvetoQuadraticRel where
+  pFromJSRef = SVGPathSegCurvetoQuadraticRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegCurvetoQuadraticRel where
+  toJSRef = return . unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegCurvetoQuadraticRel where
+  fromJSRef = return . fmap SVGPathSegCurvetoQuadraticRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticRel
+instance IsGObject SVGPathSegCurvetoQuadraticRel where
+  toGObject = GObject . castRef . unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticRel :: IsGObject obj => obj -> SVGPathSegCurvetoQuadraticRel
+castToSVGPathSegCurvetoQuadraticRel = castTo gTypeSVGPathSegCurvetoQuadraticRel "SVGPathSegCurvetoQuadraticRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoQuadraticRel\"]" gTypeSVGPathSegCurvetoQuadraticRel' :: JSRef GType
+gTypeSVGPathSegCurvetoQuadraticRel = GType gTypeSVGPathSegCurvetoQuadraticRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegCurvetoQuadraticSmoothAbs }
+
+instance Eq (SVGPathSegCurvetoQuadraticSmoothAbs) where
+  (SVGPathSegCurvetoQuadraticSmoothAbs a) == (SVGPathSegCurvetoQuadraticSmoothAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegCurvetoQuadraticSmoothAbs where
+  pToJSRef = unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegCurvetoQuadraticSmoothAbs where
+  pFromJSRef = SVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegCurvetoQuadraticSmoothAbs where
+  toJSRef = return . unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegCurvetoQuadraticSmoothAbs where
+  fromJSRef = return . fmap SVGPathSegCurvetoQuadraticSmoothAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothAbs
+instance IsGObject SVGPathSegCurvetoQuadraticSmoothAbs where
+  toGObject = GObject . castRef . unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticSmoothAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticSmoothAbs :: IsGObject obj => obj -> SVGPathSegCurvetoQuadraticSmoothAbs
+castToSVGPathSegCurvetoQuadraticSmoothAbs = castTo gTypeSVGPathSegCurvetoQuadraticSmoothAbs "SVGPathSegCurvetoQuadraticSmoothAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoQuadraticSmoothAbs\"]" gTypeSVGPathSegCurvetoQuadraticSmoothAbs' :: JSRef GType
+gTypeSVGPathSegCurvetoQuadraticSmoothAbs = GType gTypeSVGPathSegCurvetoQuadraticSmoothAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegCurvetoQuadraticSmoothRel }
+
+instance Eq (SVGPathSegCurvetoQuadraticSmoothRel) where
+  (SVGPathSegCurvetoQuadraticSmoothRel a) == (SVGPathSegCurvetoQuadraticSmoothRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegCurvetoQuadraticSmoothRel where
+  pToJSRef = unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegCurvetoQuadraticSmoothRel where
+  pFromJSRef = SVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegCurvetoQuadraticSmoothRel where
+  toJSRef = return . unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegCurvetoQuadraticSmoothRel where
+  fromJSRef = return . fmap SVGPathSegCurvetoQuadraticSmoothRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothRel
+instance IsGObject SVGPathSegCurvetoQuadraticSmoothRel where
+  toGObject = GObject . castRef . unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegCurvetoQuadraticSmoothRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegCurvetoQuadraticSmoothRel :: IsGObject obj => obj -> SVGPathSegCurvetoQuadraticSmoothRel
+castToSVGPathSegCurvetoQuadraticSmoothRel = castTo gTypeSVGPathSegCurvetoQuadraticSmoothRel "SVGPathSegCurvetoQuadraticSmoothRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoQuadraticSmoothRel\"]" gTypeSVGPathSegCurvetoQuadraticSmoothRel' :: JSRef GType
+gTypeSVGPathSegCurvetoQuadraticSmoothRel = GType gTypeSVGPathSegCurvetoQuadraticSmoothRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegLinetoAbs }
+
+instance Eq (SVGPathSegLinetoAbs) where
+  (SVGPathSegLinetoAbs a) == (SVGPathSegLinetoAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegLinetoAbs where
+  pToJSRef = unSVGPathSegLinetoAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegLinetoAbs where
+  pFromJSRef = SVGPathSegLinetoAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegLinetoAbs where
+  toJSRef = return . unSVGPathSegLinetoAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegLinetoAbs where
+  fromJSRef = return . fmap SVGPathSegLinetoAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoAbs
+instance IsGObject SVGPathSegLinetoAbs where
+  toGObject = GObject . castRef . unSVGPathSegLinetoAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoAbs :: IsGObject obj => obj -> SVGPathSegLinetoAbs
+castToSVGPathSegLinetoAbs = castTo gTypeSVGPathSegLinetoAbs "SVGPathSegLinetoAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoAbs\"]" gTypeSVGPathSegLinetoAbs' :: JSRef GType
+gTypeSVGPathSegLinetoAbs = GType gTypeSVGPathSegLinetoAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegLinetoHorizontalAbs }
+
+instance Eq (SVGPathSegLinetoHorizontalAbs) where
+  (SVGPathSegLinetoHorizontalAbs a) == (SVGPathSegLinetoHorizontalAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegLinetoHorizontalAbs where
+  pToJSRef = unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegLinetoHorizontalAbs where
+  pFromJSRef = SVGPathSegLinetoHorizontalAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegLinetoHorizontalAbs where
+  toJSRef = return . unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegLinetoHorizontalAbs where
+  fromJSRef = return . fmap SVGPathSegLinetoHorizontalAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoHorizontalAbs
+instance IsGObject SVGPathSegLinetoHorizontalAbs where
+  toGObject = GObject . castRef . unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoHorizontalAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoHorizontalAbs :: IsGObject obj => obj -> SVGPathSegLinetoHorizontalAbs
+castToSVGPathSegLinetoHorizontalAbs = castTo gTypeSVGPathSegLinetoHorizontalAbs "SVGPathSegLinetoHorizontalAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoHorizontalAbs\"]" gTypeSVGPathSegLinetoHorizontalAbs' :: JSRef GType
+gTypeSVGPathSegLinetoHorizontalAbs = GType gTypeSVGPathSegLinetoHorizontalAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegLinetoHorizontalRel }
+
+instance Eq (SVGPathSegLinetoHorizontalRel) where
+  (SVGPathSegLinetoHorizontalRel a) == (SVGPathSegLinetoHorizontalRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegLinetoHorizontalRel where
+  pToJSRef = unSVGPathSegLinetoHorizontalRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegLinetoHorizontalRel where
+  pFromJSRef = SVGPathSegLinetoHorizontalRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegLinetoHorizontalRel where
+  toJSRef = return . unSVGPathSegLinetoHorizontalRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegLinetoHorizontalRel where
+  fromJSRef = return . fmap SVGPathSegLinetoHorizontalRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoHorizontalRel
+instance IsGObject SVGPathSegLinetoHorizontalRel where
+  toGObject = GObject . castRef . unSVGPathSegLinetoHorizontalRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoHorizontalRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoHorizontalRel :: IsGObject obj => obj -> SVGPathSegLinetoHorizontalRel
+castToSVGPathSegLinetoHorizontalRel = castTo gTypeSVGPathSegLinetoHorizontalRel "SVGPathSegLinetoHorizontalRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoHorizontalRel\"]" gTypeSVGPathSegLinetoHorizontalRel' :: JSRef GType
+gTypeSVGPathSegLinetoHorizontalRel = GType gTypeSVGPathSegLinetoHorizontalRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegLinetoRel }
+
+instance Eq (SVGPathSegLinetoRel) where
+  (SVGPathSegLinetoRel a) == (SVGPathSegLinetoRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegLinetoRel where
+  pToJSRef = unSVGPathSegLinetoRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegLinetoRel where
+  pFromJSRef = SVGPathSegLinetoRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegLinetoRel where
+  toJSRef = return . unSVGPathSegLinetoRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegLinetoRel where
+  fromJSRef = return . fmap SVGPathSegLinetoRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoRel
+instance IsGObject SVGPathSegLinetoRel where
+  toGObject = GObject . castRef . unSVGPathSegLinetoRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoRel :: IsGObject obj => obj -> SVGPathSegLinetoRel
+castToSVGPathSegLinetoRel = castTo gTypeSVGPathSegLinetoRel "SVGPathSegLinetoRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoRel\"]" gTypeSVGPathSegLinetoRel' :: JSRef GType
+gTypeSVGPathSegLinetoRel = GType gTypeSVGPathSegLinetoRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegLinetoVerticalAbs }
+
+instance Eq (SVGPathSegLinetoVerticalAbs) where
+  (SVGPathSegLinetoVerticalAbs a) == (SVGPathSegLinetoVerticalAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegLinetoVerticalAbs where
+  pToJSRef = unSVGPathSegLinetoVerticalAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegLinetoVerticalAbs where
+  pFromJSRef = SVGPathSegLinetoVerticalAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegLinetoVerticalAbs where
+  toJSRef = return . unSVGPathSegLinetoVerticalAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegLinetoVerticalAbs where
+  fromJSRef = return . fmap SVGPathSegLinetoVerticalAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoVerticalAbs
+instance IsGObject SVGPathSegLinetoVerticalAbs where
+  toGObject = GObject . castRef . unSVGPathSegLinetoVerticalAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoVerticalAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoVerticalAbs :: IsGObject obj => obj -> SVGPathSegLinetoVerticalAbs
+castToSVGPathSegLinetoVerticalAbs = castTo gTypeSVGPathSegLinetoVerticalAbs "SVGPathSegLinetoVerticalAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoVerticalAbs\"]" gTypeSVGPathSegLinetoVerticalAbs' :: JSRef GType
+gTypeSVGPathSegLinetoVerticalAbs = GType gTypeSVGPathSegLinetoVerticalAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegLinetoVerticalRel }
+
+instance Eq (SVGPathSegLinetoVerticalRel) where
+  (SVGPathSegLinetoVerticalRel a) == (SVGPathSegLinetoVerticalRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegLinetoVerticalRel where
+  pToJSRef = unSVGPathSegLinetoVerticalRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegLinetoVerticalRel where
+  pFromJSRef = SVGPathSegLinetoVerticalRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegLinetoVerticalRel where
+  toJSRef = return . unSVGPathSegLinetoVerticalRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegLinetoVerticalRel where
+  fromJSRef = return . fmap SVGPathSegLinetoVerticalRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoVerticalRel
+instance IsGObject SVGPathSegLinetoVerticalRel where
+  toGObject = GObject . castRef . unSVGPathSegLinetoVerticalRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegLinetoVerticalRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegLinetoVerticalRel :: IsGObject obj => obj -> SVGPathSegLinetoVerticalRel
+castToSVGPathSegLinetoVerticalRel = castTo gTypeSVGPathSegLinetoVerticalRel "SVGPathSegLinetoVerticalRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoVerticalRel\"]" gTypeSVGPathSegLinetoVerticalRel' :: JSRef GType
+gTypeSVGPathSegLinetoVerticalRel = GType gTypeSVGPathSegLinetoVerticalRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegList }
+
+instance Eq (SVGPathSegList) where
+  (SVGPathSegList a) == (SVGPathSegList b) = js_eq a b
+
+instance PToJSRef SVGPathSegList where
+  pToJSRef = unSVGPathSegList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegList where
+  pFromJSRef = SVGPathSegList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegList where
+  toJSRef = return . unSVGPathSegList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegList where
+  fromJSRef = return . fmap SVGPathSegList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGPathSegList where
+  toGObject = GObject . castRef . unSVGPathSegList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegList :: IsGObject obj => obj -> SVGPathSegList
+castToSVGPathSegList = castTo gTypeSVGPathSegList "SVGPathSegList"
+
+foreign import javascript unsafe "window[\"SVGPathSegList\"]" gTypeSVGPathSegList' :: JSRef GType
+gTypeSVGPathSegList = GType gTypeSVGPathSegList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegMovetoAbs }
+
+instance Eq (SVGPathSegMovetoAbs) where
+  (SVGPathSegMovetoAbs a) == (SVGPathSegMovetoAbs b) = js_eq a b
+
+instance PToJSRef SVGPathSegMovetoAbs where
+  pToJSRef = unSVGPathSegMovetoAbs
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegMovetoAbs where
+  pFromJSRef = SVGPathSegMovetoAbs
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegMovetoAbs where
+  toJSRef = return . unSVGPathSegMovetoAbs
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegMovetoAbs where
+  fromJSRef = return . fmap SVGPathSegMovetoAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegMovetoAbs
+instance IsGObject SVGPathSegMovetoAbs where
+  toGObject = GObject . castRef . unSVGPathSegMovetoAbs
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegMovetoAbs . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegMovetoAbs :: IsGObject obj => obj -> SVGPathSegMovetoAbs
+castToSVGPathSegMovetoAbs = castTo gTypeSVGPathSegMovetoAbs "SVGPathSegMovetoAbs"
+
+foreign import javascript unsafe "window[\"SVGPathSegMovetoAbs\"]" gTypeSVGPathSegMovetoAbs' :: JSRef GType
+gTypeSVGPathSegMovetoAbs = GType gTypeSVGPathSegMovetoAbs'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPathSegMovetoRel }
+
+instance Eq (SVGPathSegMovetoRel) where
+  (SVGPathSegMovetoRel a) == (SVGPathSegMovetoRel b) = js_eq a b
+
+instance PToJSRef SVGPathSegMovetoRel where
+  pToJSRef = unSVGPathSegMovetoRel
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPathSegMovetoRel where
+  pFromJSRef = SVGPathSegMovetoRel
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPathSegMovetoRel where
+  toJSRef = return . unSVGPathSegMovetoRel
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPathSegMovetoRel where
+  fromJSRef = return . fmap SVGPathSegMovetoRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGPathSeg SVGPathSegMovetoRel
+instance IsGObject SVGPathSegMovetoRel where
+  toGObject = GObject . castRef . unSVGPathSegMovetoRel
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPathSegMovetoRel . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPathSegMovetoRel :: IsGObject obj => obj -> SVGPathSegMovetoRel
+castToSVGPathSegMovetoRel = castTo gTypeSVGPathSegMovetoRel "SVGPathSegMovetoRel"
+
+foreign import javascript unsafe "window[\"SVGPathSegMovetoRel\"]" gTypeSVGPathSegMovetoRel' :: JSRef GType
+gTypeSVGPathSegMovetoRel = GType gTypeSVGPathSegMovetoRel'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPatternElement }
+
+instance Eq (SVGPatternElement) where
+  (SVGPatternElement a) == (SVGPatternElement b) = js_eq a b
+
+instance PToJSRef SVGPatternElement where
+  pToJSRef = unSVGPatternElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPatternElement where
+  pFromJSRef = SVGPatternElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPatternElement where
+  toJSRef = return . unSVGPatternElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPatternElement where
+  fromJSRef = return . fmap SVGPatternElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGPatternElement
+instance IsElement SVGPatternElement
+instance IsNode SVGPatternElement
+instance IsEventTarget SVGPatternElement
+instance IsGObject SVGPatternElement where
+  toGObject = GObject . castRef . unSVGPatternElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPatternElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPatternElement :: IsGObject obj => obj -> SVGPatternElement
+castToSVGPatternElement = castTo gTypeSVGPatternElement "SVGPatternElement"
+
+foreign import javascript unsafe "window[\"SVGPatternElement\"]" gTypeSVGPatternElement' :: JSRef GType
+gTypeSVGPatternElement = GType gTypeSVGPatternElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPoint }
+
+instance Eq (SVGPoint) where
+  (SVGPoint a) == (SVGPoint b) = js_eq a b
+
+instance PToJSRef SVGPoint where
+  pToJSRef = unSVGPoint
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPoint where
+  pFromJSRef = SVGPoint
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPoint where
+  toJSRef = return . unSVGPoint
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPoint where
+  fromJSRef = return . fmap SVGPoint . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGPoint where
+  toGObject = GObject . castRef . unSVGPoint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPoint . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPoint :: IsGObject obj => obj -> SVGPoint
+castToSVGPoint = castTo gTypeSVGPoint "SVGPoint"
+
+foreign import javascript unsafe "window[\"SVGPoint\"]" gTypeSVGPoint' :: JSRef GType
+gTypeSVGPoint = GType gTypeSVGPoint'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPointList }
+
+instance Eq (SVGPointList) where
+  (SVGPointList a) == (SVGPointList b) = js_eq a b
+
+instance PToJSRef SVGPointList where
+  pToJSRef = unSVGPointList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPointList where
+  pFromJSRef = SVGPointList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPointList where
+  toJSRef = return . unSVGPointList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPointList where
+  fromJSRef = return . fmap SVGPointList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGPointList where
+  toGObject = GObject . castRef . unSVGPointList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPointList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPointList :: IsGObject obj => obj -> SVGPointList
+castToSVGPointList = castTo gTypeSVGPointList "SVGPointList"
+
+foreign import javascript unsafe "window[\"SVGPointList\"]" gTypeSVGPointList' :: JSRef GType
+gTypeSVGPointList = GType gTypeSVGPointList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPolygonElement }
+
+instance Eq (SVGPolygonElement) where
+  (SVGPolygonElement a) == (SVGPolygonElement b) = js_eq a b
+
+instance PToJSRef SVGPolygonElement where
+  pToJSRef = unSVGPolygonElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPolygonElement where
+  pFromJSRef = SVGPolygonElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPolygonElement where
+  toJSRef = return . unSVGPolygonElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPolygonElement where
+  fromJSRef = return . fmap SVGPolygonElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGPolygonElement
+instance IsSVGElement SVGPolygonElement
+instance IsElement SVGPolygonElement
+instance IsNode SVGPolygonElement
+instance IsEventTarget SVGPolygonElement
+instance IsGObject SVGPolygonElement where
+  toGObject = GObject . castRef . unSVGPolygonElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPolygonElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPolygonElement :: IsGObject obj => obj -> SVGPolygonElement
+castToSVGPolygonElement = castTo gTypeSVGPolygonElement "SVGPolygonElement"
+
+foreign import javascript unsafe "window[\"SVGPolygonElement\"]" gTypeSVGPolygonElement' :: JSRef GType
+gTypeSVGPolygonElement = GType gTypeSVGPolygonElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPolylineElement }
+
+instance Eq (SVGPolylineElement) where
+  (SVGPolylineElement a) == (SVGPolylineElement b) = js_eq a b
+
+instance PToJSRef SVGPolylineElement where
+  pToJSRef = unSVGPolylineElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPolylineElement where
+  pFromJSRef = SVGPolylineElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPolylineElement where
+  toJSRef = return . unSVGPolylineElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPolylineElement where
+  fromJSRef = return . fmap SVGPolylineElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGPolylineElement
+instance IsSVGElement SVGPolylineElement
+instance IsElement SVGPolylineElement
+instance IsNode SVGPolylineElement
+instance IsEventTarget SVGPolylineElement
+instance IsGObject SVGPolylineElement where
+  toGObject = GObject . castRef . unSVGPolylineElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPolylineElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPolylineElement :: IsGObject obj => obj -> SVGPolylineElement
+castToSVGPolylineElement = castTo gTypeSVGPolylineElement "SVGPolylineElement"
+
+foreign import javascript unsafe "window[\"SVGPolylineElement\"]" gTypeSVGPolylineElement' :: JSRef GType
+gTypeSVGPolylineElement = GType gTypeSVGPolylineElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGPreserveAspectRatio }
+
+instance Eq (SVGPreserveAspectRatio) where
+  (SVGPreserveAspectRatio a) == (SVGPreserveAspectRatio b) = js_eq a b
+
+instance PToJSRef SVGPreserveAspectRatio where
+  pToJSRef = unSVGPreserveAspectRatio
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGPreserveAspectRatio where
+  pFromJSRef = SVGPreserveAspectRatio
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGPreserveAspectRatio where
+  toJSRef = return . unSVGPreserveAspectRatio
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGPreserveAspectRatio where
+  fromJSRef = return . fmap SVGPreserveAspectRatio . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGPreserveAspectRatio where
+  toGObject = GObject . castRef . unSVGPreserveAspectRatio
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGPreserveAspectRatio . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGPreserveAspectRatio :: IsGObject obj => obj -> SVGPreserveAspectRatio
+castToSVGPreserveAspectRatio = castTo gTypeSVGPreserveAspectRatio "SVGPreserveAspectRatio"
+
+foreign import javascript unsafe "window[\"SVGPreserveAspectRatio\"]" gTypeSVGPreserveAspectRatio' :: JSRef GType
+gTypeSVGPreserveAspectRatio = GType gTypeSVGPreserveAspectRatio'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGRadialGradientElement }
+
+instance Eq (SVGRadialGradientElement) where
+  (SVGRadialGradientElement a) == (SVGRadialGradientElement b) = js_eq a b
+
+instance PToJSRef SVGRadialGradientElement where
+  pToJSRef = unSVGRadialGradientElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGRadialGradientElement where
+  pFromJSRef = SVGRadialGradientElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGRadialGradientElement where
+  toJSRef = return . unSVGRadialGradientElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGRadialGradientElement where
+  fromJSRef = return . fmap SVGRadialGradientElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGradientElement SVGRadialGradientElement
+instance IsSVGElement SVGRadialGradientElement
+instance IsElement SVGRadialGradientElement
+instance IsNode SVGRadialGradientElement
+instance IsEventTarget SVGRadialGradientElement
+instance IsGObject SVGRadialGradientElement where
+  toGObject = GObject . castRef . unSVGRadialGradientElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRadialGradientElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRadialGradientElement :: IsGObject obj => obj -> SVGRadialGradientElement
+castToSVGRadialGradientElement = castTo gTypeSVGRadialGradientElement "SVGRadialGradientElement"
+
+foreign import javascript unsafe "window[\"SVGRadialGradientElement\"]" gTypeSVGRadialGradientElement' :: JSRef GType
+gTypeSVGRadialGradientElement = GType gTypeSVGRadialGradientElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGRect }
+
+instance Eq (SVGRect) where
+  (SVGRect a) == (SVGRect b) = js_eq a b
+
+instance PToJSRef SVGRect where
+  pToJSRef = unSVGRect
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGRect where
+  pFromJSRef = SVGRect
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGRect where
+  toJSRef = return . unSVGRect
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGRect where
+  fromJSRef = return . fmap SVGRect . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGRect where
+  toGObject = GObject . castRef . unSVGRect
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRect . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRect :: IsGObject obj => obj -> SVGRect
+castToSVGRect = castTo gTypeSVGRect "SVGRect"
+
+foreign import javascript unsafe "window[\"SVGRect\"]" gTypeSVGRect' :: JSRef GType
+gTypeSVGRect = GType gTypeSVGRect'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGRectElement }
+
+instance Eq (SVGRectElement) where
+  (SVGRectElement a) == (SVGRectElement b) = js_eq a b
+
+instance PToJSRef SVGRectElement where
+  pToJSRef = unSVGRectElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGRectElement where
+  pFromJSRef = SVGRectElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGRectElement where
+  toJSRef = return . unSVGRectElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGRectElement where
+  fromJSRef = return . fmap SVGRectElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGRectElement
+instance IsSVGElement SVGRectElement
+instance IsElement SVGRectElement
+instance IsNode SVGRectElement
+instance IsEventTarget SVGRectElement
+instance IsGObject SVGRectElement where
+  toGObject = GObject . castRef . unSVGRectElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRectElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRectElement :: IsGObject obj => obj -> SVGRectElement
+castToSVGRectElement = castTo gTypeSVGRectElement "SVGRectElement"
+
+foreign import javascript unsafe "window[\"SVGRectElement\"]" gTypeSVGRectElement' :: JSRef GType
+gTypeSVGRectElement = GType gTypeSVGRectElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGRenderingIntent }
+
+instance Eq (SVGRenderingIntent) where
+  (SVGRenderingIntent a) == (SVGRenderingIntent b) = js_eq a b
+
+instance PToJSRef SVGRenderingIntent where
+  pToJSRef = unSVGRenderingIntent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGRenderingIntent where
+  pFromJSRef = SVGRenderingIntent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGRenderingIntent where
+  toJSRef = return . unSVGRenderingIntent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGRenderingIntent where
+  fromJSRef = return . fmap SVGRenderingIntent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGRenderingIntent where
+  toGObject = GObject . castRef . unSVGRenderingIntent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGRenderingIntent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGRenderingIntent :: IsGObject obj => obj -> SVGRenderingIntent
+castToSVGRenderingIntent = castTo gTypeSVGRenderingIntent "SVGRenderingIntent"
+
+foreign import javascript unsafe "window[\"SVGRenderingIntent\"]" gTypeSVGRenderingIntent' :: JSRef GType
+gTypeSVGRenderingIntent = GType gTypeSVGRenderingIntent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGSVGElement }
+
+instance Eq (SVGSVGElement) where
+  (SVGSVGElement a) == (SVGSVGElement b) = js_eq a b
+
+instance PToJSRef SVGSVGElement where
+  pToJSRef = unSVGSVGElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGSVGElement where
+  pFromJSRef = SVGSVGElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGSVGElement where
+  toJSRef = return . unSVGSVGElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGSVGElement where
+  fromJSRef = return . fmap SVGSVGElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGSVGElement
+instance IsSVGElement SVGSVGElement
+instance IsElement SVGSVGElement
+instance IsNode SVGSVGElement
+instance IsEventTarget SVGSVGElement
+instance IsGObject SVGSVGElement where
+  toGObject = GObject . castRef . unSVGSVGElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSVGElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSVGElement :: IsGObject obj => obj -> SVGSVGElement
+castToSVGSVGElement = castTo gTypeSVGSVGElement "SVGSVGElement"
+
+foreign import javascript unsafe "window[\"SVGSVGElement\"]" gTypeSVGSVGElement' :: JSRef GType
+gTypeSVGSVGElement = GType gTypeSVGSVGElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGScriptElement }
+
+instance Eq (SVGScriptElement) where
+  (SVGScriptElement a) == (SVGScriptElement b) = js_eq a b
+
+instance PToJSRef SVGScriptElement where
+  pToJSRef = unSVGScriptElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGScriptElement where
+  pFromJSRef = SVGScriptElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGScriptElement where
+  toJSRef = return . unSVGScriptElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGScriptElement where
+  fromJSRef = return . fmap SVGScriptElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGScriptElement
+instance IsElement SVGScriptElement
+instance IsNode SVGScriptElement
+instance IsEventTarget SVGScriptElement
+instance IsGObject SVGScriptElement where
+  toGObject = GObject . castRef . unSVGScriptElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGScriptElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGScriptElement :: IsGObject obj => obj -> SVGScriptElement
+castToSVGScriptElement = castTo gTypeSVGScriptElement "SVGScriptElement"
+
+foreign import javascript unsafe "window[\"SVGScriptElement\"]" gTypeSVGScriptElement' :: JSRef GType
+gTypeSVGScriptElement = GType gTypeSVGScriptElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGSetElement }
+
+instance Eq (SVGSetElement) where
+  (SVGSetElement a) == (SVGSetElement b) = js_eq a b
+
+instance PToJSRef SVGSetElement where
+  pToJSRef = unSVGSetElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGSetElement where
+  pFromJSRef = SVGSetElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGSetElement where
+  toJSRef = return . unSVGSetElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGSetElement where
+  fromJSRef = return . fmap SVGSetElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGAnimationElement SVGSetElement
+instance IsSVGElement SVGSetElement
+instance IsElement SVGSetElement
+instance IsNode SVGSetElement
+instance IsEventTarget SVGSetElement
+instance IsGObject SVGSetElement where
+  toGObject = GObject . castRef . unSVGSetElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSetElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSetElement :: IsGObject obj => obj -> SVGSetElement
+castToSVGSetElement = castTo gTypeSVGSetElement "SVGSetElement"
+
+foreign import javascript unsafe "window[\"SVGSetElement\"]" gTypeSVGSetElement' :: JSRef GType
+gTypeSVGSetElement = GType gTypeSVGSetElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGStopElement }
+
+instance Eq (SVGStopElement) where
+  (SVGStopElement a) == (SVGStopElement b) = js_eq a b
+
+instance PToJSRef SVGStopElement where
+  pToJSRef = unSVGStopElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGStopElement where
+  pFromJSRef = SVGStopElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGStopElement where
+  toJSRef = return . unSVGStopElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGStopElement where
+  fromJSRef = return . fmap SVGStopElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGStopElement
+instance IsElement SVGStopElement
+instance IsNode SVGStopElement
+instance IsEventTarget SVGStopElement
+instance IsGObject SVGStopElement where
+  toGObject = GObject . castRef . unSVGStopElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStopElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStopElement :: IsGObject obj => obj -> SVGStopElement
+castToSVGStopElement = castTo gTypeSVGStopElement "SVGStopElement"
+
+foreign import javascript unsafe "window[\"SVGStopElement\"]" gTypeSVGStopElement' :: JSRef GType
+gTypeSVGStopElement = GType gTypeSVGStopElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGStringList }
+
+instance Eq (SVGStringList) where
+  (SVGStringList a) == (SVGStringList b) = js_eq a b
+
+instance PToJSRef SVGStringList where
+  pToJSRef = unSVGStringList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGStringList where
+  pFromJSRef = SVGStringList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGStringList where
+  toJSRef = return . unSVGStringList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGStringList where
+  fromJSRef = return . fmap SVGStringList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGStringList where
+  toGObject = GObject . castRef . unSVGStringList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStringList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStringList :: IsGObject obj => obj -> SVGStringList
+castToSVGStringList = castTo gTypeSVGStringList "SVGStringList"
+
+foreign import javascript unsafe "window[\"SVGStringList\"]" gTypeSVGStringList' :: JSRef GType
+gTypeSVGStringList = GType gTypeSVGStringList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGStyleElement }
+
+instance Eq (SVGStyleElement) where
+  (SVGStyleElement a) == (SVGStyleElement b) = js_eq a b
+
+instance PToJSRef SVGStyleElement where
+  pToJSRef = unSVGStyleElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGStyleElement where
+  pFromJSRef = SVGStyleElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGStyleElement where
+  toJSRef = return . unSVGStyleElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGStyleElement where
+  fromJSRef = return . fmap SVGStyleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGStyleElement
+instance IsElement SVGStyleElement
+instance IsNode SVGStyleElement
+instance IsEventTarget SVGStyleElement
+instance IsGObject SVGStyleElement where
+  toGObject = GObject . castRef . unSVGStyleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGStyleElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGStyleElement :: IsGObject obj => obj -> SVGStyleElement
+castToSVGStyleElement = castTo gTypeSVGStyleElement "SVGStyleElement"
+
+foreign import javascript unsafe "window[\"SVGStyleElement\"]" gTypeSVGStyleElement' :: JSRef GType
+gTypeSVGStyleElement = GType gTypeSVGStyleElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGSwitchElement }
+
+instance Eq (SVGSwitchElement) where
+  (SVGSwitchElement a) == (SVGSwitchElement b) = js_eq a b
+
+instance PToJSRef SVGSwitchElement where
+  pToJSRef = unSVGSwitchElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGSwitchElement where
+  pFromJSRef = SVGSwitchElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGSwitchElement where
+  toJSRef = return . unSVGSwitchElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGSwitchElement where
+  fromJSRef = return . fmap SVGSwitchElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGSwitchElement
+instance IsSVGElement SVGSwitchElement
+instance IsElement SVGSwitchElement
+instance IsNode SVGSwitchElement
+instance IsEventTarget SVGSwitchElement
+instance IsGObject SVGSwitchElement where
+  toGObject = GObject . castRef . unSVGSwitchElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSwitchElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSwitchElement :: IsGObject obj => obj -> SVGSwitchElement
+castToSVGSwitchElement = castTo gTypeSVGSwitchElement "SVGSwitchElement"
+
+foreign import javascript unsafe "window[\"SVGSwitchElement\"]" gTypeSVGSwitchElement' :: JSRef GType
+gTypeSVGSwitchElement = GType gTypeSVGSwitchElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGSymbolElement }
+
+instance Eq (SVGSymbolElement) where
+  (SVGSymbolElement a) == (SVGSymbolElement b) = js_eq a b
+
+instance PToJSRef SVGSymbolElement where
+  pToJSRef = unSVGSymbolElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGSymbolElement where
+  pFromJSRef = SVGSymbolElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGSymbolElement where
+  toJSRef = return . unSVGSymbolElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGSymbolElement where
+  fromJSRef = return . fmap SVGSymbolElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGSymbolElement
+instance IsElement SVGSymbolElement
+instance IsNode SVGSymbolElement
+instance IsEventTarget SVGSymbolElement
+instance IsGObject SVGSymbolElement where
+  toGObject = GObject . castRef . unSVGSymbolElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGSymbolElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGSymbolElement :: IsGObject obj => obj -> SVGSymbolElement
+castToSVGSymbolElement = castTo gTypeSVGSymbolElement "SVGSymbolElement"
+
+foreign import javascript unsafe "window[\"SVGSymbolElement\"]" gTypeSVGSymbolElement' :: JSRef GType
+gTypeSVGSymbolElement = GType gTypeSVGSymbolElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTRefElement }
+
+instance Eq (SVGTRefElement) where
+  (SVGTRefElement a) == (SVGTRefElement b) = js_eq a b
+
+instance PToJSRef SVGTRefElement where
+  pToJSRef = unSVGTRefElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTRefElement where
+  pFromJSRef = SVGTRefElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTRefElement where
+  toJSRef = return . unSVGTRefElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTRefElement where
+  fromJSRef = return . fmap SVGTRefElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGTRefElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTRefElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTRefElement :: IsGObject obj => obj -> SVGTRefElement
+castToSVGTRefElement = castTo gTypeSVGTRefElement "SVGTRefElement"
+
+foreign import javascript unsafe "window[\"SVGTRefElement\"]" gTypeSVGTRefElement' :: JSRef GType
+gTypeSVGTRefElement = GType gTypeSVGTRefElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTSpanElement }
+
+instance Eq (SVGTSpanElement) where
+  (SVGTSpanElement a) == (SVGTSpanElement b) = js_eq a b
+
+instance PToJSRef SVGTSpanElement where
+  pToJSRef = unSVGTSpanElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTSpanElement where
+  pFromJSRef = SVGTSpanElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTSpanElement where
+  toJSRef = return . unSVGTSpanElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTSpanElement where
+  fromJSRef = return . fmap SVGTSpanElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGTSpanElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTSpanElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTSpanElement :: IsGObject obj => obj -> SVGTSpanElement
+castToSVGTSpanElement = castTo gTypeSVGTSpanElement "SVGTSpanElement"
+
+foreign import javascript unsafe "window[\"SVGTSpanElement\"]" gTypeSVGTSpanElement' :: JSRef GType
+gTypeSVGTSpanElement = GType gTypeSVGTSpanElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTests }
+
+instance Eq (SVGTests) where
+  (SVGTests a) == (SVGTests b) = js_eq a b
+
+instance PToJSRef SVGTests where
+  pToJSRef = unSVGTests
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTests where
+  pFromJSRef = SVGTests
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTests where
+  toJSRef = return . unSVGTests
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTests where
+  fromJSRef = return . fmap SVGTests . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGTests where
+  toGObject = GObject . castRef . unSVGTests
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTests . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTests :: IsGObject obj => obj -> SVGTests
+castToSVGTests = castTo gTypeSVGTests "SVGTests"
+
+foreign import javascript unsafe "window[\"SVGTests\"]" gTypeSVGTests' :: JSRef GType
+gTypeSVGTests = GType gTypeSVGTests'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTextContentElement }
+
+instance Eq (SVGTextContentElement) where
+  (SVGTextContentElement a) == (SVGTextContentElement b) = js_eq a b
+
+instance PToJSRef SVGTextContentElement where
+  pToJSRef = unSVGTextContentElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTextContentElement where
+  pFromJSRef = SVGTextContentElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTextContentElement where
+  toJSRef = return . unSVGTextContentElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTextContentElement where
+  fromJSRef = return . fmap SVGTextContentElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGTextContentElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextContentElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextContentElement :: IsGObject obj => obj -> SVGTextContentElement
+castToSVGTextContentElement = castTo gTypeSVGTextContentElement "SVGTextContentElement"
+
+foreign import javascript unsafe "window[\"SVGTextContentElement\"]" gTypeSVGTextContentElement' :: JSRef GType
+gTypeSVGTextContentElement = GType gTypeSVGTextContentElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTextElement }
+
+instance Eq (SVGTextElement) where
+  (SVGTextElement a) == (SVGTextElement b) = js_eq a b
+
+instance PToJSRef SVGTextElement where
+  pToJSRef = unSVGTextElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTextElement where
+  pFromJSRef = SVGTextElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTextElement where
+  toJSRef = return . unSVGTextElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTextElement where
+  fromJSRef = return . fmap SVGTextElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGTextElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextElement :: IsGObject obj => obj -> SVGTextElement
+castToSVGTextElement = castTo gTypeSVGTextElement "SVGTextElement"
+
+foreign import javascript unsafe "window[\"SVGTextElement\"]" gTypeSVGTextElement' :: JSRef GType
+gTypeSVGTextElement = GType gTypeSVGTextElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTextPathElement }
+
+instance Eq (SVGTextPathElement) where
+  (SVGTextPathElement a) == (SVGTextPathElement b) = js_eq a b
+
+instance PToJSRef SVGTextPathElement where
+  pToJSRef = unSVGTextPathElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTextPathElement where
+  pFromJSRef = SVGTextPathElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTextPathElement where
+  toJSRef = return . unSVGTextPathElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTextPathElement where
+  fromJSRef = return . fmap SVGTextPathElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGTextContentElement SVGTextPathElement
+instance IsSVGGraphicsElement SVGTextPathElement
+instance IsSVGElement SVGTextPathElement
+instance IsElement SVGTextPathElement
+instance IsNode SVGTextPathElement
+instance IsEventTarget SVGTextPathElement
+instance IsGObject SVGTextPathElement where
+  toGObject = GObject . castRef . unSVGTextPathElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextPathElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextPathElement :: IsGObject obj => obj -> SVGTextPathElement
+castToSVGTextPathElement = castTo gTypeSVGTextPathElement "SVGTextPathElement"
+
+foreign import javascript unsafe "window[\"SVGTextPathElement\"]" gTypeSVGTextPathElement' :: JSRef GType
+gTypeSVGTextPathElement = GType gTypeSVGTextPathElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTextPositioningElement }
+
+instance Eq (SVGTextPositioningElement) where
+  (SVGTextPositioningElement a) == (SVGTextPositioningElement b) = js_eq a b
+
+instance PToJSRef SVGTextPositioningElement where
+  pToJSRef = unSVGTextPositioningElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTextPositioningElement where
+  pFromJSRef = SVGTextPositioningElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTextPositioningElement where
+  toJSRef = return . unSVGTextPositioningElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTextPositioningElement where
+  fromJSRef = return . fmap SVGTextPositioningElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unSVGTextPositioningElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTextPositioningElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTextPositioningElement :: IsGObject obj => obj -> SVGTextPositioningElement
+castToSVGTextPositioningElement = castTo gTypeSVGTextPositioningElement "SVGTextPositioningElement"
+
+foreign import javascript unsafe "window[\"SVGTextPositioningElement\"]" gTypeSVGTextPositioningElement' :: JSRef GType
+gTypeSVGTextPositioningElement = GType gTypeSVGTextPositioningElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTitleElement }
+
+instance Eq (SVGTitleElement) where
+  (SVGTitleElement a) == (SVGTitleElement b) = js_eq a b
+
+instance PToJSRef SVGTitleElement where
+  pToJSRef = unSVGTitleElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTitleElement where
+  pFromJSRef = SVGTitleElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTitleElement where
+  toJSRef = return . unSVGTitleElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTitleElement where
+  fromJSRef = return . fmap SVGTitleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGTitleElement
+instance IsElement SVGTitleElement
+instance IsNode SVGTitleElement
+instance IsEventTarget SVGTitleElement
+instance IsGObject SVGTitleElement where
+  toGObject = GObject . castRef . unSVGTitleElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTitleElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTitleElement :: IsGObject obj => obj -> SVGTitleElement
+castToSVGTitleElement = castTo gTypeSVGTitleElement "SVGTitleElement"
+
+foreign import javascript unsafe "window[\"SVGTitleElement\"]" gTypeSVGTitleElement' :: JSRef GType
+gTypeSVGTitleElement = GType gTypeSVGTitleElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTransform }
+
+instance Eq (SVGTransform) where
+  (SVGTransform a) == (SVGTransform b) = js_eq a b
+
+instance PToJSRef SVGTransform where
+  pToJSRef = unSVGTransform
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTransform where
+  pFromJSRef = SVGTransform
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTransform where
+  toJSRef = return . unSVGTransform
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTransform where
+  fromJSRef = return . fmap SVGTransform . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGTransform where
+  toGObject = GObject . castRef . unSVGTransform
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTransform . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTransform :: IsGObject obj => obj -> SVGTransform
+castToSVGTransform = castTo gTypeSVGTransform "SVGTransform"
+
+foreign import javascript unsafe "window[\"SVGTransform\"]" gTypeSVGTransform' :: JSRef GType
+gTypeSVGTransform = GType gTypeSVGTransform'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGTransformList }
+
+instance Eq (SVGTransformList) where
+  (SVGTransformList a) == (SVGTransformList b) = js_eq a b
+
+instance PToJSRef SVGTransformList where
+  pToJSRef = unSVGTransformList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGTransformList where
+  pFromJSRef = SVGTransformList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGTransformList where
+  toJSRef = return . unSVGTransformList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGTransformList where
+  fromJSRef = return . fmap SVGTransformList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGTransformList where
+  toGObject = GObject . castRef . unSVGTransformList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGTransformList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGTransformList :: IsGObject obj => obj -> SVGTransformList
+castToSVGTransformList = castTo gTypeSVGTransformList "SVGTransformList"
+
+foreign import javascript unsafe "window[\"SVGTransformList\"]" gTypeSVGTransformList' :: JSRef GType
+gTypeSVGTransformList = GType gTypeSVGTransformList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGURIReference }
+
+instance Eq (SVGURIReference) where
+  (SVGURIReference a) == (SVGURIReference b) = js_eq a b
+
+instance PToJSRef SVGURIReference where
+  pToJSRef = unSVGURIReference
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGURIReference where
+  pFromJSRef = SVGURIReference
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGURIReference where
+  toJSRef = return . unSVGURIReference
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGURIReference where
+  fromJSRef = return . fmap SVGURIReference . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGURIReference where
+  toGObject = GObject . castRef . unSVGURIReference
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGURIReference . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGURIReference :: IsGObject obj => obj -> SVGURIReference
+castToSVGURIReference = castTo gTypeSVGURIReference "SVGURIReference"
+
+foreign import javascript unsafe "window[\"SVGURIReference\"]" gTypeSVGURIReference' :: JSRef GType
+gTypeSVGURIReference = GType gTypeSVGURIReference'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGUnitTypes }
+
+instance Eq (SVGUnitTypes) where
+  (SVGUnitTypes a) == (SVGUnitTypes b) = js_eq a b
+
+instance PToJSRef SVGUnitTypes where
+  pToJSRef = unSVGUnitTypes
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGUnitTypes where
+  pFromJSRef = SVGUnitTypes
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGUnitTypes where
+  toJSRef = return . unSVGUnitTypes
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGUnitTypes where
+  fromJSRef = return . fmap SVGUnitTypes . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGUnitTypes where
+  toGObject = GObject . castRef . unSVGUnitTypes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGUnitTypes . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGUnitTypes :: IsGObject obj => obj -> SVGUnitTypes
+castToSVGUnitTypes = castTo gTypeSVGUnitTypes "SVGUnitTypes"
+
+foreign import javascript unsafe "window[\"SVGUnitTypes\"]" gTypeSVGUnitTypes' :: JSRef GType
+gTypeSVGUnitTypes = GType gTypeSVGUnitTypes'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGUseElement }
+
+instance Eq (SVGUseElement) where
+  (SVGUseElement a) == (SVGUseElement b) = js_eq a b
+
+instance PToJSRef SVGUseElement where
+  pToJSRef = unSVGUseElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGUseElement where
+  pFromJSRef = SVGUseElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGUseElement where
+  toJSRef = return . unSVGUseElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGUseElement where
+  fromJSRef = return . fmap SVGUseElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGGraphicsElement SVGUseElement
+instance IsSVGElement SVGUseElement
+instance IsElement SVGUseElement
+instance IsNode SVGUseElement
+instance IsEventTarget SVGUseElement
+instance IsGObject SVGUseElement where
+  toGObject = GObject . castRef . unSVGUseElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGUseElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGUseElement :: IsGObject obj => obj -> SVGUseElement
+castToSVGUseElement = castTo gTypeSVGUseElement "SVGUseElement"
+
+foreign import javascript unsafe "window[\"SVGUseElement\"]" gTypeSVGUseElement' :: JSRef GType
+gTypeSVGUseElement = GType gTypeSVGUseElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGVKernElement }
+
+instance Eq (SVGVKernElement) where
+  (SVGVKernElement a) == (SVGVKernElement b) = js_eq a b
+
+instance PToJSRef SVGVKernElement where
+  pToJSRef = unSVGVKernElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGVKernElement where
+  pFromJSRef = SVGVKernElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGVKernElement where
+  toJSRef = return . unSVGVKernElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGVKernElement where
+  fromJSRef = return . fmap SVGVKernElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGVKernElement
+instance IsElement SVGVKernElement
+instance IsNode SVGVKernElement
+instance IsEventTarget SVGVKernElement
+instance IsGObject SVGVKernElement where
+  toGObject = GObject . castRef . unSVGVKernElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGVKernElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGVKernElement :: IsGObject obj => obj -> SVGVKernElement
+castToSVGVKernElement = castTo gTypeSVGVKernElement "SVGVKernElement"
+
+foreign import javascript unsafe "window[\"SVGVKernElement\"]" gTypeSVGVKernElement' :: JSRef GType
+gTypeSVGVKernElement = GType gTypeSVGVKernElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGViewElement }
+
+instance Eq (SVGViewElement) where
+  (SVGViewElement a) == (SVGViewElement b) = js_eq a b
+
+instance PToJSRef SVGViewElement where
+  pToJSRef = unSVGViewElement
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGViewElement where
+  pFromJSRef = SVGViewElement
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGViewElement where
+  toJSRef = return . unSVGViewElement
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGViewElement where
+  fromJSRef = return . fmap SVGViewElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsSVGElement SVGViewElement
+instance IsElement SVGViewElement
+instance IsNode SVGViewElement
+instance IsEventTarget SVGViewElement
+instance IsGObject SVGViewElement where
+  toGObject = GObject . castRef . unSVGViewElement
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGViewElement . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGViewElement :: IsGObject obj => obj -> SVGViewElement
+castToSVGViewElement = castTo gTypeSVGViewElement "SVGViewElement"
+
+foreign import javascript unsafe "window[\"SVGViewElement\"]" gTypeSVGViewElement' :: JSRef GType
+gTypeSVGViewElement = GType gTypeSVGViewElement'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGViewSpec }
+
+instance Eq (SVGViewSpec) where
+  (SVGViewSpec a) == (SVGViewSpec b) = js_eq a b
+
+instance PToJSRef SVGViewSpec where
+  pToJSRef = unSVGViewSpec
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGViewSpec where
+  pFromJSRef = SVGViewSpec
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGViewSpec where
+  toJSRef = return . unSVGViewSpec
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGViewSpec where
+  fromJSRef = return . fmap SVGViewSpec . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGViewSpec where
+  toGObject = GObject . castRef . unSVGViewSpec
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGViewSpec . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGViewSpec :: IsGObject obj => obj -> SVGViewSpec
+castToSVGViewSpec = castTo gTypeSVGViewSpec "SVGViewSpec"
+
+foreign import javascript unsafe "window[\"SVGViewSpec\"]" gTypeSVGViewSpec' :: JSRef GType
+gTypeSVGViewSpec = GType gTypeSVGViewSpec'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGZoomAndPan }
+
+instance Eq (SVGZoomAndPan) where
+  (SVGZoomAndPan a) == (SVGZoomAndPan b) = js_eq a b
+
+instance PToJSRef SVGZoomAndPan where
+  pToJSRef = unSVGZoomAndPan
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGZoomAndPan where
+  pFromJSRef = SVGZoomAndPan
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGZoomAndPan where
+  toJSRef = return . unSVGZoomAndPan
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGZoomAndPan where
+  fromJSRef = return . fmap SVGZoomAndPan . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SVGZoomAndPan where
+  toGObject = GObject . castRef . unSVGZoomAndPan
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGZoomAndPan . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGZoomAndPan :: IsGObject obj => obj -> SVGZoomAndPan
+castToSVGZoomAndPan = castTo gTypeSVGZoomAndPan "SVGZoomAndPan"
+
+foreign import javascript unsafe "window[\"SVGZoomAndPan\"]" gTypeSVGZoomAndPan' :: JSRef GType
+gTypeSVGZoomAndPan = GType gTypeSVGZoomAndPan'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SVGZoomEvent }
+
+instance Eq (SVGZoomEvent) where
+  (SVGZoomEvent a) == (SVGZoomEvent b) = js_eq a b
+
+instance PToJSRef SVGZoomEvent where
+  pToJSRef = unSVGZoomEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SVGZoomEvent where
+  pFromJSRef = SVGZoomEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SVGZoomEvent where
+  toJSRef = return . unSVGZoomEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SVGZoomEvent where
+  fromJSRef = return . fmap SVGZoomEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsUIEvent SVGZoomEvent
+instance IsEvent SVGZoomEvent
+instance IsGObject SVGZoomEvent where
+  toGObject = GObject . castRef . unSVGZoomEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SVGZoomEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSVGZoomEvent :: IsGObject obj => obj -> SVGZoomEvent
+castToSVGZoomEvent = castTo gTypeSVGZoomEvent "SVGZoomEvent"
+
+foreign import javascript unsafe "window[\"SVGZoomEvent\"]" gTypeSVGZoomEvent' :: JSRef GType
+gTypeSVGZoomEvent = GType gTypeSVGZoomEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Screen }
+
+instance Eq (Screen) where
+  (Screen a) == (Screen b) = js_eq a b
+
+instance PToJSRef Screen where
+  pToJSRef = unScreen
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Screen where
+  pFromJSRef = Screen
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Screen where
+  toJSRef = return . unScreen
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Screen where
+  fromJSRef = return . fmap Screen . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Screen where
+  toGObject = GObject . castRef . unScreen
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Screen . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScreen :: IsGObject obj => obj -> Screen
+castToScreen = castTo gTypeScreen "Screen"
+
+foreign import javascript unsafe "window[\"Screen\"]" gTypeScreen' :: JSRef GType
+gTypeScreen = GType gTypeScreen'
+#else
+type IsScreen o = ScreenClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ScriptProcessorNode }
+
+instance Eq (ScriptProcessorNode) where
+  (ScriptProcessorNode a) == (ScriptProcessorNode b) = js_eq a b
+
+instance PToJSRef ScriptProcessorNode where
+  pToJSRef = unScriptProcessorNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ScriptProcessorNode where
+  pFromJSRef = ScriptProcessorNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ScriptProcessorNode where
+  toJSRef = return . unScriptProcessorNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ScriptProcessorNode where
+  fromJSRef = return . fmap ScriptProcessorNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode ScriptProcessorNode
+instance IsEventTarget ScriptProcessorNode
+instance IsGObject ScriptProcessorNode where
+  toGObject = GObject . castRef . unScriptProcessorNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProcessorNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProcessorNode :: IsGObject obj => obj -> ScriptProcessorNode
+castToScriptProcessorNode = castTo gTypeScriptProcessorNode "ScriptProcessorNode"
+
+foreign import javascript unsafe "window[\"ScriptProcessorNode\"]" gTypeScriptProcessorNode' :: JSRef GType
+gTypeScriptProcessorNode = GType gTypeScriptProcessorNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ScriptProfile }
+
+instance Eq (ScriptProfile) where
+  (ScriptProfile a) == (ScriptProfile b) = js_eq a b
+
+instance PToJSRef ScriptProfile where
+  pToJSRef = unScriptProfile
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ScriptProfile where
+  pFromJSRef = ScriptProfile
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ScriptProfile where
+  toJSRef = return . unScriptProfile
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ScriptProfile where
+  fromJSRef = return . fmap ScriptProfile . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ScriptProfile where
+  toGObject = GObject . castRef . unScriptProfile
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProfile . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProfile :: IsGObject obj => obj -> ScriptProfile
+castToScriptProfile = castTo gTypeScriptProfile "ScriptProfile"
+
+foreign import javascript unsafe "window[\"ScriptProfile\"]" gTypeScriptProfile' :: JSRef GType
+gTypeScriptProfile = GType gTypeScriptProfile'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ScriptProfileNode }
+
+instance Eq (ScriptProfileNode) where
+  (ScriptProfileNode a) == (ScriptProfileNode b) = js_eq a b
+
+instance PToJSRef ScriptProfileNode where
+  pToJSRef = unScriptProfileNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ScriptProfileNode where
+  pFromJSRef = ScriptProfileNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ScriptProfileNode where
+  toJSRef = return . unScriptProfileNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ScriptProfileNode where
+  fromJSRef = return . fmap ScriptProfileNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ScriptProfileNode where
+  toGObject = GObject . castRef . unScriptProfileNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ScriptProfileNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToScriptProfileNode :: IsGObject obj => obj -> ScriptProfileNode
+castToScriptProfileNode = castTo gTypeScriptProfileNode "ScriptProfileNode"
+
+foreign import javascript unsafe "window[\"ScriptProfileNode\"]" gTypeScriptProfileNode' :: JSRef GType
+gTypeScriptProfileNode = GType gTypeScriptProfileNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SecurityPolicy }
+
+instance Eq (SecurityPolicy) where
+  (SecurityPolicy a) == (SecurityPolicy b) = js_eq a b
+
+instance PToJSRef SecurityPolicy where
+  pToJSRef = unSecurityPolicy
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SecurityPolicy where
+  pFromJSRef = SecurityPolicy
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SecurityPolicy where
+  toJSRef = return . unSecurityPolicy
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SecurityPolicy where
+  fromJSRef = return . fmap SecurityPolicy . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SecurityPolicy where
+  toGObject = GObject . castRef . unSecurityPolicy
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SecurityPolicy . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSecurityPolicy :: IsGObject obj => obj -> SecurityPolicy
+castToSecurityPolicy = castTo gTypeSecurityPolicy "SecurityPolicy"
+
+foreign import javascript unsafe "window[\"SecurityPolicy\"]" gTypeSecurityPolicy' :: JSRef GType
+gTypeSecurityPolicy = GType gTypeSecurityPolicy'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsSecurityPolicy o = SecurityPolicyClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SecurityPolicyViolationEvent }
+
+instance Eq (SecurityPolicyViolationEvent) where
+  (SecurityPolicyViolationEvent a) == (SecurityPolicyViolationEvent b) = js_eq a b
+
+instance PToJSRef SecurityPolicyViolationEvent where
+  pToJSRef = unSecurityPolicyViolationEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SecurityPolicyViolationEvent where
+  pFromJSRef = SecurityPolicyViolationEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SecurityPolicyViolationEvent where
+  toJSRef = return . unSecurityPolicyViolationEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SecurityPolicyViolationEvent where
+  fromJSRef = return . fmap SecurityPolicyViolationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent SecurityPolicyViolationEvent
+instance IsGObject SecurityPolicyViolationEvent where
+  toGObject = GObject . castRef . unSecurityPolicyViolationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SecurityPolicyViolationEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSecurityPolicyViolationEvent :: IsGObject obj => obj -> SecurityPolicyViolationEvent
+castToSecurityPolicyViolationEvent = castTo gTypeSecurityPolicyViolationEvent "SecurityPolicyViolationEvent"
+
+foreign import javascript unsafe "window[\"SecurityPolicyViolationEvent\"]" gTypeSecurityPolicyViolationEvent' :: JSRef GType
+gTypeSecurityPolicyViolationEvent = GType gTypeSecurityPolicyViolationEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Selection }
+
+instance Eq (Selection) where
+  (Selection a) == (Selection b) = js_eq a b
+
+instance PToJSRef Selection where
+  pToJSRef = unSelection
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Selection where
+  pFromJSRef = Selection
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Selection where
+  toJSRef = return . unSelection
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Selection where
+  fromJSRef = return . fmap Selection . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Selection where
+  toGObject = GObject . castRef . unSelection
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Selection . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSelection :: IsGObject obj => obj -> Selection
+castToSelection = castTo gTypeSelection "Selection"
+
+foreign import javascript unsafe "window[\"Selection\"]" gTypeSelection' :: JSRef GType
+gTypeSelection = GType gTypeSelection'
+#else
+type IsSelection o = SelectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SourceBuffer }
+
+instance Eq (SourceBuffer) where
+  (SourceBuffer a) == (SourceBuffer b) = js_eq a b
+
+instance PToJSRef SourceBuffer where
+  pToJSRef = unSourceBuffer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SourceBuffer where
+  pFromJSRef = SourceBuffer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SourceBuffer where
+  toJSRef = return . unSourceBuffer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SourceBuffer where
+  fromJSRef = return . fmap SourceBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget SourceBuffer
+instance IsGObject SourceBuffer where
+  toGObject = GObject . castRef . unSourceBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceBuffer . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceBuffer :: IsGObject obj => obj -> SourceBuffer
+castToSourceBuffer = castTo gTypeSourceBuffer "SourceBuffer"
+
+foreign import javascript unsafe "window[\"SourceBuffer\"]" gTypeSourceBuffer' :: JSRef GType
+gTypeSourceBuffer = GType gTypeSourceBuffer'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SourceBufferList }
+
+instance Eq (SourceBufferList) where
+  (SourceBufferList a) == (SourceBufferList b) = js_eq a b
+
+instance PToJSRef SourceBufferList where
+  pToJSRef = unSourceBufferList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SourceBufferList where
+  pFromJSRef = SourceBufferList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SourceBufferList where
+  toJSRef = return . unSourceBufferList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SourceBufferList where
+  fromJSRef = return . fmap SourceBufferList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget SourceBufferList
+instance IsGObject SourceBufferList where
+  toGObject = GObject . castRef . unSourceBufferList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceBufferList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceBufferList :: IsGObject obj => obj -> SourceBufferList
+castToSourceBufferList = castTo gTypeSourceBufferList "SourceBufferList"
+
+foreign import javascript unsafe "window[\"SourceBufferList\"]" gTypeSourceBufferList' :: JSRef GType
+gTypeSourceBufferList = GType gTypeSourceBufferList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SourceInfo }
+
+instance Eq (SourceInfo) where
+  (SourceInfo a) == (SourceInfo b) = js_eq a b
+
+instance PToJSRef SourceInfo where
+  pToJSRef = unSourceInfo
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SourceInfo where
+  pFromJSRef = SourceInfo
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SourceInfo where
+  toJSRef = return . unSourceInfo
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SourceInfo where
+  fromJSRef = return . fmap SourceInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SourceInfo where
+  toGObject = GObject . castRef . unSourceInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SourceInfo . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSourceInfo :: IsGObject obj => obj -> SourceInfo
+castToSourceInfo = castTo gTypeSourceInfo "SourceInfo"
+
+foreign import javascript unsafe "window[\"SourceInfo\"]" gTypeSourceInfo' :: JSRef GType
+gTypeSourceInfo = GType gTypeSourceInfo'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SpeechSynthesis }
+
+instance Eq (SpeechSynthesis) where
+  (SpeechSynthesis a) == (SpeechSynthesis b) = js_eq a b
+
+instance PToJSRef SpeechSynthesis where
+  pToJSRef = unSpeechSynthesis
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SpeechSynthesis where
+  pFromJSRef = SpeechSynthesis
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SpeechSynthesis where
+  toJSRef = return . unSpeechSynthesis
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SpeechSynthesis where
+  fromJSRef = return . fmap SpeechSynthesis . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SpeechSynthesis where
+  toGObject = GObject . castRef . unSpeechSynthesis
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesis . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesis :: IsGObject obj => obj -> SpeechSynthesis
+castToSpeechSynthesis = castTo gTypeSpeechSynthesis "SpeechSynthesis"
+
+foreign import javascript unsafe "window[\"SpeechSynthesis\"]" gTypeSpeechSynthesis' :: JSRef GType
+gTypeSpeechSynthesis = GType gTypeSpeechSynthesis'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SpeechSynthesisEvent }
+
+instance Eq (SpeechSynthesisEvent) where
+  (SpeechSynthesisEvent a) == (SpeechSynthesisEvent b) = js_eq a b
+
+instance PToJSRef SpeechSynthesisEvent where
+  pToJSRef = unSpeechSynthesisEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SpeechSynthesisEvent where
+  pFromJSRef = SpeechSynthesisEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SpeechSynthesisEvent where
+  toJSRef = return . unSpeechSynthesisEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SpeechSynthesisEvent where
+  fromJSRef = return . fmap SpeechSynthesisEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent SpeechSynthesisEvent
+instance IsGObject SpeechSynthesisEvent where
+  toGObject = GObject . castRef . unSpeechSynthesisEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisEvent :: IsGObject obj => obj -> SpeechSynthesisEvent
+castToSpeechSynthesisEvent = castTo gTypeSpeechSynthesisEvent "SpeechSynthesisEvent"
+
+foreign import javascript unsafe "window[\"SpeechSynthesisEvent\"]" gTypeSpeechSynthesisEvent' :: JSRef GType
+gTypeSpeechSynthesisEvent = GType gTypeSpeechSynthesisEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SpeechSynthesisUtterance }
+
+instance Eq (SpeechSynthesisUtterance) where
+  (SpeechSynthesisUtterance a) == (SpeechSynthesisUtterance b) = js_eq a b
+
+instance PToJSRef SpeechSynthesisUtterance where
+  pToJSRef = unSpeechSynthesisUtterance
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SpeechSynthesisUtterance where
+  pFromJSRef = SpeechSynthesisUtterance
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SpeechSynthesisUtterance where
+  toJSRef = return . unSpeechSynthesisUtterance
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SpeechSynthesisUtterance where
+  fromJSRef = return . fmap SpeechSynthesisUtterance . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget SpeechSynthesisUtterance
+instance IsGObject SpeechSynthesisUtterance where
+  toGObject = GObject . castRef . unSpeechSynthesisUtterance
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisUtterance . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisUtterance :: IsGObject obj => obj -> SpeechSynthesisUtterance
+castToSpeechSynthesisUtterance = castTo gTypeSpeechSynthesisUtterance "SpeechSynthesisUtterance"
+
+foreign import javascript unsafe "window[\"SpeechSynthesisUtterance\"]" gTypeSpeechSynthesisUtterance' :: JSRef GType
+gTypeSpeechSynthesisUtterance = GType gTypeSpeechSynthesisUtterance'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SpeechSynthesisVoice }
+
+instance Eq (SpeechSynthesisVoice) where
+  (SpeechSynthesisVoice a) == (SpeechSynthesisVoice b) = js_eq a b
+
+instance PToJSRef SpeechSynthesisVoice where
+  pToJSRef = unSpeechSynthesisVoice
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SpeechSynthesisVoice where
+  pFromJSRef = SpeechSynthesisVoice
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SpeechSynthesisVoice where
+  toJSRef = return . unSpeechSynthesisVoice
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SpeechSynthesisVoice where
+  fromJSRef = return . fmap SpeechSynthesisVoice . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SpeechSynthesisVoice where
+  toGObject = GObject . castRef . unSpeechSynthesisVoice
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SpeechSynthesisVoice . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSpeechSynthesisVoice :: IsGObject obj => obj -> SpeechSynthesisVoice
+castToSpeechSynthesisVoice = castTo gTypeSpeechSynthesisVoice "SpeechSynthesisVoice"
+
+foreign import javascript unsafe "window[\"SpeechSynthesisVoice\"]" gTypeSpeechSynthesisVoice' :: JSRef GType
+gTypeSpeechSynthesisVoice = GType gTypeSpeechSynthesisVoice'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Storage }
+
+instance Eq (Storage) where
+  (Storage a) == (Storage b) = js_eq a b
+
+instance PToJSRef Storage where
+  pToJSRef = unStorage
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Storage where
+  pFromJSRef = Storage
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Storage where
+  toJSRef = return . unStorage
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Storage where
+  fromJSRef = return . fmap Storage . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Storage where
+  toGObject = GObject . castRef . unStorage
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Storage . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorage :: IsGObject obj => obj -> Storage
+castToStorage = castTo gTypeStorage "Storage"
+
+foreign import javascript unsafe "window[\"Storage\"]" gTypeStorage' :: JSRef GType
+gTypeStorage = GType gTypeStorage'
+#else
+type IsStorage o = StorageClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef StorageEvent }
+
+instance Eq (StorageEvent) where
+  (StorageEvent a) == (StorageEvent b) = js_eq a b
+
+instance PToJSRef StorageEvent where
+  pToJSRef = unStorageEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef StorageEvent where
+  pFromJSRef = StorageEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef StorageEvent where
+  toJSRef = return . unStorageEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef StorageEvent where
+  fromJSRef = return . fmap StorageEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent StorageEvent
+instance IsGObject StorageEvent where
+  toGObject = GObject . castRef . unStorageEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageEvent :: IsGObject obj => obj -> StorageEvent
+castToStorageEvent = castTo gTypeStorageEvent "StorageEvent"
+
+foreign import javascript unsafe "window[\"StorageEvent\"]" gTypeStorageEvent' :: JSRef GType
+gTypeStorageEvent = GType gTypeStorageEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef StorageInfo }
+
+instance Eq (StorageInfo) where
+  (StorageInfo a) == (StorageInfo b) = js_eq a b
+
+instance PToJSRef StorageInfo where
+  pToJSRef = unStorageInfo
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef StorageInfo where
+  pFromJSRef = StorageInfo
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef StorageInfo where
+  toJSRef = return . unStorageInfo
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef StorageInfo where
+  fromJSRef = return . fmap StorageInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject StorageInfo where
+  toGObject = GObject . castRef . unStorageInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageInfo . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageInfo :: IsGObject obj => obj -> StorageInfo
+castToStorageInfo = castTo gTypeStorageInfo "StorageInfo"
+
+foreign import javascript unsafe "window[\"StorageInfo\"]" gTypeStorageInfo' :: JSRef GType
+gTypeStorageInfo = GType gTypeStorageInfo'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsStorageInfo o = StorageInfoClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef StorageQuota }
+
+instance Eq (StorageQuota) where
+  (StorageQuota a) == (StorageQuota b) = js_eq a b
+
+instance PToJSRef StorageQuota where
+  pToJSRef = unStorageQuota
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef StorageQuota where
+  pFromJSRef = StorageQuota
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef StorageQuota where
+  toJSRef = return . unStorageQuota
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef StorageQuota where
+  fromJSRef = return . fmap StorageQuota . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject StorageQuota where
+  toGObject = GObject . castRef . unStorageQuota
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StorageQuota . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStorageQuota :: IsGObject obj => obj -> StorageQuota
+castToStorageQuota = castTo gTypeStorageQuota "StorageQuota"
+
+foreign import javascript unsafe "window[\"StorageQuota\"]" gTypeStorageQuota' :: JSRef GType
+gTypeStorageQuota = GType gTypeStorageQuota'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsStorageQuota o = StorageQuotaClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef StyleMedia }
+
+instance Eq (StyleMedia) where
+  (StyleMedia a) == (StyleMedia b) = js_eq a b
+
+instance PToJSRef StyleMedia where
+  pToJSRef = unStyleMedia
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef StyleMedia where
+  pFromJSRef = StyleMedia
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef StyleMedia where
+  toJSRef = return . unStyleMedia
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef StyleMedia where
+  fromJSRef = return . fmap StyleMedia . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject StyleMedia where
+  toGObject = GObject . castRef . unStyleMedia
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleMedia . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleMedia :: IsGObject obj => obj -> StyleMedia
+castToStyleMedia = castTo gTypeStyleMedia "StyleMedia"
+
+foreign import javascript unsafe "window[\"StyleMedia\"]" gTypeStyleMedia' :: JSRef GType
+gTypeStyleMedia = GType gTypeStyleMedia'
+#else
+type IsStyleMedia o = StyleMediaClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef StyleSheet }
+
+instance Eq (StyleSheet) where
+  (StyleSheet a) == (StyleSheet b) = js_eq a b
+
+instance PToJSRef StyleSheet where
+  pToJSRef = unStyleSheet
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef StyleSheet where
+  pFromJSRef = StyleSheet
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef StyleSheet where
+  toJSRef = return . unStyleSheet
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef StyleSheet where
+  fromJSRef = return . fmap StyleSheet . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+class IsGObject o => IsStyleSheet o
+toStyleSheet :: IsStyleSheet o => o -> StyleSheet
+toStyleSheet = unsafeCastGObject . toGObject
+
+instance IsStyleSheet StyleSheet
+instance IsGObject StyleSheet where
+  toGObject = GObject . castRef . unStyleSheet
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleSheet . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleSheet :: IsGObject obj => obj -> StyleSheet
+castToStyleSheet = castTo gTypeStyleSheet "StyleSheet"
+
+foreign import javascript unsafe "window[\"StyleSheet\"]" gTypeStyleSheet' :: JSRef GType
+gTypeStyleSheet = GType gTypeStyleSheet'
+#else
+type IsStyleSheet o = StyleSheetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef StyleSheetList }
+
+instance Eq (StyleSheetList) where
+  (StyleSheetList a) == (StyleSheetList b) = js_eq a b
+
+instance PToJSRef StyleSheetList where
+  pToJSRef = unStyleSheetList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef StyleSheetList where
+  pFromJSRef = StyleSheetList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef StyleSheetList where
+  toJSRef = return . unStyleSheetList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef StyleSheetList where
+  fromJSRef = return . fmap StyleSheetList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject StyleSheetList where
+  toGObject = GObject . castRef . unStyleSheetList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = StyleSheetList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToStyleSheetList :: IsGObject obj => obj -> StyleSheetList
+castToStyleSheetList = castTo gTypeStyleSheetList "StyleSheetList"
+
+foreign import javascript unsafe "window[\"StyleSheetList\"]" gTypeStyleSheetList' :: JSRef GType
+gTypeStyleSheetList = GType gTypeStyleSheetList'
+#else
+type IsStyleSheetList o = StyleSheetListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef SubtleCrypto }
+
+instance Eq (SubtleCrypto) where
+  (SubtleCrypto a) == (SubtleCrypto b) = js_eq a b
+
+instance PToJSRef SubtleCrypto where
+  pToJSRef = unSubtleCrypto
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef SubtleCrypto where
+  pFromJSRef = SubtleCrypto
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef SubtleCrypto where
+  toJSRef = return . unSubtleCrypto
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef SubtleCrypto where
+  fromJSRef = return . fmap SubtleCrypto . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject SubtleCrypto where
+  toGObject = GObject . castRef . unSubtleCrypto
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = SubtleCrypto . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToSubtleCrypto :: IsGObject obj => obj -> SubtleCrypto
+castToSubtleCrypto = castTo gTypeSubtleCrypto "SubtleCrypto"
+
+foreign import javascript unsafe "window[\"WebKitSubtleCrypto\"]" gTypeSubtleCrypto' :: JSRef GType
+gTypeSubtleCrypto = GType gTypeSubtleCrypto'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Text }
+
+instance Eq (Text) where
+  (Text a) == (Text b) = js_eq a b
+
+instance PToJSRef Text where
+  pToJSRef = unText
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Text where
+  pFromJSRef = Text
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Text where
+  toJSRef = return . unText
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Text where
+  fromJSRef = return . fmap Text . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unText
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Text . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToText :: IsGObject obj => obj -> Text
+castToText = castTo gTypeText "Text"
+
+foreign import javascript unsafe "window[\"Text\"]" gTypeText' :: JSRef GType
+gTypeText = GType gTypeText'
+#else
+type IsText o = TextClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TextEvent }
+
+instance Eq (TextEvent) where
+  (TextEvent a) == (TextEvent b) = js_eq a b
+
+instance PToJSRef TextEvent where
+  pToJSRef = unTextEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TextEvent where
+  pFromJSRef = TextEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TextEvent where
+  toJSRef = return . unTextEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TextEvent where
+  fromJSRef = return . fmap TextEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsUIEvent TextEvent
+instance IsEvent TextEvent
+instance IsGObject TextEvent where
+  toGObject = GObject . castRef . unTextEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextEvent :: IsGObject obj => obj -> TextEvent
+castToTextEvent = castTo gTypeTextEvent "TextEvent"
+
+foreign import javascript unsafe "window[\"TextEvent\"]" gTypeTextEvent' :: JSRef GType
+gTypeTextEvent = GType gTypeTextEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TextMetrics }
+
+instance Eq (TextMetrics) where
+  (TextMetrics a) == (TextMetrics b) = js_eq a b
+
+instance PToJSRef TextMetrics where
+  pToJSRef = unTextMetrics
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TextMetrics where
+  pFromJSRef = TextMetrics
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TextMetrics where
+  toJSRef = return . unTextMetrics
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TextMetrics where
+  fromJSRef = return . fmap TextMetrics . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject TextMetrics where
+  toGObject = GObject . castRef . unTextMetrics
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextMetrics . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextMetrics :: IsGObject obj => obj -> TextMetrics
+castToTextMetrics = castTo gTypeTextMetrics "TextMetrics"
+
+foreign import javascript unsafe "window[\"TextMetrics\"]" gTypeTextMetrics' :: JSRef GType
+gTypeTextMetrics = GType gTypeTextMetrics'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TextTrack }
+
+instance Eq (TextTrack) where
+  (TextTrack a) == (TextTrack b) = js_eq a b
+
+instance PToJSRef TextTrack where
+  pToJSRef = unTextTrack
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TextTrack where
+  pFromJSRef = TextTrack
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TextTrack where
+  toJSRef = return . unTextTrack
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TextTrack where
+  fromJSRef = return . fmap TextTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget TextTrack
+instance IsGObject TextTrack where
+  toGObject = GObject . castRef . unTextTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrack . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrack :: IsGObject obj => obj -> TextTrack
+castToTextTrack = castTo gTypeTextTrack "TextTrack"
+
+foreign import javascript unsafe "window[\"TextTrack\"]" gTypeTextTrack' :: JSRef GType
+gTypeTextTrack = GType gTypeTextTrack'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTextTrack o = TextTrackClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TextTrackCue }
+
+instance Eq (TextTrackCue) where
+  (TextTrackCue a) == (TextTrackCue b) = js_eq a b
+
+instance PToJSRef TextTrackCue where
+  pToJSRef = unTextTrackCue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TextTrackCue where
+  pFromJSRef = TextTrackCue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TextTrackCue where
+  toJSRef = return . unTextTrackCue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TextTrackCue where
+  fromJSRef = return . fmap TextTrackCue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unTextTrackCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackCue . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackCue :: IsGObject obj => obj -> TextTrackCue
+castToTextTrackCue = castTo gTypeTextTrackCue "TextTrackCue"
+
+foreign import javascript unsafe "window[\"TextTrackCue\"]" gTypeTextTrackCue' :: JSRef GType
+gTypeTextTrackCue = GType gTypeTextTrackCue'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTextTrackCue o = TextTrackCueClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TextTrackCueList }
+
+instance Eq (TextTrackCueList) where
+  (TextTrackCueList a) == (TextTrackCueList b) = js_eq a b
+
+instance PToJSRef TextTrackCueList where
+  pToJSRef = unTextTrackCueList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TextTrackCueList where
+  pFromJSRef = TextTrackCueList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TextTrackCueList where
+  toJSRef = return . unTextTrackCueList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TextTrackCueList where
+  fromJSRef = return . fmap TextTrackCueList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject TextTrackCueList where
+  toGObject = GObject . castRef . unTextTrackCueList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackCueList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackCueList :: IsGObject obj => obj -> TextTrackCueList
+castToTextTrackCueList = castTo gTypeTextTrackCueList "TextTrackCueList"
+
+foreign import javascript unsafe "window[\"TextTrackCueList\"]" gTypeTextTrackCueList' :: JSRef GType
+gTypeTextTrackCueList = GType gTypeTextTrackCueList'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTextTrackCueList o = TextTrackCueListClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TextTrackList }
+
+instance Eq (TextTrackList) where
+  (TextTrackList a) == (TextTrackList b) = js_eq a b
+
+instance PToJSRef TextTrackList where
+  pToJSRef = unTextTrackList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TextTrackList where
+  pFromJSRef = TextTrackList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TextTrackList where
+  toJSRef = return . unTextTrackList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TextTrackList where
+  fromJSRef = return . fmap TextTrackList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget TextTrackList
+instance IsGObject TextTrackList where
+  toGObject = GObject . castRef . unTextTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TextTrackList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTextTrackList :: IsGObject obj => obj -> TextTrackList
+castToTextTrackList = castTo gTypeTextTrackList "TextTrackList"
+
+foreign import javascript unsafe "window[\"TextTrackList\"]" gTypeTextTrackList' :: JSRef GType
+gTypeTextTrackList = GType gTypeTextTrackList'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTextTrackList o = TextTrackListClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TimeRanges }
+
+instance Eq (TimeRanges) where
+  (TimeRanges a) == (TimeRanges b) = js_eq a b
+
+instance PToJSRef TimeRanges where
+  pToJSRef = unTimeRanges
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TimeRanges where
+  pFromJSRef = TimeRanges
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TimeRanges where
+  toJSRef = return . unTimeRanges
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TimeRanges where
+  fromJSRef = return . fmap TimeRanges . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject TimeRanges where
+  toGObject = GObject . castRef . unTimeRanges
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TimeRanges . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTimeRanges :: IsGObject obj => obj -> TimeRanges
+castToTimeRanges = castTo gTypeTimeRanges "TimeRanges"
+
+foreign import javascript unsafe "window[\"TimeRanges\"]" gTypeTimeRanges' :: JSRef GType
+gTypeTimeRanges = GType gTypeTimeRanges'
+#else
+type IsTimeRanges o = TimeRangesClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Touch }
+
+instance Eq (Touch) where
+  (Touch a) == (Touch b) = js_eq a b
+
+instance PToJSRef Touch where
+  pToJSRef = unTouch
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Touch where
+  pFromJSRef = Touch
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Touch where
+  toJSRef = return . unTouch
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Touch where
+  fromJSRef = return . fmap Touch . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject Touch where
+  toGObject = GObject . castRef . unTouch
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Touch . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouch :: IsGObject obj => obj -> Touch
+castToTouch = castTo gTypeTouch "Touch"
+
+foreign import javascript unsafe "window[\"Touch\"]" gTypeTouch' :: JSRef GType
+gTypeTouch = GType gTypeTouch'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsTouch o = TouchClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TouchEvent }
+
+instance Eq (TouchEvent) where
+  (TouchEvent a) == (TouchEvent b) = js_eq a b
+
+instance PToJSRef TouchEvent where
+  pToJSRef = unTouchEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TouchEvent where
+  pFromJSRef = TouchEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TouchEvent where
+  toJSRef = return . unTouchEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TouchEvent where
+  fromJSRef = return . fmap TouchEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsUIEvent TouchEvent
+instance IsEvent TouchEvent
+instance IsGObject TouchEvent where
+  toGObject = GObject . castRef . unTouchEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TouchEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouchEvent :: IsGObject obj => obj -> TouchEvent
+castToTouchEvent = castTo gTypeTouchEvent "TouchEvent"
+
+foreign import javascript unsafe "window[\"TouchEvent\"]" gTypeTouchEvent' :: JSRef GType
+gTypeTouchEvent = GType gTypeTouchEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TouchList }
+
+instance Eq (TouchList) where
+  (TouchList a) == (TouchList b) = js_eq a b
+
+instance PToJSRef TouchList where
+  pToJSRef = unTouchList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TouchList where
+  pFromJSRef = TouchList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TouchList where
+  toJSRef = return . unTouchList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TouchList where
+  fromJSRef = return . fmap TouchList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject TouchList where
+  toGObject = GObject . castRef . unTouchList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TouchList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTouchList :: IsGObject obj => obj -> TouchList
+castToTouchList = castTo gTypeTouchList "TouchList"
+
+foreign import javascript unsafe "window[\"TouchList\"]" gTypeTouchList' :: JSRef GType
+gTypeTouchList = GType gTypeTouchList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TrackEvent }
+
+instance Eq (TrackEvent) where
+  (TrackEvent a) == (TrackEvent b) = js_eq a b
+
+instance PToJSRef TrackEvent where
+  pToJSRef = unTrackEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TrackEvent where
+  pFromJSRef = TrackEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TrackEvent where
+  toJSRef = return . unTrackEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TrackEvent where
+  fromJSRef = return . fmap TrackEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent TrackEvent
+instance IsGObject TrackEvent where
+  toGObject = GObject . castRef . unTrackEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TrackEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTrackEvent :: IsGObject obj => obj -> TrackEvent
+castToTrackEvent = castTo gTypeTrackEvent "TrackEvent"
+
+foreign import javascript unsafe "window[\"TrackEvent\"]" gTypeTrackEvent' :: JSRef GType
+gTypeTrackEvent = GType gTypeTrackEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TransitionEvent }
+
+instance Eq (TransitionEvent) where
+  (TransitionEvent a) == (TransitionEvent b) = js_eq a b
+
+instance PToJSRef TransitionEvent where
+  pToJSRef = unTransitionEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TransitionEvent where
+  pFromJSRef = TransitionEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TransitionEvent where
+  toJSRef = return . unTransitionEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TransitionEvent where
+  fromJSRef = return . fmap TransitionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent TransitionEvent
+instance IsGObject TransitionEvent where
+  toGObject = GObject . castRef . unTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TransitionEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTransitionEvent :: IsGObject obj => obj -> TransitionEvent
+castToTransitionEvent = castTo gTypeTransitionEvent "TransitionEvent"
+
+foreign import javascript unsafe "window[\"TransitionEvent\"]" gTypeTransitionEvent' :: JSRef GType
+gTypeTransitionEvent = GType gTypeTransitionEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TreeWalker }
+
+instance Eq (TreeWalker) where
+  (TreeWalker a) == (TreeWalker b) = js_eq a b
+
+instance PToJSRef TreeWalker where
+  pToJSRef = unTreeWalker
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TreeWalker where
+  pFromJSRef = TreeWalker
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TreeWalker where
+  toJSRef = return . unTreeWalker
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TreeWalker where
+  fromJSRef = return . fmap TreeWalker . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject TreeWalker where
+  toGObject = GObject . castRef . unTreeWalker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TreeWalker . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTreeWalker :: IsGObject obj => obj -> TreeWalker
+castToTreeWalker = castTo gTypeTreeWalker "TreeWalker"
+
+foreign import javascript unsafe "window[\"TreeWalker\"]" gTypeTreeWalker' :: JSRef GType
+gTypeTreeWalker = GType gTypeTreeWalker'
+#else
+type IsTreeWalker o = TreeWalkerClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef TypeConversions }
+
+instance Eq (TypeConversions) where
+  (TypeConversions a) == (TypeConversions b) = js_eq a b
+
+instance PToJSRef TypeConversions where
+  pToJSRef = unTypeConversions
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef TypeConversions where
+  pFromJSRef = TypeConversions
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef TypeConversions where
+  toJSRef = return . unTypeConversions
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef TypeConversions where
+  fromJSRef = return . fmap TypeConversions . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject TypeConversions where
+  toGObject = GObject . castRef . unTypeConversions
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = TypeConversions . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToTypeConversions :: IsGObject obj => obj -> TypeConversions
+castToTypeConversions = castTo gTypeTypeConversions "TypeConversions"
+
+foreign import javascript unsafe "window[\"TypeConversions\"]" gTypeTypeConversions' :: JSRef GType
+gTypeTypeConversions = GType gTypeTypeConversions'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef UIEvent }
+
+instance Eq (UIEvent) where
+  (UIEvent a) == (UIEvent b) = js_eq a b
+
+instance PToJSRef UIEvent where
+  pToJSRef = unUIEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef UIEvent where
+  pFromJSRef = UIEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef UIEvent where
+  toJSRef = return . unUIEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef UIEvent where
+  fromJSRef = return . fmap UIEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unUIEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UIEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUIEvent :: IsGObject obj => obj -> UIEvent
+castToUIEvent = castTo gTypeUIEvent "UIEvent"
+
+foreign import javascript unsafe "window[\"UIEvent\"]" gTypeUIEvent' :: JSRef GType
+gTypeUIEvent = GType gTypeUIEvent'
+#else
+type IsUIEvent o = UIEventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef UIRequestEvent }
+
+instance Eq (UIRequestEvent) where
+  (UIRequestEvent a) == (UIRequestEvent b) = js_eq a b
+
+instance PToJSRef UIRequestEvent where
+  pToJSRef = unUIRequestEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef UIRequestEvent where
+  pFromJSRef = UIRequestEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef UIRequestEvent where
+  toJSRef = return . unUIRequestEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef UIRequestEvent where
+  fromJSRef = return . fmap UIRequestEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsUIEvent UIRequestEvent
+instance IsEvent UIRequestEvent
+instance IsGObject UIRequestEvent where
+  toGObject = GObject . castRef . unUIRequestEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UIRequestEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUIRequestEvent :: IsGObject obj => obj -> UIRequestEvent
+castToUIRequestEvent = castTo gTypeUIRequestEvent "UIRequestEvent"
+
+foreign import javascript unsafe "window[\"UIRequestEvent\"]" gTypeUIRequestEvent' :: JSRef GType
+gTypeUIRequestEvent = GType gTypeUIRequestEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef URL }
+
+instance Eq (URL) where
+  (URL a) == (URL b) = js_eq a b
+
+instance PToJSRef URL where
+  pToJSRef = unURL
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef URL where
+  pFromJSRef = URL
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef URL where
+  toJSRef = return . unURL
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef URL where
+  fromJSRef = return . fmap URL . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject URL where
+  toGObject = GObject . castRef . unURL
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = URL . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToURL :: IsGObject obj => obj -> URL
+castToURL = castTo gTypeURL "URL"
+
+foreign import javascript unsafe "window[\"URL\"]" gTypeURL' :: JSRef GType
+gTypeURL = GType gTypeURL'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef URLUtils }
+
+instance Eq (URLUtils) where
+  (URLUtils a) == (URLUtils b) = js_eq a b
+
+instance PToJSRef URLUtils where
+  pToJSRef = unURLUtils
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef URLUtils where
+  pFromJSRef = URLUtils
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef URLUtils where
+  toJSRef = return . unURLUtils
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef URLUtils where
+  fromJSRef = return . fmap URLUtils . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject URLUtils where
+  toGObject = GObject . castRef . unURLUtils
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = URLUtils . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToURLUtils :: IsGObject obj => obj -> URLUtils
+castToURLUtils = castTo gTypeURLUtils "URLUtils"
+
+foreign import javascript unsafe "window[\"URLUtils\"]" gTypeURLUtils' :: JSRef GType
+gTypeURLUtils = GType gTypeURLUtils'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef UserMessageHandler }
+
+instance Eq (UserMessageHandler) where
+  (UserMessageHandler a) == (UserMessageHandler b) = js_eq a b
+
+instance PToJSRef UserMessageHandler where
+  pToJSRef = unUserMessageHandler
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef UserMessageHandler where
+  pFromJSRef = UserMessageHandler
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef UserMessageHandler where
+  toJSRef = return . unUserMessageHandler
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef UserMessageHandler where
+  fromJSRef = return . fmap UserMessageHandler . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject UserMessageHandler where
+  toGObject = GObject . castRef . unUserMessageHandler
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UserMessageHandler . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUserMessageHandler :: IsGObject obj => obj -> UserMessageHandler
+castToUserMessageHandler = castTo gTypeUserMessageHandler "UserMessageHandler"
+
+foreign import javascript unsafe "window[\"UserMessageHandler\"]" gTypeUserMessageHandler' :: JSRef GType
+gTypeUserMessageHandler = GType gTypeUserMessageHandler'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef UserMessageHandlersNamespace }
+
+instance Eq (UserMessageHandlersNamespace) where
+  (UserMessageHandlersNamespace a) == (UserMessageHandlersNamespace b) = js_eq a b
+
+instance PToJSRef UserMessageHandlersNamespace where
+  pToJSRef = unUserMessageHandlersNamespace
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef UserMessageHandlersNamespace where
+  pFromJSRef = UserMessageHandlersNamespace
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef UserMessageHandlersNamespace where
+  toJSRef = return . unUserMessageHandlersNamespace
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef UserMessageHandlersNamespace where
+  fromJSRef = return . fmap UserMessageHandlersNamespace . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject UserMessageHandlersNamespace where
+  toGObject = GObject . castRef . unUserMessageHandlersNamespace
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = UserMessageHandlersNamespace . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToUserMessageHandlersNamespace :: IsGObject obj => obj -> UserMessageHandlersNamespace
+castToUserMessageHandlersNamespace = castTo gTypeUserMessageHandlersNamespace "UserMessageHandlersNamespace"
+
+foreign import javascript unsafe "window[\"UserMessageHandlersNamespace\"]" gTypeUserMessageHandlersNamespace' :: JSRef GType
+gTypeUserMessageHandlersNamespace = GType gTypeUserMessageHandlersNamespace'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef VTTCue }
+
+instance Eq (VTTCue) where
+  (VTTCue a) == (VTTCue b) = js_eq a b
+
+instance PToJSRef VTTCue where
+  pToJSRef = unVTTCue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef VTTCue where
+  pFromJSRef = VTTCue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef VTTCue where
+  toJSRef = return . unVTTCue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef VTTCue where
+  fromJSRef = return . fmap VTTCue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsTextTrackCue VTTCue
+instance IsEventTarget VTTCue
+instance IsGObject VTTCue where
+  toGObject = GObject . castRef . unVTTCue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTCue . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTCue :: IsGObject obj => obj -> VTTCue
+castToVTTCue = castTo gTypeVTTCue "VTTCue"
+
+foreign import javascript unsafe "window[\"VTTCue\"]" gTypeVTTCue' :: JSRef GType
+gTypeVTTCue = GType gTypeVTTCue'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef VTTRegion }
+
+instance Eq (VTTRegion) where
+  (VTTRegion a) == (VTTRegion b) = js_eq a b
+
+instance PToJSRef VTTRegion where
+  pToJSRef = unVTTRegion
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef VTTRegion where
+  pFromJSRef = VTTRegion
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef VTTRegion where
+  toJSRef = return . unVTTRegion
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef VTTRegion where
+  fromJSRef = return . fmap VTTRegion . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject VTTRegion where
+  toGObject = GObject . castRef . unVTTRegion
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTRegion . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTRegion :: IsGObject obj => obj -> VTTRegion
+castToVTTRegion = castTo gTypeVTTRegion "VTTRegion"
+
+foreign import javascript unsafe "window[\"VTTRegion\"]" gTypeVTTRegion' :: JSRef GType
+gTypeVTTRegion = GType gTypeVTTRegion'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef VTTRegionList }
+
+instance Eq (VTTRegionList) where
+  (VTTRegionList a) == (VTTRegionList b) = js_eq a b
+
+instance PToJSRef VTTRegionList where
+  pToJSRef = unVTTRegionList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef VTTRegionList where
+  pFromJSRef = VTTRegionList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef VTTRegionList where
+  toJSRef = return . unVTTRegionList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef VTTRegionList where
+  fromJSRef = return . fmap VTTRegionList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject VTTRegionList where
+  toGObject = GObject . castRef . unVTTRegionList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VTTRegionList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVTTRegionList :: IsGObject obj => obj -> VTTRegionList
+castToVTTRegionList = castTo gTypeVTTRegionList "VTTRegionList"
+
+foreign import javascript unsafe "window[\"VTTRegionList\"]" gTypeVTTRegionList' :: JSRef GType
+gTypeVTTRegionList = GType gTypeVTTRegionList'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef ValidityState }
+
+instance Eq (ValidityState) where
+  (ValidityState a) == (ValidityState b) = js_eq a b
+
+instance PToJSRef ValidityState where
+  pToJSRef = unValidityState
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef ValidityState where
+  pFromJSRef = ValidityState
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef ValidityState where
+  toJSRef = return . unValidityState
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef ValidityState where
+  fromJSRef = return . fmap ValidityState . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject ValidityState where
+  toGObject = GObject . castRef . unValidityState
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = ValidityState . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToValidityState :: IsGObject obj => obj -> ValidityState
+castToValidityState = castTo gTypeValidityState "ValidityState"
+
+foreign import javascript unsafe "window[\"ValidityState\"]" gTypeValidityState' :: JSRef GType
+gTypeValidityState = GType gTypeValidityState'
+#else
+type IsValidityState o = ValidityStateClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef VideoPlaybackQuality }
+
+instance Eq (VideoPlaybackQuality) where
+  (VideoPlaybackQuality a) == (VideoPlaybackQuality b) = js_eq a b
+
+instance PToJSRef VideoPlaybackQuality where
+  pToJSRef = unVideoPlaybackQuality
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef VideoPlaybackQuality where
+  pFromJSRef = VideoPlaybackQuality
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef VideoPlaybackQuality where
+  toJSRef = return . unVideoPlaybackQuality
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef VideoPlaybackQuality where
+  fromJSRef = return . fmap VideoPlaybackQuality . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject VideoPlaybackQuality where
+  toGObject = GObject . castRef . unVideoPlaybackQuality
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoPlaybackQuality . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoPlaybackQuality :: IsGObject obj => obj -> VideoPlaybackQuality
+castToVideoPlaybackQuality = castTo gTypeVideoPlaybackQuality "VideoPlaybackQuality"
+
+foreign import javascript unsafe "window[\"VideoPlaybackQuality\"]" gTypeVideoPlaybackQuality' :: JSRef GType
+gTypeVideoPlaybackQuality = GType gTypeVideoPlaybackQuality'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef VideoStreamTrack }
+
+instance Eq (VideoStreamTrack) where
+  (VideoStreamTrack a) == (VideoStreamTrack b) = js_eq a b
+
+instance PToJSRef VideoStreamTrack where
+  pToJSRef = unVideoStreamTrack
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef VideoStreamTrack where
+  pFromJSRef = VideoStreamTrack
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef VideoStreamTrack where
+  toJSRef = return . unVideoStreamTrack
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef VideoStreamTrack where
+  fromJSRef = return . fmap VideoStreamTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsMediaStreamTrack VideoStreamTrack
+instance IsEventTarget VideoStreamTrack
+instance IsGObject VideoStreamTrack where
+  toGObject = GObject . castRef . unVideoStreamTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoStreamTrack . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoStreamTrack :: IsGObject obj => obj -> VideoStreamTrack
+castToVideoStreamTrack = castTo gTypeVideoStreamTrack "VideoStreamTrack"
+
+foreign import javascript unsafe "window[\"VideoStreamTrack\"]" gTypeVideoStreamTrack' :: JSRef GType
+gTypeVideoStreamTrack = GType gTypeVideoStreamTrack'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef VideoTrack }
+
+instance Eq (VideoTrack) where
+  (VideoTrack a) == (VideoTrack b) = js_eq a b
+
+instance PToJSRef VideoTrack where
+  pToJSRef = unVideoTrack
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef VideoTrack where
+  pFromJSRef = VideoTrack
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef VideoTrack where
+  toJSRef = return . unVideoTrack
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef VideoTrack where
+  fromJSRef = return . fmap VideoTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject VideoTrack where
+  toGObject = GObject . castRef . unVideoTrack
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoTrack . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoTrack :: IsGObject obj => obj -> VideoTrack
+castToVideoTrack = castTo gTypeVideoTrack "VideoTrack"
+
+foreign import javascript unsafe "window[\"VideoTrack\"]" gTypeVideoTrack' :: JSRef GType
+gTypeVideoTrack = GType gTypeVideoTrack'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsVideoTrack o = VideoTrackClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef VideoTrackList }
+
+instance Eq (VideoTrackList) where
+  (VideoTrackList a) == (VideoTrackList b) = js_eq a b
+
+instance PToJSRef VideoTrackList where
+  pToJSRef = unVideoTrackList
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef VideoTrackList where
+  pFromJSRef = VideoTrackList
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef VideoTrackList where
+  toJSRef = return . unVideoTrackList
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef VideoTrackList where
+  fromJSRef = return . fmap VideoTrackList . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget VideoTrackList
+instance IsGObject VideoTrackList where
+  toGObject = GObject . castRef . unVideoTrackList
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = VideoTrackList . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToVideoTrackList :: IsGObject obj => obj -> VideoTrackList
+castToVideoTrackList = castTo gTypeVideoTrackList "VideoTrackList"
+
+foreign import javascript unsafe "window[\"VideoTrackList\"]" gTypeVideoTrackList' :: JSRef GType
+gTypeVideoTrackList = GType gTypeVideoTrackList'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsVideoTrackList o = VideoTrackListClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WaveShaperNode }
+
+instance Eq (WaveShaperNode) where
+  (WaveShaperNode a) == (WaveShaperNode b) = js_eq a b
+
+instance PToJSRef WaveShaperNode where
+  pToJSRef = unWaveShaperNode
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WaveShaperNode where
+  pFromJSRef = WaveShaperNode
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WaveShaperNode where
+  toJSRef = return . unWaveShaperNode
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WaveShaperNode where
+  fromJSRef = return . fmap WaveShaperNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsAudioNode WaveShaperNode
+instance IsEventTarget WaveShaperNode
+instance IsGObject WaveShaperNode where
+  toGObject = GObject . castRef . unWaveShaperNode
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WaveShaperNode . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWaveShaperNode :: IsGObject obj => obj -> WaveShaperNode
+castToWaveShaperNode = castTo gTypeWaveShaperNode "WaveShaperNode"
+
+foreign import javascript unsafe "window[\"WaveShaperNode\"]" gTypeWaveShaperNode' :: JSRef GType
+gTypeWaveShaperNode = GType gTypeWaveShaperNode'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGL2RenderingContext }
+
+instance Eq (WebGL2RenderingContext) where
+  (WebGL2RenderingContext a) == (WebGL2RenderingContext b) = js_eq a b
+
+instance PToJSRef WebGL2RenderingContext where
+  pToJSRef = unWebGL2RenderingContext
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGL2RenderingContext where
+  pFromJSRef = WebGL2RenderingContext
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGL2RenderingContext where
+  toJSRef = return . unWebGL2RenderingContext
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGL2RenderingContext where
+  fromJSRef = return . fmap WebGL2RenderingContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsWebGLRenderingContextBase WebGL2RenderingContext
+instance IsCanvasRenderingContext WebGL2RenderingContext
+instance IsGObject WebGL2RenderingContext where
+  toGObject = GObject . castRef . unWebGL2RenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGL2RenderingContext . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGL2RenderingContext :: IsGObject obj => obj -> WebGL2RenderingContext
+castToWebGL2RenderingContext = castTo gTypeWebGL2RenderingContext "WebGL2RenderingContext"
+
+foreign import javascript unsafe "window[\"WebGL2RenderingContext\"]" gTypeWebGL2RenderingContext' :: JSRef GType
+gTypeWebGL2RenderingContext = GType gTypeWebGL2RenderingContext'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLActiveInfo }
+
+instance Eq (WebGLActiveInfo) where
+  (WebGLActiveInfo a) == (WebGLActiveInfo b) = js_eq a b
+
+instance PToJSRef WebGLActiveInfo where
+  pToJSRef = unWebGLActiveInfo
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLActiveInfo where
+  pFromJSRef = WebGLActiveInfo
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLActiveInfo where
+  toJSRef = return . unWebGLActiveInfo
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLActiveInfo where
+  fromJSRef = return . fmap WebGLActiveInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLActiveInfo where
+  toGObject = GObject . castRef . unWebGLActiveInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLActiveInfo . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLActiveInfo :: IsGObject obj => obj -> WebGLActiveInfo
+castToWebGLActiveInfo = castTo gTypeWebGLActiveInfo "WebGLActiveInfo"
+
+foreign import javascript unsafe "window[\"WebGLActiveInfo\"]" gTypeWebGLActiveInfo' :: JSRef GType
+gTypeWebGLActiveInfo = GType gTypeWebGLActiveInfo'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLBuffer }
+
+instance Eq (WebGLBuffer) where
+  (WebGLBuffer a) == (WebGLBuffer b) = js_eq a b
+
+instance PToJSRef WebGLBuffer where
+  pToJSRef = unWebGLBuffer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLBuffer where
+  pFromJSRef = WebGLBuffer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLBuffer where
+  toJSRef = return . unWebGLBuffer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLBuffer where
+  fromJSRef = return . fmap WebGLBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLBuffer where
+  toGObject = GObject . castRef . unWebGLBuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLBuffer . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLBuffer :: IsGObject obj => obj -> WebGLBuffer
+castToWebGLBuffer = castTo gTypeWebGLBuffer "WebGLBuffer"
+
+foreign import javascript unsafe "window[\"WebGLBuffer\"]" gTypeWebGLBuffer' :: JSRef GType
+gTypeWebGLBuffer = GType gTypeWebGLBuffer'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLCompressedTextureATC }
+
+instance Eq (WebGLCompressedTextureATC) where
+  (WebGLCompressedTextureATC a) == (WebGLCompressedTextureATC b) = js_eq a b
+
+instance PToJSRef WebGLCompressedTextureATC where
+  pToJSRef = unWebGLCompressedTextureATC
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLCompressedTextureATC where
+  pFromJSRef = WebGLCompressedTextureATC
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLCompressedTextureATC where
+  toJSRef = return . unWebGLCompressedTextureATC
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLCompressedTextureATC where
+  fromJSRef = return . fmap WebGLCompressedTextureATC . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLCompressedTextureATC where
+  toGObject = GObject . castRef . unWebGLCompressedTextureATC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTextureATC . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTextureATC :: IsGObject obj => obj -> WebGLCompressedTextureATC
+castToWebGLCompressedTextureATC = castTo gTypeWebGLCompressedTextureATC "WebGLCompressedTextureATC"
+
+foreign import javascript unsafe "window[\"WebGLCompressedTextureATC\"]" gTypeWebGLCompressedTextureATC' :: JSRef GType
+gTypeWebGLCompressedTextureATC = GType gTypeWebGLCompressedTextureATC'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLCompressedTexturePVRTC }
+
+instance Eq (WebGLCompressedTexturePVRTC) where
+  (WebGLCompressedTexturePVRTC a) == (WebGLCompressedTexturePVRTC b) = js_eq a b
+
+instance PToJSRef WebGLCompressedTexturePVRTC where
+  pToJSRef = unWebGLCompressedTexturePVRTC
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLCompressedTexturePVRTC where
+  pFromJSRef = WebGLCompressedTexturePVRTC
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLCompressedTexturePVRTC where
+  toJSRef = return . unWebGLCompressedTexturePVRTC
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLCompressedTexturePVRTC where
+  fromJSRef = return . fmap WebGLCompressedTexturePVRTC . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLCompressedTexturePVRTC where
+  toGObject = GObject . castRef . unWebGLCompressedTexturePVRTC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTexturePVRTC . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTexturePVRTC :: IsGObject obj => obj -> WebGLCompressedTexturePVRTC
+castToWebGLCompressedTexturePVRTC = castTo gTypeWebGLCompressedTexturePVRTC "WebGLCompressedTexturePVRTC"
+
+foreign import javascript unsafe "window[\"WebGLCompressedTexturePVRTC\"]" gTypeWebGLCompressedTexturePVRTC' :: JSRef GType
+gTypeWebGLCompressedTexturePVRTC = GType gTypeWebGLCompressedTexturePVRTC'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLCompressedTextureS3TC }
+
+instance Eq (WebGLCompressedTextureS3TC) where
+  (WebGLCompressedTextureS3TC a) == (WebGLCompressedTextureS3TC b) = js_eq a b
+
+instance PToJSRef WebGLCompressedTextureS3TC where
+  pToJSRef = unWebGLCompressedTextureS3TC
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLCompressedTextureS3TC where
+  pFromJSRef = WebGLCompressedTextureS3TC
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLCompressedTextureS3TC where
+  toJSRef = return . unWebGLCompressedTextureS3TC
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLCompressedTextureS3TC where
+  fromJSRef = return . fmap WebGLCompressedTextureS3TC . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLCompressedTextureS3TC where
+  toGObject = GObject . castRef . unWebGLCompressedTextureS3TC
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLCompressedTextureS3TC . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLCompressedTextureS3TC :: IsGObject obj => obj -> WebGLCompressedTextureS3TC
+castToWebGLCompressedTextureS3TC = castTo gTypeWebGLCompressedTextureS3TC "WebGLCompressedTextureS3TC"
+
+foreign import javascript unsafe "window[\"WebGLCompressedTextureS3TC\"]" gTypeWebGLCompressedTextureS3TC' :: JSRef GType
+gTypeWebGLCompressedTextureS3TC = GType gTypeWebGLCompressedTextureS3TC'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLContextAttributes }
+
+instance Eq (WebGLContextAttributes) where
+  (WebGLContextAttributes a) == (WebGLContextAttributes b) = js_eq a b
+
+instance PToJSRef WebGLContextAttributes where
+  pToJSRef = unWebGLContextAttributes
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLContextAttributes where
+  pFromJSRef = WebGLContextAttributes
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLContextAttributes where
+  toJSRef = return . unWebGLContextAttributes
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLContextAttributes where
+  fromJSRef = return . fmap WebGLContextAttributes . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLContextAttributes where
+  toGObject = GObject . castRef . unWebGLContextAttributes
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLContextAttributes . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLContextAttributes :: IsGObject obj => obj -> WebGLContextAttributes
+castToWebGLContextAttributes = castTo gTypeWebGLContextAttributes "WebGLContextAttributes"
+
+foreign import javascript unsafe "window[\"WebGLContextAttributes\"]" gTypeWebGLContextAttributes' :: JSRef GType
+gTypeWebGLContextAttributes = GType gTypeWebGLContextAttributes'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLContextEvent }
+
+instance Eq (WebGLContextEvent) where
+  (WebGLContextEvent a) == (WebGLContextEvent b) = js_eq a b
+
+instance PToJSRef WebGLContextEvent where
+  pToJSRef = unWebGLContextEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLContextEvent where
+  pFromJSRef = WebGLContextEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLContextEvent where
+  toJSRef = return . unWebGLContextEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLContextEvent where
+  fromJSRef = return . fmap WebGLContextEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent WebGLContextEvent
+instance IsGObject WebGLContextEvent where
+  toGObject = GObject . castRef . unWebGLContextEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLContextEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLContextEvent :: IsGObject obj => obj -> WebGLContextEvent
+castToWebGLContextEvent = castTo gTypeWebGLContextEvent "WebGLContextEvent"
+
+foreign import javascript unsafe "window[\"WebGLContextEvent\"]" gTypeWebGLContextEvent' :: JSRef GType
+gTypeWebGLContextEvent = GType gTypeWebGLContextEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLDebugRendererInfo }
+
+instance Eq (WebGLDebugRendererInfo) where
+  (WebGLDebugRendererInfo a) == (WebGLDebugRendererInfo b) = js_eq a b
+
+instance PToJSRef WebGLDebugRendererInfo where
+  pToJSRef = unWebGLDebugRendererInfo
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLDebugRendererInfo where
+  pFromJSRef = WebGLDebugRendererInfo
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLDebugRendererInfo where
+  toJSRef = return . unWebGLDebugRendererInfo
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLDebugRendererInfo where
+  fromJSRef = return . fmap WebGLDebugRendererInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLDebugRendererInfo where
+  toGObject = GObject . castRef . unWebGLDebugRendererInfo
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDebugRendererInfo . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDebugRendererInfo :: IsGObject obj => obj -> WebGLDebugRendererInfo
+castToWebGLDebugRendererInfo = castTo gTypeWebGLDebugRendererInfo "WebGLDebugRendererInfo"
+
+foreign import javascript unsafe "window[\"WebGLDebugRendererInfo\"]" gTypeWebGLDebugRendererInfo' :: JSRef GType
+gTypeWebGLDebugRendererInfo = GType gTypeWebGLDebugRendererInfo'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLDebugShaders }
+
+instance Eq (WebGLDebugShaders) where
+  (WebGLDebugShaders a) == (WebGLDebugShaders b) = js_eq a b
+
+instance PToJSRef WebGLDebugShaders where
+  pToJSRef = unWebGLDebugShaders
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLDebugShaders where
+  pFromJSRef = WebGLDebugShaders
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLDebugShaders where
+  toJSRef = return . unWebGLDebugShaders
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLDebugShaders where
+  fromJSRef = return . fmap WebGLDebugShaders . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLDebugShaders where
+  toGObject = GObject . castRef . unWebGLDebugShaders
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDebugShaders . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDebugShaders :: IsGObject obj => obj -> WebGLDebugShaders
+castToWebGLDebugShaders = castTo gTypeWebGLDebugShaders "WebGLDebugShaders"
+
+foreign import javascript unsafe "window[\"WebGLDebugShaders\"]" gTypeWebGLDebugShaders' :: JSRef GType
+gTypeWebGLDebugShaders = GType gTypeWebGLDebugShaders'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLDepthTexture }
+
+instance Eq (WebGLDepthTexture) where
+  (WebGLDepthTexture a) == (WebGLDepthTexture b) = js_eq a b
+
+instance PToJSRef WebGLDepthTexture where
+  pToJSRef = unWebGLDepthTexture
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLDepthTexture where
+  pFromJSRef = WebGLDepthTexture
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLDepthTexture where
+  toJSRef = return . unWebGLDepthTexture
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLDepthTexture where
+  fromJSRef = return . fmap WebGLDepthTexture . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLDepthTexture where
+  toGObject = GObject . castRef . unWebGLDepthTexture
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDepthTexture . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDepthTexture :: IsGObject obj => obj -> WebGLDepthTexture
+castToWebGLDepthTexture = castTo gTypeWebGLDepthTexture "WebGLDepthTexture"
+
+foreign import javascript unsafe "window[\"WebGLDepthTexture\"]" gTypeWebGLDepthTexture' :: JSRef GType
+gTypeWebGLDepthTexture = GType gTypeWebGLDepthTexture'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLDrawBuffers }
+
+instance Eq (WebGLDrawBuffers) where
+  (WebGLDrawBuffers a) == (WebGLDrawBuffers b) = js_eq a b
+
+instance PToJSRef WebGLDrawBuffers where
+  pToJSRef = unWebGLDrawBuffers
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLDrawBuffers where
+  pFromJSRef = WebGLDrawBuffers
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLDrawBuffers where
+  toJSRef = return . unWebGLDrawBuffers
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLDrawBuffers where
+  fromJSRef = return . fmap WebGLDrawBuffers . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLDrawBuffers where
+  toGObject = GObject . castRef . unWebGLDrawBuffers
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLDrawBuffers . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLDrawBuffers :: IsGObject obj => obj -> WebGLDrawBuffers
+castToWebGLDrawBuffers = castTo gTypeWebGLDrawBuffers "WebGLDrawBuffers"
+
+foreign import javascript unsafe "window[\"WebGLDrawBuffers\"]" gTypeWebGLDrawBuffers' :: JSRef GType
+gTypeWebGLDrawBuffers = GType gTypeWebGLDrawBuffers'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLFramebuffer }
+
+instance Eq (WebGLFramebuffer) where
+  (WebGLFramebuffer a) == (WebGLFramebuffer b) = js_eq a b
+
+instance PToJSRef WebGLFramebuffer where
+  pToJSRef = unWebGLFramebuffer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLFramebuffer where
+  pFromJSRef = WebGLFramebuffer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLFramebuffer where
+  toJSRef = return . unWebGLFramebuffer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLFramebuffer where
+  fromJSRef = return . fmap WebGLFramebuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLFramebuffer where
+  toGObject = GObject . castRef . unWebGLFramebuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLFramebuffer . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLFramebuffer :: IsGObject obj => obj -> WebGLFramebuffer
+castToWebGLFramebuffer = castTo gTypeWebGLFramebuffer "WebGLFramebuffer"
+
+foreign import javascript unsafe "window[\"WebGLFramebuffer\"]" gTypeWebGLFramebuffer' :: JSRef GType
+gTypeWebGLFramebuffer = GType gTypeWebGLFramebuffer'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLLoseContext }
+
+instance Eq (WebGLLoseContext) where
+  (WebGLLoseContext a) == (WebGLLoseContext b) = js_eq a b
+
+instance PToJSRef WebGLLoseContext where
+  pToJSRef = unWebGLLoseContext
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLLoseContext where
+  pFromJSRef = WebGLLoseContext
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLLoseContext where
+  toJSRef = return . unWebGLLoseContext
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLLoseContext where
+  fromJSRef = return . fmap WebGLLoseContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLLoseContext where
+  toGObject = GObject . castRef . unWebGLLoseContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLLoseContext . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLLoseContext :: IsGObject obj => obj -> WebGLLoseContext
+castToWebGLLoseContext = castTo gTypeWebGLLoseContext "WebGLLoseContext"
+
+foreign import javascript unsafe "window[\"WebGLLoseContext\"]" gTypeWebGLLoseContext' :: JSRef GType
+gTypeWebGLLoseContext = GType gTypeWebGLLoseContext'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLProgram }
+
+instance Eq (WebGLProgram) where
+  (WebGLProgram a) == (WebGLProgram b) = js_eq a b
+
+instance PToJSRef WebGLProgram where
+  pToJSRef = unWebGLProgram
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLProgram where
+  pFromJSRef = WebGLProgram
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLProgram where
+  toJSRef = return . unWebGLProgram
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLProgram where
+  fromJSRef = return . fmap WebGLProgram . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLProgram where
+  toGObject = GObject . castRef . unWebGLProgram
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLProgram . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLProgram :: IsGObject obj => obj -> WebGLProgram
+castToWebGLProgram = castTo gTypeWebGLProgram "WebGLProgram"
+
+foreign import javascript unsafe "window[\"WebGLProgram\"]" gTypeWebGLProgram' :: JSRef GType
+gTypeWebGLProgram = GType gTypeWebGLProgram'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLQuery }
+
+instance Eq (WebGLQuery) where
+  (WebGLQuery a) == (WebGLQuery b) = js_eq a b
+
+instance PToJSRef WebGLQuery where
+  pToJSRef = unWebGLQuery
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLQuery where
+  pFromJSRef = WebGLQuery
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLQuery where
+  toJSRef = return . unWebGLQuery
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLQuery where
+  fromJSRef = return . fmap WebGLQuery . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLQuery where
+  toGObject = GObject . castRef . unWebGLQuery
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLQuery . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLQuery :: IsGObject obj => obj -> WebGLQuery
+castToWebGLQuery = castTo gTypeWebGLQuery "WebGLQuery"
+
+foreign import javascript unsafe "window[\"WebGLQuery\"]" gTypeWebGLQuery' :: JSRef GType
+gTypeWebGLQuery = GType gTypeWebGLQuery'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLRenderbuffer }
+
+instance Eq (WebGLRenderbuffer) where
+  (WebGLRenderbuffer a) == (WebGLRenderbuffer b) = js_eq a b
+
+instance PToJSRef WebGLRenderbuffer where
+  pToJSRef = unWebGLRenderbuffer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLRenderbuffer where
+  pFromJSRef = WebGLRenderbuffer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLRenderbuffer where
+  toJSRef = return . unWebGLRenderbuffer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLRenderbuffer where
+  fromJSRef = return . fmap WebGLRenderbuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLRenderbuffer where
+  toGObject = GObject . castRef . unWebGLRenderbuffer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderbuffer . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderbuffer :: IsGObject obj => obj -> WebGLRenderbuffer
+castToWebGLRenderbuffer = castTo gTypeWebGLRenderbuffer "WebGLRenderbuffer"
+
+foreign import javascript unsafe "window[\"WebGLRenderbuffer\"]" gTypeWebGLRenderbuffer' :: JSRef GType
+gTypeWebGLRenderbuffer = GType gTypeWebGLRenderbuffer'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLRenderingContext }
+
+instance Eq (WebGLRenderingContext) where
+  (WebGLRenderingContext a) == (WebGLRenderingContext b) = js_eq a b
+
+instance PToJSRef WebGLRenderingContext where
+  pToJSRef = unWebGLRenderingContext
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLRenderingContext where
+  pFromJSRef = WebGLRenderingContext
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLRenderingContext where
+  toJSRef = return . unWebGLRenderingContext
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLRenderingContext where
+  fromJSRef = return . fmap WebGLRenderingContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsWebGLRenderingContextBase WebGLRenderingContext
+instance IsCanvasRenderingContext WebGLRenderingContext
+instance IsGObject WebGLRenderingContext where
+  toGObject = GObject . castRef . unWebGLRenderingContext
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderingContext . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderingContext :: IsGObject obj => obj -> WebGLRenderingContext
+castToWebGLRenderingContext = castTo gTypeWebGLRenderingContext "WebGLRenderingContext"
+
+foreign import javascript unsafe "window[\"WebGLRenderingContext\"]" gTypeWebGLRenderingContext' :: JSRef GType
+gTypeWebGLRenderingContext = GType gTypeWebGLRenderingContext'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLRenderingContextBase }
+
+instance Eq (WebGLRenderingContextBase) where
+  (WebGLRenderingContextBase a) == (WebGLRenderingContextBase b) = js_eq a b
+
+instance PToJSRef WebGLRenderingContextBase where
+  pToJSRef = unWebGLRenderingContextBase
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLRenderingContextBase where
+  pFromJSRef = WebGLRenderingContextBase
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLRenderingContextBase where
+  toJSRef = return . unWebGLRenderingContextBase
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLRenderingContextBase where
+  fromJSRef = return . fmap WebGLRenderingContextBase . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unWebGLRenderingContextBase
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLRenderingContextBase . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLRenderingContextBase :: IsGObject obj => obj -> WebGLRenderingContextBase
+castToWebGLRenderingContextBase = castTo gTypeWebGLRenderingContextBase "WebGLRenderingContextBase"
+
+foreign import javascript unsafe "window[\"WebGLRenderingContextBase\"]" gTypeWebGLRenderingContextBase' :: JSRef GType
+gTypeWebGLRenderingContextBase = GType gTypeWebGLRenderingContextBase'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLSampler }
+
+instance Eq (WebGLSampler) where
+  (WebGLSampler a) == (WebGLSampler b) = js_eq a b
+
+instance PToJSRef WebGLSampler where
+  pToJSRef = unWebGLSampler
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLSampler where
+  pFromJSRef = WebGLSampler
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLSampler where
+  toJSRef = return . unWebGLSampler
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLSampler where
+  fromJSRef = return . fmap WebGLSampler . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLSampler where
+  toGObject = GObject . castRef . unWebGLSampler
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLSampler . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLSampler :: IsGObject obj => obj -> WebGLSampler
+castToWebGLSampler = castTo gTypeWebGLSampler "WebGLSampler"
+
+foreign import javascript unsafe "window[\"WebGLSampler\"]" gTypeWebGLSampler' :: JSRef GType
+gTypeWebGLSampler = GType gTypeWebGLSampler'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLShader }
+
+instance Eq (WebGLShader) where
+  (WebGLShader a) == (WebGLShader b) = js_eq a b
+
+instance PToJSRef WebGLShader where
+  pToJSRef = unWebGLShader
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLShader where
+  pFromJSRef = WebGLShader
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLShader where
+  toJSRef = return . unWebGLShader
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLShader where
+  fromJSRef = return . fmap WebGLShader . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLShader where
+  toGObject = GObject . castRef . unWebGLShader
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLShader . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLShader :: IsGObject obj => obj -> WebGLShader
+castToWebGLShader = castTo gTypeWebGLShader "WebGLShader"
+
+foreign import javascript unsafe "window[\"WebGLShader\"]" gTypeWebGLShader' :: JSRef GType
+gTypeWebGLShader = GType gTypeWebGLShader'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLShaderPrecisionFormat }
+
+instance Eq (WebGLShaderPrecisionFormat) where
+  (WebGLShaderPrecisionFormat a) == (WebGLShaderPrecisionFormat b) = js_eq a b
+
+instance PToJSRef WebGLShaderPrecisionFormat where
+  pToJSRef = unWebGLShaderPrecisionFormat
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLShaderPrecisionFormat where
+  pFromJSRef = WebGLShaderPrecisionFormat
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLShaderPrecisionFormat where
+  toJSRef = return . unWebGLShaderPrecisionFormat
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLShaderPrecisionFormat where
+  fromJSRef = return . fmap WebGLShaderPrecisionFormat . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLShaderPrecisionFormat where
+  toGObject = GObject . castRef . unWebGLShaderPrecisionFormat
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLShaderPrecisionFormat . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLShaderPrecisionFormat :: IsGObject obj => obj -> WebGLShaderPrecisionFormat
+castToWebGLShaderPrecisionFormat = castTo gTypeWebGLShaderPrecisionFormat "WebGLShaderPrecisionFormat"
+
+foreign import javascript unsafe "window[\"WebGLShaderPrecisionFormat\"]" gTypeWebGLShaderPrecisionFormat' :: JSRef GType
+gTypeWebGLShaderPrecisionFormat = GType gTypeWebGLShaderPrecisionFormat'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLSync }
+
+instance Eq (WebGLSync) where
+  (WebGLSync a) == (WebGLSync b) = js_eq a b
+
+instance PToJSRef WebGLSync where
+  pToJSRef = unWebGLSync
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLSync where
+  pFromJSRef = WebGLSync
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLSync where
+  toJSRef = return . unWebGLSync
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLSync where
+  fromJSRef = return . fmap WebGLSync . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLSync where
+  toGObject = GObject . castRef . unWebGLSync
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLSync . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLSync :: IsGObject obj => obj -> WebGLSync
+castToWebGLSync = castTo gTypeWebGLSync "WebGLSync"
+
+foreign import javascript unsafe "window[\"WebGLSync\"]" gTypeWebGLSync' :: JSRef GType
+gTypeWebGLSync = GType gTypeWebGLSync'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLTexture }
+
+instance Eq (WebGLTexture) where
+  (WebGLTexture a) == (WebGLTexture b) = js_eq a b
+
+instance PToJSRef WebGLTexture where
+  pToJSRef = unWebGLTexture
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLTexture where
+  pFromJSRef = WebGLTexture
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLTexture where
+  toJSRef = return . unWebGLTexture
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLTexture where
+  fromJSRef = return . fmap WebGLTexture . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLTexture where
+  toGObject = GObject . castRef . unWebGLTexture
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLTexture . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLTexture :: IsGObject obj => obj -> WebGLTexture
+castToWebGLTexture = castTo gTypeWebGLTexture "WebGLTexture"
+
+foreign import javascript unsafe "window[\"WebGLTexture\"]" gTypeWebGLTexture' :: JSRef GType
+gTypeWebGLTexture = GType gTypeWebGLTexture'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLTransformFeedback }
+
+instance Eq (WebGLTransformFeedback) where
+  (WebGLTransformFeedback a) == (WebGLTransformFeedback b) = js_eq a b
+
+instance PToJSRef WebGLTransformFeedback where
+  pToJSRef = unWebGLTransformFeedback
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLTransformFeedback where
+  pFromJSRef = WebGLTransformFeedback
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLTransformFeedback where
+  toJSRef = return . unWebGLTransformFeedback
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLTransformFeedback where
+  fromJSRef = return . fmap WebGLTransformFeedback . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLTransformFeedback where
+  toGObject = GObject . castRef . unWebGLTransformFeedback
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLTransformFeedback . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLTransformFeedback :: IsGObject obj => obj -> WebGLTransformFeedback
+castToWebGLTransformFeedback = castTo gTypeWebGLTransformFeedback "WebGLTransformFeedback"
+
+foreign import javascript unsafe "window[\"WebGLTransformFeedback\"]" gTypeWebGLTransformFeedback' :: JSRef GType
+gTypeWebGLTransformFeedback = GType gTypeWebGLTransformFeedback'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLUniformLocation }
+
+instance Eq (WebGLUniformLocation) where
+  (WebGLUniformLocation a) == (WebGLUniformLocation b) = js_eq a b
+
+instance PToJSRef WebGLUniformLocation where
+  pToJSRef = unWebGLUniformLocation
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLUniformLocation where
+  pFromJSRef = WebGLUniformLocation
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLUniformLocation where
+  toJSRef = return . unWebGLUniformLocation
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLUniformLocation where
+  fromJSRef = return . fmap WebGLUniformLocation . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLUniformLocation where
+  toGObject = GObject . castRef . unWebGLUniformLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLUniformLocation . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLUniformLocation :: IsGObject obj => obj -> WebGLUniformLocation
+castToWebGLUniformLocation = castTo gTypeWebGLUniformLocation "WebGLUniformLocation"
+
+foreign import javascript unsafe "window[\"WebGLUniformLocation\"]" gTypeWebGLUniformLocation' :: JSRef GType
+gTypeWebGLUniformLocation = GType gTypeWebGLUniformLocation'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLVertexArrayObject }
+
+instance Eq (WebGLVertexArrayObject) where
+  (WebGLVertexArrayObject a) == (WebGLVertexArrayObject b) = js_eq a b
+
+instance PToJSRef WebGLVertexArrayObject where
+  pToJSRef = unWebGLVertexArrayObject
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLVertexArrayObject where
+  pFromJSRef = WebGLVertexArrayObject
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLVertexArrayObject where
+  toJSRef = return . unWebGLVertexArrayObject
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLVertexArrayObject where
+  fromJSRef = return . fmap WebGLVertexArrayObject . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLVertexArrayObject where
+  toGObject = GObject . castRef . unWebGLVertexArrayObject
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLVertexArrayObject . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLVertexArrayObject :: IsGObject obj => obj -> WebGLVertexArrayObject
+castToWebGLVertexArrayObject = castTo gTypeWebGLVertexArrayObject "WebGLVertexArrayObject"
+
+foreign import javascript unsafe "window[\"WebGLVertexArrayObject\"]" gTypeWebGLVertexArrayObject' :: JSRef GType
+gTypeWebGLVertexArrayObject = GType gTypeWebGLVertexArrayObject'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebGLVertexArrayObjectOES }
+
+instance Eq (WebGLVertexArrayObjectOES) where
+  (WebGLVertexArrayObjectOES a) == (WebGLVertexArrayObjectOES b) = js_eq a b
+
+instance PToJSRef WebGLVertexArrayObjectOES where
+  pToJSRef = unWebGLVertexArrayObjectOES
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebGLVertexArrayObjectOES where
+  pFromJSRef = WebGLVertexArrayObjectOES
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebGLVertexArrayObjectOES where
+  toJSRef = return . unWebGLVertexArrayObjectOES
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebGLVertexArrayObjectOES where
+  fromJSRef = return . fmap WebGLVertexArrayObjectOES . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebGLVertexArrayObjectOES where
+  toGObject = GObject . castRef . unWebGLVertexArrayObjectOES
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebGLVertexArrayObjectOES . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebGLVertexArrayObjectOES :: IsGObject obj => obj -> WebGLVertexArrayObjectOES
+castToWebGLVertexArrayObjectOES = castTo gTypeWebGLVertexArrayObjectOES "WebGLVertexArrayObjectOES"
+
+foreign import javascript unsafe "window[\"WebGLVertexArrayObjectOES\"]" gTypeWebGLVertexArrayObjectOES' :: JSRef GType
+gTypeWebGLVertexArrayObjectOES = GType gTypeWebGLVertexArrayObjectOES'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitAnimationEvent }
+
+instance Eq (WebKitAnimationEvent) where
+  (WebKitAnimationEvent a) == (WebKitAnimationEvent b) = js_eq a b
+
+instance PToJSRef WebKitAnimationEvent where
+  pToJSRef = unWebKitAnimationEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitAnimationEvent where
+  pFromJSRef = WebKitAnimationEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitAnimationEvent where
+  toJSRef = return . unWebKitAnimationEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitAnimationEvent where
+  fromJSRef = return . fmap WebKitAnimationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent WebKitAnimationEvent
+instance IsGObject WebKitAnimationEvent where
+  toGObject = GObject . castRef . unWebKitAnimationEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitAnimationEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitAnimationEvent :: IsGObject obj => obj -> WebKitAnimationEvent
+castToWebKitAnimationEvent = castTo gTypeWebKitAnimationEvent "WebKitAnimationEvent"
+
+foreign import javascript unsafe "window[\"WebKitAnimationEvent\"]" gTypeWebKitAnimationEvent' :: JSRef GType
+gTypeWebKitAnimationEvent = GType gTypeWebKitAnimationEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitCSSFilterValue }
+
+instance Eq (WebKitCSSFilterValue) where
+  (WebKitCSSFilterValue a) == (WebKitCSSFilterValue b) = js_eq a b
+
+instance PToJSRef WebKitCSSFilterValue where
+  pToJSRef = unWebKitCSSFilterValue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitCSSFilterValue where
+  pFromJSRef = WebKitCSSFilterValue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitCSSFilterValue where
+  toJSRef = return . unWebKitCSSFilterValue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitCSSFilterValue where
+  fromJSRef = return . fmap WebKitCSSFilterValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSValueList WebKitCSSFilterValue
+instance IsCSSValue WebKitCSSFilterValue
+instance IsGObject WebKitCSSFilterValue where
+  toGObject = GObject . castRef . unWebKitCSSFilterValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSFilterValue . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSFilterValue :: IsGObject obj => obj -> WebKitCSSFilterValue
+castToWebKitCSSFilterValue = castTo gTypeWebKitCSSFilterValue "WebKitCSSFilterValue"
+
+foreign import javascript unsafe "window[\"WebKitCSSFilterValue\"]" gTypeWebKitCSSFilterValue' :: JSRef GType
+gTypeWebKitCSSFilterValue = GType gTypeWebKitCSSFilterValue'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitCSSMatrix }
+
+instance Eq (WebKitCSSMatrix) where
+  (WebKitCSSMatrix a) == (WebKitCSSMatrix b) = js_eq a b
+
+instance PToJSRef WebKitCSSMatrix where
+  pToJSRef = unWebKitCSSMatrix
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitCSSMatrix where
+  pFromJSRef = WebKitCSSMatrix
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitCSSMatrix where
+  toJSRef = return . unWebKitCSSMatrix
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitCSSMatrix where
+  fromJSRef = return . fmap WebKitCSSMatrix . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebKitCSSMatrix where
+  toGObject = GObject . castRef . unWebKitCSSMatrix
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSMatrix . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSMatrix :: IsGObject obj => obj -> WebKitCSSMatrix
+castToWebKitCSSMatrix = castTo gTypeWebKitCSSMatrix "WebKitCSSMatrix"
+
+foreign import javascript unsafe "window[\"WebKitCSSMatrix\"]" gTypeWebKitCSSMatrix' :: JSRef GType
+gTypeWebKitCSSMatrix = GType gTypeWebKitCSSMatrix'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitCSSRegionRule }
+
+instance Eq (WebKitCSSRegionRule) where
+  (WebKitCSSRegionRule a) == (WebKitCSSRegionRule b) = js_eq a b
+
+instance PToJSRef WebKitCSSRegionRule where
+  pToJSRef = unWebKitCSSRegionRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitCSSRegionRule where
+  pFromJSRef = WebKitCSSRegionRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitCSSRegionRule where
+  toJSRef = return . unWebKitCSSRegionRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitCSSRegionRule where
+  fromJSRef = return . fmap WebKitCSSRegionRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule WebKitCSSRegionRule
+instance IsGObject WebKitCSSRegionRule where
+  toGObject = GObject . castRef . unWebKitCSSRegionRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSRegionRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSRegionRule :: IsGObject obj => obj -> WebKitCSSRegionRule
+castToWebKitCSSRegionRule = castTo gTypeWebKitCSSRegionRule "WebKitCSSRegionRule"
+
+foreign import javascript unsafe "window[\"WebKitCSSRegionRule\"]" gTypeWebKitCSSRegionRule' :: JSRef GType
+gTypeWebKitCSSRegionRule = GType gTypeWebKitCSSRegionRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitCSSTransformValue }
+
+instance Eq (WebKitCSSTransformValue) where
+  (WebKitCSSTransformValue a) == (WebKitCSSTransformValue b) = js_eq a b
+
+instance PToJSRef WebKitCSSTransformValue where
+  pToJSRef = unWebKitCSSTransformValue
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitCSSTransformValue where
+  pFromJSRef = WebKitCSSTransformValue
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitCSSTransformValue where
+  toJSRef = return . unWebKitCSSTransformValue
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitCSSTransformValue where
+  fromJSRef = return . fmap WebKitCSSTransformValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSValueList WebKitCSSTransformValue
+instance IsCSSValue WebKitCSSTransformValue
+instance IsGObject WebKitCSSTransformValue where
+  toGObject = GObject . castRef . unWebKitCSSTransformValue
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSTransformValue . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSTransformValue :: IsGObject obj => obj -> WebKitCSSTransformValue
+castToWebKitCSSTransformValue = castTo gTypeWebKitCSSTransformValue "WebKitCSSTransformValue"
+
+foreign import javascript unsafe "window[\"WebKitCSSTransformValue\"]" gTypeWebKitCSSTransformValue' :: JSRef GType
+gTypeWebKitCSSTransformValue = GType gTypeWebKitCSSTransformValue'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitCSSViewportRule }
+
+instance Eq (WebKitCSSViewportRule) where
+  (WebKitCSSViewportRule a) == (WebKitCSSViewportRule b) = js_eq a b
+
+instance PToJSRef WebKitCSSViewportRule where
+  pToJSRef = unWebKitCSSViewportRule
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitCSSViewportRule where
+  pFromJSRef = WebKitCSSViewportRule
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitCSSViewportRule where
+  toJSRef = return . unWebKitCSSViewportRule
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitCSSViewportRule where
+  fromJSRef = return . fmap WebKitCSSViewportRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsCSSRule WebKitCSSViewportRule
+instance IsGObject WebKitCSSViewportRule where
+  toGObject = GObject . castRef . unWebKitCSSViewportRule
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitCSSViewportRule . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitCSSViewportRule :: IsGObject obj => obj -> WebKitCSSViewportRule
+castToWebKitCSSViewportRule = castTo gTypeWebKitCSSViewportRule "WebKitCSSViewportRule"
+
+foreign import javascript unsafe "window[\"WebKitCSSViewportRule\"]" gTypeWebKitCSSViewportRule' :: JSRef GType
+gTypeWebKitCSSViewportRule = GType gTypeWebKitCSSViewportRule'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitNamedFlow }
+
+instance Eq (WebKitNamedFlow) where
+  (WebKitNamedFlow a) == (WebKitNamedFlow b) = js_eq a b
+
+instance PToJSRef WebKitNamedFlow where
+  pToJSRef = unWebKitNamedFlow
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitNamedFlow where
+  pFromJSRef = WebKitNamedFlow
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitNamedFlow where
+  toJSRef = return . unWebKitNamedFlow
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitNamedFlow where
+  fromJSRef = return . fmap WebKitNamedFlow . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget WebKitNamedFlow
+instance IsGObject WebKitNamedFlow where
+  toGObject = GObject . castRef . unWebKitNamedFlow
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitNamedFlow . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitNamedFlow :: IsGObject obj => obj -> WebKitNamedFlow
+castToWebKitNamedFlow = castTo gTypeWebKitNamedFlow "WebKitNamedFlow"
+
+foreign import javascript unsafe "window[\"WebKitNamedFlow\"]" gTypeWebKitNamedFlow' :: JSRef GType
+gTypeWebKitNamedFlow = GType gTypeWebKitNamedFlow'
+#else
+type IsWebKitNamedFlow o = WebKitNamedFlowClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitNamespace }
+
+instance Eq (WebKitNamespace) where
+  (WebKitNamespace a) == (WebKitNamespace b) = js_eq a b
+
+instance PToJSRef WebKitNamespace where
+  pToJSRef = unWebKitNamespace
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitNamespace where
+  pFromJSRef = WebKitNamespace
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitNamespace where
+  toJSRef = return . unWebKitNamespace
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitNamespace where
+  fromJSRef = return . fmap WebKitNamespace . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebKitNamespace where
+  toGObject = GObject . castRef . unWebKitNamespace
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitNamespace . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitNamespace :: IsGObject obj => obj -> WebKitNamespace
+castToWebKitNamespace = castTo gTypeWebKitNamespace "WebKitNamespace"
+
+foreign import javascript unsafe "window[\"WebKitNamespace\"]" gTypeWebKitNamespace' :: JSRef GType
+gTypeWebKitNamespace = GType gTypeWebKitNamespace'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitPlaybackTargetAvailabilityEvent }
+
+instance Eq (WebKitPlaybackTargetAvailabilityEvent) where
+  (WebKitPlaybackTargetAvailabilityEvent a) == (WebKitPlaybackTargetAvailabilityEvent b) = js_eq a b
+
+instance PToJSRef WebKitPlaybackTargetAvailabilityEvent where
+  pToJSRef = unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitPlaybackTargetAvailabilityEvent where
+  pFromJSRef = WebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitPlaybackTargetAvailabilityEvent where
+  toJSRef = return . unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitPlaybackTargetAvailabilityEvent where
+  fromJSRef = return . fmap WebKitPlaybackTargetAvailabilityEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent WebKitPlaybackTargetAvailabilityEvent
+instance IsGObject WebKitPlaybackTargetAvailabilityEvent where
+  toGObject = GObject . castRef . unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitPlaybackTargetAvailabilityEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitPlaybackTargetAvailabilityEvent :: IsGObject obj => obj -> WebKitPlaybackTargetAvailabilityEvent
+castToWebKitPlaybackTargetAvailabilityEvent = castTo gTypeWebKitPlaybackTargetAvailabilityEvent "WebKitPlaybackTargetAvailabilityEvent"
+
+foreign import javascript unsafe "window[\"WebKitPlaybackTargetAvailabilityEvent\"]" gTypeWebKitPlaybackTargetAvailabilityEvent' :: JSRef GType
+gTypeWebKitPlaybackTargetAvailabilityEvent = GType gTypeWebKitPlaybackTargetAvailabilityEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitPoint }
+
+instance Eq (WebKitPoint) where
+  (WebKitPoint a) == (WebKitPoint b) = js_eq a b
+
+instance PToJSRef WebKitPoint where
+  pToJSRef = unWebKitPoint
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitPoint where
+  pFromJSRef = WebKitPoint
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitPoint where
+  toJSRef = return . unWebKitPoint
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitPoint where
+  fromJSRef = return . fmap WebKitPoint . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WebKitPoint where
+  toGObject = GObject . castRef . unWebKitPoint
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitPoint . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitPoint :: IsGObject obj => obj -> WebKitPoint
+castToWebKitPoint = castTo gTypeWebKitPoint "WebKitPoint"
+
+foreign import javascript unsafe "window[\"WebKitPoint\"]" gTypeWebKitPoint' :: JSRef GType
+gTypeWebKitPoint = GType gTypeWebKitPoint'
+#else
+type IsWebKitPoint o = WebKitPointClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebKitTransitionEvent }
+
+instance Eq (WebKitTransitionEvent) where
+  (WebKitTransitionEvent a) == (WebKitTransitionEvent b) = js_eq a b
+
+instance PToJSRef WebKitTransitionEvent where
+  pToJSRef = unWebKitTransitionEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebKitTransitionEvent where
+  pFromJSRef = WebKitTransitionEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebKitTransitionEvent where
+  toJSRef = return . unWebKitTransitionEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebKitTransitionEvent where
+  fromJSRef = return . fmap WebKitTransitionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEvent WebKitTransitionEvent
+instance IsGObject WebKitTransitionEvent where
+  toGObject = GObject . castRef . unWebKitTransitionEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebKitTransitionEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebKitTransitionEvent :: IsGObject obj => obj -> WebKitTransitionEvent
+castToWebKitTransitionEvent = castTo gTypeWebKitTransitionEvent "WebKitTransitionEvent"
+
+foreign import javascript unsafe "window[\"WebKitTransitionEvent\"]" gTypeWebKitTransitionEvent' :: JSRef GType
+gTypeWebKitTransitionEvent = GType gTypeWebKitTransitionEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WebSocket }
+
+instance Eq (WebSocket) where
+  (WebSocket a) == (WebSocket b) = js_eq a b
+
+instance PToJSRef WebSocket where
+  pToJSRef = unWebSocket
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WebSocket where
+  pFromJSRef = WebSocket
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WebSocket where
+  toJSRef = return . unWebSocket
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WebSocket where
+  fromJSRef = return . fmap WebSocket . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget WebSocket
+instance IsGObject WebSocket where
+  toGObject = GObject . castRef . unWebSocket
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WebSocket . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWebSocket :: IsGObject obj => obj -> WebSocket
+castToWebSocket = castTo gTypeWebSocket "WebSocket"
+
+foreign import javascript unsafe "window[\"WebSocket\"]" gTypeWebSocket' :: JSRef GType
+gTypeWebSocket = GType gTypeWebSocket'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WheelEvent }
+
+instance Eq (WheelEvent) where
+  (WheelEvent a) == (WheelEvent b) = js_eq a b
+
+instance PToJSRef WheelEvent where
+  pToJSRef = unWheelEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WheelEvent where
+  pFromJSRef = WheelEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WheelEvent where
+  toJSRef = return . unWheelEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WheelEvent where
+  fromJSRef = return . fmap WheelEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsMouseEvent WheelEvent
+instance IsUIEvent WheelEvent
+instance IsEvent WheelEvent
+instance IsGObject WheelEvent where
+  toGObject = GObject . castRef . unWheelEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WheelEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWheelEvent :: IsGObject obj => obj -> WheelEvent
+castToWheelEvent = castTo gTypeWheelEvent "WheelEvent"
+
+foreign import javascript unsafe "window[\"WheelEvent\"]" gTypeWheelEvent' :: JSRef GType
+gTypeWheelEvent = GType gTypeWheelEvent'
+#else
+#ifndef USE_OLD_WEBKIT
+type IsWheelEvent o = WheelEventClass o
+#endif
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Window }
+
+instance Eq (Window) where
+  (Window a) == (Window b) = js_eq a b
+
+instance PToJSRef Window where
+  pToJSRef = unWindow
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Window where
+  pFromJSRef = Window
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Window where
+  toJSRef = return . unWindow
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Window where
+  fromJSRef = return . fmap Window . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget Window
+instance IsGObject Window where
+  toGObject = GObject . castRef . unWindow
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Window . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindow :: IsGObject obj => obj -> Window
+castToWindow = castTo gTypeWindow "Window"
+
+foreign import javascript unsafe "window[\"Window\"]" gTypeWindow' :: JSRef GType
+gTypeWindow = GType gTypeWindow'
+#else
+type IsWindow o = WindowClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WindowBase64 }
+
+instance Eq (WindowBase64) where
+  (WindowBase64 a) == (WindowBase64 b) = js_eq a b
+
+instance PToJSRef WindowBase64 where
+  pToJSRef = unWindowBase64
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WindowBase64 where
+  pFromJSRef = WindowBase64
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WindowBase64 where
+  toJSRef = return . unWindowBase64
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WindowBase64 where
+  fromJSRef = return . fmap WindowBase64 . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WindowBase64 where
+  toGObject = GObject . castRef . unWindowBase64
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WindowBase64 . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindowBase64 :: IsGObject obj => obj -> WindowBase64
+castToWindowBase64 = castTo gTypeWindowBase64 "WindowBase64"
+
+foreign import javascript unsafe "window[\"WindowBase64\"]" gTypeWindowBase64' :: JSRef GType
+gTypeWindowBase64 = GType gTypeWindowBase64'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WindowTimers }
+
+instance Eq (WindowTimers) where
+  (WindowTimers a) == (WindowTimers b) = js_eq a b
+
+instance PToJSRef WindowTimers where
+  pToJSRef = unWindowTimers
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WindowTimers where
+  pFromJSRef = WindowTimers
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WindowTimers where
+  toJSRef = return . unWindowTimers
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WindowTimers where
+  fromJSRef = return . fmap WindowTimers . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WindowTimers where
+  toGObject = GObject . castRef . unWindowTimers
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WindowTimers . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWindowTimers :: IsGObject obj => obj -> WindowTimers
+castToWindowTimers = castTo gTypeWindowTimers "WindowTimers"
+
+foreign import javascript unsafe "window[\"WindowTimers\"]" gTypeWindowTimers' :: JSRef GType
+gTypeWindowTimers = GType gTypeWindowTimers'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef Worker }
+
+instance Eq (Worker) where
+  (Worker a) == (Worker b) = js_eq a b
+
+instance PToJSRef Worker where
+  pToJSRef = unWorker
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef Worker where
+  pFromJSRef = Worker
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef Worker where
+  toJSRef = return . unWorker
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef Worker where
+  fromJSRef = return . fmap Worker . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget Worker
+instance IsGObject Worker where
+  toGObject = GObject . castRef . unWorker
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = Worker . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorker :: IsGObject obj => obj -> Worker
+castToWorker = castTo gTypeWorker "Worker"
+
+foreign import javascript unsafe "window[\"Worker\"]" gTypeWorker' :: JSRef GType
+gTypeWorker = GType gTypeWorker'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WorkerGlobalScope }
+
+instance Eq (WorkerGlobalScope) where
+  (WorkerGlobalScope a) == (WorkerGlobalScope b) = js_eq a b
+
+instance PToJSRef WorkerGlobalScope where
+  pToJSRef = unWorkerGlobalScope
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WorkerGlobalScope where
+  pFromJSRef = WorkerGlobalScope
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WorkerGlobalScope where
+  toJSRef = return . unWorkerGlobalScope
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WorkerGlobalScope where
+  fromJSRef = return . fmap WorkerGlobalScope . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+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 . castRef . unWorkerGlobalScope
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerGlobalScope . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerGlobalScope :: IsGObject obj => obj -> WorkerGlobalScope
+castToWorkerGlobalScope = castTo gTypeWorkerGlobalScope "WorkerGlobalScope"
+
+foreign import javascript unsafe "window[\"WorkerGlobalScope\"]" gTypeWorkerGlobalScope' :: JSRef GType
+gTypeWorkerGlobalScope = GType gTypeWorkerGlobalScope'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WorkerLocation }
+
+instance Eq (WorkerLocation) where
+  (WorkerLocation a) == (WorkerLocation b) = js_eq a b
+
+instance PToJSRef WorkerLocation where
+  pToJSRef = unWorkerLocation
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WorkerLocation where
+  pFromJSRef = WorkerLocation
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WorkerLocation where
+  toJSRef = return . unWorkerLocation
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WorkerLocation where
+  fromJSRef = return . fmap WorkerLocation . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WorkerLocation where
+  toGObject = GObject . castRef . unWorkerLocation
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerLocation . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerLocation :: IsGObject obj => obj -> WorkerLocation
+castToWorkerLocation = castTo gTypeWorkerLocation "WorkerLocation"
+
+foreign import javascript unsafe "window[\"WorkerLocation\"]" gTypeWorkerLocation' :: JSRef GType
+gTypeWorkerLocation = GType gTypeWorkerLocation'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef WorkerNavigator }
+
+instance Eq (WorkerNavigator) where
+  (WorkerNavigator a) == (WorkerNavigator b) = js_eq a b
+
+instance PToJSRef WorkerNavigator where
+  pToJSRef = unWorkerNavigator
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef WorkerNavigator where
+  pFromJSRef = WorkerNavigator
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef WorkerNavigator where
+  toJSRef = return . unWorkerNavigator
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef WorkerNavigator where
+  fromJSRef = return . fmap WorkerNavigator . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject WorkerNavigator where
+  toGObject = GObject . castRef . unWorkerNavigator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = WorkerNavigator . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToWorkerNavigator :: IsGObject obj => obj -> WorkerNavigator
+castToWorkerNavigator = castTo gTypeWorkerNavigator "WorkerNavigator"
+
+foreign import javascript unsafe "window[\"WorkerNavigator\"]" gTypeWorkerNavigator' :: JSRef GType
+gTypeWorkerNavigator = GType gTypeWorkerNavigator'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XMLHttpRequest }
+
+instance Eq (XMLHttpRequest) where
+  (XMLHttpRequest a) == (XMLHttpRequest b) = js_eq a b
+
+instance PToJSRef XMLHttpRequest where
+  pToJSRef = unXMLHttpRequest
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XMLHttpRequest where
+  pFromJSRef = XMLHttpRequest
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XMLHttpRequest where
+  toJSRef = return . unXMLHttpRequest
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XMLHttpRequest where
+  fromJSRef = return . fmap XMLHttpRequest . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget XMLHttpRequest
+instance IsGObject XMLHttpRequest where
+  toGObject = GObject . castRef . unXMLHttpRequest
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequest . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequest :: IsGObject obj => obj -> XMLHttpRequest
+castToXMLHttpRequest = castTo gTypeXMLHttpRequest "XMLHttpRequest"
+
+foreign import javascript unsafe "window[\"XMLHttpRequest\"]" gTypeXMLHttpRequest' :: JSRef GType
+gTypeXMLHttpRequest = GType gTypeXMLHttpRequest'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XMLHttpRequestProgressEvent }
+
+instance Eq (XMLHttpRequestProgressEvent) where
+  (XMLHttpRequestProgressEvent a) == (XMLHttpRequestProgressEvent b) = js_eq a b
+
+instance PToJSRef XMLHttpRequestProgressEvent where
+  pToJSRef = unXMLHttpRequestProgressEvent
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XMLHttpRequestProgressEvent where
+  pFromJSRef = XMLHttpRequestProgressEvent
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XMLHttpRequestProgressEvent where
+  toJSRef = return . unXMLHttpRequestProgressEvent
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XMLHttpRequestProgressEvent where
+  fromJSRef = return . fmap XMLHttpRequestProgressEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsProgressEvent XMLHttpRequestProgressEvent
+instance IsEvent XMLHttpRequestProgressEvent
+instance IsGObject XMLHttpRequestProgressEvent where
+  toGObject = GObject . castRef . unXMLHttpRequestProgressEvent
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequestProgressEvent . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequestProgressEvent :: IsGObject obj => obj -> XMLHttpRequestProgressEvent
+castToXMLHttpRequestProgressEvent = castTo gTypeXMLHttpRequestProgressEvent "XMLHttpRequestProgressEvent"
+
+foreign import javascript unsafe "window[\"XMLHttpRequestProgressEvent\"]" gTypeXMLHttpRequestProgressEvent' :: JSRef GType
+gTypeXMLHttpRequestProgressEvent = GType gTypeXMLHttpRequestProgressEvent'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XMLHttpRequestUpload }
+
+instance Eq (XMLHttpRequestUpload) where
+  (XMLHttpRequestUpload a) == (XMLHttpRequestUpload b) = js_eq a b
+
+instance PToJSRef XMLHttpRequestUpload where
+  pToJSRef = unXMLHttpRequestUpload
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XMLHttpRequestUpload where
+  pFromJSRef = XMLHttpRequestUpload
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XMLHttpRequestUpload where
+  toJSRef = return . unXMLHttpRequestUpload
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XMLHttpRequestUpload where
+  fromJSRef = return . fmap XMLHttpRequestUpload . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsEventTarget XMLHttpRequestUpload
+instance IsGObject XMLHttpRequestUpload where
+  toGObject = GObject . castRef . unXMLHttpRequestUpload
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLHttpRequestUpload . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLHttpRequestUpload :: IsGObject obj => obj -> XMLHttpRequestUpload
+castToXMLHttpRequestUpload = castTo gTypeXMLHttpRequestUpload "XMLHttpRequestUpload"
+
+foreign import javascript unsafe "window[\"XMLHttpRequestUpload\"]" gTypeXMLHttpRequestUpload' :: JSRef GType
+gTypeXMLHttpRequestUpload = GType gTypeXMLHttpRequestUpload'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XMLSerializer }
+
+instance Eq (XMLSerializer) where
+  (XMLSerializer a) == (XMLSerializer b) = js_eq a b
+
+instance PToJSRef XMLSerializer where
+  pToJSRef = unXMLSerializer
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XMLSerializer where
+  pFromJSRef = XMLSerializer
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XMLSerializer where
+  toJSRef = return . unXMLSerializer
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XMLSerializer where
+  fromJSRef = return . fmap XMLSerializer . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject XMLSerializer where
+  toGObject = GObject . castRef . unXMLSerializer
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XMLSerializer . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXMLSerializer :: IsGObject obj => obj -> XMLSerializer
+castToXMLSerializer = castTo gTypeXMLSerializer "XMLSerializer"
+
+foreign import javascript unsafe "window[\"XMLSerializer\"]" gTypeXMLSerializer' :: JSRef GType
+gTypeXMLSerializer = GType gTypeXMLSerializer'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XPathEvaluator }
+
+instance Eq (XPathEvaluator) where
+  (XPathEvaluator a) == (XPathEvaluator b) = js_eq a b
+
+instance PToJSRef XPathEvaluator where
+  pToJSRef = unXPathEvaluator
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XPathEvaluator where
+  pFromJSRef = XPathEvaluator
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XPathEvaluator where
+  toJSRef = return . unXPathEvaluator
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XPathEvaluator where
+  fromJSRef = return . fmap XPathEvaluator . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject XPathEvaluator where
+  toGObject = GObject . castRef . unXPathEvaluator
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathEvaluator . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathEvaluator :: IsGObject obj => obj -> XPathEvaluator
+castToXPathEvaluator = castTo gTypeXPathEvaluator "XPathEvaluator"
+
+foreign import javascript unsafe "window[\"XPathEvaluator\"]" gTypeXPathEvaluator' :: JSRef GType
+gTypeXPathEvaluator = GType gTypeXPathEvaluator'
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XPathExpression }
+
+instance Eq (XPathExpression) where
+  (XPathExpression a) == (XPathExpression b) = js_eq a b
+
+instance PToJSRef XPathExpression where
+  pToJSRef = unXPathExpression
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XPathExpression where
+  pFromJSRef = XPathExpression
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XPathExpression where
+  toJSRef = return . unXPathExpression
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XPathExpression where
+  fromJSRef = return . fmap XPathExpression . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject XPathExpression where
+  toGObject = GObject . castRef . unXPathExpression
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathExpression . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathExpression :: IsGObject obj => obj -> XPathExpression
+castToXPathExpression = castTo gTypeXPathExpression "XPathExpression"
+
+foreign import javascript unsafe "window[\"XPathExpression\"]" gTypeXPathExpression' :: JSRef GType
+gTypeXPathExpression = GType gTypeXPathExpression'
+#else
+type IsXPathExpression o = XPathExpressionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XPathNSResolver }
+
+instance Eq (XPathNSResolver) where
+  (XPathNSResolver a) == (XPathNSResolver b) = js_eq a b
+
+instance PToJSRef XPathNSResolver where
+  pToJSRef = unXPathNSResolver
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XPathNSResolver where
+  pFromJSRef = XPathNSResolver
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XPathNSResolver where
+  toJSRef = return . unXPathNSResolver
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XPathNSResolver where
+  fromJSRef = return . fmap XPathNSResolver . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject XPathNSResolver where
+  toGObject = GObject . castRef . unXPathNSResolver
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathNSResolver . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathNSResolver :: IsGObject obj => obj -> XPathNSResolver
+castToXPathNSResolver = castTo gTypeXPathNSResolver "XPathNSResolver"
+
+foreign import javascript unsafe "window[\"XPathNSResolver\"]" gTypeXPathNSResolver' :: JSRef GType
+gTypeXPathNSResolver = GType gTypeXPathNSResolver'
+#else
+type IsXPathNSResolver o = XPathNSResolverClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XPathResult }
+
+instance Eq (XPathResult) where
+  (XPathResult a) == (XPathResult b) = js_eq a b
+
+instance PToJSRef XPathResult where
+  pToJSRef = unXPathResult
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XPathResult where
+  pFromJSRef = XPathResult
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XPathResult where
+  toJSRef = return . unXPathResult
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XPathResult where
+  fromJSRef = return . fmap XPathResult . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject XPathResult where
+  toGObject = GObject . castRef . unXPathResult
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XPathResult . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXPathResult :: IsGObject obj => obj -> XPathResult
+castToXPathResult = castTo gTypeXPathResult "XPathResult"
+
+foreign import javascript unsafe "window[\"XPathResult\"]" gTypeXPathResult' :: JSRef GType
+gTypeXPathResult = GType gTypeXPathResult'
+#else
+type IsXPathResult o = XPathResultClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | 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 :: JSRef XSLTProcessor }
+
+instance Eq (XSLTProcessor) where
+  (XSLTProcessor a) == (XSLTProcessor b) = js_eq a b
+
+instance PToJSRef XSLTProcessor where
+  pToJSRef = unXSLTProcessor
+  {-# INLINE pToJSRef #-}
+
+instance PFromJSRef XSLTProcessor where
+  pFromJSRef = XSLTProcessor
+  {-# INLINE pFromJSRef #-}
+
+instance ToJSRef XSLTProcessor where
+  toJSRef = return . unXSLTProcessor
+  {-# INLINE toJSRef #-}
+
+instance FromJSRef XSLTProcessor where
+  fromJSRef = return . fmap XSLTProcessor . maybeJSNullOrUndefined
+  {-# INLINE fromJSRef #-}
+
+instance IsGObject XSLTProcessor where
+  toGObject = GObject . castRef . unXSLTProcessor
+  {-# INLINE toGObject #-}
+  unsafeCastGObject = XSLTProcessor . castRef . unGObject
+  {-# INLINE unsafeCastGObject #-}
+
+castToXSLTProcessor :: IsGObject obj => obj -> XSLTProcessor
+castToXSLTProcessor = castTo gTypeXSLTProcessor "XSLTProcessor"
+
+foreign import javascript unsafe "window[\"XSLTProcessor\"]" gTypeXSLTProcessor' :: JSRef GType
+gTypeXSLTProcessor = GType gTypeXSLTProcessor'
 #endif
 
 
diff --git a/src/GHCJS/DOM/UIEvent.hs b/src/GHCJS/DOM/UIEvent.hs
--- a/src/GHCJS/DOM/UIEvent.hs
+++ b/src/GHCJS/DOM/UIEvent.hs
@@ -1,112 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.UIEvent (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.UIEvent
-       (ghcjs_dom_ui_event_init_ui_event, uiEventInitUIEvent,
-        ghcjs_dom_ui_event_get_view, uiEventGetView,
-        ghcjs_dom_ui_event_get_detail, uiEventGetDetail,
-        ghcjs_dom_ui_event_get_key_code, uiEventGetKeyCode,
-        ghcjs_dom_ui_event_get_char_code, uiEventGetCharCode,
-        ghcjs_dom_ui_event_get_layer_x, uiEventGetLayerX,
-        ghcjs_dom_ui_event_get_layer_y, uiEventGetLayerY,
-        ghcjs_dom_ui_event_get_page_x, uiEventGetPageX,
-        ghcjs_dom_ui_event_get_page_y, uiEventGetPageY,
-        ghcjs_dom_ui_event_get_which, uiEventGetWhich, UIEvent, IsUIEvent,
-        castToUIEvent, gTypeUIEvent, toUIEvent)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-
- 
-foreign import javascript unsafe
-        "$1[\"initUIEvent\"]($2, $3, $4,\n$5, $6)"
-        ghcjs_dom_ui_event_init_ui_event ::
-        JSRef UIEvent ->
-          JSString -> Bool -> Bool -> JSRef DOMWindow -> Int -> IO ()
- 
-uiEventInitUIEvent ::
-                   (IsUIEvent self, ToJSString type', IsDOMWindow view) =>
-                     self -> type' -> Bool -> Bool -> Maybe view -> Int -> IO ()
-uiEventInitUIEvent self type' canBubble cancelable view detail
-  = ghcjs_dom_ui_event_init_ui_event (unUIEvent (toUIEvent self))
-      (toJSString type')
-      canBubble
-      cancelable
-      (maybe jsNull (unDOMWindow . toDOMWindow) view)
-      detail
- 
-foreign import javascript unsafe "$1[\"view\"]"
-        ghcjs_dom_ui_event_get_view ::
-        JSRef UIEvent -> IO (JSRef DOMWindow)
- 
-uiEventGetView :: (IsUIEvent self) => self -> IO (Maybe DOMWindow)
-uiEventGetView self
-  = fmap DOMWindow . maybeJSNull <$>
-      (ghcjs_dom_ui_event_get_view (unUIEvent (toUIEvent self)))
- 
-foreign import javascript unsafe "$1[\"detail\"]"
-        ghcjs_dom_ui_event_get_detail :: JSRef UIEvent -> IO Int
- 
-uiEventGetDetail :: (IsUIEvent self) => self -> IO Int
-uiEventGetDetail self
-  = ghcjs_dom_ui_event_get_detail (unUIEvent (toUIEvent self))
- 
-foreign import javascript unsafe "$1[\"keyCode\"]"
-        ghcjs_dom_ui_event_get_key_code :: JSRef UIEvent -> IO Int
- 
-uiEventGetKeyCode :: (IsUIEvent self) => self -> IO Int
-uiEventGetKeyCode self
-  = ghcjs_dom_ui_event_get_key_code (unUIEvent (toUIEvent self))
- 
-foreign import javascript unsafe "$1[\"charCode\"]"
-        ghcjs_dom_ui_event_get_char_code :: JSRef UIEvent -> IO Int
- 
-uiEventGetCharCode :: (IsUIEvent self) => self -> IO Int
-uiEventGetCharCode self
-  = ghcjs_dom_ui_event_get_char_code (unUIEvent (toUIEvent self))
- 
-foreign import javascript unsafe "$1[\"layerX\"]"
-        ghcjs_dom_ui_event_get_layer_x :: JSRef UIEvent -> IO Int
- 
-uiEventGetLayerX :: (IsUIEvent self) => self -> IO Int
-uiEventGetLayerX self
-  = ghcjs_dom_ui_event_get_layer_x (unUIEvent (toUIEvent self))
- 
-foreign import javascript unsafe "$1[\"layerY\"]"
-        ghcjs_dom_ui_event_get_layer_y :: JSRef UIEvent -> IO Int
- 
-uiEventGetLayerY :: (IsUIEvent self) => self -> IO Int
-uiEventGetLayerY self
-  = ghcjs_dom_ui_event_get_layer_y (unUIEvent (toUIEvent self))
- 
-foreign import javascript unsafe "$1[\"pageX\"]"
-        ghcjs_dom_ui_event_get_page_x :: JSRef UIEvent -> IO Int
- 
-uiEventGetPageX :: (IsUIEvent self) => self -> IO Int
-uiEventGetPageX self
-  = ghcjs_dom_ui_event_get_page_x (unUIEvent (toUIEvent self))
- 
-foreign import javascript unsafe "$1[\"pageY\"]"
-        ghcjs_dom_ui_event_get_page_y :: JSRef UIEvent -> IO Int
- 
-uiEventGetPageY :: (IsUIEvent self) => self -> IO Int
-uiEventGetPageY self
-  = ghcjs_dom_ui_event_get_page_y (unUIEvent (toUIEvent self))
- 
-foreign import javascript unsafe "$1[\"which\"]"
-        ghcjs_dom_ui_event_get_which :: JSRef UIEvent -> IO Int
- 
-uiEventGetWhich :: (IsUIEvent self) => self -> IO Int
-uiEventGetWhich self
-  = ghcjs_dom_ui_event_get_which (unUIEvent (toUIEvent self))
+  module GHCJS.DOM.JSFFI.Generated.UIEvent
 #else
-module GHCJS.DOM.UIEvent (
   module Graphics.UI.Gtk.WebKit.DOM.UIEvent
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.UIEvent
+#else
 import Graphics.UI.Gtk.WebKit.DOM.UIEvent
 #endif
diff --git a/src/GHCJS/DOM/UIRequestEvent.hs b/src/GHCJS/DOM/UIRequestEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/UIRequestEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.UIRequestEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.UIRequestEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.UIRequestEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/URL.hs b/src/GHCJS/DOM/URL.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/URL.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.URL (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.URL
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.URL
+#else
+#endif
diff --git a/src/GHCJS/DOM/URLUtils.hs b/src/GHCJS/DOM/URLUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/URLUtils.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.URLUtils (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.URLUtils
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.URLUtils
+#else
+#endif
diff --git a/src/GHCJS/DOM/UserMessageHandler.hs b/src/GHCJS/DOM/UserMessageHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/UserMessageHandler.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.UserMessageHandler (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.UserMessageHandler
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.UserMessageHandler
+#else
+#endif
diff --git a/src/GHCJS/DOM/VTTCue.hs b/src/GHCJS/DOM/VTTCue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/VTTCue.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.VTTCue (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.VTTCue
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.VTTCue
+#else
+#endif
diff --git a/src/GHCJS/DOM/VTTRegion.hs b/src/GHCJS/DOM/VTTRegion.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/VTTRegion.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.VTTRegion (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.VTTRegion
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.VTTRegion
+#else
+#endif
diff --git a/src/GHCJS/DOM/VTTRegionList.hs b/src/GHCJS/DOM/VTTRegionList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/VTTRegionList.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.VTTRegionList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.VTTRegionList
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.VTTRegionList
+#else
+#endif
diff --git a/src/GHCJS/DOM/ValidityState.hs b/src/GHCJS/DOM/ValidityState.hs
--- a/src/GHCJS/DOM/ValidityState.hs
+++ b/src/GHCJS/DOM/ValidityState.hs
@@ -1,138 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.ValidityState (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.ValidityState
-       (ghcjs_dom_validity_state_get_value_missing,
-        validityStateGetValueMissing,
-        ghcjs_dom_validity_state_get_type_mismatch,
-        validityStateGetTypeMismatch,
-        ghcjs_dom_validity_state_get_pattern_mismatch,
-        validityStateGetPatternMismatch,
-        ghcjs_dom_validity_state_get_too_long, validityStateGetTooLong,
-        ghcjs_dom_validity_state_get_range_underflow,
-        validityStateGetRangeUnderflow,
-        ghcjs_dom_validity_state_get_range_overflow,
-        validityStateGetRangeOverflow,
-        ghcjs_dom_validity_state_get_step_mismatch,
-        validityStateGetStepMismatch,
-        ghcjs_dom_validity_state_get_bad_input, validityStateGetBadInput,
-        ghcjs_dom_validity_state_get_custom_error,
-        validityStateGetCustomError, ghcjs_dom_validity_state_get_valid,
-        validityStateGetValid, ValidityState, IsValidityState,
-        castToValidityState, gTypeValidityState, toValidityState)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "($1[\"valueMissing\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_value_missing ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetValueMissing ::
-                             (IsValidityState self) => self -> IO Bool
-validityStateGetValueMissing self
-  = ghcjs_dom_validity_state_get_value_missing
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe "($1[\"typeMismatch\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_type_mismatch ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetTypeMismatch ::
-                             (IsValidityState self) => self -> IO Bool
-validityStateGetTypeMismatch self
-  = ghcjs_dom_validity_state_get_type_mismatch
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe
-        "($1[\"patternMismatch\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_pattern_mismatch ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetPatternMismatch ::
-                                (IsValidityState self) => self -> IO Bool
-validityStateGetPatternMismatch self
-  = ghcjs_dom_validity_state_get_pattern_mismatch
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe "($1[\"tooLong\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_too_long ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetTooLong ::
-                        (IsValidityState self) => self -> IO Bool
-validityStateGetTooLong self
-  = ghcjs_dom_validity_state_get_too_long
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe "($1[\"rangeUnderflow\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_range_underflow ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetRangeUnderflow ::
-                               (IsValidityState self) => self -> IO Bool
-validityStateGetRangeUnderflow self
-  = ghcjs_dom_validity_state_get_range_underflow
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe "($1[\"rangeOverflow\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_range_overflow ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetRangeOverflow ::
-                              (IsValidityState self) => self -> IO Bool
-validityStateGetRangeOverflow self
-  = ghcjs_dom_validity_state_get_range_overflow
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe "($1[\"stepMismatch\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_step_mismatch ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetStepMismatch ::
-                             (IsValidityState self) => self -> IO Bool
-validityStateGetStepMismatch self
-  = ghcjs_dom_validity_state_get_step_mismatch
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe "($1[\"badInput\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_bad_input ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetBadInput ::
-                         (IsValidityState self) => self -> IO Bool
-validityStateGetBadInput self
-  = ghcjs_dom_validity_state_get_bad_input
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe "($1[\"customError\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_custom_error ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetCustomError ::
-                            (IsValidityState self) => self -> IO Bool
-validityStateGetCustomError self
-  = ghcjs_dom_validity_state_get_custom_error
-      (unValidityState (toValidityState self))
- 
-foreign import javascript unsafe "($1[\"valid\"] ? 1 : 0)"
-        ghcjs_dom_validity_state_get_valid ::
-        JSRef ValidityState -> IO Bool
- 
-validityStateGetValid :: (IsValidityState self) => self -> IO Bool
-validityStateGetValid self
-  = ghcjs_dom_validity_state_get_valid
-      (unValidityState (toValidityState self))
+  module GHCJS.DOM.JSFFI.Generated.ValidityState
 #else
-module GHCJS.DOM.ValidityState (
   module Graphics.UI.Gtk.WebKit.DOM.ValidityState
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.ValidityState
+#else
 import Graphics.UI.Gtk.WebKit.DOM.ValidityState
 #endif
diff --git a/src/GHCJS/DOM/VideoPlaybackQuality.hs b/src/GHCJS/DOM/VideoPlaybackQuality.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/VideoPlaybackQuality.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.VideoPlaybackQuality (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality
+#else
+#endif
diff --git a/src/GHCJS/DOM/VideoStreamTrack.hs b/src/GHCJS/DOM/VideoStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/VideoStreamTrack.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.VideoStreamTrack (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.VideoStreamTrack
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.VideoStreamTrack
+#else
+#endif
diff --git a/src/GHCJS/DOM/VideoTrack.hs b/src/GHCJS/DOM/VideoTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/VideoTrack.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.VideoTrack (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.VideoTrack
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.VideoTrack
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.VideoTrack
+#else
+import Graphics.UI.Gtk.WebKit.DOM.VideoTrack
+#endif
diff --git a/src/GHCJS/DOM/VideoTrackList.hs b/src/GHCJS/DOM/VideoTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/VideoTrackList.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.VideoTrackList (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.VideoTrackList
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.VideoTrackList
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.VideoTrackList
+#else
+import Graphics.UI.Gtk.WebKit.DOM.VideoTrackList
+#endif
diff --git a/src/GHCJS/DOM/VoidCallback.hs b/src/GHCJS/DOM/VoidCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/VoidCallback.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.VoidCallback (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.VoidCallback
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.VoidCallback
+#else
+#endif
diff --git a/src/GHCJS/DOM/WaveShaperNode.hs b/src/GHCJS/DOM/WaveShaperNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WaveShaperNode.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WaveShaperNode (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WaveShaperNode
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WaveShaperNode
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGL2RenderingContext.hs b/src/GHCJS/DOM/WebGL2RenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGL2RenderingContext.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGL2RenderingContext (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLActiveInfo.hs b/src/GHCJS/DOM/WebGLActiveInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLActiveInfo.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLActiveInfo (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLCompressedTextureATC.hs b/src/GHCJS/DOM/WebGLCompressedTextureATC.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLCompressedTextureATC.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLCompressedTextureATC (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureATC
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureATC
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLCompressedTexturePVRTC.hs b/src/GHCJS/DOM/WebGLCompressedTexturePVRTC.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLCompressedTexturePVRTC.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLCompressedTexturePVRTC (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTexturePVRTC
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLCompressedTexturePVRTC
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLCompressedTextureS3TC.hs b/src/GHCJS/DOM/WebGLCompressedTextureS3TC.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLCompressedTextureS3TC.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLCompressedTextureS3TC (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureS3TC
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureS3TC
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLContextAttributes.hs b/src/GHCJS/DOM/WebGLContextAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLContextAttributes.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLContextAttributes (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLContextAttributes
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLContextAttributes
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLContextEvent.hs b/src/GHCJS/DOM/WebGLContextEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLContextEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLContextEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLContextEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLContextEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLDebugRendererInfo.hs b/src/GHCJS/DOM/WebGLDebugRendererInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLDebugRendererInfo.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLDebugRendererInfo (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLDebugShaders.hs b/src/GHCJS/DOM/WebGLDebugShaders.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLDebugShaders.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLDebugShaders (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLDepthTexture.hs b/src/GHCJS/DOM/WebGLDepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLDepthTexture.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLDepthTexture (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLDrawBuffers.hs b/src/GHCJS/DOM/WebGLDrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLDrawBuffers.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLDrawBuffers (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLDrawBuffers
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLDrawBuffers
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLLoseContext.hs b/src/GHCJS/DOM/WebGLLoseContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLLoseContext.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLLoseContext (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLLoseContext
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLLoseContext
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLRenderingContextBase.hs b/src/GHCJS/DOM/WebGLRenderingContextBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLRenderingContextBase.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLRenderingContextBase (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebGLShaderPrecisionFormat.hs b/src/GHCJS/DOM/WebGLShaderPrecisionFormat.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebGLShaderPrecisionFormat.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebGLShaderPrecisionFormat (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitAnimationEvent.hs b/src/GHCJS/DOM/WebKitAnimationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitAnimationEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitAnimationEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitCSSFilterValue.hs b/src/GHCJS/DOM/WebKitCSSFilterValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitCSSFilterValue.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitCSSFilterValue (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitCSSFilterValue
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitCSSFilterValue
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitCSSMatrix.hs b/src/GHCJS/DOM/WebKitCSSMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitCSSMatrix.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitCSSMatrix (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitCSSRegionRule.hs b/src/GHCJS/DOM/WebKitCSSRegionRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitCSSRegionRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitCSSRegionRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitCSSTransformValue.hs b/src/GHCJS/DOM/WebKitCSSTransformValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitCSSTransformValue.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitCSSTransformValue (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitCSSTransformValue
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitCSSTransformValue
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitCSSViewportRule.hs b/src/GHCJS/DOM/WebKitCSSViewportRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitCSSViewportRule.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitCSSViewportRule (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitNamedFlow.hs b/src/GHCJS/DOM/WebKitNamedFlow.hs
--- a/src/GHCJS/DOM/WebKitNamedFlow.hs
+++ b/src/GHCJS/DOM/WebKitNamedFlow.hs
@@ -1,111 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitNamedFlow (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.WebKitNamedFlow
-       (ghcjs_dom_webkit_named_flow_get_regions_by_content,
-        webKitNamedFlowGetRegionsByContent,
-        ghcjs_dom_webkit_named_flow_get_regions, webKitNamedFlowGetRegions,
-        ghcjs_dom_webkit_named_flow_get_content, webKitNamedFlowGetContent,
-        ghcjs_dom_webkit_named_flow_dispatch_event,
-        webKitNamedFlowDispatchEvent, ghcjs_dom_webkit_named_flow_get_name,
-        webKitNamedFlowGetName, ghcjs_dom_webkit_named_flow_get_overset,
-        webKitNamedFlowGetOverset,
-        ghcjs_dom_webkit_named_flow_get_first_empty_region_index,
-        webKitNamedFlowGetFirstEmptyRegionIndex, WebKitNamedFlow,
-        IsWebKitNamedFlow, castToWebKitNamedFlow, gTypeWebKitNamedFlow,
-        toWebKitNamedFlow)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"getRegionsByContent\"]($2)"
-        ghcjs_dom_webkit_named_flow_get_regions_by_content ::
-        JSRef WebKitNamedFlow -> JSRef Node -> IO (JSRef NodeList)
- 
-webKitNamedFlowGetRegionsByContent ::
-                                   (IsWebKitNamedFlow self, IsNode contentNode) =>
-                                     self -> Maybe contentNode -> IO (Maybe NodeList)
-webKitNamedFlowGetRegionsByContent self contentNode
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_webkit_named_flow_get_regions_by_content
-         (unWebKitNamedFlow (toWebKitNamedFlow self))
-         (maybe jsNull (unNode . toNode) contentNode))
- 
-foreign import javascript unsafe "$1[\"getRegions\"]()"
-        ghcjs_dom_webkit_named_flow_get_regions ::
-        JSRef WebKitNamedFlow -> IO (JSRef NodeList)
- 
-webKitNamedFlowGetRegions ::
-                          (IsWebKitNamedFlow self) => self -> IO (Maybe NodeList)
-webKitNamedFlowGetRegions self
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_webkit_named_flow_get_regions
-         (unWebKitNamedFlow (toWebKitNamedFlow self)))
- 
-foreign import javascript unsafe "$1[\"getContent\"]()"
-        ghcjs_dom_webkit_named_flow_get_content ::
-        JSRef WebKitNamedFlow -> IO (JSRef NodeList)
- 
-webKitNamedFlowGetContent ::
-                          (IsWebKitNamedFlow self) => self -> IO (Maybe NodeList)
-webKitNamedFlowGetContent self
-  = fmap NodeList . maybeJSNull <$>
-      (ghcjs_dom_webkit_named_flow_get_content
-         (unWebKitNamedFlow (toWebKitNamedFlow self)))
- 
-foreign import javascript unsafe
-        "($1[\"dispatchEvent\"]($2) ? 1 : 0)"
-        ghcjs_dom_webkit_named_flow_dispatch_event ::
-        JSRef WebKitNamedFlow -> JSRef Event -> IO Bool
- 
-webKitNamedFlowDispatchEvent ::
-                             (IsWebKitNamedFlow self, IsEvent event) =>
-                               self -> Maybe event -> IO Bool
-webKitNamedFlowDispatchEvent self event
-  = ghcjs_dom_webkit_named_flow_dispatch_event
-      (unWebKitNamedFlow (toWebKitNamedFlow self))
-      (maybe jsNull (unEvent . toEvent) event)
- 
-foreign import javascript unsafe "$1[\"name\"]"
-        ghcjs_dom_webkit_named_flow_get_name ::
-        JSRef WebKitNamedFlow -> IO JSString
- 
-webKitNamedFlowGetName ::
-                       (IsWebKitNamedFlow self, FromJSString result) => self -> IO result
-webKitNamedFlowGetName self
-  = fromJSString <$>
-      (ghcjs_dom_webkit_named_flow_get_name
-         (unWebKitNamedFlow (toWebKitNamedFlow self)))
- 
-foreign import javascript unsafe "($1[\"overset\"] ? 1 : 0)"
-        ghcjs_dom_webkit_named_flow_get_overset ::
-        JSRef WebKitNamedFlow -> IO Bool
- 
-webKitNamedFlowGetOverset ::
-                          (IsWebKitNamedFlow self) => self -> IO Bool
-webKitNamedFlowGetOverset self
-  = ghcjs_dom_webkit_named_flow_get_overset
-      (unWebKitNamedFlow (toWebKitNamedFlow self))
- 
-foreign import javascript unsafe "$1[\"firstEmptyRegionIndex\"]"
-        ghcjs_dom_webkit_named_flow_get_first_empty_region_index ::
-        JSRef WebKitNamedFlow -> IO Int
- 
-webKitNamedFlowGetFirstEmptyRegionIndex ::
-                                        (IsWebKitNamedFlow self) => self -> IO Int
-webKitNamedFlowGetFirstEmptyRegionIndex self
-  = ghcjs_dom_webkit_named_flow_get_first_empty_region_index
-      (unWebKitNamedFlow (toWebKitNamedFlow self))
+  module GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow
 #else
-module GHCJS.DOM.WebKitNamedFlow (
   module Graphics.UI.Gtk.WebKit.DOM.WebKitNamedFlow
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow
+#else
 import Graphics.UI.Gtk.WebKit.DOM.WebKitNamedFlow
 #endif
diff --git a/src/GHCJS/DOM/WebKitNamespace.hs b/src/GHCJS/DOM/WebKitNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitNamespace.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitNamespace (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitNamespace
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitNamespace
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitPlaybackTargetAvailabilityEvent.hs b/src/GHCJS/DOM/WebKitPlaybackTargetAvailabilityEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitPlaybackTargetAvailabilityEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitPlaybackTargetAvailabilityEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebKitPoint.hs b/src/GHCJS/DOM/WebKitPoint.hs
--- a/src/GHCJS/DOM/WebKitPoint.hs
+++ b/src/GHCJS/DOM/WebKitPoint.hs
@@ -1,55 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitPoint (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.WebKitPoint
-       (ghcjs_dom_webkit_point_set_x, webKitPointSetX,
-        ghcjs_dom_webkit_point_get_x, webKitPointGetX,
-        ghcjs_dom_webkit_point_set_y, webKitPointSetY,
-        ghcjs_dom_webkit_point_get_y, webKitPointGetY, WebKitPoint,
-        IsWebKitPoint, castToWebKitPoint, gTypeWebKitPoint, toWebKitPoint)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"x\"] = $2;"
-        ghcjs_dom_webkit_point_set_x :: JSRef WebKitPoint -> Float -> IO ()
- 
-webKitPointSetX :: (IsWebKitPoint self) => self -> Float -> IO ()
-webKitPointSetX self val
-  = ghcjs_dom_webkit_point_set_x (unWebKitPoint (toWebKitPoint self))
-      val
- 
-foreign import javascript unsafe "$1[\"x\"]"
-        ghcjs_dom_webkit_point_get_x :: JSRef WebKitPoint -> IO Float
- 
-webKitPointGetX :: (IsWebKitPoint self) => self -> IO Float
-webKitPointGetX self
-  = ghcjs_dom_webkit_point_get_x (unWebKitPoint (toWebKitPoint self))
- 
-foreign import javascript unsafe "$1[\"y\"] = $2;"
-        ghcjs_dom_webkit_point_set_y :: JSRef WebKitPoint -> Float -> IO ()
- 
-webKitPointSetY :: (IsWebKitPoint self) => self -> Float -> IO ()
-webKitPointSetY self val
-  = ghcjs_dom_webkit_point_set_y (unWebKitPoint (toWebKitPoint self))
-      val
- 
-foreign import javascript unsafe "$1[\"y\"]"
-        ghcjs_dom_webkit_point_get_y :: JSRef WebKitPoint -> IO Float
- 
-webKitPointGetY :: (IsWebKitPoint self) => self -> IO Float
-webKitPointGetY self
-  = ghcjs_dom_webkit_point_get_y (unWebKitPoint (toWebKitPoint self))
+  module GHCJS.DOM.JSFFI.Generated.WebKitPoint
 #else
-module GHCJS.DOM.WebKitPoint (
   module Graphics.UI.Gtk.WebKit.DOM.WebKitPoint
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitPoint
+#else
 import Graphics.UI.Gtk.WebKit.DOM.WebKitPoint
 #endif
diff --git a/src/GHCJS/DOM/WebKitTransitionEvent.hs b/src/GHCJS/DOM/WebKitTransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebKitTransitionEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebKitTransitionEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/WebSocket.hs b/src/GHCJS/DOM/WebSocket.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WebSocket.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WebSocket (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WebSocket
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WebSocket
+#else
+#endif
diff --git a/src/GHCJS/DOM/WheelEvent.hs b/src/GHCJS/DOM/WheelEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WheelEvent.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WheelEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WheelEvent
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.WheelEvent
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WheelEvent
+#else
+import Graphics.UI.Gtk.WebKit.DOM.WheelEvent
+#endif
diff --git a/src/GHCJS/DOM/Window.hs b/src/GHCJS/DOM/Window.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Window.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Window (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Window
+#else
+  module Graphics.UI.Gtk.WebKit.DOM.Window
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Window
+#else
+import Graphics.UI.Gtk.WebKit.DOM.Window
+#endif
diff --git a/src/GHCJS/DOM/WindowBase64.hs b/src/GHCJS/DOM/WindowBase64.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WindowBase64.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WindowBase64 (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WindowBase64
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WindowBase64
+#else
+#endif
diff --git a/src/GHCJS/DOM/WindowTimers.hs b/src/GHCJS/DOM/WindowTimers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WindowTimers.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WindowTimers (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WindowTimers
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WindowTimers
+#else
+#endif
diff --git a/src/GHCJS/DOM/Worker.hs b/src/GHCJS/DOM/Worker.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Worker.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.Worker (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.Worker
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.Worker
+#else
+#endif
diff --git a/src/GHCJS/DOM/WorkerGlobalScope.hs b/src/GHCJS/DOM/WorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WorkerGlobalScope.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WorkerGlobalScope (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
+#else
+#endif
diff --git a/src/GHCJS/DOM/WorkerLocation.hs b/src/GHCJS/DOM/WorkerLocation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WorkerLocation.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WorkerLocation (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WorkerLocation
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WorkerLocation
+#else
+#endif
diff --git a/src/GHCJS/DOM/WorkerNavigator.hs b/src/GHCJS/DOM/WorkerNavigator.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/WorkerNavigator.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.WorkerNavigator (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.WorkerNavigator
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.WorkerNavigator
+#else
+#endif
diff --git a/src/GHCJS/DOM/XMLHttpRequest.hs b/src/GHCJS/DOM/XMLHttpRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/XMLHttpRequest.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.XMLHttpRequest (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.XMLHttpRequest
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.XMLHttpRequest
+#else
+#endif
diff --git a/src/GHCJS/DOM/XMLHttpRequestProgressEvent.hs b/src/GHCJS/DOM/XMLHttpRequestProgressEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/XMLHttpRequestProgressEvent.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.XMLHttpRequestProgressEvent (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent
+#else
+#endif
diff --git a/src/GHCJS/DOM/XMLHttpRequestUpload.hs b/src/GHCJS/DOM/XMLHttpRequestUpload.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/XMLHttpRequestUpload.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.XMLHttpRequestUpload (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestUpload
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.XMLHttpRequestUpload
+#else
+#endif
diff --git a/src/GHCJS/DOM/XMLSerializer.hs b/src/GHCJS/DOM/XMLSerializer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/XMLSerializer.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.XMLSerializer (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.XMLSerializer
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.XMLSerializer
+#else
+#endif
diff --git a/src/GHCJS/DOM/XPathEvaluator.hs b/src/GHCJS/DOM/XPathEvaluator.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/XPathEvaluator.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.XPathEvaluator (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.XPathEvaluator
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.XPathEvaluator
+#else
+#endif
diff --git a/src/GHCJS/DOM/XPathExpression.hs b/src/GHCJS/DOM/XPathExpression.hs
--- a/src/GHCJS/DOM/XPathExpression.hs
+++ b/src/GHCJS/DOM/XPathExpression.hs
@@ -1,42 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.XPathExpression (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.XPathExpression
-       (ghcjs_dom_xpath_expression_evaluate, xPathExpressionEvaluate,
-        XPathExpression, IsXPathExpression, castToXPathExpression,
-        gTypeXPathExpression, toXPathExpression)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"evaluate\"]($2, $3, $4)"
-        ghcjs_dom_xpath_expression_evaluate ::
-        JSRef XPathExpression ->
-          JSRef Node -> Word -> JSRef XPathResult -> IO (JSRef XPathResult)
- 
-xPathExpressionEvaluate ::
-                        (IsXPathExpression self, IsNode contextNode,
-                         IsXPathResult inResult) =>
-                          self ->
-                            Maybe contextNode ->
-                              Word -> Maybe inResult -> IO (Maybe XPathResult)
-xPathExpressionEvaluate self contextNode type' inResult
-  = fmap XPathResult . maybeJSNull <$>
-      (ghcjs_dom_xpath_expression_evaluate
-         (unXPathExpression (toXPathExpression self))
-         (maybe jsNull (unNode . toNode) contextNode)
-         type'
-         (maybe jsNull (unXPathResult . toXPathResult) inResult))
+  module GHCJS.DOM.JSFFI.Generated.XPathExpression
 #else
-module GHCJS.DOM.XPathExpression (
   module Graphics.UI.Gtk.WebKit.DOM.XPathExpression
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.XPathExpression
+#else
 import Graphics.UI.Gtk.WebKit.DOM.XPathExpression
 #endif
diff --git a/src/GHCJS/DOM/XPathNSResolver.hs b/src/GHCJS/DOM/XPathNSResolver.hs
--- a/src/GHCJS/DOM/XPathNSResolver.hs
+++ b/src/GHCJS/DOM/XPathNSResolver.hs
@@ -1,38 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.XPathNSResolver (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.XPathNSResolver
-       (ghcjs_dom_xpath_ns_resolver_lookup_namespace_uri,
-        xPathNSResolverLookupNamespaceURI, XPathNSResolver,
-        IsXPathNSResolver, castToXPathNSResolver, gTypeXPathNSResolver,
-        toXPathNSResolver)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"lookupNamespaceURI\"]($2)"
-        ghcjs_dom_xpath_ns_resolver_lookup_namespace_uri ::
-        JSRef XPathNSResolver -> JSString -> IO JSString
- 
-xPathNSResolverLookupNamespaceURI ::
-                                  (IsXPathNSResolver self, ToJSString prefix,
-                                   FromJSString result) =>
-                                    self -> prefix -> IO result
-xPathNSResolverLookupNamespaceURI self prefix
-  = fromJSString <$>
-      (ghcjs_dom_xpath_ns_resolver_lookup_namespace_uri
-         (unXPathNSResolver (toXPathNSResolver self))
-         (toJSString prefix))
+  module GHCJS.DOM.JSFFI.Generated.XPathNSResolver
 #else
-module GHCJS.DOM.XPathNSResolver (
   module Graphics.UI.Gtk.WebKit.DOM.XPathNSResolver
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.XPathNSResolver
+#else
 import Graphics.UI.Gtk.WebKit.DOM.XPathNSResolver
 #endif
diff --git a/src/GHCJS/DOM/XPathResult.hs b/src/GHCJS/DOM/XPathResult.hs
--- a/src/GHCJS/DOM/XPathResult.hs
+++ b/src/GHCJS/DOM/XPathResult.hs
@@ -1,143 +1,13 @@
 {-# LANGUAGE CPP #-}
+module GHCJS.DOM.XPathResult (
 #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
-module GHCJS.DOM.XPathResult
-       (ghcjs_dom_xpath_result_iterate_next, xPathResultIterateNext,
-        ghcjs_dom_xpath_result_snapshot_item, xPathResultSnapshotItem,
-        cANY_TYPE, cNUMBER_TYPE, cSTRING_TYPE, cBOOLEAN_TYPE,
-        cUNORDERED_NODE_ITERATOR_TYPE, cORDERED_NODE_ITERATOR_TYPE,
-        cUNORDERED_NODE_SNAPSHOT_TYPE, cORDERED_NODE_SNAPSHOT_TYPE,
-        cANY_UNORDERED_NODE_TYPE, cFIRST_ORDERED_NODE_TYPE,
-        ghcjs_dom_xpath_result_get_result_type, xPathResultGetResultType,
-        ghcjs_dom_xpath_result_get_number_value, xPathResultGetNumberValue,
-        ghcjs_dom_xpath_result_get_string_value, xPathResultGetStringValue,
-        ghcjs_dom_xpath_result_get_boolean_value,
-        xPathResultGetBooleanValue,
-        ghcjs_dom_xpath_result_get_single_node_value,
-        xPathResultGetSingleNodeValue,
-        ghcjs_dom_xpath_result_get_invalid_iterator_state,
-        xPathResultGetInvalidIteratorState,
-        ghcjs_dom_xpath_result_get_snapshot_length,
-        xPathResultGetSnapshotLength, XPathResult, IsXPathResult,
-        castToXPathResult, gTypeXPathResult, toXPathResult)
-       where
-import GHCJS.Types
-import GHCJS.Foreign
-import GHCJS.Marshal
-import Data.Int
-import Data.Word
-import GHCJS.DOM.Types
-import Control.Applicative ((<$>))
-import GHCJS.DOM.EventM
-
- 
-foreign import javascript unsafe "$1[\"iterateNext\"]()"
-        ghcjs_dom_xpath_result_iterate_next ::
-        JSRef XPathResult -> IO (JSRef Node)
- 
-xPathResultIterateNext ::
-                       (IsXPathResult self) => self -> IO (Maybe Node)
-xPathResultIterateNext self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_xpath_result_iterate_next
-         (unXPathResult (toXPathResult self)))
- 
-foreign import javascript unsafe "$1[\"snapshotItem\"]($2)"
-        ghcjs_dom_xpath_result_snapshot_item ::
-        JSRef XPathResult -> Word -> IO (JSRef Node)
- 
-xPathResultSnapshotItem ::
-                        (IsXPathResult self) => self -> Word -> IO (Maybe Node)
-xPathResultSnapshotItem self index
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_xpath_result_snapshot_item
-         (unXPathResult (toXPathResult self))
-         index)
-cANY_TYPE = 0
-cNUMBER_TYPE = 1
-cSTRING_TYPE = 2
-cBOOLEAN_TYPE = 3
-cUNORDERED_NODE_ITERATOR_TYPE = 4
-cORDERED_NODE_ITERATOR_TYPE = 5
-cUNORDERED_NODE_SNAPSHOT_TYPE = 6
-cORDERED_NODE_SNAPSHOT_TYPE = 7
-cANY_UNORDERED_NODE_TYPE = 8
-cFIRST_ORDERED_NODE_TYPE = 9
- 
-foreign import javascript unsafe "$1[\"resultType\"]"
-        ghcjs_dom_xpath_result_get_result_type ::
-        JSRef XPathResult -> IO Word
- 
-xPathResultGetResultType :: (IsXPathResult self) => self -> IO Word
-xPathResultGetResultType self
-  = ghcjs_dom_xpath_result_get_result_type
-      (unXPathResult (toXPathResult self))
- 
-foreign import javascript unsafe "$1[\"numberValue\"]"
-        ghcjs_dom_xpath_result_get_number_value ::
-        JSRef XPathResult -> IO Double
- 
-xPathResultGetNumberValue ::
-                          (IsXPathResult self) => self -> IO Double
-xPathResultGetNumberValue self
-  = ghcjs_dom_xpath_result_get_number_value
-      (unXPathResult (toXPathResult self))
- 
-foreign import javascript unsafe "$1[\"stringValue\"]"
-        ghcjs_dom_xpath_result_get_string_value ::
-        JSRef XPathResult -> IO JSString
- 
-xPathResultGetStringValue ::
-                          (IsXPathResult self, FromJSString result) => self -> IO result
-xPathResultGetStringValue self
-  = fromJSString <$>
-      (ghcjs_dom_xpath_result_get_string_value
-         (unXPathResult (toXPathResult self)))
- 
-foreign import javascript unsafe "($1[\"booleanValue\"] ? 1 : 0)"
-        ghcjs_dom_xpath_result_get_boolean_value ::
-        JSRef XPathResult -> IO Bool
- 
-xPathResultGetBooleanValue ::
-                           (IsXPathResult self) => self -> IO Bool
-xPathResultGetBooleanValue self
-  = ghcjs_dom_xpath_result_get_boolean_value
-      (unXPathResult (toXPathResult self))
- 
-foreign import javascript unsafe "$1[\"singleNodeValue\"]"
-        ghcjs_dom_xpath_result_get_single_node_value ::
-        JSRef XPathResult -> IO (JSRef Node)
- 
-xPathResultGetSingleNodeValue ::
-                              (IsXPathResult self) => self -> IO (Maybe Node)
-xPathResultGetSingleNodeValue self
-  = fmap Node . maybeJSNull <$>
-      (ghcjs_dom_xpath_result_get_single_node_value
-         (unXPathResult (toXPathResult self)))
- 
-foreign import javascript unsafe
-        "($1[\"invalidIteratorState\"] ? 1 : 0)"
-        ghcjs_dom_xpath_result_get_invalid_iterator_state ::
-        JSRef XPathResult -> IO Bool
- 
-xPathResultGetInvalidIteratorState ::
-                                   (IsXPathResult self) => self -> IO Bool
-xPathResultGetInvalidIteratorState self
-  = ghcjs_dom_xpath_result_get_invalid_iterator_state
-      (unXPathResult (toXPathResult self))
- 
-foreign import javascript unsafe "$1[\"snapshotLength\"]"
-        ghcjs_dom_xpath_result_get_snapshot_length ::
-        JSRef XPathResult -> IO Word
- 
-xPathResultGetSnapshotLength ::
-                             (IsXPathResult self) => self -> IO Word
-xPathResultGetSnapshotLength self
-  = ghcjs_dom_xpath_result_get_snapshot_length
-      (unXPathResult (toXPathResult self))
+  module GHCJS.DOM.JSFFI.Generated.XPathResult
 #else
-module GHCJS.DOM.XPathResult (
   module Graphics.UI.Gtk.WebKit.DOM.XPathResult
+#endif
   ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.XPathResult
+#else
 import Graphics.UI.Gtk.WebKit.DOM.XPathResult
 #endif
diff --git a/src/GHCJS/DOM/XSLTProcessor.hs b/src/GHCJS/DOM/XSLTProcessor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/XSLTProcessor.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CPP #-}
+module GHCJS.DOM.XSLTProcessor (
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+  module GHCJS.DOM.JSFFI.Generated.XSLTProcessor
+#else
+#endif
+  ) where
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+import GHCJS.DOM.JSFFI.Generated.XSLTProcessor
+#else
+#endif
