diff --git a/jsaddle-dom.cabal b/jsaddle-dom.cabal
--- a/jsaddle-dom.cabal
+++ b/jsaddle-dom.cabal
@@ -1,5 +1,5 @@
 name: jsaddle-dom
-version: 0.4.1.0
+version: 0.5.0.0
 cabal-version: >=1.22
 build-type: Simple
 license: MIT
diff --git a/src/JSDOM/EventM.hs b/src/JSDOM/EventM.hs
--- a/src/JSDOM/EventM.hs
+++ b/src/JSDOM/EventM.hs
@@ -66,6 +66,7 @@
 )
 where
 import           Control.Applicative ((<$>))
+import           Control.Monad (join)
 import           Control.Monad.Trans.Class (MonadTrans(..))
 import           Control.Monad.Trans.Reader (ReaderT, ask, runReaderT)
 import           JSDOM.Types
@@ -76,6 +77,8 @@
 import           JSDOM.EventTargetClosures
 import           Data.Word (Word)
 import           Data.Foldable (forM_)
+import           Data.Traversable (mapM)
+import           Data.Coerce (coerce)
 
 type EventM t e = ReaderT e DOM
 
@@ -126,7 +129,7 @@
 eventTarget = event >>= (lift . Event.getTarget)
 
 target :: (IsEvent e, IsGObject t) => EventM t e (Maybe t)
-target = fmap (unsafeCastGObject . toGObject) <$> eventTarget
+target = eventTarget >>= mapM (liftJSM . fromJSValUnchecked . coerce)
 
 eventCurrentTarget :: IsEvent e => EventM t e (Maybe EventTarget)
 eventCurrentTarget = event >>= (lift . Event.getCurrentTarget)
diff --git a/src/JSDOM/Generated/ANGLEInstancedArrays.hs b/src/JSDOM/Generated/ANGLEInstancedArrays.hs
--- a/src/JSDOM/Generated/ANGLEInstancedArrays.hs
+++ b/src/JSDOM/Generated/ANGLEInstancedArrays.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ANGLEInstancedArrays
        (drawArraysInstancedANGLE, drawElementsInstancedANGLE,
         vertexAttribDivisorANGLE,
-        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE, ANGLEInstancedArrays,
-        castToANGLEInstancedArrays, gTypeANGLEInstancedArrays)
+        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE,
+        ANGLEInstancedArrays(..), gTypeANGLEInstancedArrays)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawArraysInstancedANGLE Mozilla ANGLEInstancedArrays.drawArraysInstancedANGLE documentation> 
 drawArraysInstancedANGLE ::
diff --git a/src/JSDOM/Generated/AbstractView.hs b/src/JSDOM/Generated/AbstractView.hs
--- a/src/JSDOM/Generated/AbstractView.hs
+++ b/src/JSDOM/Generated/AbstractView.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AbstractView
-       (getDocument, getDocumentUnchecked, getStyleMedia,
-        getStyleMediaUnchecked, AbstractView, castToAbstractView,
-        gTypeAbstractView)
+       (getDocument, getDocumentUnsafe, getDocumentUnchecked,
+        getStyleMedia, getStyleMediaUnsafe, getStyleMediaUnchecked,
+        AbstractView(..), gTypeAbstractView)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,12 +20,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.document Mozilla AbstractView.document documentation> 
 getDocument :: (MonadDOM m) => AbstractView -> m (Maybe Document)
 getDocument self = liftDOM ((self ^. js "document") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.document Mozilla AbstractView.document documentation> 
+getDocumentUnsafe ::
+                  (MonadDOM m, HasCallStack) => AbstractView -> m Document
+getDocumentUnsafe self
+  = liftDOM
+      (((self ^. js "document") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.document Mozilla AbstractView.document documentation> 
 getDocumentUnchecked :: (MonadDOM m) => AbstractView -> m Document
 getDocumentUnchecked self
   = liftDOM ((self ^. js "document") >>= fromJSValUnchecked)
@@ -31,6 +53,14 @@
               (MonadDOM m) => AbstractView -> m (Maybe StyleMedia)
 getStyleMedia self
   = liftDOM ((self ^. js "styleMedia") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.styleMedia Mozilla AbstractView.styleMedia documentation> 
+getStyleMediaUnsafe ::
+                    (MonadDOM m, HasCallStack) => AbstractView -> m StyleMedia
+getStyleMediaUnsafe self
+  = liftDOM
+      (((self ^. js "styleMedia") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView.styleMedia Mozilla AbstractView.styleMedia documentation> 
 getStyleMediaUnchecked ::
diff --git a/src/JSDOM/Generated/AbstractWorker.hs b/src/JSDOM/Generated/AbstractWorker.hs
--- a/src/JSDOM/Generated/AbstractWorker.hs
+++ b/src/JSDOM/Generated/AbstractWorker.hs
@@ -1,9 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AbstractWorker
-       (error, AbstractWorker, castToAbstractWorker, gTypeAbstractWorker)
-       where
+       (error, AbstractWorker(..), gTypeAbstractWorker) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -14,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker.onerror Mozilla AbstractWorker.onerror documentation> 
 error :: EventName AbstractWorker UIEvent
diff --git a/src/JSDOM/Generated/AllAudioCapabilities.hs b/src/JSDOM/Generated/AllAudioCapabilities.hs
--- a/src/JSDOM/Generated/AllAudioCapabilities.hs
+++ b/src/JSDOM/Generated/AllAudioCapabilities.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AllAudioCapabilities
-       (getSourceId, getVolume, getVolumeUnchecked, AllAudioCapabilities,
-        castToAllAudioCapabilities, gTypeAllAudioCapabilities)
+       (getSourceId, getVolume, getVolumeUnsafe, getVolumeUnchecked,
+        AllAudioCapabilities(..), gTypeAllAudioCapabilities)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities.sourceId Mozilla AllAudioCapabilities.sourceId documentation> 
 getSourceId ::
@@ -27,6 +41,15 @@
 getVolume ::
           (MonadDOM m) => AllAudioCapabilities -> m (Maybe CapabilityRange)
 getVolume self = liftDOM ((self ^. js "volume") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities.volume Mozilla AllAudioCapabilities.volume documentation> 
+getVolumeUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  AllAudioCapabilities -> m CapabilityRange
+getVolumeUnsafe self
+  = liftDOM
+      (((self ^. js "volume") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities.volume Mozilla AllAudioCapabilities.volume documentation> 
 getVolumeUnchecked ::
diff --git a/src/JSDOM/Generated/AllVideoCapabilities.hs b/src/JSDOM/Generated/AllVideoCapabilities.hs
--- a/src/JSDOM/Generated/AllVideoCapabilities.hs
+++ b/src/JSDOM/Generated/AllVideoCapabilities.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AllVideoCapabilities
-       (getSourceType, getSourceId, getWidth, getWidthUnchecked,
-        getHeight, getHeightUnchecked, getFrameRate, getFrameRateUnchecked,
-        getAspectRatio, getAspectRatioUnchecked, getFacingMode,
-        AllVideoCapabilities, castToAllVideoCapabilities,
-        gTypeAllVideoCapabilities)
+       (getSourceType, getSourceId, getWidth, getWidthUnsafe,
+        getWidthUnchecked, getHeight, getHeightUnsafe, getHeightUnchecked,
+        getFrameRate, getFrameRateUnsafe, getFrameRateUnchecked,
+        getAspectRatio, getAspectRatioUnsafe, getAspectRatioUnchecked,
+        getFacingMode, AllVideoCapabilities(..), gTypeAllVideoCapabilities)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.sourceType Mozilla AllVideoCapabilities.sourceType documentation> 
 getSourceType ::
@@ -39,6 +53,15 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.width Mozilla AllVideoCapabilities.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 AllVideoCapabilities -> m CapabilityRange
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.width Mozilla AllVideoCapabilities.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => AllVideoCapabilities -> m CapabilityRange
 getWidthUnchecked self
@@ -50,6 +73,15 @@
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.height Mozilla AllVideoCapabilities.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  AllVideoCapabilities -> m CapabilityRange
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.height Mozilla AllVideoCapabilities.height documentation> 
 getHeightUnchecked ::
                    (MonadDOM m) => AllVideoCapabilities -> m CapabilityRange
 getHeightUnchecked self
@@ -62,6 +94,15 @@
   = liftDOM ((self ^. js "frameRate") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.frameRate Mozilla AllVideoCapabilities.frameRate documentation> 
+getFrameRateUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     AllVideoCapabilities -> m CapabilityRange
+getFrameRateUnsafe self
+  = liftDOM
+      (((self ^. js "frameRate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.frameRate Mozilla AllVideoCapabilities.frameRate documentation> 
 getFrameRateUnchecked ::
                       (MonadDOM m) => AllVideoCapabilities -> m CapabilityRange
 getFrameRateUnchecked self
@@ -72,6 +113,15 @@
                (MonadDOM m) => AllVideoCapabilities -> m (Maybe CapabilityRange)
 getAspectRatio self
   = liftDOM ((self ^. js "aspectRatio") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.aspectRatio Mozilla AllVideoCapabilities.aspectRatio documentation> 
+getAspectRatioUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       AllVideoCapabilities -> m CapabilityRange
+getAspectRatioUnsafe self
+  = liftDOM
+      (((self ^. js "aspectRatio") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities.aspectRatio Mozilla AllVideoCapabilities.aspectRatio documentation> 
 getAspectRatioUnchecked ::
diff --git a/src/JSDOM/Generated/AnalyserNode.hs b/src/JSDOM/Generated/AnalyserNode.hs
--- a/src/JSDOM/Generated/AnalyserNode.hs
+++ b/src/JSDOM/Generated/AnalyserNode.hs
@@ -1,14 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AnalyserNode
        (getFloatFrequencyData, getByteFrequencyData,
         getByteTimeDomainData, setFftSize, getFftSize,
         getFrequencyBinCount, setMinDecibels, getMinDecibels,
         setMaxDecibels, getMaxDecibels, setSmoothingTimeConstant,
-        getSmoothingTimeConstant, AnalyserNode, castToAnalyserNode,
-        gTypeAnalyserNode)
+        getSmoothingTimeConstant, AnalyserNode(..), gTypeAnalyserNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getFloatFrequencyData Mozilla AnalyserNode.getFloatFrequencyData documentation> 
 getFloatFrequencyData ::
diff --git a/src/JSDOM/Generated/AnimationEvent.hs b/src/JSDOM/Generated/AnimationEvent.hs
--- a/src/JSDOM/Generated/AnimationEvent.hs
+++ b/src/JSDOM/Generated/AnimationEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AnimationEvent
-       (getAnimationName, getElapsedTime, AnimationEvent,
-        castToAnimationEvent, gTypeAnimationEvent)
+       (getAnimationName, getElapsedTime, AnimationEvent(..),
+        gTypeAnimationEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.animationName Mozilla AnimationEvent.animationName documentation> 
 getAnimationName ::
diff --git a/src/JSDOM/Generated/ApplicationCache.hs b/src/JSDOM/Generated/ApplicationCache.hs
--- a/src/JSDOM/Generated/ApplicationCache.hs
+++ b/src/JSDOM/Generated/ApplicationCache.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ApplicationCache
        (update, swapCache, abort, pattern UNCACHED, pattern IDLE,
         pattern CHECKING, pattern DOWNLOADING, pattern UPDATEREADY,
         pattern OBSOLETE, getStatus, checking, error, noUpdate,
         downloading, progress, updateReady, cached, obsolete,
-        ApplicationCache, castToApplicationCache, gTypeApplicationCache)
+        ApplicationCache(..), gTypeApplicationCache)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.update Mozilla ApplicationCache.update documentation> 
 update :: (MonadDOM m) => ApplicationCache -> m ()
diff --git a/src/JSDOM/Generated/Attr.hs b/src/JSDOM/Generated/Attr.hs
--- a/src/JSDOM/Generated/Attr.hs
+++ b/src/JSDOM/Generated/Attr.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Attr
-       (getName, getNameUnchecked, getSpecified, setValue, getValue,
-        getValueUnchecked, getOwnerElement, getOwnerElementUnchecked,
-        getIsId, Attr, castToAttr, gTypeAttr)
+       (getName, getNameUnsafe, getNameUnchecked, getSpecified, setValue,
+        getValue, getValueUnsafe, getValueUnchecked, getOwnerElement,
+        getOwnerElementUnsafe, getOwnerElementUnchecked, getIsId, Attr(..),
+        gTypeAttr)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.name Mozilla Attr.name documentation> 
 getName ::
@@ -23,6 +38,14 @@
 getName self = liftDOM ((self ^. js "name") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.name Mozilla Attr.name documentation> 
+getNameUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) => Attr -> m result
+getNameUnsafe self
+  = liftDOM
+      (((self ^. js "name") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.name Mozilla Attr.name documentation> 
 getNameUnchecked ::
                  (MonadDOM m, FromJSString result) => Attr -> m result
 getNameUnchecked self
@@ -45,6 +68,14 @@
   = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+getValueUnsafe ::
+               (MonadDOM m, HasCallStack, FromJSString result) => Attr -> m result
+getValueUnsafe self
+  = liftDOM
+      (((self ^. js "value") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
 getValueUnchecked ::
                   (MonadDOM m, FromJSString result) => Attr -> m result
 getValueUnchecked self
@@ -54,6 +85,14 @@
 getOwnerElement :: (MonadDOM m) => Attr -> m (Maybe Element)
 getOwnerElement self
   = liftDOM ((self ^. js "ownerElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
+getOwnerElementUnsafe ::
+                      (MonadDOM m, HasCallStack) => Attr -> m Element
+getOwnerElementUnsafe self
+  = liftDOM
+      (((self ^. js "ownerElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
 getOwnerElementUnchecked :: (MonadDOM m) => Attr -> m Element
diff --git a/src/JSDOM/Generated/AudioBuffer.hs b/src/JSDOM/Generated/AudioBuffer.hs
--- a/src/JSDOM/Generated/AudioBuffer.hs
+++ b/src/JSDOM/Generated/AudioBuffer.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioBuffer
-       (getChannelData, getChannelData_, getChannelDataUnchecked,
-        getLength, getDuration, getSampleRate, setGain, getGain,
-        getNumberOfChannels, AudioBuffer, castToAudioBuffer,
+       (getChannelData, getChannelData_, getChannelDataUnsafe,
+        getChannelDataUnchecked, getLength, getDuration, getSampleRate,
+        setGain, getGain, getNumberOfChannels, AudioBuffer(..),
         gTypeAudioBuffer)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
 getChannelData ::
@@ -31,6 +45,15 @@
 getChannelData_ self channelIndex
   = liftDOM
       (void (self ^. jsf "getChannelData" [toJSVal channelIndex]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
+getChannelDataUnsafe ::
+                     (MonadDOM m, HasCallStack) => AudioBuffer -> Word -> m Float32Array
+getChannelDataUnsafe self channelIndex
+  = liftDOM
+      (((self ^. jsf "getChannelData" [toJSVal channelIndex]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
 getChannelDataUnchecked ::
diff --git a/src/JSDOM/Generated/AudioBufferCallback.hs b/src/JSDOM/Generated/AudioBufferCallback.hs
--- a/src/JSDOM/Generated/AudioBufferCallback.hs
+++ b/src/JSDOM/Generated/AudioBufferCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioBufferCallback
        (newAudioBufferCallback, newAudioBufferCallbackSync,
         newAudioBufferCallbackAsync, AudioBufferCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
 newAudioBufferCallback ::
diff --git a/src/JSDOM/Generated/AudioBufferSourceNode.hs b/src/JSDOM/Generated/AudioBufferSourceNode.hs
--- a/src/JSDOM/Generated/AudioBufferSourceNode.hs
+++ b/src/JSDOM/Generated/AudioBufferSourceNode.hs
@@ -1,16 +1,21 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioBufferSourceNode
        (start, stop, noteOn, noteGrainOn, noteOff,
         pattern UNSCHEDULED_STATE, pattern SCHEDULED_STATE,
         pattern PLAYING_STATE, pattern FINISHED_STATE, setBuffer,
-        getBuffer, getBufferUnchecked, getPlaybackState, getGain,
-        getGainUnchecked, getPlaybackRate, getPlaybackRateUnchecked,
-        setLoop, getLoop, setLoopStart, getLoopStart, setLoopEnd,
-        getLoopEnd, setLooping, getLooping, ended, AudioBufferSourceNode,
-        castToAudioBufferSourceNode, gTypeAudioBufferSourceNode)
+        getBuffer, getBufferUnsafe, getBufferUnchecked, getPlaybackState,
+        getGain, getGainUnsafe, getGainUnchecked, getPlaybackRate,
+        getPlaybackRateUnsafe, getPlaybackRateUnchecked, setLoop, getLoop,
+        setLoopStart, getLoopStart, setLoopEnd, getLoopEnd, setLooping,
+        getLooping, ended, AudioBufferSourceNode(..),
+        gTypeAudioBufferSourceNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +26,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.start Mozilla AudioBufferSourceNode.start documentation> 
 start ::
@@ -71,6 +86,15 @@
 getBuffer self = liftDOM ((self ^. js "buffer") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
+getBufferUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  AudioBufferSourceNode -> m AudioBuffer
+getBufferUnsafe self
+  = liftDOM
+      (((self ^. js "buffer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
 getBufferUnchecked ::
                    (MonadDOM m) => AudioBufferSourceNode -> m AudioBuffer
 getBufferUnchecked self
@@ -88,6 +112,14 @@
 getGain self = liftDOM ((self ^. js "gain") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.gain Mozilla AudioBufferSourceNode.gain documentation> 
+getGainUnsafe ::
+              (MonadDOM m, HasCallStack) => AudioBufferSourceNode -> m AudioParam
+getGainUnsafe self
+  = liftDOM
+      (((self ^. js "gain") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.gain Mozilla AudioBufferSourceNode.gain documentation> 
 getGainUnchecked ::
                  (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
 getGainUnchecked self
@@ -98,6 +130,14 @@
                 (MonadDOM m) => AudioBufferSourceNode -> m (Maybe AudioParam)
 getPlaybackRate self
   = liftDOM ((self ^. js "playbackRate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackRate Mozilla AudioBufferSourceNode.playbackRate documentation> 
+getPlaybackRateUnsafe ::
+                      (MonadDOM m, HasCallStack) => AudioBufferSourceNode -> m AudioParam
+getPlaybackRateUnsafe self
+  = liftDOM
+      (((self ^. js "playbackRate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackRate Mozilla AudioBufferSourceNode.playbackRate documentation> 
 getPlaybackRateUnchecked ::
diff --git a/src/JSDOM/Generated/AudioContext.hs b/src/JSDOM/Generated/AudioContext.hs
--- a/src/JSDOM/Generated/AudioContext.hs
+++ b/src/JSDOM/Generated/AudioContext.hs
@@ -1,41 +1,54 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioContext
-       (newAudioContext, createBuffer, createBuffer_,
+       (newAudioContext, createBuffer, createBuffer_, createBufferUnsafe,
         createBufferUnchecked, createBufferFromArrayBuffer,
-        createBufferFromArrayBuffer_, createBufferFromArrayBufferUnchecked,
-        decodeAudioData, createBufferSource, createBufferSource_,
+        createBufferFromArrayBuffer_, createBufferFromArrayBufferUnsafe,
+        createBufferFromArrayBufferUnchecked, decodeAudioData,
+        createBufferSource, createBufferSource_, createBufferSourceUnsafe,
         createBufferSourceUnchecked, createMediaElementSource,
-        createMediaElementSource_, createMediaElementSourceUnchecked,
-        createMediaStreamSource, createMediaStreamSource_,
+        createMediaElementSource_, createMediaElementSourceUnsafe,
+        createMediaElementSourceUnchecked, createMediaStreamSource,
+        createMediaStreamSource_, createMediaStreamSourceUnsafe,
         createMediaStreamSourceUnchecked, createMediaStreamDestination,
-        createMediaStreamDestination_,
+        createMediaStreamDestination_, createMediaStreamDestinationUnsafe,
         createMediaStreamDestinationUnchecked, createGain, createGain_,
-        createGainUnchecked, createDelay, createDelay_,
-        createDelayUnchecked, createBiquadFilter, createBiquadFilter_,
+        createGainUnsafe, createGainUnchecked, createDelay, createDelay_,
+        createDelayUnsafe, createDelayUnchecked, createBiquadFilter,
+        createBiquadFilter_, createBiquadFilterUnsafe,
         createBiquadFilterUnchecked, createWaveShaper, createWaveShaper_,
-        createWaveShaperUnchecked, createPanner, createPanner_,
-        createPannerUnchecked, createConvolver, createConvolver_,
+        createWaveShaperUnsafe, createWaveShaperUnchecked, createPanner,
+        createPanner_, createPannerUnsafe, createPannerUnchecked,
+        createConvolver, createConvolver_, createConvolverUnsafe,
         createConvolverUnchecked, createDynamicsCompressor,
-        createDynamicsCompressor_, createDynamicsCompressorUnchecked,
-        createAnalyser, createAnalyser_, createAnalyserUnchecked,
+        createDynamicsCompressor_, createDynamicsCompressorUnsafe,
+        createDynamicsCompressorUnchecked, createAnalyser, createAnalyser_,
+        createAnalyserUnsafe, createAnalyserUnchecked,
         createScriptProcessor, createScriptProcessor_,
-        createScriptProcessorUnchecked, createOscillator,
-        createOscillator_, createOscillatorUnchecked, createPeriodicWave,
-        createPeriodicWave_, createPeriodicWaveUnchecked,
+        createScriptProcessorUnsafe, createScriptProcessorUnchecked,
+        createOscillator, createOscillator_, createOscillatorUnsafe,
+        createOscillatorUnchecked, createPeriodicWave, createPeriodicWave_,
+        createPeriodicWaveUnsafe, createPeriodicWaveUnchecked,
         createChannelSplitter, createChannelSplitter_,
-        createChannelSplitterUnchecked, createChannelMerger,
-        createChannelMerger_, createChannelMergerUnchecked, startRendering,
-        createGainNode, createGainNode_, createGainNodeUnchecked,
-        createDelayNode, createDelayNode_, createDelayNodeUnchecked,
+        createChannelSplitterUnsafe, createChannelSplitterUnchecked,
+        createChannelMerger, createChannelMerger_,
+        createChannelMergerUnsafe, createChannelMergerUnchecked,
+        startRendering, createGainNode, createGainNode_,
+        createGainNodeUnsafe, createGainNodeUnchecked, createDelayNode,
+        createDelayNode_, createDelayNodeUnsafe, createDelayNodeUnchecked,
         createJavaScriptNode, createJavaScriptNode_,
-        createJavaScriptNodeUnchecked, getDestination,
-        getDestinationUnchecked, getCurrentTime, getSampleRate,
-        getListener, getListenerUnchecked, getActiveSourceCount, complete,
-        AudioContext, castToAudioContext, gTypeAudioContext,
-        IsAudioContext, toAudioContext)
+        createJavaScriptNodeUnsafe, createJavaScriptNodeUnchecked,
+        getDestination, getDestinationUnsafe, getDestinationUnchecked,
+        getCurrentTime, getSampleRate, getListener, getListenerUnsafe,
+        getListenerUnchecked, getActiveSourceCount, complete,
+        AudioContext(..), gTypeAudioContext, IsAudioContext,
+        toAudioContext)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -46,6 +59,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation> 
 newAudioContext :: (MonadDOM m) => m AudioContext
@@ -75,6 +98,18 @@
              toJSVal sampleRate]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBufferUnsafe ::
+                   (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                     self -> Word -> Word -> Float -> m AudioBuffer
+createBufferUnsafe self numberOfChannels numberOfFrames sampleRate
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createBuffer"
+           [toJSVal numberOfChannels, toJSVal numberOfFrames,
+            toJSVal sampleRate])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
 createBufferUnchecked ::
                       (MonadDOM m, IsAudioContext self) =>
                         self -> Word -> Word -> Float -> m AudioBuffer
@@ -107,6 +142,18 @@
             [toJSVal buffer, toJSVal mixToMono]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBufferFromArrayBufferUnsafe ::
+                                  (MonadDOM m, IsAudioContext self, IsArrayBuffer buffer,
+                                   HasCallStack) =>
+                                    self -> Maybe buffer -> Bool -> m AudioBuffer
+createBufferFromArrayBufferUnsafe self buffer mixToMono
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createBuffer"
+           [toJSVal buffer, toJSVal mixToMono])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
 createBufferFromArrayBufferUnchecked ::
                                      (MonadDOM m, IsAudioContext self, IsArrayBuffer buffer) =>
                                        self -> Maybe buffer -> Bool -> m AudioBuffer
@@ -146,6 +193,16 @@
       (void ((toAudioContext self) ^. jsf "createBufferSource" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
+createBufferSourceUnsafe ::
+                         (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                           self -> m AudioBufferSourceNode
+createBufferSourceUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createBufferSource" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
 createBufferSourceUnchecked ::
                             (MonadDOM m, IsAudioContext self) =>
                               self -> m AudioBufferSourceNode
@@ -177,6 +234,18 @@
             [toJSVal mediaElement]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
+createMediaElementSourceUnsafe ::
+                               (MonadDOM m, IsAudioContext self, IsHTMLMediaElement mediaElement,
+                                HasCallStack) =>
+                                 self -> Maybe mediaElement -> m MediaElementAudioSourceNode
+createMediaElementSourceUnsafe self mediaElement
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createMediaElementSource"
+           [toJSVal mediaElement])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
 createMediaElementSourceUnchecked ::
                                   (MonadDOM m, IsAudioContext self,
                                    IsHTMLMediaElement mediaElement) =>
@@ -208,6 +277,17 @@
             [toJSVal mediaStream]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
+createMediaStreamSourceUnsafe ::
+                              (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                                self -> Maybe MediaStream -> m MediaStreamAudioSourceNode
+createMediaStreamSourceUnsafe self mediaStream
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createMediaStreamSource"
+           [toJSVal mediaStream])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
 createMediaStreamSourceUnchecked ::
                                  (MonadDOM m, IsAudioContext self) =>
                                    self -> Maybe MediaStream -> m MediaStreamAudioSourceNode
@@ -235,6 +315,16 @@
          ((toAudioContext self) ^. jsf "createMediaStreamDestination" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
+createMediaStreamDestinationUnsafe ::
+                                   (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                                     self -> m MediaStreamAudioDestinationNode
+createMediaStreamDestinationUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createMediaStreamDestination" ())
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
 createMediaStreamDestinationUnchecked ::
                                       (MonadDOM m, IsAudioContext self) =>
                                         self -> m MediaStreamAudioDestinationNode
@@ -256,6 +346,15 @@
   = liftDOM (void ((toAudioContext self) ^. jsf "createGain" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
+createGainUnsafe ::
+                 (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                   self -> m GainNode
+createGainUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createGain" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
 createGainUnchecked ::
                     (MonadDOM m, IsAudioContext self) => self -> m GainNode
 createGainUnchecked self
@@ -283,6 +382,17 @@
             [toJSVal maxDelayTime]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
+createDelayUnsafe ::
+                  (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                    self -> Double -> m DelayNode
+createDelayUnsafe self maxDelayTime
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createDelay"
+           [toJSVal maxDelayTime])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
 createDelayUnchecked ::
                      (MonadDOM m, IsAudioContext self) => self -> Double -> m DelayNode
 createDelayUnchecked self maxDelayTime
@@ -308,6 +418,16 @@
       (void ((toAudioContext self) ^. jsf "createBiquadFilter" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
+createBiquadFilterUnsafe ::
+                         (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                           self -> m BiquadFilterNode
+createBiquadFilterUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createBiquadFilter" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
 createBiquadFilterUnchecked ::
                             (MonadDOM m, IsAudioContext self) => self -> m BiquadFilterNode
 createBiquadFilterUnchecked self
@@ -332,6 +452,16 @@
       (void ((toAudioContext self) ^. jsf "createWaveShaper" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
+createWaveShaperUnsafe ::
+                       (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                         self -> m WaveShaperNode
+createWaveShaperUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createWaveShaper" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
 createWaveShaperUnchecked ::
                           (MonadDOM m, IsAudioContext self) => self -> m WaveShaperNode
 createWaveShaperUnchecked self
@@ -352,6 +482,15 @@
   = liftDOM (void ((toAudioContext self) ^. jsf "createPanner" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
+createPannerUnsafe ::
+                   (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                     self -> m PannerNode
+createPannerUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createPanner" ()) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
 createPannerUnchecked ::
                       (MonadDOM m, IsAudioContext self) => self -> m PannerNode
 createPannerUnchecked self
@@ -375,6 +514,16 @@
       (void ((toAudioContext self) ^. jsf "createConvolver" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
+createConvolverUnsafe ::
+                      (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                        self -> m ConvolverNode
+createConvolverUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createConvolver" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
 createConvolverUnchecked ::
                          (MonadDOM m, IsAudioContext self) => self -> m ConvolverNode
 createConvolverUnchecked self
@@ -399,6 +548,16 @@
       (void ((toAudioContext self) ^. jsf "createDynamicsCompressor" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
+createDynamicsCompressorUnsafe ::
+                               (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                                 self -> m DynamicsCompressorNode
+createDynamicsCompressorUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createDynamicsCompressor" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
 createDynamicsCompressorUnchecked ::
                                   (MonadDOM m, IsAudioContext self) =>
                                     self -> m DynamicsCompressorNode
@@ -421,6 +580,15 @@
   = liftDOM (void ((toAudioContext self) ^. jsf "createAnalyser" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
+createAnalyserUnsafe ::
+                     (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                       self -> m AnalyserNode
+createAnalyserUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createAnalyser" ()) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
 createAnalyserUnchecked ::
                         (MonadDOM m, IsAudioContext self) => self -> m AnalyserNode
 createAnalyserUnchecked self
@@ -453,6 +621,19 @@
              toJSVal numberOfOutputChannels]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
+createScriptProcessorUnsafe ::
+                            (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                              self -> Word -> Word -> Word -> m ScriptProcessorNode
+createScriptProcessorUnsafe self bufferSize numberOfInputChannels
+  numberOfOutputChannels
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createScriptProcessor"
+           [toJSVal bufferSize, toJSVal numberOfInputChannels,
+            toJSVal numberOfOutputChannels])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
 createScriptProcessorUnchecked ::
                                (MonadDOM m, IsAudioContext self) =>
                                  self -> Word -> Word -> Word -> m ScriptProcessorNode
@@ -481,6 +662,16 @@
       (void ((toAudioContext self) ^. jsf "createOscillator" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
+createOscillatorUnsafe ::
+                       (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                         self -> m OscillatorNode
+createOscillatorUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createOscillator" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
 createOscillatorUnchecked ::
                           (MonadDOM m, IsAudioContext self) => self -> m OscillatorNode
 createOscillatorUnchecked self
@@ -511,6 +702,18 @@
             [toJSVal real, toJSVal imag]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
+createPeriodicWaveUnsafe ::
+                         (MonadDOM m, IsAudioContext self, IsFloat32Array real,
+                          IsFloat32Array imag, HasCallStack) =>
+                           self -> Maybe real -> Maybe imag -> m PeriodicWave
+createPeriodicWaveUnsafe self real imag
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createPeriodicWave"
+           [toJSVal real, toJSVal imag])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
 createPeriodicWaveUnchecked ::
                             (MonadDOM m, IsAudioContext self, IsFloat32Array real,
                              IsFloat32Array imag) =>
@@ -541,6 +744,17 @@
             [toJSVal numberOfOutputs]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
+createChannelSplitterUnsafe ::
+                            (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                              self -> Word -> m ChannelSplitterNode
+createChannelSplitterUnsafe self numberOfOutputs
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createChannelSplitter"
+           [toJSVal numberOfOutputs])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
 createChannelSplitterUnchecked ::
                                (MonadDOM m, IsAudioContext self) =>
                                  self -> Word -> m ChannelSplitterNode
@@ -570,6 +784,17 @@
             [toJSVal numberOfInputs]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
+createChannelMergerUnsafe ::
+                          (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                            self -> Word -> m ChannelMergerNode
+createChannelMergerUnsafe self numberOfInputs
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createChannelMerger"
+           [toJSVal numberOfInputs])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
 createChannelMergerUnchecked ::
                              (MonadDOM m, IsAudioContext self) =>
                                self -> Word -> m ChannelMergerNode
@@ -598,6 +823,15 @@
   = liftDOM (void ((toAudioContext self) ^. jsf "createGainNode" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGainNode Mozilla AudioContext.createGainNode documentation> 
+createGainNodeUnsafe ::
+                     (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                       self -> m GainNode
+createGainNodeUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createGainNode" ()) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGainNode Mozilla AudioContext.createGainNode documentation> 
 createGainNodeUnchecked ::
                         (MonadDOM m, IsAudioContext self) => self -> m GainNode
 createGainNodeUnchecked self
@@ -625,6 +859,17 @@
             [toJSVal maxDelayTime]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelayNode Mozilla AudioContext.createDelayNode documentation> 
+createDelayNodeUnsafe ::
+                      (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                        self -> Double -> m DelayNode
+createDelayNodeUnsafe self maxDelayTime
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createDelayNode"
+           [toJSVal maxDelayTime])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelayNode Mozilla AudioContext.createDelayNode documentation> 
 createDelayNodeUnchecked ::
                          (MonadDOM m, IsAudioContext self) => self -> Double -> m DelayNode
 createDelayNodeUnchecked self maxDelayTime
@@ -658,6 +903,19 @@
              toJSVal numberOfOutputChannels]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createJavaScriptNode Mozilla AudioContext.createJavaScriptNode documentation> 
+createJavaScriptNodeUnsafe ::
+                           (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                             self -> Word -> Word -> Word -> m ScriptProcessorNode
+createJavaScriptNodeUnsafe self bufferSize numberOfInputChannels
+  numberOfOutputChannels
+  = liftDOM
+      ((((toAudioContext self) ^. jsf "createJavaScriptNode"
+           [toJSVal bufferSize, toJSVal numberOfInputChannels,
+            toJSVal numberOfOutputChannels])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createJavaScriptNode Mozilla AudioContext.createJavaScriptNode documentation> 
 createJavaScriptNodeUnchecked ::
                               (MonadDOM m, IsAudioContext self) =>
                                 self -> Word -> Word -> Word -> m ScriptProcessorNode
@@ -678,6 +936,15 @@
       (((toAudioContext self) ^. js "destination") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.destination Mozilla AudioContext.destination documentation> 
+getDestinationUnsafe ::
+                     (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                       self -> m AudioDestinationNode
+getDestinationUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. js "destination") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.destination Mozilla AudioContext.destination documentation> 
 getDestinationUnchecked ::
                         (MonadDOM m, IsAudioContext self) => self -> m AudioDestinationNode
 getDestinationUnchecked self
@@ -706,6 +973,15 @@
               self -> m (Maybe AudioListener)
 getListener self
   = liftDOM (((toAudioContext self) ^. js "listener") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.listener Mozilla AudioContext.listener documentation> 
+getListenerUnsafe ::
+                  (MonadDOM m, IsAudioContext self, HasCallStack) =>
+                    self -> m AudioListener
+getListenerUnsafe self
+  = liftDOM
+      ((((toAudioContext self) ^. js "listener") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.listener Mozilla AudioContext.listener documentation> 
 getListenerUnchecked ::
diff --git a/src/JSDOM/Generated/AudioDestinationNode.hs b/src/JSDOM/Generated/AudioDestinationNode.hs
--- a/src/JSDOM/Generated/AudioDestinationNode.hs
+++ b/src/JSDOM/Generated/AudioDestinationNode.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioDestinationNode
-       (getMaxChannelCount, AudioDestinationNode,
-        castToAudioDestinationNode, gTypeAudioDestinationNode)
+       (getMaxChannelCount, AudioDestinationNode(..),
+        gTypeAudioDestinationNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode.maxChannelCount Mozilla AudioDestinationNode.maxChannelCount documentation> 
 getMaxChannelCount ::
diff --git a/src/JSDOM/Generated/AudioListener.hs b/src/JSDOM/Generated/AudioListener.hs
--- a/src/JSDOM/Generated/AudioListener.hs
+++ b/src/JSDOM/Generated/AudioListener.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioListener
        (setPosition, setOrientation, setVelocity, setDopplerFactor,
-        getDopplerFactor, setSpeedOfSound, getSpeedOfSound, AudioListener,
-        castToAudioListener, gTypeAudioListener)
+        getDopplerFactor, setSpeedOfSound, getSpeedOfSound,
+        AudioListener(..), gTypeAudioListener)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setPosition Mozilla AudioListener.setPosition documentation> 
 setPosition ::
diff --git a/src/JSDOM/Generated/AudioNode.hs b/src/JSDOM/Generated/AudioNode.hs
--- a/src/JSDOM/Generated/AudioNode.hs
+++ b/src/JSDOM/Generated/AudioNode.hs
@@ -1,14 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioNode
-       (connect, connectParam, disconnect, getContext,
+       (connect, connectParam, disconnect, getContext, getContextUnsafe,
         getContextUnchecked, getNumberOfInputs, getNumberOfOutputs,
         setChannelCount, getChannelCount, setChannelCountMode,
         getChannelCountMode, setChannelInterpretation,
-        getChannelInterpretation, AudioNode, castToAudioNode,
-        gTypeAudioNode, IsAudioNode, toAudioNode)
+        getChannelInterpretation, AudioNode(..), gTypeAudioNode,
+        IsAudioNode, toAudioNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
 connect ::
@@ -52,6 +66,15 @@
            (MonadDOM m, IsAudioNode self) => self -> m (Maybe AudioContext)
 getContext self
   = liftDOM (((toAudioNode self) ^. js "context") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.context Mozilla AudioNode.context documentation> 
+getContextUnsafe ::
+                 (MonadDOM m, IsAudioNode self, HasCallStack) =>
+                   self -> m AudioContext
+getContextUnsafe self
+  = liftDOM
+      ((((toAudioNode self) ^. js "context") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.context Mozilla AudioNode.context documentation> 
 getContextUnchecked ::
diff --git a/src/JSDOM/Generated/AudioParam.hs b/src/JSDOM/Generated/AudioParam.hs
--- a/src/JSDOM/Generated/AudioParam.hs
+++ b/src/JSDOM/Generated/AudioParam.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioParam
        (setValueAtTime, linearRampToValueAtTime,
         exponentialRampToValueAtTime, setTargetAtTime, setValueCurveAtTime,
         cancelScheduledValues, setTargetValueAtTime, setValue, getValue,
         getMinValue, getMaxValue, getDefaultValue, getName, getUnits,
-        AudioParam, castToAudioParam, gTypeAudioParam)
+        AudioParam(..), gTypeAudioParam)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueAtTime Mozilla AudioParam.setValueAtTime documentation> 
 setValueAtTime ::
diff --git a/src/JSDOM/Generated/AudioProcessingEvent.hs b/src/JSDOM/Generated/AudioProcessingEvent.hs
--- a/src/JSDOM/Generated/AudioProcessingEvent.hs
+++ b/src/JSDOM/Generated/AudioProcessingEvent.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioProcessingEvent
-       (getPlaybackTime, getInputBuffer, getInputBufferUnchecked,
-        getOutputBuffer, getOutputBufferUnchecked, AudioProcessingEvent,
-        castToAudioProcessingEvent, gTypeAudioProcessingEvent)
+       (getPlaybackTime, getInputBuffer, getInputBufferUnsafe,
+        getInputBufferUnchecked, getOutputBuffer, getOutputBufferUnsafe,
+        getOutputBufferUnchecked, AudioProcessingEvent(..),
+        gTypeAudioProcessingEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.playbackTime Mozilla AudioProcessingEvent.playbackTime documentation> 
 getPlaybackTime :: (MonadDOM m) => AudioProcessingEvent -> m Double
@@ -29,6 +44,14 @@
   = liftDOM ((self ^. js "inputBuffer") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.inputBuffer Mozilla AudioProcessingEvent.inputBuffer documentation> 
+getInputBufferUnsafe ::
+                     (MonadDOM m, HasCallStack) => AudioProcessingEvent -> m AudioBuffer
+getInputBufferUnsafe self
+  = liftDOM
+      (((self ^. js "inputBuffer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.inputBuffer Mozilla AudioProcessingEvent.inputBuffer documentation> 
 getInputBufferUnchecked ::
                         (MonadDOM m) => AudioProcessingEvent -> m AudioBuffer
 getInputBufferUnchecked self
@@ -39,6 +62,14 @@
                 (MonadDOM m) => AudioProcessingEvent -> m (Maybe AudioBuffer)
 getOutputBuffer self
   = liftDOM ((self ^. js "outputBuffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.outputBuffer Mozilla AudioProcessingEvent.outputBuffer documentation> 
+getOutputBufferUnsafe ::
+                      (MonadDOM m, HasCallStack) => AudioProcessingEvent -> m AudioBuffer
+getOutputBufferUnsafe self
+  = liftDOM
+      (((self ^. js "outputBuffer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.outputBuffer Mozilla AudioProcessingEvent.outputBuffer documentation> 
 getOutputBufferUnchecked ::
diff --git a/src/JSDOM/Generated/AudioStreamTrack.hs b/src/JSDOM/Generated/AudioStreamTrack.hs
--- a/src/JSDOM/Generated/AudioStreamTrack.hs
+++ b/src/JSDOM/Generated/AudioStreamTrack.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioStreamTrack
-       (newAudioStreamTrack, AudioStreamTrack, castToAudioStreamTrack,
-        gTypeAudioStreamTrack)
+       (newAudioStreamTrack, AudioStreamTrack(..), gTypeAudioStreamTrack)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioStreamTrack Mozilla AudioStreamTrack documentation> 
 newAudioStreamTrack ::
diff --git a/src/JSDOM/Generated/AudioTrack.hs b/src/JSDOM/Generated/AudioTrack.hs
--- a/src/JSDOM/Generated/AudioTrack.hs
+++ b/src/JSDOM/Generated/AudioTrack.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioTrack
        (getId, setKind, getKind, getLabel, setLanguage, getLanguage,
-        setEnabled, getEnabled, getSourceBuffer, getSourceBufferUnchecked,
-        AudioTrack, castToAudioTrack, gTypeAudioTrack)
+        setEnabled, getEnabled, getSourceBuffer, getSourceBufferUnsafe,
+        getSourceBufferUnchecked, AudioTrack(..), gTypeAudioTrack)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.id Mozilla AudioTrack.id documentation> 
 getId ::
@@ -63,6 +77,14 @@
                 (MonadDOM m) => AudioTrack -> m (Maybe SourceBuffer)
 getSourceBuffer self
   = liftDOM ((self ^. js "sourceBuffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.sourceBuffer Mozilla AudioTrack.sourceBuffer documentation> 
+getSourceBufferUnsafe ::
+                      (MonadDOM m, HasCallStack) => AudioTrack -> m SourceBuffer
+getSourceBufferUnsafe self
+  = liftDOM
+      (((self ^. js "sourceBuffer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.sourceBuffer Mozilla AudioTrack.sourceBuffer documentation> 
 getSourceBufferUnchecked ::
diff --git a/src/JSDOM/Generated/AudioTrackList.hs b/src/JSDOM/Generated/AudioTrackList.hs
--- a/src/JSDOM/Generated/AudioTrackList.hs
+++ b/src/JSDOM/Generated/AudioTrackList.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AudioTrackList
-       (item, item_, itemUnchecked, getTrackById, getTrackById_,
-        getTrackByIdUnchecked, getLength, change, addTrack, removeTrack,
-        AudioTrackList, castToAudioTrackList, gTypeAudioTrackList)
+       (item, item_, itemUnsafe, itemUnchecked, getTrackById,
+        getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked,
+        getLength, change, addTrack, removeTrack, AudioTrackList(..),
+        gTypeAudioTrackList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
 item ::
@@ -29,6 +44,15 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             AudioTrackList -> Word -> m AudioTrack
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => AudioTrackList -> Word -> m AudioTrack
 itemUnchecked self index
@@ -47,6 +71,15 @@
               (MonadDOM m, ToJSString id) => AudioTrackList -> id -> m ()
 getTrackById_ self id
   = liftDOM (void (self ^. jsf "getTrackById" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
+getTrackByIdUnsafe ::
+                   (MonadDOM m, ToJSString id, HasCallStack) =>
+                     AudioTrackList -> id -> m AudioTrack
+getTrackByIdUnsafe self id
+  = liftDOM
+      (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
 getTrackByIdUnchecked ::
diff --git a/src/JSDOM/Generated/AutocompleteErrorEvent.hs b/src/JSDOM/Generated/AutocompleteErrorEvent.hs
--- a/src/JSDOM/Generated/AutocompleteErrorEvent.hs
+++ b/src/JSDOM/Generated/AutocompleteErrorEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.AutocompleteErrorEvent
-       (getReason, AutocompleteErrorEvent, castToAutocompleteErrorEvent,
+       (getReason, AutocompleteErrorEvent(..),
         gTypeAutocompleteErrorEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent.reason Mozilla AutocompleteErrorEvent.reason documentation> 
 getReason ::
diff --git a/src/JSDOM/Generated/BarProp.hs b/src/JSDOM/Generated/BarProp.hs
--- a/src/JSDOM/Generated/BarProp.hs
+++ b/src/JSDOM/Generated/BarProp.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.BarProp
-       (getVisible, BarProp, castToBarProp, gTypeBarProp) where
+       (getVisible, BarProp(..), gTypeBarProp) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -13,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BarProp.visible Mozilla BarProp.visible documentation> 
 getVisible :: (MonadDOM m) => BarProp -> m Bool
diff --git a/src/JSDOM/Generated/BatteryManager.hs b/src/JSDOM/Generated/BatteryManager.hs
--- a/src/JSDOM/Generated/BatteryManager.hs
+++ b/src/JSDOM/Generated/BatteryManager.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.BatteryManager
        (getCharging, getChargingTime, getDischargingTime, getLevel,
         chargingChange, chargingTimeChange, dischargingTimeChange,
-        levelChange, BatteryManager, castToBatteryManager,
-        gTypeBatteryManager)
+        levelChange, BatteryManager(..), gTypeBatteryManager)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager.charging Mozilla BatteryManager.charging documentation> 
 getCharging :: (MonadDOM m) => BatteryManager -> m Bool
diff --git a/src/JSDOM/Generated/BeforeLoadEvent.hs b/src/JSDOM/Generated/BeforeLoadEvent.hs
--- a/src/JSDOM/Generated/BeforeLoadEvent.hs
+++ b/src/JSDOM/Generated/BeforeLoadEvent.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.BeforeLoadEvent
-       (getUrl, BeforeLoadEvent, castToBeforeLoadEvent,
-        gTypeBeforeLoadEvent)
-       where
+       (getUrl, BeforeLoadEvent(..), gTypeBeforeLoadEvent) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent.url Mozilla BeforeLoadEvent.url documentation> 
 getUrl ::
diff --git a/src/JSDOM/Generated/BeforeUnloadEvent.hs b/src/JSDOM/Generated/BeforeUnloadEvent.hs
--- a/src/JSDOM/Generated/BeforeUnloadEvent.hs
+++ b/src/JSDOM/Generated/BeforeUnloadEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.BeforeUnloadEvent
-       (setReturnValue, getReturnValue, BeforeUnloadEvent,
-        castToBeforeUnloadEvent, gTypeBeforeUnloadEvent)
+       (setReturnValue, getReturnValue, BeforeUnloadEvent(..),
+        gTypeBeforeUnloadEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
 setReturnValue ::
diff --git a/src/JSDOM/Generated/BiquadFilterNode.hs b/src/JSDOM/Generated/BiquadFilterNode.hs
--- a/src/JSDOM/Generated/BiquadFilterNode.hs
+++ b/src/JSDOM/Generated/BiquadFilterNode.hs
@@ -1,14 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.BiquadFilterNode
        (getFrequencyResponse, pattern LOWPASS, pattern HIGHPASS,
         pattern BANDPASS, pattern LOWSHELF, pattern HIGHSHELF,
         pattern PEAKING, pattern NOTCH, pattern ALLPASS, setType, getType,
-        getFrequency, getFrequencyUnchecked, getDetune, getDetuneUnchecked,
-        getQ, getQUnchecked, getGain, getGainUnchecked, BiquadFilterNode,
-        castToBiquadFilterNode, gTypeBiquadFilterNode)
+        getFrequency, getFrequencyUnsafe, getFrequencyUnchecked, getDetune,
+        getDetuneUnsafe, getDetuneUnchecked, getQ, getQUnsafe,
+        getQUnchecked, getGain, getGainUnsafe, getGainUnchecked,
+        BiquadFilterNode(..), gTypeBiquadFilterNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.getFrequencyResponse Mozilla BiquadFilterNode.getFrequencyResponse documentation> 
 getFrequencyResponse ::
@@ -58,6 +73,14 @@
   = liftDOM ((self ^. js "frequency") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.frequency Mozilla BiquadFilterNode.frequency documentation> 
+getFrequencyUnsafe ::
+                   (MonadDOM m, HasCallStack) => BiquadFilterNode -> m AudioParam
+getFrequencyUnsafe self
+  = liftDOM
+      (((self ^. js "frequency") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.frequency Mozilla BiquadFilterNode.frequency documentation> 
 getFrequencyUnchecked ::
                       (MonadDOM m) => BiquadFilterNode -> m AudioParam
 getFrequencyUnchecked self
@@ -69,6 +92,14 @@
 getDetune self = liftDOM ((self ^. js "detune") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.detune Mozilla BiquadFilterNode.detune documentation> 
+getDetuneUnsafe ::
+                (MonadDOM m, HasCallStack) => BiquadFilterNode -> m AudioParam
+getDetuneUnsafe self
+  = liftDOM
+      (((self ^. js "detune") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.detune Mozilla BiquadFilterNode.detune documentation> 
 getDetuneUnchecked ::
                    (MonadDOM m) => BiquadFilterNode -> m AudioParam
 getDetuneUnchecked self
@@ -79,6 +110,14 @@
 getQ self = liftDOM ((self ^. js "Q") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.Q Mozilla BiquadFilterNode.Q documentation> 
+getQUnsafe ::
+           (MonadDOM m, HasCallStack) => BiquadFilterNode -> m AudioParam
+getQUnsafe self
+  = liftDOM
+      (((self ^. js "Q") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.Q Mozilla BiquadFilterNode.Q documentation> 
 getQUnchecked :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
 getQUnchecked self
   = liftDOM ((self ^. js "Q") >>= fromJSValUnchecked)
@@ -86,6 +125,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
 getGain :: (MonadDOM m) => BiquadFilterNode -> m (Maybe AudioParam)
 getGain self = liftDOM ((self ^. js "gain") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
+getGainUnsafe ::
+              (MonadDOM m, HasCallStack) => BiquadFilterNode -> m AudioParam
+getGainUnsafe self
+  = liftDOM
+      (((self ^. js "gain") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
 getGainUnchecked ::
diff --git a/src/JSDOM/Generated/Blob.hs b/src/JSDOM/Generated/Blob.hs
--- a/src/JSDOM/Generated/Blob.hs
+++ b/src/JSDOM/Generated/Blob.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Blob
-       (newBlob, newBlob', slice, slice_, sliceUnchecked, getSize,
-        getType, Blob, castToBlob, gTypeBlob, IsBlob, toBlob)
+       (newBlob, newBlob', slice, slice_, sliceUnsafe, sliceUnchecked,
+        getSize, getType, Blob(..), gTypeBlob, IsBlob, toBlob)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
 newBlob :: (MonadDOM m) => m Blob
@@ -48,6 +62,17 @@
       (void
          ((toBlob self) ^. jsf "slice"
             [toJSVal start, toJSVal end, toJSVal contentType]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
+sliceUnsafe ::
+            (MonadDOM m, IsBlob self, ToJSString contentType, HasCallStack) =>
+              self -> Int64 -> Int64 -> Maybe contentType -> m Blob
+sliceUnsafe self start end contentType
+  = liftDOM
+      ((((toBlob self) ^. jsf "slice"
+           [toJSVal start, toJSVal end, toJSVal contentType])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
 sliceUnchecked ::
diff --git a/src/JSDOM/Generated/CSS.hs b/src/JSDOM/Generated/CSS.hs
--- a/src/JSDOM/Generated/CSS.hs
+++ b/src/JSDOM/Generated/CSS.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSS
-       (supports2, supports2_, supports, supports_, CSS, castToCSS,
-        gTypeCSS)
+       (supports2, supports2_, supports, supports_, CSS(..), gTypeCSS)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
 supports2 ::
diff --git a/src/JSDOM/Generated/CSSCharsetRule.hs b/src/JSDOM/Generated/CSSCharsetRule.hs
--- a/src/JSDOM/Generated/CSSCharsetRule.hs
+++ b/src/JSDOM/Generated/CSSCharsetRule.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSCharsetRule
-       (setEncoding, getEncoding, getEncodingUnchecked, CSSCharsetRule,
-        castToCSSCharsetRule, gTypeCSSCharsetRule)
+       (setEncoding, getEncoding, getEncodingUnsafe, getEncodingUnchecked,
+        CSSCharsetRule(..), gTypeCSSCharsetRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule.encoding Mozilla CSSCharsetRule.encoding documentation> 
 setEncoding ::
@@ -28,6 +42,15 @@
               CSSCharsetRule -> m (Maybe result)
 getEncoding self
   = liftDOM ((self ^. js "encoding") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule.encoding Mozilla CSSCharsetRule.encoding documentation> 
+getEncodingUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    CSSCharsetRule -> m result
+getEncodingUnsafe self
+  = liftDOM
+      (((self ^. js "encoding") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule.encoding Mozilla CSSCharsetRule.encoding documentation> 
 getEncodingUnchecked ::
diff --git a/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs b/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs
--- a/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs
+++ b/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSFontFaceLoadEvent
-       (getFontface, getFontfaceUnchecked, getError, getErrorUnchecked,
-        CSSFontFaceLoadEvent, castToCSSFontFaceLoadEvent,
+       (getFontface, getFontfaceUnsafe, getFontfaceUnchecked, getError,
+        getErrorUnsafe, getErrorUnchecked, CSSFontFaceLoadEvent(..),
         gTypeCSSFontFaceLoadEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
 getFontface ::
@@ -23,6 +37,15 @@
 getFontface self = liftDOM ((self ^. js "fontface") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
+getFontfaceUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    CSSFontFaceLoadEvent -> m CSSFontFaceRule
+getFontfaceUnsafe self
+  = liftDOM
+      (((self ^. js "fontface") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
 getFontfaceUnchecked ::
                      (MonadDOM m) => CSSFontFaceLoadEvent -> m CSSFontFaceRule
 getFontfaceUnchecked self
@@ -32,6 +55,14 @@
 getError ::
          (MonadDOM m) => CSSFontFaceLoadEvent -> m (Maybe DOMError)
 getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
+getErrorUnsafe ::
+               (MonadDOM m, HasCallStack) => CSSFontFaceLoadEvent -> m DOMError
+getErrorUnsafe self
+  = liftDOM
+      (((self ^. js "error") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
 getErrorUnchecked ::
diff --git a/src/JSDOM/Generated/CSSFontFaceRule.hs b/src/JSDOM/Generated/CSSFontFaceRule.hs
--- a/src/JSDOM/Generated/CSSFontFaceRule.hs
+++ b/src/JSDOM/Generated/CSSFontFaceRule.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSFontFaceRule
-       (getStyle, getStyleUnchecked, CSSFontFaceRule,
-        castToCSSFontFaceRule, gTypeCSSFontFaceRule)
+       (getStyle, getStyleUnsafe, getStyleUnchecked, CSSFontFaceRule(..),
+        gTypeCSSFontFaceRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
 getStyle ::
          (MonadDOM m) => CSSFontFaceRule -> m (Maybe CSSStyleDeclaration)
 getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
+getStyleUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 CSSFontFaceRule -> m CSSStyleDeclaration
+getStyleUnsafe self
+  = liftDOM
+      (((self ^. js "style") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
 getStyleUnchecked ::
diff --git a/src/JSDOM/Generated/CSSImportRule.hs b/src/JSDOM/Generated/CSSImportRule.hs
--- a/src/JSDOM/Generated/CSSImportRule.hs
+++ b/src/JSDOM/Generated/CSSImportRule.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSImportRule
-       (getHref, getHrefUnchecked, getMedia, getMediaUnchecked,
-        getStyleSheet, getStyleSheetUnchecked, CSSImportRule,
-        castToCSSImportRule, gTypeCSSImportRule)
+       (getHref, getHrefUnsafe, getHrefUnchecked, getMedia,
+        getMediaUnsafe, getMediaUnchecked, getStyleSheet,
+        getStyleSheetUnsafe, getStyleSheetUnchecked, CSSImportRule(..),
+        gTypeCSSImportRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
 getHref ::
@@ -24,6 +39,15 @@
 getHref self = liftDOM ((self ^. js "href") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
+getHrefUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                CSSImportRule -> m result
+getHrefUnsafe self
+  = liftDOM
+      (((self ^. js "href") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
 getHrefUnchecked ::
                  (MonadDOM m, FromJSString result) => CSSImportRule -> m result
 getHrefUnchecked self
@@ -34,6 +58,14 @@
 getMedia self = liftDOM ((self ^. js "media") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.media Mozilla CSSImportRule.media documentation> 
+getMediaUnsafe ::
+               (MonadDOM m, HasCallStack) => CSSImportRule -> m MediaList
+getMediaUnsafe self
+  = liftDOM
+      (((self ^. js "media") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.media Mozilla CSSImportRule.media documentation> 
 getMediaUnchecked :: (MonadDOM m) => CSSImportRule -> m MediaList
 getMediaUnchecked self
   = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
@@ -43,6 +75,14 @@
               (MonadDOM m) => CSSImportRule -> m (Maybe CSSStyleSheet)
 getStyleSheet self
   = liftDOM ((self ^. js "styleSheet") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.styleSheet Mozilla CSSImportRule.styleSheet documentation> 
+getStyleSheetUnsafe ::
+                    (MonadDOM m, HasCallStack) => CSSImportRule -> m CSSStyleSheet
+getStyleSheetUnsafe self
+  = liftDOM
+      (((self ^. js "styleSheet") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.styleSheet Mozilla CSSImportRule.styleSheet documentation> 
 getStyleSheetUnchecked ::
diff --git a/src/JSDOM/Generated/CSSKeyframeRule.hs b/src/JSDOM/Generated/CSSKeyframeRule.hs
--- a/src/JSDOM/Generated/CSSKeyframeRule.hs
+++ b/src/JSDOM/Generated/CSSKeyframeRule.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSKeyframeRule
-       (setKeyText, getKeyText, getStyle, getStyleUnchecked,
-        CSSKeyframeRule, castToCSSKeyframeRule, gTypeCSSKeyframeRule)
+       (setKeyText, getKeyText, getStyle, getStyleUnsafe,
+        getStyleUnchecked, CSSKeyframeRule(..), gTypeCSSKeyframeRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
 setKeyText ::
@@ -31,6 +45,15 @@
 getStyle ::
          (MonadDOM m) => CSSKeyframeRule -> m (Maybe CSSStyleDeclaration)
 getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.style Mozilla CSSKeyframeRule.style documentation> 
+getStyleUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 CSSKeyframeRule -> m CSSStyleDeclaration
+getStyleUnsafe self
+  = liftDOM
+      (((self ^. js "style") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.style Mozilla CSSKeyframeRule.style documentation> 
 getStyleUnchecked ::
diff --git a/src/JSDOM/Generated/CSSKeyframesRule.hs b/src/JSDOM/Generated/CSSKeyframesRule.hs
--- a/src/JSDOM/Generated/CSSKeyframesRule.hs
+++ b/src/JSDOM/Generated/CSSKeyframesRule.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSKeyframesRule
        (insertRule, appendRule, deleteRule, findRule, findRule_,
-        findRuleUnchecked, _get, _get_, _getUnchecked, setName, getName,
-        getNameUnchecked, getCssRules, getCssRulesUnchecked,
-        CSSKeyframesRule, castToCSSKeyframesRule, gTypeCSSKeyframesRule)
+        findRuleUnsafe, findRuleUnchecked, _get, _get_, _getUnsafe,
+        _getUnchecked, setName, getName, getNameUnsafe, getNameUnchecked,
+        getCssRules, getCssRulesUnsafe, getCssRulesUnchecked,
+        CSSKeyframesRule(..), gTypeCSSKeyframesRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.insertRule Mozilla CSSKeyframesRule.insertRule documentation> 
 insertRule ::
@@ -50,6 +65,15 @@
   = liftDOM (void (self ^. jsf "findRule" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
+findRuleUnsafe ::
+               (MonadDOM m, ToJSString key, HasCallStack) =>
+                 CSSKeyframesRule -> key -> m CSSKeyframeRule
+findRuleUnsafe self key
+  = liftDOM
+      (((self ^. jsf "findRule" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
 findRuleUnchecked ::
                   (MonadDOM m, ToJSString key) =>
                     CSSKeyframesRule -> key -> m CSSKeyframeRule
@@ -70,6 +94,15 @@
   = liftDOM (void (self ^. jsf "_get" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule._get Mozilla CSSKeyframesRule._get documentation> 
+_getUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             CSSKeyframesRule -> Word -> m CSSKeyframeRule
+_getUnsafe self index
+  = liftDOM
+      (((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule._get Mozilla CSSKeyframesRule._get documentation> 
 _getUnchecked ::
               (MonadDOM m) => CSSKeyframesRule -> Word -> m CSSKeyframeRule
 _getUnchecked self index
@@ -89,6 +122,15 @@
 getName self = liftDOM ((self ^. js "name") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
+getNameUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                CSSKeyframesRule -> m result
+getNameUnsafe self
+  = liftDOM
+      (((self ^. js "name") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
 getNameUnchecked ::
                  (MonadDOM m, FromJSString result) => CSSKeyframesRule -> m result
 getNameUnchecked self
@@ -98,6 +140,14 @@
 getCssRules ::
             (MonadDOM m) => CSSKeyframesRule -> m (Maybe CSSRuleList)
 getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.cssRules Mozilla CSSKeyframesRule.cssRules documentation> 
+getCssRulesUnsafe ::
+                  (MonadDOM m, HasCallStack) => CSSKeyframesRule -> m CSSRuleList
+getCssRulesUnsafe self
+  = liftDOM
+      (((self ^. js "cssRules") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.cssRules Mozilla CSSKeyframesRule.cssRules documentation> 
 getCssRulesUnchecked ::
diff --git a/src/JSDOM/Generated/CSSMediaRule.hs b/src/JSDOM/Generated/CSSMediaRule.hs
--- a/src/JSDOM/Generated/CSSMediaRule.hs
+++ b/src/JSDOM/Generated/CSSMediaRule.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSMediaRule
-       (insertRule, insertRule_, deleteRule, getMedia, getMediaUnchecked,
-        getCssRules, getCssRulesUnchecked, CSSMediaRule,
-        castToCSSMediaRule, gTypeCSSMediaRule)
+       (insertRule, insertRule_, deleteRule, getMedia, getMediaUnsafe,
+        getMediaUnchecked, getCssRules, getCssRulesUnsafe,
+        getCssRulesUnchecked, CSSMediaRule(..), gTypeCSSMediaRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
 insertRule ::
@@ -45,6 +59,14 @@
 getMedia self = liftDOM ((self ^. js "media") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.media Mozilla CSSMediaRule.media documentation> 
+getMediaUnsafe ::
+               (MonadDOM m, HasCallStack) => CSSMediaRule -> m MediaList
+getMediaUnsafe self
+  = liftDOM
+      (((self ^. js "media") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.media Mozilla CSSMediaRule.media documentation> 
 getMediaUnchecked :: (MonadDOM m) => CSSMediaRule -> m MediaList
 getMediaUnchecked self
   = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
@@ -53,6 +75,14 @@
 getCssRules ::
             (MonadDOM m) => CSSMediaRule -> m (Maybe CSSRuleList)
 getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.cssRules Mozilla CSSMediaRule.cssRules documentation> 
+getCssRulesUnsafe ::
+                  (MonadDOM m, HasCallStack) => CSSMediaRule -> m CSSRuleList
+getCssRulesUnsafe self
+  = liftDOM
+      (((self ^. js "cssRules") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.cssRules Mozilla CSSMediaRule.cssRules documentation> 
 getCssRulesUnchecked ::
diff --git a/src/JSDOM/Generated/CSSPageRule.hs b/src/JSDOM/Generated/CSSPageRule.hs
--- a/src/JSDOM/Generated/CSSPageRule.hs
+++ b/src/JSDOM/Generated/CSSPageRule.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSPageRule
-       (setSelectorText, getSelectorText, getSelectorTextUnchecked,
-        getStyle, getStyleUnchecked, CSSPageRule, castToCSSPageRule,
-        gTypeCSSPageRule)
+       (setSelectorText, getSelectorText, getSelectorTextUnsafe,
+        getSelectorTextUnchecked, getStyle, getStyleUnsafe,
+        getStyleUnchecked, CSSPageRule(..), gTypeCSSPageRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
 setSelectorText ::
@@ -31,6 +45,15 @@
   = liftDOM ((self ^. js "selectorText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
+getSelectorTextUnsafe ::
+                      (MonadDOM m, HasCallStack, FromJSString result) =>
+                        CSSPageRule -> m result
+getSelectorTextUnsafe self
+  = liftDOM
+      (((self ^. js "selectorText") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
 getSelectorTextUnchecked ::
                          (MonadDOM m, FromJSString result) => CSSPageRule -> m result
 getSelectorTextUnchecked self
@@ -40,6 +63,14 @@
 getStyle ::
          (MonadDOM m) => CSSPageRule -> m (Maybe CSSStyleDeclaration)
 getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.style Mozilla CSSPageRule.style documentation> 
+getStyleUnsafe ::
+               (MonadDOM m, HasCallStack) => CSSPageRule -> m CSSStyleDeclaration
+getStyleUnsafe self
+  = liftDOM
+      (((self ^. js "style") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.style Mozilla CSSPageRule.style documentation> 
 getStyleUnchecked ::
diff --git a/src/JSDOM/Generated/CSSPrimitiveValue.hs b/src/JSDOM/Generated/CSSPrimitiveValue.hs
--- a/src/JSDOM/Generated/CSSPrimitiveValue.hs
+++ b/src/JSDOM/Generated/CSSPrimitiveValue.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSPrimitiveValue
        (setFloatValue, getFloatValue, getFloatValue_, setStringValue,
         getStringValue, getStringValue_, getCounterValue, getCounterValue_,
-        getCounterValueUnchecked, getRectValue, getRectValue_,
-        getRectValueUnchecked, getRGBColorValue, getRGBColorValue_,
+        getCounterValueUnsafe, getCounterValueUnchecked, getRectValue,
+        getRectValue_, getRectValueUnsafe, getRectValueUnchecked,
+        getRGBColorValue, getRGBColorValue_, getRGBColorValueUnsafe,
         getRGBColorValueUnchecked, 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,
@@ -14,10 +18,10 @@
         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,
-        getPrimitiveType, CSSPrimitiveValue, castToCSSPrimitiveValue,
-        gTypeCSSPrimitiveValue)
+        getPrimitiveType, CSSPrimitiveValue(..), gTypeCSSPrimitiveValue)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -28,6 +32,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setFloatValue Mozilla CSSPrimitiveValue.setFloatValue documentation> 
 setFloatValue ::
@@ -85,6 +99,14 @@
   = liftDOM (void (self ^. jsf "getCounterValue" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
+getCounterValueUnsafe ::
+                      (MonadDOM m, HasCallStack) => CSSPrimitiveValue -> m Counter
+getCounterValueUnsafe self
+  = liftDOM
+      (((self ^. jsf "getCounterValue" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
 getCounterValueUnchecked ::
                          (MonadDOM m) => CSSPrimitiveValue -> m Counter
 getCounterValueUnchecked self
@@ -101,6 +123,14 @@
 getRectValue_ self = liftDOM (void (self ^. jsf "getRectValue" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
+getRectValueUnsafe ::
+                   (MonadDOM m, HasCallStack) => CSSPrimitiveValue -> m Rect
+getRectValueUnsafe self
+  = liftDOM
+      (((self ^. jsf "getRectValue" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
 getRectValueUnchecked ::
                       (MonadDOM m) => CSSPrimitiveValue -> m Rect
 getRectValueUnchecked self
@@ -116,6 +146,14 @@
 getRGBColorValue_ :: (MonadDOM m) => CSSPrimitiveValue -> m ()
 getRGBColorValue_ self
   = liftDOM (void (self ^. jsf "getRGBColorValue" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
+getRGBColorValueUnsafe ::
+                       (MonadDOM m, HasCallStack) => CSSPrimitiveValue -> m RGBColor
+getRGBColorValueUnsafe self
+  = liftDOM
+      (((self ^. jsf "getRGBColorValue" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
 getRGBColorValueUnchecked ::
diff --git a/src/JSDOM/Generated/CSSRule.hs b/src/JSDOM/Generated/CSSRule.hs
--- a/src/JSDOM/Generated/CSSRule.hs
+++ b/src/JSDOM/Generated/CSSRule.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSRule
        (pattern UNKNOWN_RULE, pattern STYLE_RULE, pattern CHARSET_RULE,
@@ -7,12 +10,13 @@
         pattern SUPPORTS_RULE, pattern WEBKIT_VIEWPORT_RULE,
         pattern WEBKIT_REGION_RULE, pattern WEBKIT_KEYFRAMES_RULE,
         pattern WEBKIT_KEYFRAME_RULE, getType, setCssText, getCssText,
-        getCssTextUnchecked, getParentStyleSheet,
-        getParentStyleSheetUnchecked, getParentRule,
-        getParentRuleUnchecked, CSSRule, castToCSSRule, gTypeCSSRule,
-        IsCSSRule, toCSSRule)
+        getCssTextUnsafe, getCssTextUnchecked, getParentStyleSheet,
+        getParentStyleSheetUnsafe, getParentStyleSheetUnchecked,
+        getParentRule, getParentRuleUnsafe, getParentRuleUnchecked,
+        CSSRule(..), gTypeCSSRule, IsCSSRule, toCSSRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern UNKNOWN_RULE = 0
 pattern STYLE_RULE = 1
 pattern CHARSET_RULE = 2
@@ -60,6 +74,15 @@
       (((toCSSRule self) ^. js "cssText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
+getCssTextUnsafe ::
+                 (MonadDOM m, IsCSSRule self, HasCallStack, FromJSString result) =>
+                   self -> m result
+getCssTextUnsafe self
+  = liftDOM
+      ((((toCSSRule self) ^. js "cssText") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
 getCssTextUnchecked ::
                     (MonadDOM m, IsCSSRule self, FromJSString result) =>
                       self -> m result
@@ -75,6 +98,15 @@
       (((toCSSRule self) ^. js "parentStyleSheet") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
+getParentStyleSheetUnsafe ::
+                          (MonadDOM m, IsCSSRule self, HasCallStack) =>
+                            self -> m CSSStyleSheet
+getParentStyleSheetUnsafe self
+  = liftDOM
+      ((((toCSSRule self) ^. js "parentStyleSheet") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
 getParentStyleSheetUnchecked ::
                              (MonadDOM m, IsCSSRule self) => self -> m CSSStyleSheet
 getParentStyleSheetUnchecked self
@@ -87,6 +119,14 @@
               (MonadDOM m, IsCSSRule self) => self -> m (Maybe CSSRule)
 getParentRule self
   = liftDOM (((toCSSRule self) ^. js "parentRule") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
+getParentRuleUnsafe ::
+                    (MonadDOM m, IsCSSRule self, HasCallStack) => self -> m CSSRule
+getParentRuleUnsafe self
+  = liftDOM
+      ((((toCSSRule self) ^. js "parentRule") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
 getParentRuleUnchecked ::
diff --git a/src/JSDOM/Generated/CSSRuleList.hs b/src/JSDOM/Generated/CSSRuleList.hs
--- a/src/JSDOM/Generated/CSSRuleList.hs
+++ b/src/JSDOM/Generated/CSSRuleList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSRuleList
-       (item, item_, itemUnchecked, getLength, CSSRuleList,
-        castToCSSRuleList, gTypeCSSRuleList)
+       (item, item_, itemUnsafe, itemUnchecked, getLength,
+        CSSRuleList(..), gTypeCSSRuleList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
 item :: (MonadDOM m) => CSSRuleList -> Word -> m (Maybe CSSRule)
@@ -25,6 +39,14 @@
 item_ :: (MonadDOM m) => CSSRuleList -> Word -> m ()
 item_ self index
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => CSSRuleList -> Word -> m CSSRule
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
 itemUnchecked :: (MonadDOM m) => CSSRuleList -> Word -> m CSSRule
diff --git a/src/JSDOM/Generated/CSSStyleDeclaration.hs b/src/JSDOM/Generated/CSSStyleDeclaration.hs
--- a/src/JSDOM/Generated/CSSStyleDeclaration.hs
+++ b/src/JSDOM/Generated/CSSStyleDeclaration.hs
@@ -1,19 +1,25 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSStyleDeclaration
-       (getPropertyValue, getPropertyValue_, getPropertyValueUnchecked,
-        getPropertyCSSValue, getPropertyCSSValue_,
+       (getPropertyValue, getPropertyValue_, getPropertyValueUnsafe,
+        getPropertyValueUnchecked, getPropertyCSSValue,
+        getPropertyCSSValue_, getPropertyCSSValueUnsafe,
         getPropertyCSSValueUnchecked, removeProperty, removeProperty_,
-        removePropertyUnchecked, getPropertyPriority, getPropertyPriority_,
+        removePropertyUnsafe, removePropertyUnchecked, getPropertyPriority,
+        getPropertyPriority_, getPropertyPriorityUnsafe,
         getPropertyPriorityUnchecked, setProperty, item, item_,
         getPropertyShorthand, getPropertyShorthand_,
-        getPropertyShorthandUnchecked, isPropertyImplicit,
-        isPropertyImplicit_, setCssText, getCssText, getCssTextUnchecked,
-        getLength, getParentRule, getParentRuleUnchecked,
-        CSSStyleDeclaration, castToCSSStyleDeclaration,
-        gTypeCSSStyleDeclaration)
+        getPropertyShorthandUnsafe, getPropertyShorthandUnchecked,
+        isPropertyImplicit, isPropertyImplicit_, setCssText, getCssText,
+        getCssTextUnsafe, getCssTextUnchecked, getLength, getParentRule,
+        getParentRuleUnsafe, getParentRuleUnchecked,
+        CSSStyleDeclaration(..), gTypeCSSStyleDeclaration)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -24,6 +30,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
 getPropertyValue ::
@@ -43,6 +59,17 @@
       (void (self ^. jsf "getPropertyValue" [toJSVal propertyName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
+getPropertyValueUnsafe ::
+                       (MonadDOM m, ToJSString propertyName, HasCallStack,
+                        FromJSString result) =>
+                         CSSStyleDeclaration -> propertyName -> m result
+getPropertyValueUnsafe self propertyName
+  = liftDOM
+      (((self ^. jsf "getPropertyValue" [toJSVal propertyName]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
 getPropertyValueUnchecked ::
                           (MonadDOM m, ToJSString propertyName, FromJSString result) =>
                             CSSStyleDeclaration -> propertyName -> m result
@@ -69,6 +96,16 @@
       (void (self ^. jsf "getPropertyCSSValue" [toJSVal propertyName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
+getPropertyCSSValueUnsafe ::
+                          (MonadDOM m, ToJSString propertyName, HasCallStack) =>
+                            CSSStyleDeclaration -> propertyName -> m CSSValue
+getPropertyCSSValueUnsafe self propertyName
+  = liftDOM
+      (((self ^. jsf "getPropertyCSSValue" [toJSVal propertyName]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
 getPropertyCSSValueUnchecked ::
                              (MonadDOM m, ToJSString propertyName) =>
                                CSSStyleDeclaration -> propertyName -> m CSSValue
@@ -95,6 +132,17 @@
       (void (self ^. jsf "removeProperty" [toJSVal propertyName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
+removePropertyUnsafe ::
+                     (MonadDOM m, ToJSString propertyName, HasCallStack,
+                      FromJSString result) =>
+                       CSSStyleDeclaration -> propertyName -> m result
+removePropertyUnsafe self propertyName
+  = liftDOM
+      (((self ^. jsf "removeProperty" [toJSVal propertyName]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
 removePropertyUnchecked ::
                         (MonadDOM m, ToJSString propertyName, FromJSString result) =>
                           CSSStyleDeclaration -> propertyName -> m result
@@ -121,6 +169,17 @@
       (void (self ^. jsf "getPropertyPriority" [toJSVal propertyName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
+getPropertyPriorityUnsafe ::
+                          (MonadDOM m, ToJSString propertyName, HasCallStack,
+                           FromJSString result) =>
+                            CSSStyleDeclaration -> propertyName -> m result
+getPropertyPriorityUnsafe self propertyName
+  = liftDOM
+      (((self ^. jsf "getPropertyPriority" [toJSVal propertyName]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
 getPropertyPriorityUnchecked ::
                              (MonadDOM m, ToJSString propertyName, FromJSString result) =>
                                CSSStyleDeclaration -> propertyName -> m result
@@ -172,6 +231,17 @@
       (void (self ^. jsf "getPropertyShorthand" [toJSVal propertyName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
+getPropertyShorthandUnsafe ::
+                           (MonadDOM m, ToJSString propertyName, HasCallStack,
+                            FromJSString result) =>
+                             CSSStyleDeclaration -> propertyName -> m result
+getPropertyShorthandUnsafe self propertyName
+  = liftDOM
+      (((self ^. jsf "getPropertyShorthand" [toJSVal propertyName]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
 getPropertyShorthandUnchecked ::
                               (MonadDOM m, ToJSString propertyName, FromJSString result) =>
                                 CSSStyleDeclaration -> propertyName -> m result
@@ -211,6 +281,15 @@
   = liftDOM ((self ^. js "cssText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
+getCssTextUnsafe ::
+                 (MonadDOM m, HasCallStack, FromJSString result) =>
+                   CSSStyleDeclaration -> m result
+getCssTextUnsafe self
+  = liftDOM
+      (((self ^. js "cssText") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
 getCssTextUnchecked ::
                     (MonadDOM m, FromJSString result) =>
                       CSSStyleDeclaration -> m result
@@ -227,6 +306,14 @@
               (MonadDOM m) => CSSStyleDeclaration -> m (Maybe CSSRule)
 getParentRule self
   = liftDOM ((self ^. js "parentRule") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
+getParentRuleUnsafe ::
+                    (MonadDOM m, HasCallStack) => CSSStyleDeclaration -> m CSSRule
+getParentRuleUnsafe self
+  = liftDOM
+      (((self ^. js "parentRule") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
 getParentRuleUnchecked ::
diff --git a/src/JSDOM/Generated/CSSStyleRule.hs b/src/JSDOM/Generated/CSSStyleRule.hs
--- a/src/JSDOM/Generated/CSSStyleRule.hs
+++ b/src/JSDOM/Generated/CSSStyleRule.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSStyleRule
-       (setSelectorText, getSelectorText, getSelectorTextUnchecked,
-        getStyle, getStyleUnchecked, CSSStyleRule, castToCSSStyleRule,
-        gTypeCSSStyleRule)
+       (setSelectorText, getSelectorText, getSelectorTextUnsafe,
+        getSelectorTextUnchecked, getStyle, getStyleUnsafe,
+        getStyleUnchecked, CSSStyleRule(..), gTypeCSSStyleRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
 setSelectorText ::
@@ -31,6 +45,15 @@
   = liftDOM ((self ^. js "selectorText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
+getSelectorTextUnsafe ::
+                      (MonadDOM m, HasCallStack, FromJSString result) =>
+                        CSSStyleRule -> m result
+getSelectorTextUnsafe self
+  = liftDOM
+      (((self ^. js "selectorText") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
 getSelectorTextUnchecked ::
                          (MonadDOM m, FromJSString result) => CSSStyleRule -> m result
 getSelectorTextUnchecked self
@@ -40,6 +63,14 @@
 getStyle ::
          (MonadDOM m) => CSSStyleRule -> m (Maybe CSSStyleDeclaration)
 getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.style Mozilla CSSStyleRule.style documentation> 
+getStyleUnsafe ::
+               (MonadDOM m, HasCallStack) => CSSStyleRule -> m CSSStyleDeclaration
+getStyleUnsafe self
+  = liftDOM
+      (((self ^. js "style") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.style Mozilla CSSStyleRule.style documentation> 
 getStyleUnchecked ::
diff --git a/src/JSDOM/Generated/CSSStyleSheet.hs b/src/JSDOM/Generated/CSSStyleSheet.hs
--- a/src/JSDOM/Generated/CSSStyleSheet.hs
+++ b/src/JSDOM/Generated/CSSStyleSheet.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSStyleSheet
        (insertRule, insertRule_, deleteRule, addRule, addRule_,
-        removeRule, getOwnerRule, getOwnerRuleUnchecked, getCssRules,
-        getCssRulesUnchecked, getRules, getRulesUnchecked, CSSStyleSheet,
-        castToCSSStyleSheet, gTypeCSSStyleSheet)
+        removeRule, getOwnerRule, getOwnerRuleUnsafe,
+        getOwnerRuleUnchecked, getCssRules, getCssRulesUnsafe,
+        getCssRulesUnchecked, getRules, getRulesUnsafe, getRulesUnchecked,
+        CSSStyleSheet(..), gTypeCSSStyleSheet)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
 insertRule ::
@@ -73,6 +88,14 @@
   = liftDOM ((self ^. js "ownerRule") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.ownerRule Mozilla CSSStyleSheet.ownerRule documentation> 
+getOwnerRuleUnsafe ::
+                   (MonadDOM m, HasCallStack) => CSSStyleSheet -> m CSSRule
+getOwnerRuleUnsafe self
+  = liftDOM
+      (((self ^. js "ownerRule") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.ownerRule Mozilla CSSStyleSheet.ownerRule documentation> 
 getOwnerRuleUnchecked :: (MonadDOM m) => CSSStyleSheet -> m CSSRule
 getOwnerRuleUnchecked self
   = liftDOM ((self ^. js "ownerRule") >>= fromJSValUnchecked)
@@ -83,6 +106,14 @@
 getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.cssRules Mozilla CSSStyleSheet.cssRules documentation> 
+getCssRulesUnsafe ::
+                  (MonadDOM m, HasCallStack) => CSSStyleSheet -> m CSSRuleList
+getCssRulesUnsafe self
+  = liftDOM
+      (((self ^. js "cssRules") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.cssRules Mozilla CSSStyleSheet.cssRules documentation> 
 getCssRulesUnchecked ::
                      (MonadDOM m) => CSSStyleSheet -> m CSSRuleList
 getCssRulesUnchecked self
@@ -91,6 +122,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.rules Mozilla CSSStyleSheet.rules documentation> 
 getRules :: (MonadDOM m) => CSSStyleSheet -> m (Maybe CSSRuleList)
 getRules self = liftDOM ((self ^. js "rules") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.rules Mozilla CSSStyleSheet.rules documentation> 
+getRulesUnsafe ::
+               (MonadDOM m, HasCallStack) => CSSStyleSheet -> m CSSRuleList
+getRulesUnsafe self
+  = liftDOM
+      (((self ^. js "rules") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.rules Mozilla CSSStyleSheet.rules documentation> 
 getRulesUnchecked :: (MonadDOM m) => CSSStyleSheet -> m CSSRuleList
diff --git a/src/JSDOM/Generated/CSSSupportsRule.hs b/src/JSDOM/Generated/CSSSupportsRule.hs
--- a/src/JSDOM/Generated/CSSSupportsRule.hs
+++ b/src/JSDOM/Generated/CSSSupportsRule.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSSupportsRule
        (insertRule, insertRule_, deleteRule, getCssRules,
-        getCssRulesUnchecked, getConditionText, CSSSupportsRule,
-        castToCSSSupportsRule, gTypeCSSSupportsRule)
+        getCssRulesUnsafe, getCssRulesUnchecked, getConditionText,
+        CSSSupportsRule(..), gTypeCSSSupportsRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
 insertRule ::
@@ -44,6 +58,14 @@
 getCssRules ::
             (MonadDOM m) => CSSSupportsRule -> m (Maybe CSSRuleList)
 getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.cssRules Mozilla CSSSupportsRule.cssRules documentation> 
+getCssRulesUnsafe ::
+                  (MonadDOM m, HasCallStack) => CSSSupportsRule -> m CSSRuleList
+getCssRulesUnsafe self
+  = liftDOM
+      (((self ^. js "cssRules") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.cssRules Mozilla CSSSupportsRule.cssRules documentation> 
 getCssRulesUnchecked ::
diff --git a/src/JSDOM/Generated/CSSValue.hs b/src/JSDOM/Generated/CSSValue.hs
--- a/src/JSDOM/Generated/CSSValue.hs
+++ b/src/JSDOM/Generated/CSSValue.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSValue
        (pattern CSS_INHERIT, pattern CSS_PRIMITIVE_VALUE,
         pattern CSS_VALUE_LIST, pattern CSS_CUSTOM, setCssText, getCssText,
-        getCssTextUnchecked, getCssValueType, CSSValue, castToCSSValue,
-        gTypeCSSValue, IsCSSValue, toCSSValue)
+        getCssTextUnsafe, getCssTextUnchecked, getCssValueType,
+        CSSValue(..), gTypeCSSValue, IsCSSValue, toCSSValue)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern CSS_INHERIT = 0
 pattern CSS_PRIMITIVE_VALUE = 1
 pattern CSS_VALUE_LIST = 2
@@ -36,6 +50,15 @@
 getCssText self
   = liftDOM
       (((toCSSValue self) ^. js "cssText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
+getCssTextUnsafe ::
+                 (MonadDOM m, IsCSSValue self, HasCallStack, FromJSString result) =>
+                   self -> m result
+getCssTextUnsafe self
+  = liftDOM
+      ((((toCSSValue self) ^. js "cssText") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
 getCssTextUnchecked ::
diff --git a/src/JSDOM/Generated/CSSValueList.hs b/src/JSDOM/Generated/CSSValueList.hs
--- a/src/JSDOM/Generated/CSSValueList.hs
+++ b/src/JSDOM/Generated/CSSValueList.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CSSValueList
-       (item, item_, itemUnchecked, getLength, CSSValueList,
-        castToCSSValueList, gTypeCSSValueList, IsCSSValueList,
+       (item, item_, itemUnsafe, itemUnchecked, getLength,
+        CSSValueList(..), gTypeCSSValueList, IsCSSValueList,
         toCSSValueList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
 item ::
@@ -31,6 +45,16 @@
 item_ self index
   = liftDOM
       (void ((toCSSValueList self) ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, IsCSSValueList self, HasCallStack) =>
+             self -> Word -> m CSSValue
+itemUnsafe self index
+  = liftDOM
+      ((((toCSSValueList self) ^. jsf "item" [toJSVal index]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
 itemUnchecked ::
diff --git a/src/JSDOM/Generated/CanvasGradient.hs b/src/JSDOM/Generated/CanvasGradient.hs
--- a/src/JSDOM/Generated/CanvasGradient.hs
+++ b/src/JSDOM/Generated/CanvasGradient.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CanvasGradient
-       (addColorStop, CanvasGradient, castToCanvasGradient,
-        gTypeCanvasGradient)
-       where
+       (addColorStop, CanvasGradient(..), gTypeCanvasGradient) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient.addColorStop Mozilla CanvasGradient.addColorStop documentation> 
 addColorStop ::
diff --git a/src/JSDOM/Generated/CanvasRenderingContext.hs b/src/JSDOM/Generated/CanvasRenderingContext.hs
--- a/src/JSDOM/Generated/CanvasRenderingContext.hs
+++ b/src/JSDOM/Generated/CanvasRenderingContext.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CanvasRenderingContext
-       (getCanvas, getCanvasUnchecked, CanvasRenderingContext,
-        castToCanvasRenderingContext, gTypeCanvasRenderingContext,
+       (getCanvas, getCanvasUnsafe, getCanvasUnchecked,
+        CanvasRenderingContext(..), gTypeCanvasRenderingContext,
         IsCanvasRenderingContext, toCanvasRenderingContext)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext.canvas Mozilla CanvasRenderingContext.canvas documentation> 
 getCanvas ::
@@ -24,6 +38,15 @@
 getCanvas self
   = liftDOM
       (((toCanvasRenderingContext self) ^. js "canvas") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext.canvas Mozilla CanvasRenderingContext.canvas documentation> 
+getCanvasUnsafe ::
+                (MonadDOM m, IsCanvasRenderingContext self, HasCallStack) =>
+                  self -> m HTMLCanvasElement
+getCanvasUnsafe self
+  = liftDOM
+      ((((toCanvasRenderingContext self) ^. js "canvas") >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext.canvas Mozilla CanvasRenderingContext.canvas documentation> 
 getCanvasUnchecked ::
diff --git a/src/JSDOM/Generated/CanvasRenderingContext2D.hs b/src/JSDOM/Generated/CanvasRenderingContext2D.hs
--- a/src/JSDOM/Generated/CanvasRenderingContext2D.hs
+++ b/src/JSDOM/Generated/CanvasRenderingContext2D.hs
@@ -1,20 +1,24 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CanvasRenderingContext2D
        (save, restore, scale, rotate, translate, transform, setTransform,
         createLinearGradient, createLinearGradient_,
-        createLinearGradientUnchecked, createRadialGradient,
-        createRadialGradient_, createRadialGradientUnchecked, setLineDash,
-        getLineDash, getLineDash_, clearRect, fillRect, beginPath,
-        closePath, moveTo, lineTo, quadraticCurveTo, bezierCurveTo, arcTo,
-        rect, arc, fillPath, strokePath, clipPath, fill, stroke, clip,
-        isPointInPathPath, isPointInPathPath_, isPointInStrokePath,
-        isPointInStrokePath_, isPointInPath, isPointInPath_,
-        isPointInStroke, isPointInStroke_, measureText, measureText_,
-        measureTextUnchecked, setAlpha, setCompositeOperation,
-        setLineWidthFunction, setLineCapFunction, setLineJoinFunction,
-        setMiterLimitFunction, clearShadow, fillText, strokeText,
-        setStrokeColor, setStrokeColorGray, setStrokeColorRGB,
+        createLinearGradientUnsafe, createLinearGradientUnchecked,
+        createRadialGradient, createRadialGradient_,
+        createRadialGradientUnsafe, createRadialGradientUnchecked,
+        setLineDash, getLineDash, getLineDash_, clearRect, fillRect,
+        beginPath, closePath, moveTo, lineTo, quadraticCurveTo,
+        bezierCurveTo, arcTo, rect, arc, fillPath, strokePath, clipPath,
+        fill, stroke, clip, isPointInPathPath, isPointInPathPath_,
+        isPointInStrokePath, isPointInStrokePath_, isPointInPath,
+        isPointInPath_, isPointInStroke, isPointInStroke_, measureText,
+        measureText_, measureTextUnsafe, measureTextUnchecked, setAlpha,
+        setCompositeOperation, setLineWidthFunction, setLineCapFunction,
+        setLineJoinFunction, setMiterLimitFunction, clearShadow, fillText,
+        strokeText, setStrokeColor, setStrokeColorGray, setStrokeColorRGB,
         setStrokeColorCYMK, setFillColor, setFillColorGray,
         setFillColorRGB, setFillColorCYMK, strokeRect, drawImage,
         drawImageScaled, drawImagePart, drawImageFromCanvas,
@@ -24,33 +28,38 @@
         setShadowGray, setShadowRGB, setShadowCYMK, putImageData,
         putImageDataDirty, webkitPutImageDataHD, webkitPutImageDataHDDirty,
         createPatternFromCanvas, createPatternFromCanvas_,
-        createPatternFromCanvasUnchecked, createPattern, createPattern_,
+        createPatternFromCanvasUnsafe, createPatternFromCanvasUnchecked,
+        createPattern, createPattern_, createPatternUnsafe,
         createPatternUnchecked, createImageData, createImageData_,
-        createImageDataUnchecked, createImageDataSize,
-        createImageDataSize_, createImageDataSizeUnchecked, getImageData,
-        getImageData_, getImageDataUnchecked, webkitGetImageDataHD,
-        webkitGetImageDataHD_, webkitGetImageDataHDUnchecked,
+        createImageDataUnsafe, createImageDataUnchecked,
+        createImageDataSize, createImageDataSize_,
+        createImageDataSizeUnsafe, createImageDataSizeUnchecked,
+        getImageData, getImageData_, getImageDataUnsafe,
+        getImageDataUnchecked, webkitGetImageDataHD, webkitGetImageDataHD_,
+        webkitGetImageDataHDUnsafe, webkitGetImageDataHDUnchecked,
         drawFocusIfNeeded, drawFocusIfNeededPath, setGlobalAlpha,
         getGlobalAlpha, setGlobalCompositeOperation,
-        getGlobalCompositeOperation, getGlobalCompositeOperationUnchecked,
-        setLineWidth, getLineWidth, setLineCap, getLineCap,
-        getLineCapUnchecked, setLineJoin, getLineJoin,
-        getLineJoinUnchecked, setMiterLimit, getMiterLimit,
-        setShadowOffsetX, getShadowOffsetX, setShadowOffsetY,
-        getShadowOffsetY, setShadowBlur, getShadowBlur, setShadowColor,
-        getShadowColor, getShadowColorUnchecked, setLineDashOffset,
-        getLineDashOffset, setWebkitLineDash, getWebkitLineDash,
+        getGlobalCompositeOperation, getGlobalCompositeOperationUnsafe,
+        getGlobalCompositeOperationUnchecked, setLineWidth, getLineWidth,
+        setLineCap, getLineCap, getLineCapUnsafe, getLineCapUnchecked,
+        setLineJoin, getLineJoin, getLineJoinUnsafe, getLineJoinUnchecked,
+        setMiterLimit, getMiterLimit, setShadowOffsetX, getShadowOffsetX,
+        setShadowOffsetY, getShadowOffsetY, setShadowBlur, getShadowBlur,
+        setShadowColor, getShadowColor, getShadowColorUnsafe,
+        getShadowColorUnchecked, setLineDashOffset, getLineDashOffset,
+        setWebkitLineDash, getWebkitLineDash, getWebkitLineDashUnsafe,
         getWebkitLineDashUnchecked, setWebkitLineDashOffset,
         getWebkitLineDashOffset, setFont, getFont, setTextAlign,
         getTextAlign, setTextBaseline, getTextBaseline, setDirection,
-        getDirection, setStrokeStyle, getStrokeStyle,
+        getDirection, setStrokeStyle, getStrokeStyle, getStrokeStyleUnsafe,
         getStrokeStyleUnchecked, setFillStyle, getFillStyle,
-        getFillStyleUnchecked, getWebkitBackingStorePixelRatio,
-        setWebkitImageSmoothingEnabled, getWebkitImageSmoothingEnabled,
-        CanvasRenderingContext2D, castToCanvasRenderingContext2D,
+        getFillStyleUnsafe, getFillStyleUnchecked,
+        getWebkitBackingStorePixelRatio, setWebkitImageSmoothingEnabled,
+        getWebkitImageSmoothingEnabled, CanvasRenderingContext2D(..),
         gTypeCanvasRenderingContext2D)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -61,6 +70,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.save Mozilla CanvasRenderingContext2D.save documentation> 
 save :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
@@ -134,6 +153,18 @@
             [toJSVal x0, toJSVal y0, toJSVal x1, toJSVal y1]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
+createLinearGradientUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             CanvasRenderingContext2D ->
+                               Float -> Float -> Float -> Float -> m CanvasGradient
+createLinearGradientUnsafe self x0 y0 x1 y1
+  = liftDOM
+      (((self ^. jsf "createLinearGradient"
+           [toJSVal x0, toJSVal y0, toJSVal x1, toJSVal y1])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
 createLinearGradientUnchecked ::
                               (MonadDOM m) =>
                                 CanvasRenderingContext2D ->
@@ -171,6 +202,20 @@
              toJSVal r1]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
+createRadialGradientUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             CanvasRenderingContext2D ->
+                               Float ->
+                                 Float -> Float -> Float -> Float -> Float -> m CanvasGradient
+createRadialGradientUnsafe self x0 y0 r0 x1 y1 r1
+  = liftDOM
+      (((self ^. jsf "createRadialGradient"
+           [toJSVal x0, toJSVal y0, toJSVal r0, toJSVal x1, toJSVal y1,
+            toJSVal r1])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
 createRadialGradientUnchecked ::
                               (MonadDOM m) =>
                                 CanvasRenderingContext2D ->
@@ -437,6 +482,15 @@
   = liftDOM (void (self ^. jsf "measureText" [toJSVal text]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
+measureTextUnsafe ::
+                  (MonadDOM m, ToJSString text, HasCallStack) =>
+                    CanvasRenderingContext2D -> text -> m TextMetrics
+measureTextUnsafe self text
+  = liftDOM
+      (((self ^. jsf "measureText" [toJSVal text]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
 measureTextUnchecked ::
                      (MonadDOM m, ToJSString text) =>
                        CanvasRenderingContext2D -> text -> m TextMetrics
@@ -847,6 +901,18 @@
             [toJSVal canvas, toJSVal repetitionType]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPatternFromCanvasUnsafe ::
+                              (MonadDOM m, ToJSString repetitionType, HasCallStack) =>
+                                CanvasRenderingContext2D ->
+                                  Maybe HTMLCanvasElement -> Maybe repetitionType -> m CanvasPattern
+createPatternFromCanvasUnsafe self canvas repetitionType
+  = liftDOM
+      (((self ^. jsf "createPattern"
+           [toJSVal canvas, toJSVal repetitionType])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
 createPatternFromCanvasUnchecked ::
                                  (MonadDOM m, ToJSString repetitionType) =>
                                    CanvasRenderingContext2D ->
@@ -882,6 +948,18 @@
             [toJSVal image, toJSVal repetitionType]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPatternUnsafe ::
+                    (MonadDOM m, ToJSString repetitionType, HasCallStack) =>
+                      CanvasRenderingContext2D ->
+                        Maybe HTMLImageElement -> Maybe repetitionType -> m CanvasPattern
+createPatternUnsafe self image repetitionType
+  = liftDOM
+      (((self ^. jsf "createPattern"
+           [toJSVal image, toJSVal repetitionType])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
 createPatternUnchecked ::
                        (MonadDOM m, ToJSString repetitionType) =>
                          CanvasRenderingContext2D ->
@@ -908,6 +986,16 @@
       (void (self ^. jsf "createImageData" [toJSVal imagedata]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageDataUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        CanvasRenderingContext2D -> Maybe ImageData -> m ImageData
+createImageDataUnsafe self imagedata
+  = liftDOM
+      (((self ^. jsf "createImageData" [toJSVal imagedata]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
 createImageDataUnchecked ::
                          (MonadDOM m) =>
                            CanvasRenderingContext2D -> Maybe ImageData -> m ImageData
@@ -933,6 +1021,16 @@
       (void (self ^. jsf "createImageData" [toJSVal sw, toJSVal sh]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageDataSizeUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            CanvasRenderingContext2D -> Float -> Float -> m ImageData
+createImageDataSizeUnsafe self sw sh
+  = liftDOM
+      (((self ^. jsf "createImageData" [toJSVal sw, toJSVal sh]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
 createImageDataSizeUnchecked ::
                              (MonadDOM m) =>
                                CanvasRenderingContext2D -> Float -> Float -> m ImageData
@@ -964,6 +1062,18 @@
             [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
+getImageDataUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     CanvasRenderingContext2D ->
+                       Float -> Float -> Float -> Float -> m ImageData
+getImageDataUnsafe self sx sy sw sh
+  = liftDOM
+      (((self ^. jsf "getImageData"
+           [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
 getImageDataUnchecked ::
                       (MonadDOM m) =>
                         CanvasRenderingContext2D ->
@@ -997,6 +1107,18 @@
             [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
+webkitGetImageDataHDUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             CanvasRenderingContext2D ->
+                               Float -> Float -> Float -> Float -> m ImageData
+webkitGetImageDataHDUnsafe self sx sy sw sh
+  = liftDOM
+      (((self ^. jsf "webkitGetImageDataHD"
+           [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
 webkitGetImageDataHDUnchecked ::
                               (MonadDOM m) =>
                                 CanvasRenderingContext2D ->
@@ -1053,6 +1175,15 @@
       ((self ^. js "globalCompositeOperation") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
+getGlobalCompositeOperationUnsafe ::
+                                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                                    CanvasRenderingContext2D -> m result
+getGlobalCompositeOperationUnsafe self
+  = liftDOM
+      (((self ^. js "globalCompositeOperation") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
 getGlobalCompositeOperationUnchecked ::
                                      (MonadDOM m, FromJSString result) =>
                                        CanvasRenderingContext2D -> m result
@@ -1086,6 +1217,15 @@
   = liftDOM ((self ^. js "lineCap") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
+getLineCapUnsafe ::
+                 (MonadDOM m, HasCallStack, FromJSString result) =>
+                   CanvasRenderingContext2D -> m result
+getLineCapUnsafe self
+  = liftDOM
+      (((self ^. js "lineCap") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
 getLineCapUnchecked ::
                     (MonadDOM m, FromJSString result) =>
                       CanvasRenderingContext2D -> m result
@@ -1107,6 +1247,15 @@
   = liftDOM ((self ^. js "lineJoin") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
+getLineJoinUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    CanvasRenderingContext2D -> m result
+getLineJoinUnsafe self
+  = liftDOM
+      (((self ^. js "lineJoin") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
 getLineJoinUnchecked ::
                      (MonadDOM m, FromJSString result) =>
                        CanvasRenderingContext2D -> m result
@@ -1180,6 +1329,15 @@
   = liftDOM ((self ^. js "shadowColor") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
+getShadowColorUnsafe ::
+                     (MonadDOM m, HasCallStack, FromJSString result) =>
+                       CanvasRenderingContext2D -> m result
+getShadowColorUnsafe self
+  = liftDOM
+      (((self ^. js "shadowColor") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
 getShadowColorUnchecked ::
                         (MonadDOM m, FromJSString result) =>
                           CanvasRenderingContext2D -> m result
@@ -1213,6 +1371,14 @@
   = liftDOM ((self ^. js "webkitLineDash") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
+getWebkitLineDashUnsafe ::
+                        (MonadDOM m, HasCallStack) => CanvasRenderingContext2D -> m Array
+getWebkitLineDashUnsafe self
+  = liftDOM
+      (((self ^. js "webkitLineDash") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
 getWebkitLineDashUnchecked ::
                            (MonadDOM m) => CanvasRenderingContext2D -> m Array
 getWebkitLineDashUnchecked self
@@ -1300,6 +1466,15 @@
   = liftDOM ((self ^. js "strokeStyle") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
+getStrokeStyleUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       CanvasRenderingContext2D -> m CanvasStyle
+getStrokeStyleUnsafe self
+  = liftDOM
+      (((self ^. js "strokeStyle") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
 getStrokeStyleUnchecked ::
                         (MonadDOM m) => CanvasRenderingContext2D -> m CanvasStyle
 getStrokeStyleUnchecked self
@@ -1317,6 +1492,15 @@
              (MonadDOM m) => CanvasRenderingContext2D -> m (Maybe CanvasStyle)
 getFillStyle self
   = liftDOM ((self ^. js "fillStyle") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
+getFillStyleUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     CanvasRenderingContext2D -> m CanvasStyle
+getFillStyleUnsafe self
+  = liftDOM
+      (((self ^. js "fillStyle") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
 getFillStyleUnchecked ::
diff --git a/src/JSDOM/Generated/CapabilityRange.hs b/src/JSDOM/Generated/CapabilityRange.hs
--- a/src/JSDOM/Generated/CapabilityRange.hs
+++ b/src/JSDOM/Generated/CapabilityRange.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CapabilityRange
-       (getMax, getMin, getSupported, CapabilityRange,
-        castToCapabilityRange, gTypeCapabilityRange)
+       (getMax, getMin, getSupported, CapabilityRange(..),
+        gTypeCapabilityRange)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange.max Mozilla CapabilityRange.max documentation> 
 getMax :: (MonadDOM m) => CapabilityRange -> m JSVal
diff --git a/src/JSDOM/Generated/CharacterData.hs b/src/JSDOM/Generated/CharacterData.hs
--- a/src/JSDOM/Generated/CharacterData.hs
+++ b/src/JSDOM/Generated/CharacterData.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CharacterData
-       (substringData, substringData_, substringDataUnchecked, appendData,
-        insertData, deleteData, replaceData, setData, getData,
-        getDataUnchecked, getLength, CharacterData, castToCharacterData,
-        gTypeCharacterData, IsCharacterData, toCharacterData)
+       (substringData, substringData_, substringDataUnsafe,
+        substringDataUnchecked, appendData, insertData, deleteData,
+        replaceData, setData, getData, getDataUnsafe, getDataUnchecked,
+        getLength, CharacterData(..), gTypeCharacterData, IsCharacterData,
+        toCharacterData)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
 substringData ::
@@ -38,6 +53,18 @@
             [toJSVal offset, toJSVal length]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
+substringDataUnsafe ::
+                    (MonadDOM m, IsCharacterData self, HasCallStack,
+                     FromJSString result) =>
+                      self -> Word -> Word -> m result
+substringDataUnsafe self offset length
+  = liftDOM
+      ((((toCharacterData self) ^. jsf "substringData"
+           [toJSVal offset, toJSVal length])
+          >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
 substringDataUnchecked ::
                        (MonadDOM m, IsCharacterData self, FromJSString result) =>
                          self -> Word -> Word -> m result
@@ -98,6 +125,16 @@
 getData self
   = liftDOM
       (((toCharacterData self) ^. js "data") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
+getDataUnsafe ::
+              (MonadDOM m, IsCharacterData self, HasCallStack,
+               FromJSString result) =>
+                self -> m result
+getDataUnsafe self
+  = liftDOM
+      ((((toCharacterData self) ^. js "data") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
 getDataUnchecked ::
diff --git a/src/JSDOM/Generated/ChildNode.hs b/src/JSDOM/Generated/ChildNode.hs
--- a/src/JSDOM/Generated/ChildNode.hs
+++ b/src/JSDOM/Generated/ChildNode.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ChildNode
-       (remove, ChildNode, castToChildNode, gTypeChildNode) where
+       (remove, ChildNode(..), gTypeChildNode) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -13,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove Mozilla ChildNode.remove documentation> 
 remove :: (MonadDOM m) => ChildNode -> m ()
diff --git a/src/JSDOM/Generated/ClientRect.hs b/src/JSDOM/Generated/ClientRect.hs
--- a/src/JSDOM/Generated/ClientRect.hs
+++ b/src/JSDOM/Generated/ClientRect.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ClientRect
        (getTop, getRight, getBottom, getLeft, getWidth, getHeight,
-        ClientRect, castToClientRect, gTypeClientRect)
+        ClientRect(..), gTypeClientRect)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect.top Mozilla ClientRect.top documentation> 
 getTop :: (MonadDOM m) => ClientRect -> m Float
diff --git a/src/JSDOM/Generated/ClientRectList.hs b/src/JSDOM/Generated/ClientRectList.hs
--- a/src/JSDOM/Generated/ClientRectList.hs
+++ b/src/JSDOM/Generated/ClientRectList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ClientRectList
-       (item, item_, itemUnchecked, getLength, ClientRectList,
-        castToClientRectList, gTypeClientRectList)
+       (item, item_, itemUnsafe, itemUnchecked, getLength,
+        ClientRectList(..), gTypeClientRectList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList.item Mozilla ClientRectList.item documentation> 
 item ::
@@ -26,6 +40,15 @@
 item_ :: (MonadDOM m) => ClientRectList -> Word -> m ()
 item_ self index
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList.item Mozilla ClientRectList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             ClientRectList -> Word -> m ClientRect
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList.item Mozilla ClientRectList.item documentation> 
 itemUnchecked ::
diff --git a/src/JSDOM/Generated/CloseEvent.hs b/src/JSDOM/Generated/CloseEvent.hs
--- a/src/JSDOM/Generated/CloseEvent.hs
+++ b/src/JSDOM/Generated/CloseEvent.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CloseEvent
-       (getWasClean, getCode, getReason, CloseEvent, castToCloseEvent,
-        gTypeCloseEvent)
+       (getWasClean, getCode, getReason, CloseEvent(..), gTypeCloseEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.wasClean Mozilla CloseEvent.wasClean documentation> 
 getWasClean :: (MonadDOM m) => CloseEvent -> m Bool
diff --git a/src/JSDOM/Generated/CommandLineAPIHost.hs b/src/JSDOM/Generated/CommandLineAPIHost.hs
--- a/src/JSDOM/Generated/CommandLineAPIHost.hs
+++ b/src/JSDOM/Generated/CommandLineAPIHost.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CommandLineAPIHost
        (clearConsoleMessages, copyText, inspect, inspectedObject,
         inspectedObject_, getEventListeners, getEventListeners_,
-        getEventListenersUnchecked, databaseId, databaseId_, storageId,
-        storageId_, CommandLineAPIHost, castToCommandLineAPIHost,
+        getEventListenersUnsafe, getEventListenersUnchecked, databaseId,
+        databaseId_, storageId, storageId_, CommandLineAPIHost(..),
         gTypeCommandLineAPIHost)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.clearConsoleMessages Mozilla CommandLineAPIHost.clearConsoleMessages documentation> 
 clearConsoleMessages :: (MonadDOM m) => CommandLineAPIHost -> m ()
@@ -64,6 +78,15 @@
                      CommandLineAPIHost -> Maybe node -> m ()
 getEventListeners_ self node
   = liftDOM (void (self ^. jsf "getEventListeners" [toJSVal node]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
+getEventListenersUnsafe ::
+                        (MonadDOM m, IsNode node, HasCallStack) =>
+                          CommandLineAPIHost -> Maybe node -> m Array
+getEventListenersUnsafe self node
+  = liftDOM
+      (((self ^. jsf "getEventListeners" [toJSVal node]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
 getEventListenersUnchecked ::
diff --git a/src/JSDOM/Generated/Comment.hs b/src/JSDOM/Generated/Comment.hs
--- a/src/JSDOM/Generated/Comment.hs
+++ b/src/JSDOM/Generated/Comment.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Comment
-       (newComment, Comment, castToComment, gTypeComment) where
+       (newComment, Comment(..), gTypeComment) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -13,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation> 
 newComment :: (MonadDOM m, ToJSString data') => data' -> m Comment
diff --git a/src/JSDOM/Generated/CompositionEvent.hs b/src/JSDOM/Generated/CompositionEvent.hs
--- a/src/JSDOM/Generated/CompositionEvent.hs
+++ b/src/JSDOM/Generated/CompositionEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CompositionEvent
-       (initCompositionEvent, getData, CompositionEvent,
-        castToCompositionEvent, gTypeCompositionEvent)
+       (initCompositionEvent, getData, CompositionEvent(..),
+        gTypeCompositionEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.initCompositionEvent Mozilla CompositionEvent.initCompositionEvent documentation> 
 initCompositionEvent ::
diff --git a/src/JSDOM/Generated/ConvolverNode.hs b/src/JSDOM/Generated/ConvolverNode.hs
--- a/src/JSDOM/Generated/ConvolverNode.hs
+++ b/src/JSDOM/Generated/ConvolverNode.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ConvolverNode
-       (setBuffer, getBuffer, getBufferUnchecked, setNormalize,
-        getNormalize, ConvolverNode, castToConvolverNode,
-        gTypeConvolverNode)
+       (setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked,
+        setNormalize, getNormalize, ConvolverNode(..), gTypeConvolverNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
 setBuffer ::
@@ -25,6 +38,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
 getBuffer :: (MonadDOM m) => ConvolverNode -> m (Maybe AudioBuffer)
 getBuffer self = liftDOM ((self ^. js "buffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
+getBufferUnsafe ::
+                (MonadDOM m, HasCallStack) => ConvolverNode -> m AudioBuffer
+getBufferUnsafe self
+  = liftDOM
+      (((self ^. js "buffer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
 getBufferUnchecked ::
diff --git a/src/JSDOM/Generated/Coordinates.hs b/src/JSDOM/Generated/Coordinates.hs
--- a/src/JSDOM/Generated/Coordinates.hs
+++ b/src/JSDOM/Generated/Coordinates.hs
@@ -1,12 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Coordinates
-       (getLatitude, getLongitude, getAltitude, getAltitudeUnchecked,
-        getAccuracy, getAltitudeAccuracy, getAltitudeAccuracyUnchecked,
-        getHeading, getHeadingUnchecked, getSpeed, getSpeedUnchecked,
-        Coordinates, castToCoordinates, gTypeCoordinates)
+       (getLatitude, getLongitude, getAltitude, getAltitudeUnsafe,
+        getAltitudeUnchecked, getAccuracy, getAltitudeAccuracy,
+        getAltitudeAccuracyUnsafe, getAltitudeAccuracyUnchecked,
+        getHeading, getHeadingUnsafe, getHeadingUnchecked, getSpeed,
+        getSpeedUnsafe, getSpeedUnchecked, Coordinates(..),
+        gTypeCoordinates)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.latitude Mozilla Coordinates.latitude documentation> 
 getLatitude :: (MonadDOM m) => Coordinates -> m Double
@@ -33,6 +49,14 @@
 getAltitude self = liftDOM ((self ^. js "altitude") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
+getAltitudeUnsafe ::
+                  (MonadDOM m, HasCallStack) => Coordinates -> m Double
+getAltitudeUnsafe self
+  = liftDOM
+      (((self ^. js "altitude") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
 getAltitudeUnchecked :: (MonadDOM m) => Coordinates -> m Double
 getAltitudeUnchecked self
   = liftDOM ((self ^. js "altitude") >>= fromJSValUnchecked)
@@ -49,6 +73,14 @@
   = liftDOM ((self ^. js "altitudeAccuracy") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
+getAltitudeAccuracyUnsafe ::
+                          (MonadDOM m, HasCallStack) => Coordinates -> m Double
+getAltitudeAccuracyUnsafe self
+  = liftDOM
+      (((self ^. js "altitudeAccuracy") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
 getAltitudeAccuracyUnchecked ::
                              (MonadDOM m) => Coordinates -> m Double
 getAltitudeAccuracyUnchecked self
@@ -59,6 +91,14 @@
 getHeading self = liftDOM ((self ^. js "heading") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
+getHeadingUnsafe ::
+                 (MonadDOM m, HasCallStack) => Coordinates -> m Double
+getHeadingUnsafe self
+  = liftDOM
+      (((self ^. js "heading") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
 getHeadingUnchecked :: (MonadDOM m) => Coordinates -> m Double
 getHeadingUnchecked self
   = liftDOM ((self ^. js "heading") >>= fromJSValUnchecked)
@@ -66,6 +106,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
 getSpeed :: (MonadDOM m) => Coordinates -> m (Maybe Double)
 getSpeed self = liftDOM ((self ^. js "speed") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
+getSpeedUnsafe ::
+               (MonadDOM m, HasCallStack) => Coordinates -> m Double
+getSpeedUnsafe self
+  = liftDOM
+      (((self ^. js "speed") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
 getSpeedUnchecked :: (MonadDOM m) => Coordinates -> m Double
diff --git a/src/JSDOM/Generated/Counter.hs b/src/JSDOM/Generated/Counter.hs
--- a/src/JSDOM/Generated/Counter.hs
+++ b/src/JSDOM/Generated/Counter.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Counter
-       (getIdentifier, getListStyle, getSeparator, Counter, castToCounter,
+       (getIdentifier, getListStyle, getSeparator, Counter(..),
         gTypeCounter)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.identifier Mozilla Counter.identifier documentation> 
 getIdentifier ::
diff --git a/src/JSDOM/Generated/Crypto.hs b/src/JSDOM/Generated/Crypto.hs
--- a/src/JSDOM/Generated/Crypto.hs
+++ b/src/JSDOM/Generated/Crypto.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Crypto
-       (getRandomValues, getRandomValues_, getRandomValuesUnchecked,
-        getWebkitSubtle, getWebkitSubtleUnchecked, Crypto, castToCrypto,
-        gTypeCrypto)
+       (getRandomValues, getRandomValues_, getRandomValuesUnsafe,
+        getRandomValuesUnchecked, getWebkitSubtle, getWebkitSubtleUnsafe,
+        getWebkitSubtleUnchecked, Crypto(..), gTypeCrypto)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
 getRandomValues ::
@@ -33,6 +47,15 @@
   = liftDOM (void (self ^. jsf "getRandomValues" [toJSVal array]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
+getRandomValuesUnsafe ::
+                      (MonadDOM m, IsArrayBufferView array, HasCallStack) =>
+                        Crypto -> Maybe array -> m ArrayBufferView
+getRandomValuesUnsafe self array
+  = liftDOM
+      (((self ^. jsf "getRandomValues" [toJSVal array]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
 getRandomValuesUnchecked ::
                          (MonadDOM m, IsArrayBufferView array) =>
                            Crypto -> Maybe array -> m ArrayBufferView
@@ -45,6 +68,14 @@
 getWebkitSubtle :: (MonadDOM m) => Crypto -> m (Maybe SubtleCrypto)
 getWebkitSubtle self
   = liftDOM ((self ^. js "webkitSubtle") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.webkitSubtle Mozilla Crypto.webkitSubtle documentation> 
+getWebkitSubtleUnsafe ::
+                      (MonadDOM m, HasCallStack) => Crypto -> m SubtleCrypto
+getWebkitSubtleUnsafe self
+  = liftDOM
+      (((self ^. js "webkitSubtle") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.webkitSubtle Mozilla Crypto.webkitSubtle documentation> 
 getWebkitSubtleUnchecked ::
diff --git a/src/JSDOM/Generated/CryptoKey.hs b/src/JSDOM/Generated/CryptoKey.hs
--- a/src/JSDOM/Generated/CryptoKey.hs
+++ b/src/JSDOM/Generated/CryptoKey.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CryptoKey
-       (getType, getExtractable, getAlgorithm, getAlgorithmUnchecked,
-        getUsages, CryptoKey, castToCryptoKey, gTypeCryptoKey)
+       (getType, getExtractable, getAlgorithm, getAlgorithmUnsafe,
+        getAlgorithmUnchecked, getUsages, CryptoKey(..), gTypeCryptoKey)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.type Mozilla CryptoKey.type documentation> 
 getType :: (MonadDOM m) => CryptoKey -> m KeyType
@@ -29,6 +43,14 @@
 getAlgorithm :: (MonadDOM m) => CryptoKey -> m (Maybe Algorithm)
 getAlgorithm self
   = liftDOM ((self ^. js "algorithm") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.algorithm Mozilla CryptoKey.algorithm documentation> 
+getAlgorithmUnsafe ::
+                   (MonadDOM m, HasCallStack) => CryptoKey -> m Algorithm
+getAlgorithmUnsafe self
+  = liftDOM
+      (((self ^. js "algorithm") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.algorithm Mozilla CryptoKey.algorithm documentation> 
 getAlgorithmUnchecked :: (MonadDOM m) => CryptoKey -> m Algorithm
diff --git a/src/JSDOM/Generated/CryptoKeyPair.hs b/src/JSDOM/Generated/CryptoKeyPair.hs
--- a/src/JSDOM/Generated/CryptoKeyPair.hs
+++ b/src/JSDOM/Generated/CryptoKeyPair.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CryptoKeyPair
-       (getPublicKey, getPublicKeyUnchecked, getPrivateKey,
-        getPrivateKeyUnchecked, CryptoKeyPair, castToCryptoKeyPair,
-        gTypeCryptoKeyPair)
+       (getPublicKey, getPublicKeyUnsafe, getPublicKeyUnchecked,
+        getPrivateKey, getPrivateKeyUnsafe, getPrivateKeyUnchecked,
+        CryptoKeyPair(..), gTypeCryptoKeyPair)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.publicKey Mozilla CryptoKeyPair.publicKey documentation> 
 getPublicKey ::
@@ -24,6 +38,14 @@
   = liftDOM ((self ^. js "publicKey") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.publicKey Mozilla CryptoKeyPair.publicKey documentation> 
+getPublicKeyUnsafe ::
+                   (MonadDOM m, HasCallStack) => CryptoKeyPair -> m CryptoKey
+getPublicKeyUnsafe self
+  = liftDOM
+      (((self ^. js "publicKey") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.publicKey Mozilla CryptoKeyPair.publicKey documentation> 
 getPublicKeyUnchecked ::
                       (MonadDOM m) => CryptoKeyPair -> m CryptoKey
 getPublicKeyUnchecked self
@@ -34,6 +56,14 @@
               (MonadDOM m) => CryptoKeyPair -> m (Maybe CryptoKey)
 getPrivateKey self
   = liftDOM ((self ^. js "privateKey") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.privateKey Mozilla CryptoKeyPair.privateKey documentation> 
+getPrivateKeyUnsafe ::
+                    (MonadDOM m, HasCallStack) => CryptoKeyPair -> m CryptoKey
+getPrivateKeyUnsafe self
+  = liftDOM
+      (((self ^. js "privateKey") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair.privateKey Mozilla CryptoKeyPair.privateKey documentation> 
 getPrivateKeyUnchecked ::
diff --git a/src/JSDOM/Generated/CustomEvent.hs b/src/JSDOM/Generated/CustomEvent.hs
--- a/src/JSDOM/Generated/CustomEvent.hs
+++ b/src/JSDOM/Generated/CustomEvent.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.CustomEvent
-       (initCustomEvent, getDetail, CustomEvent, castToCustomEvent,
-        gTypeCustomEvent)
+       (initCustomEvent, getDetail, CustomEvent(..), gTypeCustomEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.initCustomEvent Mozilla CustomEvent.initCustomEvent documentation> 
 initCustomEvent ::
diff --git a/src/JSDOM/Generated/DOMError.hs b/src/JSDOM/Generated/DOMError.hs
--- a/src/JSDOM/Generated/DOMError.hs
+++ b/src/JSDOM/Generated/DOMError.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DOMError
-       (getName, DOMError, castToDOMError, gTypeDOMError, IsDOMError,
-        toDOMError)
+       (getName, DOMError(..), gTypeDOMError, IsDOMError, toDOMError)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.name Mozilla DOMError.name documentation> 
 getName ::
diff --git a/src/JSDOM/Generated/DOMImplementation.hs b/src/JSDOM/Generated/DOMImplementation.hs
--- a/src/JSDOM/Generated/DOMImplementation.hs
+++ b/src/JSDOM/Generated/DOMImplementation.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DOMImplementation
        (hasFeature, hasFeature_, createDocumentType, createDocumentType_,
-        createDocumentTypeUnchecked, createDocument, createDocument_,
+        createDocumentTypeUnsafe, createDocumentTypeUnchecked,
+        createDocument, createDocument_, createDocumentUnsafe,
         createDocumentUnchecked, createCSSStyleSheet, createCSSStyleSheet_,
-        createCSSStyleSheetUnchecked, createHTMLDocument,
-        createHTMLDocument_, createHTMLDocumentUnchecked,
-        DOMImplementation, castToDOMImplementation, gTypeDOMImplementation)
+        createCSSStyleSheetUnsafe, createCSSStyleSheetUnchecked,
+        createHTMLDocument, createHTMLDocument_, createHTMLDocumentUnsafe,
+        createHTMLDocumentUnchecked, DOMImplementation(..),
+        gTypeDOMImplementation)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
 hasFeature ::
@@ -64,6 +80,20 @@
             [toJSVal qualifiedName, toJSVal publicId, toJSVal systemId]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
+createDocumentTypeUnsafe ::
+                         (MonadDOM m, ToJSString qualifiedName, ToJSString publicId,
+                          ToJSString systemId, HasCallStack) =>
+                           DOMImplementation ->
+                             Maybe qualifiedName ->
+                               Maybe publicId -> Maybe systemId -> m DocumentType
+createDocumentTypeUnsafe self qualifiedName publicId systemId
+  = liftDOM
+      (((self ^. jsf "createDocumentType"
+           [toJSVal qualifiedName, toJSVal publicId, toJSVal systemId])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
 createDocumentTypeUnchecked ::
                             (MonadDOM m, ToJSString qualifiedName, ToJSString publicId,
                              ToJSString systemId) =>
@@ -101,6 +131,20 @@
             [toJSVal namespaceURI, toJSVal qualifiedName, toJSVal doctype]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
+createDocumentUnsafe ::
+                     (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName,
+                      HasCallStack) =>
+                       DOMImplementation ->
+                         Maybe namespaceURI ->
+                           Maybe qualifiedName -> Maybe DocumentType -> m Document
+createDocumentUnsafe self namespaceURI qualifiedName doctype
+  = liftDOM
+      (((self ^. jsf "createDocument"
+           [toJSVal namespaceURI, toJSVal qualifiedName, toJSVal doctype])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
 createDocumentUnchecked ::
                         (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName) =>
                           DOMImplementation ->
@@ -131,6 +175,17 @@
          (self ^. jsf "createCSSStyleSheet" [toJSVal title, toJSVal media]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createCSSStyleSheet Mozilla DOMImplementation.createCSSStyleSheet documentation> 
+createCSSStyleSheetUnsafe ::
+                          (MonadDOM m, ToJSString title, ToJSString media, HasCallStack) =>
+                            DOMImplementation -> title -> media -> m CSSStyleSheet
+createCSSStyleSheetUnsafe self title media
+  = liftDOM
+      (((self ^. jsf "createCSSStyleSheet"
+           [toJSVal title, toJSVal media])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createCSSStyleSheet Mozilla DOMImplementation.createCSSStyleSheet documentation> 
 createCSSStyleSheetUnchecked ::
                              (MonadDOM m, ToJSString title, ToJSString media) =>
                                DOMImplementation -> title -> media -> m CSSStyleSheet
@@ -153,6 +208,15 @@
                       DOMImplementation -> title -> m ()
 createHTMLDocument_ self title
   = liftDOM (void (self ^. jsf "createHTMLDocument" [toJSVal title]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
+createHTMLDocumentUnsafe ::
+                         (MonadDOM m, ToJSString title, HasCallStack) =>
+                           DOMImplementation -> title -> m HTMLDocument
+createHTMLDocumentUnsafe self title
+  = liftDOM
+      (((self ^. jsf "createHTMLDocument" [toJSVal title]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
 createHTMLDocumentUnchecked ::
diff --git a/src/JSDOM/Generated/DOMNamedFlowCollection.hs b/src/JSDOM/Generated/DOMNamedFlowCollection.hs
--- a/src/JSDOM/Generated/DOMNamedFlowCollection.hs
+++ b/src/JSDOM/Generated/DOMNamedFlowCollection.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DOMNamedFlowCollection
-       (item, item_, itemUnchecked, namedItem, namedItem_,
-        namedItemUnchecked, getLength, DOMNamedFlowCollection,
-        castToDOMNamedFlowCollection, gTypeDOMNamedFlowCollection)
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked, getLength,
+        DOMNamedFlowCollection(..), gTypeDOMNamedFlowCollection)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
 item ::
@@ -30,6 +44,15 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             DOMNamedFlowCollection -> Word -> m WebKitNamedFlow
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => DOMNamedFlowCollection -> Word -> m WebKitNamedFlow
 itemUnchecked self index
@@ -49,6 +72,15 @@
              DOMNamedFlowCollection -> name -> m ()
 namedItem_ self name
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  DOMNamedFlowCollection -> name -> m WebKitNamedFlow
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
 namedItemUnchecked ::
diff --git a/src/JSDOM/Generated/DOMParser.hs b/src/JSDOM/Generated/DOMParser.hs
--- a/src/JSDOM/Generated/DOMParser.hs
+++ b/src/JSDOM/Generated/DOMParser.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DOMParser
        (newDOMParser, parseFromString, parseFromString_,
-        parseFromStringUnchecked, DOMParser, castToDOMParser,
+        parseFromStringUnsafe, parseFromStringUnchecked, DOMParser(..),
         gTypeDOMParser)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation> 
 newDOMParser :: (MonadDOM m) => m DOMParser
@@ -38,6 +52,18 @@
   = liftDOM
       (void
          (self ^. jsf "parseFromString" [toJSVal str, toJSVal contentType]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
+parseFromStringUnsafe ::
+                      (MonadDOM m, ToJSString str, ToJSString contentType,
+                       HasCallStack) =>
+                        DOMParser -> str -> contentType -> m Document
+parseFromStringUnsafe self str contentType
+  = liftDOM
+      (((self ^. jsf "parseFromString"
+           [toJSVal str, toJSVal contentType])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
 parseFromStringUnchecked ::
diff --git a/src/JSDOM/Generated/DOMSettableTokenList.hs b/src/JSDOM/Generated/DOMSettableTokenList.hs
--- a/src/JSDOM/Generated/DOMSettableTokenList.hs
+++ b/src/JSDOM/Generated/DOMSettableTokenList.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DOMSettableTokenList
-       (_get, _get_, _getUnchecked, setValue, getValue,
-        DOMSettableTokenList, castToDOMSettableTokenList,
-        gTypeDOMSettableTokenList)
+       (_get, _get_, _getUnsafe, _getUnchecked, setValue, getValue,
+        DOMSettableTokenList(..), gTypeDOMSettableTokenList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList._get Mozilla DOMSettableTokenList._get documentation> 
 _get ::
@@ -29,6 +42,15 @@
 _get_ :: (MonadDOM m) => DOMSettableTokenList -> Word -> m ()
 _get_ self index
   = liftDOM (void (self ^. jsf "_get" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList._get Mozilla DOMSettableTokenList._get documentation> 
+_getUnsafe ::
+           (MonadDOM m, HasCallStack, FromJSString result) =>
+             DOMSettableTokenList -> Word -> m result
+_getUnsafe self index
+  = liftDOM
+      (((self ^. jsf "_get" [toJSVal index]) >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList._get Mozilla DOMSettableTokenList._get documentation> 
 _getUnchecked ::
diff --git a/src/JSDOM/Generated/DOMStringList.hs b/src/JSDOM/Generated/DOMStringList.hs
--- a/src/JSDOM/Generated/DOMStringList.hs
+++ b/src/JSDOM/Generated/DOMStringList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DOMStringList
-       (item, item_, itemUnchecked, contains, contains_, getLength,
-        DOMStringList, castToDOMStringList, gTypeDOMStringList)
+       (item, item_, itemUnsafe, itemUnchecked, contains, contains_,
+        getLength, DOMStringList(..), gTypeDOMStringList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
 item ::
@@ -28,6 +42,15 @@
 item_ :: (MonadDOM m) => DOMStringList -> Word -> m ()
 item_ self index
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack, FromJSString result) =>
+             DOMStringList -> Word -> m result
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
 itemUnchecked ::
diff --git a/src/JSDOM/Generated/DOMTokenList.hs b/src/JSDOM/Generated/DOMTokenList.hs
--- a/src/JSDOM/Generated/DOMTokenList.hs
+++ b/src/JSDOM/Generated/DOMTokenList.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DOMTokenList
-       (item, item_, itemUnchecked, contains, contains_, add, remove,
-        toggle, toggle_, toString, toString_, getLength, DOMTokenList,
-        castToDOMTokenList, gTypeDOMTokenList, IsDOMTokenList,
+       (item, item_, itemUnsafe, itemUnchecked, contains, contains_, add,
+        remove, toggle, toggle_, toString, toString_, getLength,
+        DOMTokenList(..), gTypeDOMTokenList, IsDOMTokenList,
         toDOMTokenList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
 item ::
@@ -32,6 +46,17 @@
 item_ self index
   = liftDOM
       (void ((toDOMTokenList self) ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, IsDOMTokenList self, HasCallStack,
+            FromJSString result) =>
+             self -> Word -> m result
+itemUnsafe self index
+  = liftDOM
+      ((((toDOMTokenList self) ^. jsf "item" [toJSVal index]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
 itemUnchecked ::
diff --git a/src/JSDOM/Generated/DataCue.hs b/src/JSDOM/Generated/DataCue.hs
--- a/src/JSDOM/Generated/DataCue.hs
+++ b/src/JSDOM/Generated/DataCue.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DataCue
-       (newDataCue, newDataCue', setData, getData, getDataUnchecked,
-        setValue, getValue, getType, DataCue, castToDataCue, gTypeDataCue)
+       (newDataCue, newDataCue', setData, getData, getDataUnsafe,
+        getDataUnchecked, setValue, getValue, getType, DataCue(..),
+        gTypeDataCue)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
 newDataCue :: (MonadDOM m) => m DataCue
@@ -38,6 +53,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
 getData :: (MonadDOM m) => DataCue -> m (Maybe ArrayBuffer)
 getData self = liftDOM ((self ^. js "data") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
+getDataUnsafe ::
+              (MonadDOM m, HasCallStack) => DataCue -> m ArrayBuffer
+getDataUnsafe self
+  = liftDOM
+      (((self ^. js "data") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
 getDataUnchecked :: (MonadDOM m) => DataCue -> m ArrayBuffer
diff --git a/src/JSDOM/Generated/DataTransfer.hs b/src/JSDOM/Generated/DataTransfer.hs
--- a/src/JSDOM/Generated/DataTransfer.hs
+++ b/src/JSDOM/Generated/DataTransfer.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DataTransfer
        (clearData, getData, getData_, setData, setDragImage,
         setDropEffect, getDropEffect, setEffectAllowed, getEffectAllowed,
-        getTypes, getTypesUnchecked, getFiles, getFilesUnchecked, getItems,
-        getItemsUnchecked, DataTransfer, castToDataTransfer,
-        gTypeDataTransfer)
+        getTypes, getTypesUnsafe, getTypesUnchecked, getFiles,
+        getFilesUnsafe, getFilesUnchecked, getItems, getItemsUnsafe,
+        getItemsUnchecked, DataTransfer(..), gTypeDataTransfer)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.clearData Mozilla DataTransfer.clearData documentation> 
 clearData ::
@@ -85,6 +99,14 @@
 getTypes self = liftDOM ((self ^. js "types") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.types Mozilla DataTransfer.types documentation> 
+getTypesUnsafe ::
+               (MonadDOM m, HasCallStack) => DataTransfer -> m Array
+getTypesUnsafe self
+  = liftDOM
+      (((self ^. js "types") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.types Mozilla DataTransfer.types documentation> 
 getTypesUnchecked :: (MonadDOM m) => DataTransfer -> m Array
 getTypesUnchecked self
   = liftDOM ((self ^. js "types") >>= fromJSValUnchecked)
@@ -94,6 +116,14 @@
 getFiles self = liftDOM ((self ^. js "files") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.files Mozilla DataTransfer.files documentation> 
+getFilesUnsafe ::
+               (MonadDOM m, HasCallStack) => DataTransfer -> m FileList
+getFilesUnsafe self
+  = liftDOM
+      (((self ^. js "files") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.files Mozilla DataTransfer.files documentation> 
 getFilesUnchecked :: (MonadDOM m) => DataTransfer -> m FileList
 getFilesUnchecked self
   = liftDOM ((self ^. js "files") >>= fromJSValUnchecked)
@@ -102,6 +132,15 @@
 getItems ::
          (MonadDOM m) => DataTransfer -> m (Maybe DataTransferItemList)
 getItems self = liftDOM ((self ^. js "items") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.items Mozilla DataTransfer.items documentation> 
+getItemsUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 DataTransfer -> m DataTransferItemList
+getItemsUnsafe self
+  = liftDOM
+      (((self ^. js "items") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.items Mozilla DataTransfer.items documentation> 
 getItemsUnchecked ::
diff --git a/src/JSDOM/Generated/DataTransferItem.hs b/src/JSDOM/Generated/DataTransferItem.hs
--- a/src/JSDOM/Generated/DataTransferItem.hs
+++ b/src/JSDOM/Generated/DataTransferItem.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DataTransferItem
-       (getAsString, getAsFile, getAsFile_, getAsFileUnchecked, getKind,
-        getType, DataTransferItem, castToDataTransferItem,
+       (getAsString, getAsFile, getAsFile_, getAsFileUnsafe,
+        getAsFileUnchecked, getKind, getType, DataTransferItem(..),
         gTypeDataTransferItem)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsString Mozilla DataTransferItem.getAsString documentation> 
 getAsString ::
@@ -32,6 +46,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
 getAsFile_ :: (MonadDOM m) => DataTransferItem -> m ()
 getAsFile_ self = liftDOM (void (self ^. jsf "getAsFile" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
+getAsFileUnsafe ::
+                (MonadDOM m, HasCallStack) => DataTransferItem -> m Blob
+getAsFileUnsafe self
+  = liftDOM
+      (((self ^. jsf "getAsFile" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
 getAsFileUnchecked :: (MonadDOM m) => DataTransferItem -> m Blob
diff --git a/src/JSDOM/Generated/DataTransferItemList.hs b/src/JSDOM/Generated/DataTransferItemList.hs
--- a/src/JSDOM/Generated/DataTransferItemList.hs
+++ b/src/JSDOM/Generated/DataTransferItemList.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DataTransferItemList
-       (item, item_, itemUnchecked, clear, addFile, add, getLength,
-        DataTransferItemList, castToDataTransferItemList,
-        gTypeDataTransferItemList)
+       (item, item_, itemUnsafe, itemUnchecked, clear, addFile, add,
+        getLength, DataTransferItemList(..), gTypeDataTransferItemList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
 item ::
@@ -28,6 +41,15 @@
 item_ :: (MonadDOM m) => DataTransferItemList -> Word -> m ()
 item_ self index
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             DataTransferItemList -> Word -> m DataTransferItem
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
 itemUnchecked ::
diff --git a/src/JSDOM/Generated/Database.hs b/src/JSDOM/Generated/Database.hs
--- a/src/JSDOM/Generated/Database.hs
+++ b/src/JSDOM/Generated/Database.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Database
-       (changeVersion, transaction, readTransaction, getVersion, Database,
-        castToDatabase, gTypeDatabase)
+       (changeVersion, transaction, readTransaction, getVersion,
+        Database(..), gTypeDatabase)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation> 
 changeVersion ::
diff --git a/src/JSDOM/Generated/DatabaseCallback.hs b/src/JSDOM/Generated/DatabaseCallback.hs
--- a/src/JSDOM/Generated/DatabaseCallback.hs
+++ b/src/JSDOM/Generated/DatabaseCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DatabaseCallback
        (newDatabaseCallback, newDatabaseCallbackSync,
         newDatabaseCallbackAsync, DatabaseCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
 newDatabaseCallback ::
diff --git a/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs b/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
--- a/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
+++ b/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DedicatedWorkerGlobalScope
-       (postMessage, message, DedicatedWorkerGlobalScope,
-        castToDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope)
+       (postMessage, message, DedicatedWorkerGlobalScope(..),
+        gTypeDedicatedWorkerGlobalScope)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.postMessage Mozilla DedicatedWorkerGlobalScope.postMessage documentation> 
 postMessage ::
diff --git a/src/JSDOM/Generated/DelayNode.hs b/src/JSDOM/Generated/DelayNode.hs
--- a/src/JSDOM/Generated/DelayNode.hs
+++ b/src/JSDOM/Generated/DelayNode.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DelayNode
-       (getDelayTime, getDelayTimeUnchecked, DelayNode, castToDelayNode,
-        gTypeDelayNode)
+       (getDelayTime, getDelayTimeUnsafe, getDelayTimeUnchecked,
+        DelayNode(..), gTypeDelayNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
 getDelayTime :: (MonadDOM m) => DelayNode -> m (Maybe AudioParam)
 getDelayTime self
   = liftDOM ((self ^. js "delayTime") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
+getDelayTimeUnsafe ::
+                   (MonadDOM m, HasCallStack) => DelayNode -> m AudioParam
+getDelayTimeUnsafe self
+  = liftDOM
+      (((self ^. js "delayTime") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
 getDelayTimeUnchecked :: (MonadDOM m) => DelayNode -> m AudioParam
diff --git a/src/JSDOM/Generated/DeviceMotionEvent.hs b/src/JSDOM/Generated/DeviceMotionEvent.hs
--- a/src/JSDOM/Generated/DeviceMotionEvent.hs
+++ b/src/JSDOM/Generated/DeviceMotionEvent.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DeviceMotionEvent
-       (initDeviceMotionEvent, getAcceleration, getAccelerationUnchecked,
-        getAccelerationIncludingGravity,
+       (initDeviceMotionEvent, getAcceleration, getAccelerationUnsafe,
+        getAccelerationUnchecked, getAccelerationIncludingGravity,
+        getAccelerationIncludingGravityUnsafe,
         getAccelerationIncludingGravityUnchecked, getRotationRate,
-        getRotationRateUnchecked, getInterval, DeviceMotionEvent,
-        castToDeviceMotionEvent, gTypeDeviceMotionEvent)
+        getRotationRateUnsafe, getRotationRateUnchecked, getInterval,
+        DeviceMotionEvent(..), gTypeDeviceMotionEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.initDeviceMotionEvent Mozilla DeviceMotionEvent.initDeviceMotionEvent documentation> 
 initDeviceMotionEvent ::
@@ -47,6 +62,14 @@
   = liftDOM ((self ^. js "acceleration") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
+getAccelerationUnsafe ::
+                      (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m Acceleration
+getAccelerationUnsafe self
+  = liftDOM
+      (((self ^. js "acceleration") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
 getAccelerationUnchecked ::
                          (MonadDOM m) => DeviceMotionEvent -> m Acceleration
 getAccelerationUnchecked self
@@ -60,6 +83,15 @@
       ((self ^. js "accelerationIncludingGravity") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
+getAccelerationIncludingGravityUnsafe ::
+                                      (MonadDOM m, HasCallStack) =>
+                                        DeviceMotionEvent -> m Acceleration
+getAccelerationIncludingGravityUnsafe self
+  = liftDOM
+      (((self ^. js "accelerationIncludingGravity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
 getAccelerationIncludingGravityUnchecked ::
                                          (MonadDOM m) => DeviceMotionEvent -> m Acceleration
 getAccelerationIncludingGravityUnchecked self
@@ -72,6 +104,14 @@
                 (MonadDOM m) => DeviceMotionEvent -> m (Maybe RotationRate)
 getRotationRate self
   = liftDOM ((self ^. js "rotationRate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
+getRotationRateUnsafe ::
+                      (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m RotationRate
+getRotationRateUnsafe self
+  = liftDOM
+      (((self ^. js "rotationRate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
 getRotationRateUnchecked ::
diff --git a/src/JSDOM/Generated/DeviceOrientationEvent.hs b/src/JSDOM/Generated/DeviceOrientationEvent.hs
--- a/src/JSDOM/Generated/DeviceOrientationEvent.hs
+++ b/src/JSDOM/Generated/DeviceOrientationEvent.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DeviceOrientationEvent
        (initDeviceOrientationEvent, getAlpha, getBeta, getGamma,
-        getAbsolute, DeviceOrientationEvent, castToDeviceOrientationEvent,
+        getAbsolute, DeviceOrientationEvent(..),
         gTypeDeviceOrientationEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.initDeviceOrientationEvent Mozilla DeviceOrientationEvent.initDeviceOrientationEvent documentation> 
 initDeviceOrientationEvent ::
diff --git a/src/JSDOM/Generated/DeviceProximityEvent.hs b/src/JSDOM/Generated/DeviceProximityEvent.hs
--- a/src/JSDOM/Generated/DeviceProximityEvent.hs
+++ b/src/JSDOM/Generated/DeviceProximityEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DeviceProximityEvent
-       (getValue, getMin, getMax, DeviceProximityEvent,
-        castToDeviceProximityEvent, gTypeDeviceProximityEvent)
+       (getValue, getMin, getMax, DeviceProximityEvent(..),
+        gTypeDeviceProximityEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.value Mozilla DeviceProximityEvent.value documentation> 
 getValue :: (MonadDOM m) => DeviceProximityEvent -> m Double
diff --git a/src/JSDOM/Generated/Document.hs b/src/JSDOM/Generated/Document.hs
--- a/src/JSDOM/Generated/Document.hs
+++ b/src/JSDOM/Generated/Document.hs
@@ -1,93 +1,124 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Document
-       (newDocument, createElement, createElement_,
+       (newDocument, createElement, createElement_, createElementUnsafe,
         createElementUnchecked, createDocumentFragment,
-        createDocumentFragment_, createDocumentFragmentUnchecked,
-        createTextNode, createTextNode_, createTextNodeUnchecked,
-        createComment, createComment_, createCommentUnchecked,
-        createCDATASection, createCDATASection_,
+        createDocumentFragment_, createDocumentFragmentUnsafe,
+        createDocumentFragmentUnchecked, createTextNode, createTextNode_,
+        createTextNodeUnsafe, createTextNodeUnchecked, createComment,
+        createComment_, createCommentUnsafe, createCommentUnchecked,
+        createCDATASection, createCDATASection_, createCDATASectionUnsafe,
         createCDATASectionUnchecked, createProcessingInstruction,
-        createProcessingInstruction_, createProcessingInstructionUnchecked,
-        createAttribute, createAttribute_, createAttributeUnchecked,
+        createProcessingInstruction_, createProcessingInstructionUnsafe,
+        createProcessingInstructionUnchecked, createAttribute,
+        createAttribute_, createAttributeUnsafe, createAttributeUnchecked,
         createEntityReference, createEntityReference_,
-        createEntityReferenceUnchecked, getElementsByTagName,
-        getElementsByTagName_, getElementsByTagNameUnchecked, importNode,
-        importNode_, importNodeUnchecked, createElementNS,
-        createElementNS_, createElementNSUnchecked, createAttributeNS,
-        createAttributeNS_, createAttributeNSUnchecked,
+        createEntityReferenceUnsafe, createEntityReferenceUnchecked,
+        getElementsByTagName, getElementsByTagName_,
+        getElementsByTagNameUnsafe, getElementsByTagNameUnchecked,
+        importNode, importNode_, importNodeUnsafe, importNodeUnchecked,
+        createElementNS, createElementNS_, createElementNSUnsafe,
+        createElementNSUnchecked, createAttributeNS, createAttributeNS_,
+        createAttributeNSUnsafe, createAttributeNSUnchecked,
         getElementsByTagNameNS, getElementsByTagNameNS_,
-        getElementsByTagNameNSUnchecked, getElementById, getElementById_,
-        getElementByIdUnchecked, adoptNode, adoptNode_, adoptNodeUnchecked,
-        createEvent, createEvent_, createEventUnchecked, createRange,
-        createRange_, createRangeUnchecked, createNodeIterator,
-        createNodeIterator_, createNodeIteratorUnchecked, createTreeWalker,
-        createTreeWalker_, createTreeWalkerUnchecked, getOverrideStyle,
-        getOverrideStyle_, getOverrideStyleUnchecked, createExpression,
-        createExpression_, createExpressionUnchecked, createNSResolver,
-        createNSResolver_, createNSResolverUnchecked, evaluate, evaluate_,
-        evaluateUnchecked, execCommand, execCommand_, queryCommandEnabled,
-        queryCommandEnabled_, queryCommandIndeterm, queryCommandIndeterm_,
-        queryCommandState, queryCommandState_, queryCommandSupported,
-        queryCommandSupported_, queryCommandValue, queryCommandValue_,
-        getElementsByName, getElementsByName_, getElementsByNameUnchecked,
-        elementFromPoint, elementFromPoint_, elementFromPointUnchecked,
+        getElementsByTagNameNSUnsafe, getElementsByTagNameNSUnchecked,
+        getElementById, getElementById_, getElementByIdUnsafe,
+        getElementByIdUnchecked, adoptNode, adoptNode_, adoptNodeUnsafe,
+        adoptNodeUnchecked, createEvent, createEvent_, createEventUnsafe,
+        createEventUnchecked, createRange, createRange_, createRangeUnsafe,
+        createRangeUnchecked, createNodeIterator, createNodeIterator_,
+        createNodeIteratorUnsafe, createNodeIteratorUnchecked,
+        createTreeWalker, createTreeWalker_, createTreeWalkerUnsafe,
+        createTreeWalkerUnchecked, getOverrideStyle, getOverrideStyle_,
+        getOverrideStyleUnsafe, getOverrideStyleUnchecked,
+        createExpression, createExpression_, createExpressionUnsafe,
+        createExpressionUnchecked, createNSResolver, createNSResolver_,
+        createNSResolverUnsafe, createNSResolverUnchecked, evaluate,
+        evaluate_, evaluateUnsafe, evaluateUnchecked, execCommand,
+        execCommand_, queryCommandEnabled, queryCommandEnabled_,
+        queryCommandIndeterm, queryCommandIndeterm_, queryCommandState,
+        queryCommandState_, queryCommandSupported, queryCommandSupported_,
+        queryCommandValue, queryCommandValue_, getElementsByName,
+        getElementsByName_, getElementsByNameUnsafe,
+        getElementsByNameUnchecked, elementFromPoint, elementFromPoint_,
+        elementFromPointUnsafe, elementFromPointUnchecked,
         caretRangeFromPoint, caretRangeFromPoint_,
-        caretRangeFromPointUnchecked, getSelection, getSelection_,
+        caretRangeFromPointUnsafe, caretRangeFromPointUnchecked,
+        getSelection, getSelection_, getSelectionUnsafe,
         getSelectionUnchecked, getCSSCanvasContext, getCSSCanvasContext_,
-        getCSSCanvasContextUnchecked, getElementsByClassName,
-        getElementsByClassName_, getElementsByClassNameUnchecked, hasFocus,
-        hasFocus_, querySelector, querySelector_, querySelectorUnchecked,
-        querySelectorAll, querySelectorAll_, querySelectorAllUnchecked,
-        webkitCancelFullScreen, webkitExitFullscreen, exitPointerLock,
-        webkitGetNamedFlows, webkitGetNamedFlows_,
+        getCSSCanvasContextUnsafe, getCSSCanvasContextUnchecked,
+        getElementsByClassName, getElementsByClassName_,
+        getElementsByClassNameUnsafe, getElementsByClassNameUnchecked,
+        hasFocus, hasFocus_, querySelector, querySelector_,
+        querySelectorUnsafe, querySelectorUnchecked, querySelectorAll,
+        querySelectorAll_, querySelectorAllUnsafe,
+        querySelectorAllUnchecked, webkitCancelFullScreen,
+        webkitExitFullscreen, exitPointerLock, webkitGetNamedFlows,
+        webkitGetNamedFlows_, webkitGetNamedFlowsUnsafe,
         webkitGetNamedFlowsUnchecked, createTouch, createTouch_,
-        createTouchUnchecked, createTouchList, createTouchList_,
-        createTouchListUnchecked, getDoctype, getDoctypeUnchecked,
-        getImplementation, getImplementationUnchecked, getDocumentElement,
-        getDocumentElementUnchecked, getInputEncoding,
-        getInputEncodingUnchecked, getXmlEncoding, getXmlEncodingUnchecked,
-        setXmlVersion, getXmlVersion, getXmlVersionUnchecked,
-        setXmlStandalone, getXmlStandalone, getDocumentURI,
-        getDocumentURIUnchecked, getDefaultView, getDefaultViewUnchecked,
-        getStyleSheets, getStyleSheetsUnchecked, getContentType, setTitle,
-        getTitle, getTitleUnchecked, getReferrer, setDomain, getDomain,
-        getDomainUnchecked, getURL, setCookie, getCookie,
-        getCookieUnchecked, setBody, getBody, getBodyUnchecked, getHead,
-        getHeadUnchecked, getImages, getImagesUnchecked, getApplets,
-        getAppletsUnchecked, getLinks, getLinksUnchecked, getForms,
-        getFormsUnchecked, getAnchors, getAnchorsUnchecked,
-        getLastModified, setLocation, getLocation, getLocationUnchecked,
-        setCharset, getCharset, getCharsetUnchecked, getDefaultCharset,
-        getDefaultCharsetUnchecked, getReadyState, getReadyStateUnchecked,
-        getCharacterSet, getCharacterSetUnchecked,
-        getPreferredStylesheetSet, getPreferredStylesheetSetUnchecked,
-        setSelectedStylesheetSet, getSelectedStylesheetSet,
+        createTouchUnsafe, createTouchUnchecked, createTouchList,
+        createTouchList_, createTouchListUnsafe, createTouchListUnchecked,
+        getDoctype, getDoctypeUnsafe, getDoctypeUnchecked,
+        getImplementation, getImplementationUnsafe,
+        getImplementationUnchecked, getDocumentElement,
+        getDocumentElementUnsafe, getDocumentElementUnchecked,
+        getInputEncoding, getInputEncodingUnsafe,
+        getInputEncodingUnchecked, getXmlEncoding, getXmlEncodingUnsafe,
+        getXmlEncodingUnchecked, setXmlVersion, getXmlVersion,
+        getXmlVersionUnsafe, getXmlVersionUnchecked, setXmlStandalone,
+        getXmlStandalone, getDocumentURI, getDocumentURIUnsafe,
+        getDocumentURIUnchecked, getDefaultView, getDefaultViewUnsafe,
+        getDefaultViewUnchecked, getStyleSheets, getStyleSheetsUnsafe,
+        getStyleSheetsUnchecked, getContentType, setTitle, getTitle,
+        getTitleUnsafe, getTitleUnchecked, getReferrer, setDomain,
+        getDomain, getDomainUnsafe, getDomainUnchecked, getURL, setCookie,
+        getCookie, getCookieUnsafe, getCookieUnchecked, setBody, getBody,
+        getBodyUnsafe, getBodyUnchecked, getHead, getHeadUnsafe,
+        getHeadUnchecked, getImages, getImagesUnsafe, getImagesUnchecked,
+        getApplets, getAppletsUnsafe, getAppletsUnchecked, getLinks,
+        getLinksUnsafe, getLinksUnchecked, getForms, getFormsUnsafe,
+        getFormsUnchecked, getAnchors, getAnchorsUnsafe,
+        getAnchorsUnchecked, getLastModified, setLocation, getLocation,
+        getLocationUnsafe, getLocationUnchecked, setCharset, getCharset,
+        getCharsetUnsafe, getCharsetUnchecked, getDefaultCharset,
+        getDefaultCharsetUnsafe, getDefaultCharsetUnchecked, getReadyState,
+        getReadyStateUnsafe, getReadyStateUnchecked, getCharacterSet,
+        getCharacterSetUnsafe, getCharacterSetUnchecked,
+        getPreferredStylesheetSet, getPreferredStylesheetSetUnsafe,
+        getPreferredStylesheetSetUnchecked, setSelectedStylesheetSet,
+        getSelectedStylesheetSet, getSelectedStylesheetSetUnsafe,
         getSelectedStylesheetSetUnchecked, getActiveElement,
-        getActiveElementUnchecked, getCompatMode, getWebkitIsFullScreen,
-        getWebkitFullScreenKeyboardInputAllowed,
+        getActiveElementUnsafe, getActiveElementUnchecked, getCompatMode,
+        getWebkitIsFullScreen, getWebkitFullScreenKeyboardInputAllowed,
         getWebkitCurrentFullScreenElement,
+        getWebkitCurrentFullScreenElementUnsafe,
         getWebkitCurrentFullScreenElementUnchecked,
         getWebkitFullscreenEnabled, getWebkitFullscreenElement,
+        getWebkitFullscreenElementUnsafe,
         getWebkitFullscreenElementUnchecked, getPointerLockElement,
-        getPointerLockElementUnchecked, getFonts, getFontsUnchecked, 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,
+        getPointerLockElementUnsafe, getPointerLockElementUnchecked,
+        getFonts, getFontsUnsafe, getFontsUnchecked, 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,
         getVisibilityState, getHidden, getSecurityPolicy,
-        getSecurityPolicyUnchecked, getCurrentScript,
-        getCurrentScriptUnchecked, getOrigin, Document, castToDocument,
-        gTypeDocument, IsDocument, toDocument)
+        getSecurityPolicyUnsafe, getSecurityPolicyUnchecked,
+        getCurrentScript, getCurrentScriptUnsafe,
+        getCurrentScriptUnchecked, getOrigin, Document(..), gTypeDocument,
+        IsDocument, toDocument)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -98,6 +129,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation> 
 newDocument :: (MonadDOM m) => m Document
@@ -121,6 +162,16 @@
       (void ((toDocument self) ^. jsf "createElement" [toJSVal tagName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
+createElementUnsafe ::
+                    (MonadDOM m, IsDocument self, ToJSString tagName, HasCallStack) =>
+                      self -> Maybe tagName -> m Element
+createElementUnsafe self tagName
+  = liftDOM
+      ((((toDocument self) ^. jsf "createElement" [toJSVal tagName]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
 createElementUnchecked ::
                        (MonadDOM m, IsDocument self, ToJSString tagName) =>
                          self -> Maybe tagName -> m Element
@@ -145,6 +196,16 @@
       (void ((toDocument self) ^. jsf "createDocumentFragment" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
+createDocumentFragmentUnsafe ::
+                             (MonadDOM m, IsDocument self, HasCallStack) =>
+                               self -> m DocumentFragment
+createDocumentFragmentUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. jsf "createDocumentFragment" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
 createDocumentFragmentUnchecked ::
                                 (MonadDOM m, IsDocument self) => self -> m DocumentFragment
 createDocumentFragmentUnchecked self
@@ -170,6 +231,16 @@
       (void ((toDocument self) ^. jsf "createTextNode" [toJSVal data']))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
+createTextNodeUnsafe ::
+                     (MonadDOM m, IsDocument self, ToJSString data', HasCallStack) =>
+                       self -> data' -> m Text
+createTextNodeUnsafe self data'
+  = liftDOM
+      ((((toDocument self) ^. jsf "createTextNode" [toJSVal data']) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
 createTextNodeUnchecked ::
                         (MonadDOM m, IsDocument self, ToJSString data') =>
                           self -> data' -> m Text
@@ -196,6 +267,16 @@
       (void ((toDocument self) ^. jsf "createComment" [toJSVal data']))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
+createCommentUnsafe ::
+                    (MonadDOM m, IsDocument self, ToJSString data', HasCallStack) =>
+                      self -> data' -> m Comment
+createCommentUnsafe self data'
+  = liftDOM
+      ((((toDocument self) ^. jsf "createComment" [toJSVal data']) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
 createCommentUnchecked ::
                        (MonadDOM m, IsDocument self, ToJSString data') =>
                          self -> data' -> m Comment
@@ -223,6 +304,16 @@
          ((toDocument self) ^. jsf "createCDATASection" [toJSVal data']))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
+createCDATASectionUnsafe ::
+                         (MonadDOM m, IsDocument self, ToJSString data', HasCallStack) =>
+                           self -> data' -> m CDATASection
+createCDATASectionUnsafe self data'
+  = liftDOM
+      ((((toDocument self) ^. jsf "createCDATASection" [toJSVal data'])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
 createCDATASectionUnchecked ::
                             (MonadDOM m, IsDocument self, ToJSString data') =>
                               self -> data' -> m CDATASection
@@ -254,6 +345,18 @@
             [toJSVal target, toJSVal data']))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
+createProcessingInstructionUnsafe ::
+                                  (MonadDOM m, IsDocument self, ToJSString target, ToJSString data',
+                                   HasCallStack) =>
+                                    self -> target -> data' -> m ProcessingInstruction
+createProcessingInstructionUnsafe self target data'
+  = liftDOM
+      ((((toDocument self) ^. jsf "createProcessingInstruction"
+           [toJSVal target, toJSVal data'])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
 createProcessingInstructionUnchecked ::
                                      (MonadDOM m, IsDocument self, ToJSString target,
                                       ToJSString data') =>
@@ -282,6 +385,16 @@
       (void ((toDocument self) ^. jsf "createAttribute" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
+createAttributeUnsafe ::
+                      (MonadDOM m, IsDocument self, ToJSString name, HasCallStack) =>
+                        self -> name -> m Attr
+createAttributeUnsafe self name
+  = liftDOM
+      ((((toDocument self) ^. jsf "createAttribute" [toJSVal name]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
 createAttributeUnchecked ::
                          (MonadDOM m, IsDocument self, ToJSString name) =>
                            self -> name -> m Attr
@@ -309,6 +422,16 @@
          ((toDocument self) ^. jsf "createEntityReference" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEntityReference Mozilla Document.createEntityReference documentation> 
+createEntityReferenceUnsafe ::
+                            (MonadDOM m, IsDocument self, ToJSString name, HasCallStack) =>
+                              self -> name -> m EntityReference
+createEntityReferenceUnsafe self name
+  = liftDOM
+      ((((toDocument self) ^. jsf "createEntityReference" [toJSVal name])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEntityReference Mozilla Document.createEntityReference documentation> 
 createEntityReferenceUnchecked ::
                                (MonadDOM m, IsDocument self, ToJSString name) =>
                                  self -> name -> m EntityReference
@@ -338,6 +461,17 @@
             [toJSVal tagname]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
+getElementsByTagNameUnsafe ::
+                           (MonadDOM m, IsDocument self, ToJSString tagname, HasCallStack) =>
+                             self -> tagname -> m NodeList
+getElementsByTagNameUnsafe self tagname
+  = liftDOM
+      ((((toDocument self) ^. jsf "getElementsByTagName"
+           [toJSVal tagname])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
 getElementsByTagNameUnchecked ::
                               (MonadDOM m, IsDocument self, ToJSString tagname) =>
                                 self -> tagname -> m NodeList
@@ -368,6 +502,17 @@
             [toJSVal importedNode, toJSVal deep]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
+importNodeUnsafe ::
+                 (MonadDOM m, IsDocument self, IsNode importedNode, HasCallStack) =>
+                   self -> Maybe importedNode -> Bool -> m Node
+importNodeUnsafe self importedNode deep
+  = liftDOM
+      ((((toDocument self) ^. jsf "importNode"
+           [toJSVal importedNode, toJSVal deep])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
 importNodeUnchecked ::
                     (MonadDOM m, IsDocument self, IsNode importedNode) =>
                       self -> Maybe importedNode -> Bool -> m Node
@@ -401,6 +546,18 @@
             [toJSVal namespaceURI, toJSVal qualifiedName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
+createElementNSUnsafe ::
+                      (MonadDOM m, IsDocument self, ToJSString namespaceURI,
+                       ToJSString qualifiedName, HasCallStack) =>
+                        self -> Maybe namespaceURI -> Maybe qualifiedName -> m Element
+createElementNSUnsafe self namespaceURI qualifiedName
+  = liftDOM
+      ((((toDocument self) ^. jsf "createElementNS"
+           [toJSVal namespaceURI, toJSVal qualifiedName])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
 createElementNSUnchecked ::
                          (MonadDOM m, IsDocument self, ToJSString namespaceURI,
                           ToJSString qualifiedName) =>
@@ -434,6 +591,18 @@
             [toJSVal namespaceURI, toJSVal qualifiedName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
+createAttributeNSUnsafe ::
+                        (MonadDOM m, IsDocument self, ToJSString namespaceURI,
+                         ToJSString qualifiedName, HasCallStack) =>
+                          self -> Maybe namespaceURI -> Maybe qualifiedName -> m Attr
+createAttributeNSUnsafe self namespaceURI qualifiedName
+  = liftDOM
+      ((((toDocument self) ^. jsf "createAttributeNS"
+           [toJSVal namespaceURI, toJSVal qualifiedName])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
 createAttributeNSUnchecked ::
                            (MonadDOM m, IsDocument self, ToJSString namespaceURI,
                             ToJSString qualifiedName) =>
@@ -467,6 +636,18 @@
             [toJSVal namespaceURI, toJSVal localName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
+getElementsByTagNameNSUnsafe ::
+                             (MonadDOM m, IsDocument self, ToJSString namespaceURI,
+                              ToJSString localName, HasCallStack) =>
+                               self -> Maybe namespaceURI -> localName -> m NodeList
+getElementsByTagNameNSUnsafe self namespaceURI localName
+  = liftDOM
+      ((((toDocument self) ^. jsf "getElementsByTagNameNS"
+           [toJSVal namespaceURI, toJSVal localName])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
 getElementsByTagNameNSUnchecked ::
                                 (MonadDOM m, IsDocument self, ToJSString namespaceURI,
                                  ToJSString localName) =>
@@ -496,6 +677,17 @@
          ((toDocument self) ^. jsf "getElementById" [toJSVal elementId]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementById Mozilla Document.getElementById documentation> 
+getElementByIdUnsafe ::
+                     (MonadDOM m, IsDocument self, ToJSString elementId,
+                      HasCallStack) =>
+                       self -> elementId -> m Element
+getElementByIdUnsafe self elementId
+  = liftDOM
+      ((((toDocument self) ^. jsf "getElementById" [toJSVal elementId])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementById Mozilla Document.getElementById documentation> 
 getElementByIdUnchecked ::
                         (MonadDOM m, IsDocument self, ToJSString elementId) =>
                           self -> elementId -> m Element
@@ -522,6 +714,16 @@
       (void ((toDocument self) ^. jsf "adoptNode" [toJSVal source]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
+adoptNodeUnsafe ::
+                (MonadDOM m, IsDocument self, IsNode source, HasCallStack) =>
+                  self -> Maybe source -> m Node
+adoptNodeUnsafe self source
+  = liftDOM
+      ((((toDocument self) ^. jsf "adoptNode" [toJSVal source]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
 adoptNodeUnchecked ::
                    (MonadDOM m, IsDocument self, IsNode source) =>
                      self -> Maybe source -> m Node
@@ -548,6 +750,17 @@
       (void ((toDocument self) ^. jsf "createEvent" [toJSVal eventType]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
+createEventUnsafe ::
+                  (MonadDOM m, IsDocument self, ToJSString eventType,
+                   HasCallStack) =>
+                    self -> eventType -> m Event
+createEventUnsafe self eventType
+  = liftDOM
+      ((((toDocument self) ^. jsf "createEvent" [toJSVal eventType]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
 createEventUnchecked ::
                      (MonadDOM m, IsDocument self, ToJSString eventType) =>
                        self -> eventType -> m Event
@@ -569,6 +782,14 @@
   = liftDOM (void ((toDocument self) ^. jsf "createRange" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
+createRangeUnsafe ::
+                  (MonadDOM m, IsDocument self, HasCallStack) => self -> m Range
+createRangeUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. jsf "createRange" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
 createRangeUnchecked ::
                      (MonadDOM m, IsDocument self) => self -> m Range
 createRangeUnchecked self
@@ -603,6 +824,20 @@
              toJSVal expandEntityReferences]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
+createNodeIteratorUnsafe ::
+                         (MonadDOM m, IsDocument self, IsNode root, HasCallStack) =>
+                           self ->
+                             Maybe root -> Word -> Maybe NodeFilter -> Bool -> m NodeIterator
+createNodeIteratorUnsafe self root whatToShow filter
+  expandEntityReferences
+  = liftDOM
+      ((((toDocument self) ^. jsf "createNodeIterator"
+           [toJSVal root, toJSVal whatToShow, toJSVal filter,
+            toJSVal expandEntityReferences])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
 createNodeIteratorUnchecked ::
                             (MonadDOM m, IsDocument self, IsNode root) =>
                               self ->
@@ -641,6 +876,20 @@
              toJSVal expandEntityReferences]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
+createTreeWalkerUnsafe ::
+                       (MonadDOM m, IsDocument self, IsNode root, HasCallStack) =>
+                         self ->
+                           Maybe root -> Word -> Maybe NodeFilter -> Bool -> m TreeWalker
+createTreeWalkerUnsafe self root whatToShow filter
+  expandEntityReferences
+  = liftDOM
+      ((((toDocument self) ^. jsf "createTreeWalker"
+           [toJSVal root, toJSVal whatToShow, toJSVal filter,
+            toJSVal expandEntityReferences])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
 createTreeWalkerUnchecked ::
                           (MonadDOM m, IsDocument self, IsNode root) =>
                             self ->
@@ -677,6 +926,18 @@
             [toJSVal element, toJSVal pseudoElement]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
+getOverrideStyleUnsafe ::
+                       (MonadDOM m, IsDocument self, IsElement element,
+                        ToJSString pseudoElement, HasCallStack) =>
+                         self -> Maybe element -> pseudoElement -> m CSSStyleDeclaration
+getOverrideStyleUnsafe self element pseudoElement
+  = liftDOM
+      ((((toDocument self) ^. jsf "getOverrideStyle"
+           [toJSVal element, toJSVal pseudoElement])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
 getOverrideStyleUnchecked ::
                           (MonadDOM m, IsDocument self, IsElement element,
                            ToJSString pseudoElement) =>
@@ -709,6 +970,18 @@
             [toJSVal expression, toJSVal resolver]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
+createExpressionUnsafe ::
+                       (MonadDOM m, IsDocument self, ToJSString expression,
+                        HasCallStack) =>
+                         self -> expression -> Maybe XPathNSResolver -> m XPathExpression
+createExpressionUnsafe self expression resolver
+  = liftDOM
+      ((((toDocument self) ^. jsf "createExpression"
+           [toJSVal expression, toJSVal resolver])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
 createExpressionUnchecked ::
                           (MonadDOM m, IsDocument self, ToJSString expression) =>
                             self -> expression -> Maybe XPathNSResolver -> m XPathExpression
@@ -739,6 +1012,17 @@
             [toJSVal nodeResolver]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
+createNSResolverUnsafe ::
+                       (MonadDOM m, IsDocument self, IsNode nodeResolver, HasCallStack) =>
+                         self -> Maybe nodeResolver -> m XPathNSResolver
+createNSResolverUnsafe self nodeResolver
+  = liftDOM
+      ((((toDocument self) ^. jsf "createNSResolver"
+           [toJSVal nodeResolver])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
 createNSResolverUnchecked ::
                           (MonadDOM m, IsDocument self, IsNode nodeResolver) =>
                             self -> Maybe nodeResolver -> m XPathNSResolver
@@ -780,6 +1064,22 @@
              toJSVal type', toJSVal inResult]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
+evaluateUnsafe ::
+               (MonadDOM m, IsDocument self, ToJSString expression,
+                IsNode contextNode, HasCallStack) =>
+                 self ->
+                   expression ->
+                     Maybe contextNode ->
+                       Maybe XPathNSResolver -> Word -> Maybe XPathResult -> m XPathResult
+evaluateUnsafe self expression contextNode resolver type' inResult
+  = liftDOM
+      ((((toDocument self) ^. jsf "evaluate"
+           [toJSVal expression, toJSVal contextNode, toJSVal resolver,
+            toJSVal type', toJSVal inResult])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
 evaluateUnchecked ::
                   (MonadDOM m, IsDocument self, ToJSString expression,
                    IsNode contextNode) =>
@@ -933,6 +1233,18 @@
             [toJSVal elementName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
+getElementsByNameUnsafe ::
+                        (MonadDOM m, IsDocument self, ToJSString elementName,
+                         HasCallStack) =>
+                          self -> elementName -> m NodeList
+getElementsByNameUnsafe self elementName
+  = liftDOM
+      ((((toDocument self) ^. jsf "getElementsByName"
+           [toJSVal elementName])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
 getElementsByNameUnchecked ::
                            (MonadDOM m, IsDocument self, ToJSString elementName) =>
                              self -> elementName -> m NodeList
@@ -962,6 +1274,17 @@
             [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.elementFromPoint Mozilla Document.elementFromPoint documentation> 
+elementFromPointUnsafe ::
+                       (MonadDOM m, IsDocument self, HasCallStack) =>
+                         self -> Int -> Int -> m Element
+elementFromPointUnsafe self x y
+  = liftDOM
+      ((((toDocument self) ^. jsf "elementFromPoint"
+           [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.elementFromPoint Mozilla Document.elementFromPoint documentation> 
 elementFromPointUnchecked ::
                           (MonadDOM m, IsDocument self) => self -> Int -> Int -> m Element
 elementFromPointUnchecked self x y
@@ -990,6 +1313,17 @@
             [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
+caretRangeFromPointUnsafe ::
+                          (MonadDOM m, IsDocument self, HasCallStack) =>
+                            self -> Int -> Int -> m Range
+caretRangeFromPointUnsafe self x y
+  = liftDOM
+      ((((toDocument self) ^. jsf "caretRangeFromPoint"
+           [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
 caretRangeFromPointUnchecked ::
                              (MonadDOM m, IsDocument self) => self -> Int -> Int -> m Range
 caretRangeFromPointUnchecked self x y
@@ -1011,6 +1345,14 @@
   = liftDOM (void ((toDocument self) ^. jsf "getSelection" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
+getSelectionUnsafe ::
+                   (MonadDOM m, IsDocument self, HasCallStack) => self -> m Selection
+getSelectionUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. jsf "getSelection" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
 getSelectionUnchecked ::
                       (MonadDOM m, IsDocument self) => self -> m Selection
 getSelectionUnchecked self
@@ -1042,6 +1384,18 @@
             [toJSVal contextId, toJSVal name, toJSVal width, toJSVal height]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
+getCSSCanvasContextUnsafe ::
+                          (MonadDOM m, IsDocument self, ToJSString contextId,
+                           ToJSString name, HasCallStack) =>
+                            self -> contextId -> name -> Int -> Int -> m CanvasRenderingContext
+getCSSCanvasContextUnsafe self contextId name width height
+  = liftDOM
+      ((((toDocument self) ^. jsf "getCSSCanvasContext"
+           [toJSVal contextId, toJSVal name, toJSVal width, toJSVal height])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
 getCSSCanvasContextUnchecked ::
                              (MonadDOM m, IsDocument self, ToJSString contextId,
                               ToJSString name) =>
@@ -1073,6 +1427,17 @@
             [toJSVal tagname]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
+getElementsByClassNameUnsafe ::
+                             (MonadDOM m, IsDocument self, ToJSString tagname, HasCallStack) =>
+                               self -> tagname -> m NodeList
+getElementsByClassNameUnsafe self tagname
+  = liftDOM
+      ((((toDocument self) ^. jsf "getElementsByClassName"
+           [toJSVal tagname])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
 getElementsByClassNameUnchecked ::
                                 (MonadDOM m, IsDocument self, ToJSString tagname) =>
                                   self -> tagname -> m NodeList
@@ -1111,6 +1476,17 @@
          ((toDocument self) ^. jsf "querySelector" [toJSVal selectors]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelector Mozilla Document.querySelector documentation> 
+querySelectorUnsafe ::
+                    (MonadDOM m, IsDocument self, ToJSString selectors,
+                     HasCallStack) =>
+                      self -> selectors -> m Element
+querySelectorUnsafe self selectors
+  = liftDOM
+      ((((toDocument self) ^. jsf "querySelector" [toJSVal selectors])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelector Mozilla Document.querySelector documentation> 
 querySelectorUnchecked ::
                        (MonadDOM m, IsDocument self, ToJSString selectors) =>
                          self -> selectors -> m Element
@@ -1138,6 +1514,17 @@
          ((toDocument self) ^. jsf "querySelectorAll" [toJSVal selectors]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll Mozilla Document.querySelectorAll documentation> 
+querySelectorAllUnsafe ::
+                       (MonadDOM m, IsDocument self, ToJSString selectors,
+                        HasCallStack) =>
+                         self -> selectors -> m NodeList
+querySelectorAllUnsafe self selectors
+  = liftDOM
+      ((((toDocument self) ^. jsf "querySelectorAll" [toJSVal selectors])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll Mozilla Document.querySelectorAll documentation> 
 querySelectorAllUnchecked ::
                           (MonadDOM m, IsDocument self, ToJSString selectors) =>
                             self -> selectors -> m NodeList
@@ -1181,6 +1568,16 @@
       (void ((toDocument self) ^. jsf "webkitGetNamedFlows" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
+webkitGetNamedFlowsUnsafe ::
+                          (MonadDOM m, IsDocument self, HasCallStack) =>
+                            self -> m DOMNamedFlowCollection
+webkitGetNamedFlowsUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. jsf "webkitGetNamedFlows" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
 webkitGetNamedFlowsUnchecked ::
                              (MonadDOM m, IsDocument self) => self -> m DOMNamedFlowCollection
 webkitGetNamedFlowsUnchecked self
@@ -1227,6 +1624,26 @@
              toJSVal webkitRotationAngle, toJSVal webkitForce]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
+createTouchUnsafe ::
+                  (MonadDOM m, IsDocument self, IsEventTarget target,
+                   HasCallStack) =>
+                    self ->
+                      Maybe Window ->
+                        Maybe target ->
+                          Int ->
+                            Int -> Int -> Int -> Int -> Int -> Int -> Float -> Float -> m Touch
+createTouchUnsafe self window target identifier pageX pageY screenX
+  screenY webkitRadiusX webkitRadiusY webkitRotationAngle webkitForce
+  = liftDOM
+      ((((toDocument self) ^. jsf "createTouch"
+           [toJSVal window, toJSVal target, toJSVal identifier, toJSVal pageX,
+            toJSVal pageY, toJSVal screenX, toJSVal screenY,
+            toJSVal webkitRadiusX, toJSVal webkitRadiusY,
+            toJSVal webkitRotationAngle, toJSVal webkitForce])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
 createTouchUnchecked ::
                      (MonadDOM m, IsDocument self, IsEventTarget target) =>
                        self ->
@@ -1258,6 +1675,14 @@
   = liftDOM (void ((toDocument self) ^. jsf "createTouchList" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
+createTouchListUnsafe ::
+                      (MonadDOM m, IsDocument self, HasCallStack) => self -> m TouchList
+createTouchListUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. jsf "createTouchList" ()) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
 createTouchListUnchecked ::
                          (MonadDOM m, IsDocument self) => self -> m TouchList
 createTouchListUnchecked self
@@ -1272,6 +1697,15 @@
   = liftDOM (((toDocument self) ^. js "doctype") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
+getDoctypeUnsafe ::
+                 (MonadDOM m, IsDocument self, HasCallStack) =>
+                   self -> m DocumentType
+getDoctypeUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "doctype") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
 getDoctypeUnchecked ::
                     (MonadDOM m, IsDocument self) => self -> m DocumentType
 getDoctypeUnchecked self
@@ -1287,6 +1721,15 @@
       (((toDocument self) ^. js "implementation") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.implementation Mozilla Document.implementation documentation> 
+getImplementationUnsafe ::
+                        (MonadDOM m, IsDocument self, HasCallStack) =>
+                          self -> m DOMImplementation
+getImplementationUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "implementation") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.implementation Mozilla Document.implementation documentation> 
 getImplementationUnchecked ::
                            (MonadDOM m, IsDocument self) => self -> m DOMImplementation
 getImplementationUnchecked self
@@ -1301,6 +1744,14 @@
       (((toDocument self) ^. js "documentElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
+getDocumentElementUnsafe ::
+                         (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
+getDocumentElementUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "documentElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
 getDocumentElementUnchecked ::
                             (MonadDOM m, IsDocument self) => self -> m Element
 getDocumentElementUnchecked self
@@ -1317,6 +1768,15 @@
       (((toDocument self) ^. js "inputEncoding") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.inputEncoding Mozilla Document.inputEncoding documentation> 
+getInputEncodingUnsafe ::
+                       (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                         self -> m result
+getInputEncodingUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "inputEncoding") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.inputEncoding Mozilla Document.inputEncoding documentation> 
 getInputEncodingUnchecked ::
                           (MonadDOM m, IsDocument self, FromJSString result) =>
                             self -> m result
@@ -1333,6 +1793,15 @@
       (((toDocument self) ^. js "xmlEncoding") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
+getXmlEncodingUnsafe ::
+                     (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                       self -> m result
+getXmlEncodingUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "xmlEncoding") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
 getXmlEncodingUnchecked ::
                         (MonadDOM m, IsDocument self, FromJSString result) =>
                           self -> m result
@@ -1356,6 +1825,15 @@
       (((toDocument self) ^. js "xmlVersion") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
+getXmlVersionUnsafe ::
+                    (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                      self -> m result
+getXmlVersionUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "xmlVersion") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
 getXmlVersionUnchecked ::
                        (MonadDOM m, IsDocument self, FromJSString result) =>
                          self -> m result
@@ -1383,6 +1861,15 @@
       (((toDocument self) ^. js "documentURI") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentURI Mozilla Document.documentURI documentation> 
+getDocumentURIUnsafe ::
+                     (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                       self -> m result
+getDocumentURIUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "documentURI") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentURI Mozilla Document.documentURI documentation> 
 getDocumentURIUnchecked ::
                         (MonadDOM m, IsDocument self, FromJSString result) =>
                           self -> m result
@@ -1397,6 +1884,14 @@
   = liftDOM (((toDocument self) ^. js "defaultView") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
+getDefaultViewUnsafe ::
+                     (MonadDOM m, IsDocument self, HasCallStack) => self -> m Window
+getDefaultViewUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "defaultView") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
 getDefaultViewUnchecked ::
                         (MonadDOM m, IsDocument self) => self -> m Window
 getDefaultViewUnchecked self
@@ -1410,6 +1905,15 @@
   = liftDOM (((toDocument self) ^. js "styleSheets") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.styleSheets Mozilla Document.styleSheets documentation> 
+getStyleSheetsUnsafe ::
+                     (MonadDOM m, IsDocument self, HasCallStack) =>
+                       self -> m StyleSheetList
+getStyleSheetsUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "styleSheets") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.styleSheets Mozilla Document.styleSheets documentation> 
 getStyleSheetsUnchecked ::
                         (MonadDOM m, IsDocument self) => self -> m StyleSheetList
 getStyleSheetsUnchecked self
@@ -1439,6 +1943,15 @@
   = liftDOM (((toDocument self) ^. js "title") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
+getTitleUnsafe ::
+               (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                 self -> m result
+getTitleUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "title") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
 getTitleUnchecked ::
                   (MonadDOM m, IsDocument self, FromJSString result) =>
                     self -> m result
@@ -1470,6 +1983,15 @@
       (((toDocument self) ^. js "domain") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
+getDomainUnsafe ::
+                (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                  self -> m result
+getDomainUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "domain") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
 getDomainUnchecked ::
                    (MonadDOM m, IsDocument self, FromJSString result) =>
                      self -> m result
@@ -1500,6 +2022,15 @@
       (((toDocument self) ^. js "cookie") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
+getCookieUnsafe ::
+                (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                  self -> m result
+getCookieUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "cookie") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
 getCookieUnchecked ::
                    (MonadDOM m, IsDocument self, FromJSString result) =>
                      self -> m result
@@ -1521,6 +2052,15 @@
   = liftDOM (((toDocument self) ^. js "body") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
+getBodyUnsafe ::
+              (MonadDOM m, IsDocument self, HasCallStack) =>
+                self -> m HTMLElement
+getBodyUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "body") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
 getBodyUnchecked ::
                  (MonadDOM m, IsDocument self) => self -> m HTMLElement
 getBodyUnchecked self
@@ -1533,6 +2073,15 @@
   = liftDOM (((toDocument self) ^. js "head") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
+getHeadUnsafe ::
+              (MonadDOM m, IsDocument self, HasCallStack) =>
+                self -> m HTMLHeadElement
+getHeadUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "head") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
 getHeadUnchecked ::
                  (MonadDOM m, IsDocument self) => self -> m HTMLHeadElement
 getHeadUnchecked self
@@ -1545,6 +2094,15 @@
   = liftDOM (((toDocument self) ^. js "images") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.images Mozilla Document.images documentation> 
+getImagesUnsafe ::
+                (MonadDOM m, IsDocument self, HasCallStack) =>
+                  self -> m HTMLCollection
+getImagesUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "images") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.images Mozilla Document.images documentation> 
 getImagesUnchecked ::
                    (MonadDOM m, IsDocument self) => self -> m HTMLCollection
 getImagesUnchecked self
@@ -1558,6 +2116,15 @@
   = liftDOM (((toDocument self) ^. js "applets") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.applets Mozilla Document.applets documentation> 
+getAppletsUnsafe ::
+                 (MonadDOM m, IsDocument self, HasCallStack) =>
+                   self -> m HTMLCollection
+getAppletsUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "applets") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.applets Mozilla Document.applets documentation> 
 getAppletsUnchecked ::
                     (MonadDOM m, IsDocument self) => self -> m HTMLCollection
 getAppletsUnchecked self
@@ -1571,6 +2138,15 @@
   = liftDOM (((toDocument self) ^. js "links") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.links Mozilla Document.links documentation> 
+getLinksUnsafe ::
+               (MonadDOM m, IsDocument self, HasCallStack) =>
+                 self -> m HTMLCollection
+getLinksUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "links") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.links Mozilla Document.links documentation> 
 getLinksUnchecked ::
                   (MonadDOM m, IsDocument self) => self -> m HTMLCollection
 getLinksUnchecked self
@@ -1584,6 +2160,15 @@
   = liftDOM (((toDocument self) ^. js "forms") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.forms Mozilla Document.forms documentation> 
+getFormsUnsafe ::
+               (MonadDOM m, IsDocument self, HasCallStack) =>
+                 self -> m HTMLCollection
+getFormsUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "forms") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.forms Mozilla Document.forms documentation> 
 getFormsUnchecked ::
                   (MonadDOM m, IsDocument self) => self -> m HTMLCollection
 getFormsUnchecked self
@@ -1597,6 +2182,15 @@
   = liftDOM (((toDocument self) ^. js "anchors") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.anchors Mozilla Document.anchors documentation> 
+getAnchorsUnsafe ::
+                 (MonadDOM m, IsDocument self, HasCallStack) =>
+                   self -> m HTMLCollection
+getAnchorsUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "anchors") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.anchors Mozilla Document.anchors documentation> 
 getAnchorsUnchecked ::
                     (MonadDOM m, IsDocument self) => self -> m HTMLCollection
 getAnchorsUnchecked self
@@ -1624,6 +2218,14 @@
   = liftDOM (((toDocument self) ^. js "location") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
+getLocationUnsafe ::
+                  (MonadDOM m, IsDocument self, HasCallStack) => self -> m Location
+getLocationUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "location") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
 getLocationUnchecked ::
                      (MonadDOM m, IsDocument self) => self -> m Location
 getLocationUnchecked self
@@ -1646,6 +2248,15 @@
       (((toDocument self) ^. js "charset") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.charset Mozilla Document.charset documentation> 
+getCharsetUnsafe ::
+                 (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                   self -> m result
+getCharsetUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "charset") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.charset Mozilla Document.charset documentation> 
 getCharsetUnchecked ::
                     (MonadDOM m, IsDocument self, FromJSString result) =>
                       self -> m result
@@ -1662,6 +2273,15 @@
       (((toDocument self) ^. js "defaultCharset") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultCharset Mozilla Document.defaultCharset documentation> 
+getDefaultCharsetUnsafe ::
+                        (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                          self -> m result
+getDefaultCharsetUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "defaultCharset") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultCharset Mozilla Document.defaultCharset documentation> 
 getDefaultCharsetUnchecked ::
                            (MonadDOM m, IsDocument self, FromJSString result) =>
                              self -> m result
@@ -1678,6 +2298,15 @@
       (((toDocument self) ^. js "readyState") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.readyState Mozilla Document.readyState documentation> 
+getReadyStateUnsafe ::
+                    (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                      self -> m result
+getReadyStateUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "readyState") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.readyState Mozilla Document.readyState documentation> 
 getReadyStateUnchecked ::
                        (MonadDOM m, IsDocument self, FromJSString result) =>
                          self -> m result
@@ -1694,6 +2323,15 @@
       (((toDocument self) ^. js "characterSet") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.characterSet Mozilla Document.characterSet documentation> 
+getCharacterSetUnsafe ::
+                      (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                        self -> m result
+getCharacterSetUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "characterSet") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.characterSet Mozilla Document.characterSet documentation> 
 getCharacterSetUnchecked ::
                          (MonadDOM m, IsDocument self, FromJSString result) =>
                            self -> m result
@@ -1711,6 +2349,16 @@
          fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
+getPreferredStylesheetSetUnsafe ::
+                                (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                                  self -> m result
+getPreferredStylesheetSetUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "preferredStylesheetSet") >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
 getPreferredStylesheetSetUnchecked ::
                                    (MonadDOM m, IsDocument self, FromJSString result) =>
                                      self -> m result
@@ -1737,6 +2385,16 @@
          fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
+getSelectedStylesheetSetUnsafe ::
+                               (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
+                                 self -> m result
+getSelectedStylesheetSetUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "selectedStylesheetSet") >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
 getSelectedStylesheetSetUnchecked ::
                                   (MonadDOM m, IsDocument self, FromJSString result) =>
                                     self -> m result
@@ -1752,6 +2410,14 @@
   = liftDOM (((toDocument self) ^. js "activeElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.activeElement Mozilla Document.activeElement documentation> 
+getActiveElementUnsafe ::
+                       (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
+getActiveElementUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "activeElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.activeElement Mozilla Document.activeElement documentation> 
 getActiveElementUnchecked ::
                           (MonadDOM m, IsDocument self) => self -> m Element
 getActiveElementUnchecked self
@@ -1790,6 +2456,16 @@
          fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCurrentFullScreenElement Mozilla Document.webkitCurrentFullScreenElement documentation> 
+getWebkitCurrentFullScreenElementUnsafe ::
+                                        (MonadDOM m, IsDocument self, HasCallStack) =>
+                                          self -> m Element
+getWebkitCurrentFullScreenElementUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "webkitCurrentFullScreenElement") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCurrentFullScreenElement Mozilla Document.webkitCurrentFullScreenElement documentation> 
 getWebkitCurrentFullScreenElementUnchecked ::
                                            (MonadDOM m, IsDocument self) => self -> m Element
 getWebkitCurrentFullScreenElementUnchecked self
@@ -1812,6 +2488,15 @@
       (((toDocument self) ^. js "webkitFullscreenElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
+getWebkitFullscreenElementUnsafe ::
+                                 (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
+getWebkitFullscreenElementUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "webkitFullscreenElement") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
 getWebkitFullscreenElementUnchecked ::
                                     (MonadDOM m, IsDocument self) => self -> m Element
 getWebkitFullscreenElementUnchecked self
@@ -1827,6 +2512,14 @@
       (((toDocument self) ^. js "pointerLockElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.pointerLockElement Mozilla Document.pointerLockElement documentation> 
+getPointerLockElementUnsafe ::
+                            (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
+getPointerLockElementUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "pointerLockElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.pointerLockElement Mozilla Document.pointerLockElement documentation> 
 getPointerLockElementUnchecked ::
                                (MonadDOM m, IsDocument self) => self -> m Element
 getPointerLockElementUnchecked self
@@ -1841,6 +2534,14 @@
   = liftDOM (((toDocument self) ^. js "fonts") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.fonts Mozilla Document.fonts documentation> 
+getFontsUnsafe ::
+               (MonadDOM m, IsDocument self, HasCallStack) => self -> m FontLoader
+getFontsUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "fonts") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.fonts Mozilla Document.fonts documentation> 
 getFontsUnchecked ::
                   (MonadDOM m, IsDocument self) => self -> m FontLoader
 getFontsUnchecked self
@@ -2167,6 +2868,15 @@
       (((toDocument self) ^. js "securityPolicy") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.securityPolicy Mozilla Document.securityPolicy documentation> 
+getSecurityPolicyUnsafe ::
+                        (MonadDOM m, IsDocument self, HasCallStack) =>
+                          self -> m SecurityPolicy
+getSecurityPolicyUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "securityPolicy") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.securityPolicy Mozilla Document.securityPolicy documentation> 
 getSecurityPolicyUnchecked ::
                            (MonadDOM m, IsDocument self) => self -> m SecurityPolicy
 getSecurityPolicyUnchecked self
@@ -2179,6 +2889,15 @@
                    self -> m (Maybe HTMLScriptElement)
 getCurrentScript self
   = liftDOM (((toDocument self) ^. js "currentScript") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
+getCurrentScriptUnsafe ::
+                       (MonadDOM m, IsDocument self, HasCallStack) =>
+                         self -> m HTMLScriptElement
+getCurrentScriptUnsafe self
+  = liftDOM
+      ((((toDocument self) ^. js "currentScript") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
 getCurrentScriptUnchecked ::
diff --git a/src/JSDOM/Generated/DocumentFragment.hs b/src/JSDOM/Generated/DocumentFragment.hs
--- a/src/JSDOM/Generated/DocumentFragment.hs
+++ b/src/JSDOM/Generated/DocumentFragment.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DocumentFragment
        (newDocumentFragment, querySelector, querySelector_,
-        querySelectorUnchecked, querySelectorAll, querySelectorAll_,
-        querySelectorAllUnchecked, DocumentFragment,
-        castToDocumentFragment, gTypeDocumentFragment)
+        querySelectorUnsafe, querySelectorUnchecked, querySelectorAll,
+        querySelectorAll_, querySelectorAllUnsafe,
+        querySelectorAllUnchecked, DocumentFragment(..),
+        gTypeDocumentFragment)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation> 
 newDocumentFragment :: (MonadDOM m) => m DocumentFragment
@@ -39,6 +54,15 @@
   = liftDOM (void (self ^. jsf "querySelector" [toJSVal selectors]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.querySelector Mozilla DocumentFragment.querySelector documentation> 
+querySelectorUnsafe ::
+                    (MonadDOM m, ToJSString selectors, HasCallStack) =>
+                      DocumentFragment -> selectors -> m Element
+querySelectorUnsafe self selectors
+  = liftDOM
+      (((self ^. jsf "querySelector" [toJSVal selectors]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.querySelector Mozilla DocumentFragment.querySelector documentation> 
 querySelectorUnchecked ::
                        (MonadDOM m, ToJSString selectors) =>
                          DocumentFragment -> selectors -> m Element
@@ -63,6 +87,16 @@
 querySelectorAll_ self selectors
   = liftDOM
       (void (self ^. jsf "querySelectorAll" [toJSVal selectors]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.querySelectorAll Mozilla DocumentFragment.querySelectorAll documentation> 
+querySelectorAllUnsafe ::
+                       (MonadDOM m, ToJSString selectors, HasCallStack) =>
+                         DocumentFragment -> selectors -> m NodeList
+querySelectorAllUnsafe self selectors
+  = liftDOM
+      (((self ^. jsf "querySelectorAll" [toJSVal selectors]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment.querySelectorAll Mozilla DocumentFragment.querySelectorAll documentation> 
 querySelectorAllUnchecked ::
diff --git a/src/JSDOM/Generated/DocumentType.hs b/src/JSDOM/Generated/DocumentType.hs
--- a/src/JSDOM/Generated/DocumentType.hs
+++ b/src/JSDOM/Generated/DocumentType.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DocumentType
-       (getName, getEntities, getEntitiesUnchecked, getNotations,
-        getNotationsUnchecked, getPublicId, getPublicIdUnchecked,
-        getSystemId, getSystemIdUnchecked, getInternalSubset,
-        getInternalSubsetUnchecked, DocumentType, castToDocumentType,
-        gTypeDocumentType)
+       (getName, getEntities, getEntitiesUnsafe, getEntitiesUnchecked,
+        getNotations, getNotationsUnsafe, getNotationsUnchecked,
+        getPublicId, getPublicIdUnsafe, getPublicIdUnchecked, getSystemId,
+        getSystemIdUnsafe, getSystemIdUnchecked, getInternalSubset,
+        getInternalSubsetUnsafe, getInternalSubsetUnchecked,
+        DocumentType(..), gTypeDocumentType)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.name Mozilla DocumentType.name documentation> 
 getName ::
@@ -30,6 +45,14 @@
 getEntities self = liftDOM ((self ^. js "entities") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.entities Mozilla DocumentType.entities documentation> 
+getEntitiesUnsafe ::
+                  (MonadDOM m, HasCallStack) => DocumentType -> m NamedNodeMap
+getEntitiesUnsafe self
+  = liftDOM
+      (((self ^. js "entities") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.entities Mozilla DocumentType.entities documentation> 
 getEntitiesUnchecked ::
                      (MonadDOM m) => DocumentType -> m NamedNodeMap
 getEntitiesUnchecked self
@@ -42,6 +65,14 @@
   = liftDOM ((self ^. js "notations") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.notations Mozilla DocumentType.notations documentation> 
+getNotationsUnsafe ::
+                   (MonadDOM m, HasCallStack) => DocumentType -> m NamedNodeMap
+getNotationsUnsafe self
+  = liftDOM
+      (((self ^. js "notations") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.notations Mozilla DocumentType.notations documentation> 
 getNotationsUnchecked ::
                       (MonadDOM m) => DocumentType -> m NamedNodeMap
 getNotationsUnchecked self
@@ -55,6 +86,15 @@
   = liftDOM ((self ^. js "publicId") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.publicId Mozilla DocumentType.publicId documentation> 
+getPublicIdUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    DocumentType -> m result
+getPublicIdUnsafe self
+  = liftDOM
+      (((self ^. js "publicId") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.publicId Mozilla DocumentType.publicId documentation> 
 getPublicIdUnchecked ::
                      (MonadDOM m, FromJSString result) => DocumentType -> m result
 getPublicIdUnchecked self
@@ -68,6 +108,15 @@
   = liftDOM ((self ^. js "systemId") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.systemId Mozilla DocumentType.systemId documentation> 
+getSystemIdUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    DocumentType -> m result
+getSystemIdUnsafe self
+  = liftDOM
+      (((self ^. js "systemId") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.systemId Mozilla DocumentType.systemId documentation> 
 getSystemIdUnchecked ::
                      (MonadDOM m, FromJSString result) => DocumentType -> m result
 getSystemIdUnchecked self
@@ -79,6 +128,15 @@
                     DocumentType -> m (Maybe result)
 getInternalSubset self
   = liftDOM ((self ^. js "internalSubset") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.internalSubset Mozilla DocumentType.internalSubset documentation> 
+getInternalSubsetUnsafe ::
+                        (MonadDOM m, HasCallStack, FromJSString result) =>
+                          DocumentType -> m result
+getInternalSubsetUnsafe self
+  = liftDOM
+      (((self ^. js "internalSubset") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.internalSubset Mozilla DocumentType.internalSubset documentation> 
 getInternalSubsetUnchecked ::
diff --git a/src/JSDOM/Generated/DynamicsCompressorNode.hs b/src/JSDOM/Generated/DynamicsCompressorNode.hs
--- a/src/JSDOM/Generated/DynamicsCompressorNode.hs
+++ b/src/JSDOM/Generated/DynamicsCompressorNode.hs
@@ -1,13 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.DynamicsCompressorNode
-       (getThreshold, getThresholdUnchecked, getKnee, getKneeUnchecked,
-        getRatio, getRatioUnchecked, getReduction, getReductionUnchecked,
-        getAttack, getAttackUnchecked, getRelease, getReleaseUnchecked,
-        DynamicsCompressorNode, castToDynamicsCompressorNode,
+       (getThreshold, getThresholdUnsafe, getThresholdUnchecked, getKnee,
+        getKneeUnsafe, getKneeUnchecked, getRatio, getRatioUnsafe,
+        getRatioUnchecked, getReduction, getReductionUnsafe,
+        getReductionUnchecked, getAttack, getAttackUnsafe,
+        getAttackUnchecked, getRelease, getReleaseUnsafe,
+        getReleaseUnchecked, DynamicsCompressorNode(..),
         gTypeDynamicsCompressorNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
 getThreshold ::
@@ -26,6 +42,15 @@
   = liftDOM ((self ^. js "threshold") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
+getThresholdUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     DynamicsCompressorNode -> m AudioParam
+getThresholdUnsafe self
+  = liftDOM
+      (((self ^. js "threshold") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
 getThresholdUnchecked ::
                       (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
 getThresholdUnchecked self
@@ -37,6 +62,15 @@
 getKnee self = liftDOM ((self ^. js "knee") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.knee Mozilla DynamicsCompressorNode.knee documentation> 
+getKneeUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                DynamicsCompressorNode -> m AudioParam
+getKneeUnsafe self
+  = liftDOM
+      (((self ^. js "knee") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.knee Mozilla DynamicsCompressorNode.knee documentation> 
 getKneeUnchecked ::
                  (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
 getKneeUnchecked self
@@ -48,6 +82,15 @@
 getRatio self = liftDOM ((self ^. js "ratio") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.ratio Mozilla DynamicsCompressorNode.ratio documentation> 
+getRatioUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 DynamicsCompressorNode -> m AudioParam
+getRatioUnsafe self
+  = liftDOM
+      (((self ^. js "ratio") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.ratio Mozilla DynamicsCompressorNode.ratio documentation> 
 getRatioUnchecked ::
                   (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
 getRatioUnchecked self
@@ -60,6 +103,15 @@
   = liftDOM ((self ^. js "reduction") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.reduction Mozilla DynamicsCompressorNode.reduction documentation> 
+getReductionUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     DynamicsCompressorNode -> m AudioParam
+getReductionUnsafe self
+  = liftDOM
+      (((self ^. js "reduction") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.reduction Mozilla DynamicsCompressorNode.reduction documentation> 
 getReductionUnchecked ::
                       (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
 getReductionUnchecked self
@@ -71,6 +123,15 @@
 getAttack self = liftDOM ((self ^. js "attack") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.attack Mozilla DynamicsCompressorNode.attack documentation> 
+getAttackUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  DynamicsCompressorNode -> m AudioParam
+getAttackUnsafe self
+  = liftDOM
+      (((self ^. js "attack") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.attack Mozilla DynamicsCompressorNode.attack documentation> 
 getAttackUnchecked ::
                    (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
 getAttackUnchecked self
@@ -80,6 +141,15 @@
 getRelease ::
            (MonadDOM m) => DynamicsCompressorNode -> m (Maybe AudioParam)
 getRelease self = liftDOM ((self ^. js "release") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.release Mozilla DynamicsCompressorNode.release documentation> 
+getReleaseUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   DynamicsCompressorNode -> m AudioParam
+getReleaseUnsafe self
+  = liftDOM
+      (((self ^. js "release") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.release Mozilla DynamicsCompressorNode.release documentation> 
 getReleaseUnchecked ::
diff --git a/src/JSDOM/Generated/EXTBlendMinMax.hs b/src/JSDOM/Generated/EXTBlendMinMax.hs
--- a/src/JSDOM/Generated/EXTBlendMinMax.hs
+++ b/src/JSDOM/Generated/EXTBlendMinMax.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.EXTBlendMinMax
-       (pattern MIN_EXT, pattern MAX_EXT, EXTBlendMinMax,
-        castToEXTBlendMinMax, gTypeEXTBlendMinMax)
+       (pattern MIN_EXT, pattern MAX_EXT, EXTBlendMinMax(..),
+        gTypeEXTBlendMinMax)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,5 +19,15 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern MIN_EXT = 32775
 pattern MAX_EXT = 32776
diff --git a/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs b/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs
--- a/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs
+++ b/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.EXTTextureFilterAnisotropic
        (pattern TEXTURE_MAX_ANISOTROPY_EXT,
         pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT,
-        EXTTextureFilterAnisotropic, castToEXTTextureFilterAnisotropic,
-        gTypeEXTTextureFilterAnisotropic)
+        EXTTextureFilterAnisotropic(..), gTypeEXTTextureFilterAnisotropic)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,5 +20,15 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern TEXTURE_MAX_ANISOTROPY_EXT = 34046
 pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047
diff --git a/src/JSDOM/Generated/EXTsRGB.hs b/src/JSDOM/Generated/EXTsRGB.hs
--- a/src/JSDOM/Generated/EXTsRGB.hs
+++ b/src/JSDOM/Generated/EXTsRGB.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.EXTsRGB
        (pattern SRGB_EXT, pattern SRGB_ALPHA_EXT,
         pattern SRGB8_ALPHA8_EXT,
-        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT, EXTsRGB,
-        castToEXTsRGB, gTypeEXTsRGB)
+        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT, EXTsRGB(..),
+        gTypeEXTsRGB)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SRGB_EXT = 35904
 pattern SRGB_ALPHA_EXT = 35906
 pattern SRGB8_ALPHA8_EXT = 35907
diff --git a/src/JSDOM/Generated/Element.hs b/src/JSDOM/Generated/Element.hs
--- a/src/JSDOM/Generated/Element.hs
+++ b/src/JSDOM/Generated/Element.hs
@@ -1,45 +1,60 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Element
-       (getAttribute, getAttribute_, getAttributeUnchecked, setAttribute,
-        removeAttribute, getAttributeNode, getAttributeNode_,
+       (getAttribute, getAttribute_, getAttributeUnsafe,
+        getAttributeUnchecked, setAttribute, removeAttribute,
+        getAttributeNode, getAttributeNode_, getAttributeNodeUnsafe,
         getAttributeNodeUnchecked, setAttributeNode, setAttributeNode_,
-        setAttributeNodeUnchecked, removeAttributeNode,
-        removeAttributeNode_, removeAttributeNodeUnchecked,
+        setAttributeNodeUnsafe, setAttributeNodeUnchecked,
+        removeAttributeNode, removeAttributeNode_,
+        removeAttributeNodeUnsafe, removeAttributeNodeUnchecked,
         getElementsByTagName, getElementsByTagName_,
-        getElementsByTagNameUnchecked, hasAttributes, hasAttributes_,
-        getAttributeNS, getAttributeNS_, setAttributeNS, removeAttributeNS,
-        getElementsByTagNameNS, getElementsByTagNameNS_,
+        getElementsByTagNameUnsafe, getElementsByTagNameUnchecked,
+        hasAttributes, hasAttributes_, getAttributeNS, getAttributeNS_,
+        setAttributeNS, removeAttributeNS, getElementsByTagNameNS,
+        getElementsByTagNameNS_, getElementsByTagNameNSUnsafe,
         getElementsByTagNameNSUnchecked, getAttributeNodeNS,
-        getAttributeNodeNS_, getAttributeNodeNSUnchecked,
-        setAttributeNodeNS, setAttributeNodeNS_,
+        getAttributeNodeNS_, getAttributeNodeNSUnsafe,
+        getAttributeNodeNSUnchecked, setAttributeNodeNS,
+        setAttributeNodeNS_, setAttributeNodeNSUnsafe,
         setAttributeNodeNSUnchecked, hasAttribute, hasAttribute_,
         hasAttributeNS, hasAttributeNS_, focus, blur, scrollIntoView,
         scrollIntoViewIfNeeded, scrollByLines, scrollByPages,
         getElementsByClassName, getElementsByClassName_,
-        getElementsByClassNameUnchecked, querySelector, querySelector_,
+        getElementsByClassNameUnsafe, getElementsByClassNameUnchecked,
+        querySelector, querySelector_, querySelectorUnsafe,
         querySelectorUnchecked, querySelectorAll, querySelectorAll_,
-        querySelectorAllUnchecked, matches, matches_, closest, closest_,
-        closestUnchecked, webkitMatchesSelector, webkitMatchesSelector_,
-        getClientRects, getClientRects_, getClientRectsUnchecked,
+        querySelectorAllUnsafe, querySelectorAllUnchecked, matches,
+        matches_, closest, closest_, closestUnsafe, closestUnchecked,
+        webkitMatchesSelector, webkitMatchesSelector_, getClientRects,
+        getClientRects_, getClientRectsUnsafe, getClientRectsUnchecked,
         getBoundingClientRect, getBoundingClientRect_,
-        getBoundingClientRectUnchecked, webkitRequestFullScreen,
-        webkitRequestFullscreen, requestPointerLock,
-        webkitGetRegionFlowRanges, webkitGetRegionFlowRanges_,
-        pattern ALLOW_KEYBOARD_INPUT, getTagName, getTagNameUnchecked,
-        getAttributes, getAttributesUnchecked, getStyle, getStyleUnchecked,
-        setId, getId, getOffsetLeft, getOffsetTop, getOffsetWidth,
-        getOffsetHeight, getClientLeft, getClientTop, getClientWidth,
-        getClientHeight, setScrollLeft, getScrollLeft, setScrollTop,
-        getScrollTop, getScrollWidth, getScrollHeight, getOffsetParent,
+        getBoundingClientRectUnsafe, getBoundingClientRectUnchecked,
+        webkitRequestFullScreen, webkitRequestFullscreen,
+        requestPointerLock, webkitGetRegionFlowRanges,
+        webkitGetRegionFlowRanges_, pattern ALLOW_KEYBOARD_INPUT,
+        getTagName, getTagNameUnsafe, getTagNameUnchecked, getAttributes,
+        getAttributesUnsafe, getAttributesUnchecked, getStyle,
+        getStyleUnsafe, getStyleUnchecked, setId, getId, getOffsetLeft,
+        getOffsetTop, getOffsetWidth, getOffsetHeight, getClientLeft,
+        getClientTop, getClientWidth, getClientHeight, setScrollLeft,
+        getScrollLeft, setScrollTop, getScrollTop, getScrollWidth,
+        getScrollHeight, getOffsetParent, getOffsetParentUnsafe,
         getOffsetParentUnchecked, setInnerHTML, getInnerHTML,
-        getInnerHTMLUnchecked, setOuterHTML, getOuterHTML,
-        getOuterHTMLUnchecked, setClassName, getClassName, getClassList,
-        getClassListUnchecked, getDataset, getDatasetUnchecked,
-        getFirstElementChild, getFirstElementChildUnchecked,
-        getLastElementChild, getLastElementChildUnchecked,
-        getPreviousElementSibling, getPreviousElementSiblingUnchecked,
-        getNextElementSibling, getNextElementSiblingUnchecked,
+        getInnerHTMLUnsafe, getInnerHTMLUnchecked, setOuterHTML,
+        getOuterHTML, getOuterHTMLUnsafe, getOuterHTMLUnchecked,
+        setClassName, getClassName, getClassList, getClassListUnsafe,
+        getClassListUnchecked, getDataset, getDatasetUnsafe,
+        getDatasetUnchecked, getFirstElementChild,
+        getFirstElementChildUnsafe, getFirstElementChildUnchecked,
+        getLastElementChild, getLastElementChildUnsafe,
+        getLastElementChildUnchecked, getPreviousElementSibling,
+        getPreviousElementSiblingUnsafe,
+        getPreviousElementSiblingUnchecked, getNextElementSibling,
+        getNextElementSiblingUnsafe, getNextElementSiblingUnchecked,
         getChildElementCount, setUiactions, getUiactions,
         getWebkitRegionOverset, abort, blurEvent, change, click,
         contextMenu, dblClick, drag, dragEnd, dragEnter, dragLeave,
@@ -51,9 +66,10 @@
         touchMove, touchEnd, touchCancel, webKitFullscreenChange,
         webKitFullscreenError, webKitWillRevealBottom,
         webKitWillRevealLeft, webKitWillRevealRight, webKitWillRevealTop,
-        Element, castToElement, gTypeElement, IsElement, toElement)
+        Element(..), gTypeElement, IsElement, toElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -64,6 +80,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
 getAttribute ::
@@ -84,6 +110,17 @@
       (void ((toElement self) ^. jsf "getAttribute" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
+getAttributeUnsafe ::
+                   (MonadDOM m, IsElement self, ToJSString name, HasCallStack,
+                    FromJSString result) =>
+                     self -> name -> m result
+getAttributeUnsafe self name
+  = liftDOM
+      ((((toElement self) ^. jsf "getAttribute" [toJSVal name]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
 getAttributeUnchecked ::
                       (MonadDOM m, IsElement self, ToJSString name,
                        FromJSString result) =>
@@ -129,6 +166,16 @@
       (void ((toElement self) ^. jsf "getAttributeNode" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
+getAttributeNodeUnsafe ::
+                       (MonadDOM m, IsElement self, ToJSString name, HasCallStack) =>
+                         self -> name -> m Attr
+getAttributeNodeUnsafe self name
+  = liftDOM
+      ((((toElement self) ^. jsf "getAttributeNode" [toJSVal name]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
 getAttributeNodeUnchecked ::
                           (MonadDOM m, IsElement self, ToJSString name) =>
                             self -> name -> m Attr
@@ -155,6 +202,16 @@
          ((toElement self) ^. jsf "setAttributeNode" [toJSVal newAttr]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
+setAttributeNodeUnsafe ::
+                       (MonadDOM m, IsElement self, HasCallStack) =>
+                         self -> Maybe Attr -> m Attr
+setAttributeNodeUnsafe self newAttr
+  = liftDOM
+      ((((toElement self) ^. jsf "setAttributeNode" [toJSVal newAttr])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
 setAttributeNodeUnchecked ::
                           (MonadDOM m, IsElement self) => self -> Maybe Attr -> m Attr
 setAttributeNodeUnchecked self newAttr
@@ -180,6 +237,16 @@
          ((toElement self) ^. jsf "removeAttributeNode" [toJSVal oldAttr]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
+removeAttributeNodeUnsafe ::
+                          (MonadDOM m, IsElement self, HasCallStack) =>
+                            self -> Maybe Attr -> m Attr
+removeAttributeNodeUnsafe self oldAttr
+  = liftDOM
+      ((((toElement self) ^. jsf "removeAttributeNode" [toJSVal oldAttr])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
 removeAttributeNodeUnchecked ::
                              (MonadDOM m, IsElement self) => self -> Maybe Attr -> m Attr
 removeAttributeNodeUnchecked self oldAttr
@@ -206,6 +273,16 @@
          ((toElement self) ^. jsf "getElementsByTagName" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
+getElementsByTagNameUnsafe ::
+                           (MonadDOM m, IsElement self, ToJSString name, HasCallStack) =>
+                             self -> name -> m NodeList
+getElementsByTagNameUnsafe self name
+  = liftDOM
+      ((((toElement self) ^. jsf "getElementsByTagName" [toJSVal name])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
 getElementsByTagNameUnchecked ::
                               (MonadDOM m, IsElement self, ToJSString name) =>
                                 self -> name -> m NodeList
@@ -292,6 +369,18 @@
             [toJSVal namespaceURI, toJSVal localName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
+getElementsByTagNameNSUnsafe ::
+                             (MonadDOM m, IsElement self, ToJSString namespaceURI,
+                              ToJSString localName, HasCallStack) =>
+                               self -> Maybe namespaceURI -> localName -> m NodeList
+getElementsByTagNameNSUnsafe self namespaceURI localName
+  = liftDOM
+      ((((toElement self) ^. jsf "getElementsByTagNameNS"
+           [toJSVal namespaceURI, toJSVal localName])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
 getElementsByTagNameNSUnchecked ::
                                 (MonadDOM m, IsElement self, ToJSString namespaceURI,
                                  ToJSString localName) =>
@@ -325,6 +414,18 @@
             [toJSVal namespaceURI, toJSVal localName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
+getAttributeNodeNSUnsafe ::
+                         (MonadDOM m, IsElement self, ToJSString namespaceURI,
+                          ToJSString localName, HasCallStack) =>
+                           self -> Maybe namespaceURI -> localName -> m Attr
+getAttributeNodeNSUnsafe self namespaceURI localName
+  = liftDOM
+      ((((toElement self) ^. jsf "getAttributeNodeNS"
+           [toJSVal namespaceURI, toJSVal localName])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
 getAttributeNodeNSUnchecked ::
                             (MonadDOM m, IsElement self, ToJSString namespaceURI,
                              ToJSString localName) =>
@@ -353,6 +454,16 @@
          ((toElement self) ^. jsf "setAttributeNodeNS" [toJSVal newAttr]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
+setAttributeNodeNSUnsafe ::
+                         (MonadDOM m, IsElement self, HasCallStack) =>
+                           self -> Maybe Attr -> m Attr
+setAttributeNodeNSUnsafe self newAttr
+  = liftDOM
+      ((((toElement self) ^. jsf "setAttributeNodeNS" [toJSVal newAttr])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
 setAttributeNodeNSUnchecked ::
                             (MonadDOM m, IsElement self) => self -> Maybe Attr -> m Attr
 setAttributeNodeNSUnchecked self newAttr
@@ -457,6 +568,16 @@
          ((toElement self) ^. jsf "getElementsByClassName" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
+getElementsByClassNameUnsafe ::
+                             (MonadDOM m, IsElement self, ToJSString name, HasCallStack) =>
+                               self -> name -> m NodeList
+getElementsByClassNameUnsafe self name
+  = liftDOM
+      ((((toElement self) ^. jsf "getElementsByClassName" [toJSVal name])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
 getElementsByClassNameUnchecked ::
                                 (MonadDOM m, IsElement self, ToJSString name) =>
                                   self -> name -> m NodeList
@@ -484,6 +605,16 @@
          ((toElement self) ^. jsf "querySelector" [toJSVal selectors]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelector Mozilla Element.querySelector documentation> 
+querySelectorUnsafe ::
+                    (MonadDOM m, IsElement self, ToJSString selectors, HasCallStack) =>
+                      self -> selectors -> m Element
+querySelectorUnsafe self selectors
+  = liftDOM
+      ((((toElement self) ^. jsf "querySelector" [toJSVal selectors]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelector Mozilla Element.querySelector documentation> 
 querySelectorUnchecked ::
                        (MonadDOM m, IsElement self, ToJSString selectors) =>
                          self -> selectors -> m Element
@@ -511,6 +642,16 @@
          ((toElement self) ^. jsf "querySelectorAll" [toJSVal selectors]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelectorAll Mozilla Element.querySelectorAll documentation> 
+querySelectorAllUnsafe ::
+                       (MonadDOM m, IsElement self, ToJSString selectors, HasCallStack) =>
+                         self -> selectors -> m NodeList
+querySelectorAllUnsafe self selectors
+  = liftDOM
+      ((((toElement self) ^. jsf "querySelectorAll" [toJSVal selectors])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelectorAll Mozilla Element.querySelectorAll documentation> 
 querySelectorAllUnchecked ::
                           (MonadDOM m, IsElement self, ToJSString selectors) =>
                             self -> selectors -> m NodeList
@@ -554,6 +695,16 @@
       (void ((toElement self) ^. jsf "closest" [toJSVal selectors]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
+closestUnsafe ::
+              (MonadDOM m, IsElement self, ToJSString selectors, HasCallStack) =>
+                self -> selectors -> m Element
+closestUnsafe self selectors
+  = liftDOM
+      ((((toElement self) ^. jsf "closest" [toJSVal selectors]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
 closestUnchecked ::
                  (MonadDOM m, IsElement self, ToJSString selectors) =>
                    self -> selectors -> m Element
@@ -595,6 +746,15 @@
   = liftDOM (void ((toElement self) ^. jsf "getClientRects" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
+getClientRectsUnsafe ::
+                     (MonadDOM m, IsElement self, HasCallStack) =>
+                       self -> m ClientRectList
+getClientRectsUnsafe self
+  = liftDOM
+      ((((toElement self) ^. jsf "getClientRects" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
 getClientRectsUnchecked ::
                         (MonadDOM m, IsElement self) => self -> m ClientRectList
 getClientRectsUnchecked self
@@ -618,6 +778,15 @@
       (void ((toElement self) ^. jsf "getBoundingClientRect" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
+getBoundingClientRectUnsafe ::
+                            (MonadDOM m, IsElement self, HasCallStack) => self -> m ClientRect
+getBoundingClientRectUnsafe self
+  = liftDOM
+      ((((toElement self) ^. jsf "getBoundingClientRect" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
 getBoundingClientRectUnchecked ::
                                (MonadDOM m, IsElement self) => self -> m ClientRect
 getBoundingClientRectUnchecked self
@@ -671,6 +840,15 @@
       (((toElement self) ^. js "tagName") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.tagName Mozilla Element.tagName documentation> 
+getTagNameUnsafe ::
+                 (MonadDOM m, IsElement self, HasCallStack, FromJSString result) =>
+                   self -> m result
+getTagNameUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "tagName") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.tagName Mozilla Element.tagName documentation> 
 getTagNameUnchecked ::
                     (MonadDOM m, IsElement self, FromJSString result) =>
                       self -> m result
@@ -685,6 +863,15 @@
   = liftDOM (((toElement self) ^. js "attributes") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attributes Mozilla Element.attributes documentation> 
+getAttributesUnsafe ::
+                    (MonadDOM m, IsElement self, HasCallStack) =>
+                      self -> m NamedNodeMap
+getAttributesUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "attributes") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attributes Mozilla Element.attributes documentation> 
 getAttributesUnchecked ::
                        (MonadDOM m, IsElement self) => self -> m NamedNodeMap
 getAttributesUnchecked self
@@ -699,6 +886,15 @@
   = liftDOM (((toElement self) ^. js "style") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.style Mozilla Element.style documentation> 
+getStyleUnsafe ::
+               (MonadDOM m, IsElement self, HasCallStack) =>
+                 self -> m CSSStyleDeclaration
+getStyleUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "style") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.style Mozilla Element.style documentation> 
 getStyleUnchecked ::
                   (MonadDOM m, IsElement self) => self -> m CSSStyleDeclaration
 getStyleUnchecked self
@@ -801,6 +997,14 @@
   = liftDOM (((toElement self) ^. js "offsetParent") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetParent Mozilla Element.offsetParent documentation> 
+getOffsetParentUnsafe ::
+                      (MonadDOM m, IsElement self, HasCallStack) => self -> m Element
+getOffsetParentUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "offsetParent") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.offsetParent Mozilla Element.offsetParent documentation> 
 getOffsetParentUnchecked ::
                          (MonadDOM m, IsElement self) => self -> m Element
 getOffsetParentUnchecked self
@@ -823,6 +1027,15 @@
       (((toElement self) ^. js "innerHTML") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
+getInnerHTMLUnsafe ::
+                   (MonadDOM m, IsElement self, HasCallStack, FromJSString result) =>
+                     self -> m result
+getInnerHTMLUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "innerHTML") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
 getInnerHTMLUnchecked ::
                       (MonadDOM m, IsElement self, FromJSString result) =>
                         self -> m result
@@ -846,6 +1059,15 @@
       (((toElement self) ^. js "outerHTML") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
+getOuterHTMLUnsafe ::
+                   (MonadDOM m, IsElement self, HasCallStack, FromJSString result) =>
+                     self -> m result
+getOuterHTMLUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "outerHTML") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
 getOuterHTMLUnchecked ::
                       (MonadDOM m, IsElement self, FromJSString result) =>
                         self -> m result
@@ -874,6 +1096,15 @@
   = liftDOM (((toElement self) ^. js "classList") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.classList Mozilla Element.classList documentation> 
+getClassListUnsafe ::
+                   (MonadDOM m, IsElement self, HasCallStack) =>
+                     self -> m DOMTokenList
+getClassListUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "classList") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.classList Mozilla Element.classList documentation> 
 getClassListUnchecked ::
                       (MonadDOM m, IsElement self) => self -> m DOMTokenList
 getClassListUnchecked self
@@ -887,6 +1118,15 @@
   = liftDOM (((toElement self) ^. js "dataset") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.dataset Mozilla Element.dataset documentation> 
+getDatasetUnsafe ::
+                 (MonadDOM m, IsElement self, HasCallStack) =>
+                   self -> m DOMStringMap
+getDatasetUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "dataset") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.dataset Mozilla Element.dataset documentation> 
 getDatasetUnchecked ::
                     (MonadDOM m, IsElement self) => self -> m DOMStringMap
 getDatasetUnchecked self
@@ -901,6 +1141,14 @@
       (((toElement self) ^. js "firstElementChild") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.firstElementChild Mozilla Element.firstElementChild documentation> 
+getFirstElementChildUnsafe ::
+                           (MonadDOM m, IsElement self, HasCallStack) => self -> m Element
+getFirstElementChildUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "firstElementChild") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.firstElementChild Mozilla Element.firstElementChild documentation> 
 getFirstElementChildUnchecked ::
                               (MonadDOM m, IsElement self) => self -> m Element
 getFirstElementChildUnchecked self
@@ -916,6 +1164,14 @@
       (((toElement self) ^. js "lastElementChild") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.lastElementChild Mozilla Element.lastElementChild documentation> 
+getLastElementChildUnsafe ::
+                          (MonadDOM m, IsElement self, HasCallStack) => self -> m Element
+getLastElementChildUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "lastElementChild") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.lastElementChild Mozilla Element.lastElementChild documentation> 
 getLastElementChildUnchecked ::
                              (MonadDOM m, IsElement self) => self -> m Element
 getLastElementChildUnchecked self
@@ -931,6 +1187,14 @@
       (((toElement self) ^. js "previousElementSibling") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.previousElementSibling Mozilla Element.previousElementSibling documentation> 
+getPreviousElementSiblingUnsafe ::
+                                (MonadDOM m, IsElement self, HasCallStack) => self -> m Element
+getPreviousElementSiblingUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "previousElementSibling") >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.previousElementSibling Mozilla Element.previousElementSibling documentation> 
 getPreviousElementSiblingUnchecked ::
                                    (MonadDOM m, IsElement self) => self -> m Element
 getPreviousElementSiblingUnchecked self
@@ -944,6 +1208,14 @@
 getNextElementSibling self
   = liftDOM
       (((toElement self) ^. js "nextElementSibling") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.nextElementSibling Mozilla Element.nextElementSibling documentation> 
+getNextElementSiblingUnsafe ::
+                            (MonadDOM m, IsElement self, HasCallStack) => self -> m Element
+getNextElementSiblingUnsafe self
+  = liftDOM
+      ((((toElement self) ^. js "nextElementSibling") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.nextElementSibling Mozilla Element.nextElementSibling documentation> 
 getNextElementSiblingUnchecked ::
diff --git a/src/JSDOM/Generated/Entity.hs b/src/JSDOM/Generated/Entity.hs
--- a/src/JSDOM/Generated/Entity.hs
+++ b/src/JSDOM/Generated/Entity.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Entity
-       (getPublicId, getPublicIdUnchecked, getSystemId,
-        getSystemIdUnchecked, getNotationName, getNotationNameUnchecked,
-        Entity, castToEntity, gTypeEntity)
+       (getPublicId, getPublicIdUnsafe, getPublicIdUnchecked, getSystemId,
+        getSystemIdUnsafe, getSystemIdUnchecked, getNotationName,
+        getNotationNameUnsafe, getNotationNameUnchecked, Entity(..),
+        gTypeEntity)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.publicId Mozilla Entity.publicId documentation> 
 getPublicId ::
@@ -24,6 +39,15 @@
   = liftDOM ((self ^. js "publicId") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.publicId Mozilla Entity.publicId documentation> 
+getPublicIdUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    Entity -> m result
+getPublicIdUnsafe self
+  = liftDOM
+      (((self ^. js "publicId") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.publicId Mozilla Entity.publicId documentation> 
 getPublicIdUnchecked ::
                      (MonadDOM m, FromJSString result) => Entity -> m result
 getPublicIdUnchecked self
@@ -36,6 +60,15 @@
   = liftDOM ((self ^. js "systemId") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.systemId Mozilla Entity.systemId documentation> 
+getSystemIdUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    Entity -> m result
+getSystemIdUnsafe self
+  = liftDOM
+      (((self ^. js "systemId") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.systemId Mozilla Entity.systemId documentation> 
 getSystemIdUnchecked ::
                      (MonadDOM m, FromJSString result) => Entity -> m result
 getSystemIdUnchecked self
@@ -46,6 +79,15 @@
                 (MonadDOM m, FromJSString result) => Entity -> m (Maybe result)
 getNotationName self
   = liftDOM ((self ^. js "notationName") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.notationName Mozilla Entity.notationName documentation> 
+getNotationNameUnsafe ::
+                      (MonadDOM m, HasCallStack, FromJSString result) =>
+                        Entity -> m result
+getNotationNameUnsafe self
+  = liftDOM
+      (((self ^. js "notationName") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Entity.notationName Mozilla Entity.notationName documentation> 
 getNotationNameUnchecked ::
diff --git a/src/JSDOM/Generated/Enums.hs b/src/JSDOM/Generated/Enums.hs
--- a/src/JSDOM/Generated/Enums.hs
+++ b/src/JSDOM/Generated/Enums.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Enums
        (KeyType(..), ToJSVal, FromJSVal, js_KeyTypeSecret,
@@ -45,6 +48,7 @@
         js_XMLHttpRequestResponseTypeText)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -53,6 +57,16 @@
 import Control.Applicative ((<$>))
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
  
 data KeyType = KeyTypeSecret
              | KeyTypePublic
diff --git a/src/JSDOM/Generated/ErrorEvent.hs b/src/JSDOM/Generated/ErrorEvent.hs
--- a/src/JSDOM/Generated/ErrorEvent.hs
+++ b/src/JSDOM/Generated/ErrorEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ErrorEvent
-       (getMessage, getFilename, getLineno, getColno, ErrorEvent,
-        castToErrorEvent, gTypeErrorEvent)
+       (getMessage, getFilename, getLineno, getColno, ErrorEvent(..),
+        gTypeErrorEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.message Mozilla ErrorEvent.message documentation> 
 getMessage ::
diff --git a/src/JSDOM/Generated/Event.hs b/src/JSDOM/Generated/Event.hs
--- a/src/JSDOM/Generated/Event.hs
+++ b/src/JSDOM/Generated/Event.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Event
        (stopPropagation, preventDefault, initEvent,
@@ -8,15 +11,17 @@
         pattern MOUSEMOVE, pattern MOUSEDRAG, pattern CLICK,
         pattern DBLCLICK, pattern KEYDOWN, pattern KEYUP, pattern KEYPRESS,
         pattern DRAGDROP, pattern FOCUS, pattern BLUR, pattern SELECT,
-        pattern CHANGE, getType, getTarget, getTargetUnchecked,
-        getCurrentTarget, getCurrentTargetUnchecked, getEventPhase,
-        getBubbles, getCancelable, getTimeStamp, getDefaultPrevented,
-        getSrcElement, getSrcElementUnchecked, setReturnValue,
+        pattern CHANGE, getType, getTarget, getTargetUnsafe,
+        getTargetUnchecked, getCurrentTarget, getCurrentTargetUnsafe,
+        getCurrentTargetUnchecked, getEventPhase, getBubbles,
+        getCancelable, getTimeStamp, getDefaultPrevented, getSrcElement,
+        getSrcElementUnsafe, getSrcElementUnchecked, setReturnValue,
         getReturnValue, setCancelBubble, getCancelBubble, getClipboardData,
-        getClipboardDataUnchecked, Event, castToEvent, gTypeEvent, IsEvent,
-        toEvent)
+        getClipboardDataUnsafe, getClipboardDataUnchecked, Event(..),
+        gTypeEvent, IsEvent, toEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -26,6 +31,16 @@
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopPropagation Mozilla Event.stopPropagation documentation> 
 stopPropagation :: (MonadDOM m, IsEvent self) => self -> m ()
@@ -88,6 +103,14 @@
   = liftDOM (((toEvent self) ^. js "target") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
+getTargetUnsafe ::
+                (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
+getTargetUnsafe self
+  = liftDOM
+      ((((toEvent self) ^. js "target") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
 getTargetUnchecked ::
                    (MonadDOM m, IsEvent self) => self -> m EventTarget
 getTargetUnchecked self
@@ -100,6 +123,14 @@
   = liftDOM (((toEvent self) ^. js "currentTarget") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
+getCurrentTargetUnsafe ::
+                       (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
+getCurrentTargetUnsafe self
+  = liftDOM
+      ((((toEvent self) ^. js "currentTarget") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
 getCurrentTargetUnchecked ::
                           (MonadDOM m, IsEvent self) => self -> m EventTarget
 getCurrentTargetUnchecked self
@@ -140,6 +171,14 @@
   = liftDOM (((toEvent self) ^. js "srcElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.srcElement Mozilla Event.srcElement documentation> 
+getSrcElementUnsafe ::
+                    (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
+getSrcElementUnsafe self
+  = liftDOM
+      ((((toEvent self) ^. js "srcElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.srcElement Mozilla Event.srcElement documentation> 
 getSrcElementUnchecked ::
                        (MonadDOM m, IsEvent self) => self -> m EventTarget
 getSrcElementUnchecked self
@@ -173,6 +212,14 @@
                  (MonadDOM m, IsEvent self) => self -> m (Maybe DataTransfer)
 getClipboardData self
   = liftDOM (((toEvent self) ^. js "clipboardData") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.clipboardData Mozilla Event.clipboardData documentation> 
+getClipboardDataUnsafe ::
+                       (MonadDOM m, IsEvent self, HasCallStack) => self -> m DataTransfer
+getClipboardDataUnsafe self
+  = liftDOM
+      ((((toEvent self) ^. js "clipboardData") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.clipboardData Mozilla Event.clipboardData documentation> 
 getClipboardDataUnchecked ::
diff --git a/src/JSDOM/Generated/EventListener.hs b/src/JSDOM/Generated/EventListener.hs
--- a/src/JSDOM/Generated/EventListener.hs
+++ b/src/JSDOM/Generated/EventListener.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.EventListener
-       (handleEvent, EventListener, castToEventListener,
-        gTypeEventListener)
-       where
+       (handleEvent, EventListener(..), gTypeEventListener) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/EventListener.handleEvent Mozilla EventListener.handleEvent documentation> 
 handleEvent ::
diff --git a/src/JSDOM/Generated/EventSource.hs b/src/JSDOM/Generated/EventSource.hs
--- a/src/JSDOM/Generated/EventSource.hs
+++ b/src/JSDOM/Generated/EventSource.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.EventSource
        (newEventSource, close, pattern CONNECTING, pattern OPEN,
         pattern CLOSED, getUrl, getWithCredentials, getReadyState, open,
-        message, error, EventSource, castToEventSource, gTypeEventSource)
+        message, error, EventSource(..), gTypeEventSource)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation> 
 newEventSource ::
diff --git a/src/JSDOM/Generated/EventTarget.hs b/src/JSDOM/Generated/EventTarget.hs
--- a/src/JSDOM/Generated/EventTarget.hs
+++ b/src/JSDOM/Generated/EventTarget.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.EventTarget
        (addEventListener, removeEventListener, dispatchEvent,
-        dispatchEvent_, EventTarget, castToEventTarget, gTypeEventTarget,
-        IsEventTarget, toEventTarget)
+        dispatchEvent_, EventTarget(..), gTypeEventTarget, IsEventTarget,
+        toEventTarget)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener Mozilla EventTarget.addEventListener documentation> 
 addEventListener ::
diff --git a/src/JSDOM/Generated/File.hs b/src/JSDOM/Generated/File.hs
--- a/src/JSDOM/Generated/File.hs
+++ b/src/JSDOM/Generated/File.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.File
-       (getName, getLastModifiedDate, getLastModifiedDateUnchecked, File,
-        castToFile, gTypeFile)
+       (getName, getLastModifiedDate, getLastModifiedDateUnsafe,
+        getLastModifiedDateUnchecked, File(..), gTypeFile)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/File.name Mozilla File.name documentation> 
 getName :: (MonadDOM m, FromJSString result) => File -> m result
@@ -24,6 +38,14 @@
 getLastModifiedDate :: (MonadDOM m) => File -> m (Maybe Date)
 getLastModifiedDate self
   = liftDOM ((self ^. js "lastModifiedDate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/File.lastModifiedDate Mozilla File.lastModifiedDate documentation> 
+getLastModifiedDateUnsafe ::
+                          (MonadDOM m, HasCallStack) => File -> m Date
+getLastModifiedDateUnsafe self
+  = liftDOM
+      (((self ^. js "lastModifiedDate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/File.lastModifiedDate Mozilla File.lastModifiedDate documentation> 
 getLastModifiedDateUnchecked :: (MonadDOM m) => File -> m Date
diff --git a/src/JSDOM/Generated/FileError.hs b/src/JSDOM/Generated/FileError.hs
--- a/src/JSDOM/Generated/FileError.hs
+++ b/src/JSDOM/Generated/FileError.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.FileError
        (pattern NOT_FOUND_ERR, pattern SECURITY_ERR, pattern ABORT_ERR,
@@ -6,10 +9,10 @@
         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, getCode, FileError, castToFileError,
-        gTypeFileError)
+        pattern PATH_EXISTS_ERR, getCode, FileError(..), gTypeFileError)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern NOT_FOUND_ERR = 1
 pattern SECURITY_ERR = 2
 pattern ABORT_ERR = 3
diff --git a/src/JSDOM/Generated/FileList.hs b/src/JSDOM/Generated/FileList.hs
--- a/src/JSDOM/Generated/FileList.hs
+++ b/src/JSDOM/Generated/FileList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.FileList
-       (item, item_, itemUnchecked, getLength, FileList, castToFileList,
+       (item, item_, itemUnsafe, itemUnchecked, getLength, FileList(..),
         gTypeFileList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
 item :: (MonadDOM m) => FileList -> Word -> m (Maybe File)
@@ -25,6 +39,14 @@
 item_ :: (MonadDOM m) => FileList -> Word -> m ()
 item_ self index
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => FileList -> Word -> m File
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
 itemUnchecked :: (MonadDOM m) => FileList -> Word -> m File
diff --git a/src/JSDOM/Generated/FileReader.hs b/src/JSDOM/Generated/FileReader.hs
--- a/src/JSDOM/Generated/FileReader.hs
+++ b/src/JSDOM/Generated/FileReader.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.FileReader
        (newFileReader, readAsArrayBuffer, readAsBinaryString, readAsText,
         readAsDataURL, abort, pattern EMPTY, pattern LOADING, pattern DONE,
-        getReadyState, getResult, getError, getErrorUnchecked, loadStart,
-        progress, load, abortEvent, error, loadEnd, FileReader,
-        castToFileReader, gTypeFileReader)
+        getReadyState, getResult, getError, getErrorUnsafe,
+        getErrorUnchecked, loadStart, progress, load, abortEvent, error,
+        loadEnd, FileReader(..), gTypeFileReader)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation> 
 newFileReader :: (MonadDOM m) => m FileReader
@@ -68,6 +82,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.error Mozilla FileReader.error documentation> 
 getError :: (MonadDOM m) => FileReader -> m (Maybe FileError)
 getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.error Mozilla FileReader.error documentation> 
+getErrorUnsafe ::
+               (MonadDOM m, HasCallStack) => FileReader -> m FileError
+getErrorUnsafe self
+  = liftDOM
+      (((self ^. js "error") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.error Mozilla FileReader.error documentation> 
 getErrorUnchecked :: (MonadDOM m) => FileReader -> m FileError
diff --git a/src/JSDOM/Generated/FileReaderSync.hs b/src/JSDOM/Generated/FileReaderSync.hs
--- a/src/JSDOM/Generated/FileReaderSync.hs
+++ b/src/JSDOM/Generated/FileReaderSync.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.FileReaderSync
        (newFileReaderSync, readAsArrayBuffer, readAsArrayBuffer_,
-        readAsArrayBufferUnchecked, readAsBinaryString,
-        readAsBinaryString_, readAsText, readAsText_, readAsDataURL,
-        readAsDataURL_, FileReaderSync, castToFileReaderSync,
+        readAsArrayBufferUnsafe, readAsArrayBufferUnchecked,
+        readAsBinaryString, readAsBinaryString_, readAsText, readAsText_,
+        readAsDataURL, readAsDataURL_, FileReaderSync(..),
         gTypeFileReaderSync)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation> 
 newFileReaderSync :: (MonadDOM m) => m FileReaderSync
@@ -37,6 +51,15 @@
                    (MonadDOM m, IsBlob blob) => FileReaderSync -> Maybe blob -> m ()
 readAsArrayBuffer_ self blob
   = liftDOM (void (self ^. jsf "readAsArrayBuffer" [toJSVal blob]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
+readAsArrayBufferUnsafe ::
+                        (MonadDOM m, IsBlob blob, HasCallStack) =>
+                          FileReaderSync -> Maybe blob -> m ArrayBuffer
+readAsArrayBufferUnsafe self blob
+  = liftDOM
+      (((self ^. jsf "readAsArrayBuffer" [toJSVal blob]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
 readAsArrayBufferUnchecked ::
diff --git a/src/JSDOM/Generated/FocusEvent.hs b/src/JSDOM/Generated/FocusEvent.hs
--- a/src/JSDOM/Generated/FocusEvent.hs
+++ b/src/JSDOM/Generated/FocusEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.FocusEvent
-       (getRelatedTarget, getRelatedTargetUnchecked, FocusEvent,
-        castToFocusEvent, gTypeFocusEvent)
+       (getRelatedTarget, getRelatedTargetUnsafe,
+        getRelatedTargetUnchecked, FocusEvent(..), gTypeFocusEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,12 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
 getRelatedTarget ::
                  (MonadDOM m) => FocusEvent -> m (Maybe EventTarget)
 getRelatedTarget self
   = liftDOM ((self ^. js "relatedTarget") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
+getRelatedTargetUnsafe ::
+                       (MonadDOM m, HasCallStack) => FocusEvent -> m EventTarget
+getRelatedTargetUnsafe self
+  = liftDOM
+      (((self ^. js "relatedTarget") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
 getRelatedTargetUnchecked ::
diff --git a/src/JSDOM/Generated/FontLoader.hs b/src/JSDOM/Generated/FontLoader.hs
--- a/src/JSDOM/Generated/FontLoader.hs
+++ b/src/JSDOM/Generated/FontLoader.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.FontLoader
        (checkFont, checkFont_, loadFont, notifyWhenFontsReady, loading,
-        loadingDone, loadStart, load, error, getLoading, FontLoader,
-        castToFontLoader, gTypeFontLoader)
+        loadingDone, loadStart, load, error, getLoading, FontLoader(..),
+        gTypeFontLoader)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader.checkFont Mozilla FontLoader.checkFont documentation> 
 checkFont ::
diff --git a/src/JSDOM/Generated/FormData.hs b/src/JSDOM/Generated/FormData.hs
--- a/src/JSDOM/Generated/FormData.hs
+++ b/src/JSDOM/Generated/FormData.hs
@@ -1,9 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.FormData
-       (newFormData, append, FormData, castToFormData, gTypeFormData)
-       where
+       (newFormData, append, FormData(..), gTypeFormData) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -14,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation> 
 newFormData :: (MonadDOM m) => Maybe HTMLFormElement -> m FormData
diff --git a/src/JSDOM/Generated/GainNode.hs b/src/JSDOM/Generated/GainNode.hs
--- a/src/JSDOM/Generated/GainNode.hs
+++ b/src/JSDOM/Generated/GainNode.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.GainNode
-       (getGain, getGainUnchecked, GainNode, castToGainNode,
+       (getGain, getGainUnsafe, getGainUnchecked, GainNode(..),
         gTypeGainNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,10 +19,28 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
 getGain :: (MonadDOM m) => GainNode -> m (Maybe AudioParam)
 getGain self = liftDOM ((self ^. js "gain") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
+getGainUnsafe ::
+              (MonadDOM m, HasCallStack) => GainNode -> m AudioParam
+getGainUnsafe self
+  = liftDOM
+      (((self ^. js "gain") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
 getGainUnchecked :: (MonadDOM m) => GainNode -> m AudioParam
diff --git a/src/JSDOM/Generated/Gamepad.hs b/src/JSDOM/Generated/Gamepad.hs
--- a/src/JSDOM/Generated/Gamepad.hs
+++ b/src/JSDOM/Generated/Gamepad.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Gamepad
        (getId, getIndex, getConnected, getTimestamp, getMapping, getAxes,
-        getButtons, Gamepad, castToGamepad, gTypeGamepad)
+        getButtons, Gamepad(..), gTypeGamepad)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.id Mozilla Gamepad.id documentation> 
 getId :: (MonadDOM m, FromJSString result) => Gamepad -> m result
diff --git a/src/JSDOM/Generated/GamepadButton.hs b/src/JSDOM/Generated/GamepadButton.hs
--- a/src/JSDOM/Generated/GamepadButton.hs
+++ b/src/JSDOM/Generated/GamepadButton.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.GamepadButton
-       (getPressed, getValue, GamepadButton, castToGamepadButton,
-        gTypeGamepadButton)
-       where
+       (getPressed, getValue, GamepadButton(..), gTypeGamepadButton) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.pressed Mozilla GamepadButton.pressed documentation> 
 getPressed :: (MonadDOM m) => GamepadButton -> m Bool
diff --git a/src/JSDOM/Generated/GamepadEvent.hs b/src/JSDOM/Generated/GamepadEvent.hs
--- a/src/JSDOM/Generated/GamepadEvent.hs
+++ b/src/JSDOM/Generated/GamepadEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.GamepadEvent
-       (getGamepad, getGamepadUnchecked, GamepadEvent, castToGamepadEvent,
-        gTypeGamepadEvent)
+       (getGamepad, getGamepadUnsafe, getGamepadUnchecked,
+        GamepadEvent(..), gTypeGamepadEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,10 +19,28 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
 getGamepad :: (MonadDOM m) => GamepadEvent -> m (Maybe Gamepad)
 getGamepad self = liftDOM ((self ^. js "gamepad") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
+getGamepadUnsafe ::
+                 (MonadDOM m, HasCallStack) => GamepadEvent -> m Gamepad
+getGamepadUnsafe self
+  = liftDOM
+      (((self ^. js "gamepad") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
 getGamepadUnchecked :: (MonadDOM m) => GamepadEvent -> m Gamepad
diff --git a/src/JSDOM/Generated/Geolocation.hs b/src/JSDOM/Generated/Geolocation.hs
--- a/src/JSDOM/Generated/Geolocation.hs
+++ b/src/JSDOM/Generated/Geolocation.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Geolocation
        (getCurrentPosition, watchPosition, watchPosition_, clearWatch,
-        Geolocation, castToGeolocation, gTypeGeolocation)
+        Geolocation(..), gTypeGeolocation)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation> 
 getCurrentPosition ::
diff --git a/src/JSDOM/Generated/Geoposition.hs b/src/JSDOM/Generated/Geoposition.hs
--- a/src/JSDOM/Generated/Geoposition.hs
+++ b/src/JSDOM/Generated/Geoposition.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Geoposition
-       (getCoords, getCoordsUnchecked, getTimestamp, Geoposition,
-        castToGeoposition, gTypeGeoposition)
+       (getCoords, getCoordsUnsafe, getCoordsUnchecked, getTimestamp,
+        Geoposition(..), gTypeGeoposition)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,10 +19,28 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
 getCoords :: (MonadDOM m) => Geoposition -> m (Maybe Coordinates)
 getCoords self = liftDOM ((self ^. js "coords") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
+getCoordsUnsafe ::
+                (MonadDOM m, HasCallStack) => Geoposition -> m Coordinates
+getCoordsUnsafe self
+  = liftDOM
+      (((self ^. js "coords") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
 getCoordsUnchecked :: (MonadDOM m) => Geoposition -> m Coordinates
diff --git a/src/JSDOM/Generated/HTMLAllCollection.hs b/src/JSDOM/Generated/HTMLAllCollection.hs
--- a/src/JSDOM/Generated/HTMLAllCollection.hs
+++ b/src/JSDOM/Generated/HTMLAllCollection.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLAllCollection
-       (item, item_, itemUnchecked, namedItem, namedItem_,
-        namedItemUnchecked, tags, tags_, tagsUnchecked, getLength,
-        HTMLAllCollection, castToHTMLAllCollection, gTypeHTMLAllCollection)
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked, tags, tags_, tagsUnsafe,
+        tagsUnchecked, getLength, HTMLAllCollection(..),
+        gTypeHTMLAllCollection)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
 item :: (MonadDOM m) => HTMLAllCollection -> Word -> m (Maybe Node)
@@ -28,6 +43,14 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => HTMLAllCollection -> Word -> m Node
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => HTMLAllCollection -> Word -> m Node
 itemUnchecked self index
@@ -48,6 +71,15 @@
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  HTMLAllCollection -> name -> m Node
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
 namedItemUnchecked ::
                    (MonadDOM m, ToJSString name) =>
                      HTMLAllCollection -> name -> m Node
@@ -67,6 +99,15 @@
       (MonadDOM m, ToJSString name) => HTMLAllCollection -> name -> m ()
 tags_ self name
   = liftDOM (void (self ^. jsf "tags" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.tags Mozilla HTMLAllCollection.tags documentation> 
+tagsUnsafe ::
+           (MonadDOM m, ToJSString name, HasCallStack) =>
+             HTMLAllCollection -> name -> m NodeList
+tagsUnsafe self name
+  = liftDOM
+      (((self ^. jsf "tags" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.tags Mozilla HTMLAllCollection.tags documentation> 
 tagsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLAnchorElement.hs b/src/JSDOM/Generated/HTMLAnchorElement.hs
--- a/src/JSDOM/Generated/HTMLAnchorElement.hs
+++ b/src/JSDOM/Generated/HTMLAnchorElement.hs
@@ -1,20 +1,25 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLAnchorElement
        (toString, toString_, setCharset, getCharset, setCoords, getCoords,
         setDownload, getDownload, setHref, getHref, setHreflang,
         getHreflang, setName, getName, setPing, getPing, setRel, getRel,
         setRev, getRev, setShape, getShape, setTarget, getTarget, setType,
-        getType, setHash, getHash, getHashUnchecked, setHost, getHost,
-        getHostUnchecked, setHostname, getHostname, getHostnameUnchecked,
-        setPathname, getPathname, getPathnameUnchecked, setPort, getPort,
-        getPortUnchecked, setProtocol, getProtocol, getProtocolUnchecked,
-        setSearch, getSearch, getSearchUnchecked, getOrigin,
-        getOriginUnchecked, setText, getText, getRelList,
-        getRelListUnchecked, HTMLAnchorElement, castToHTMLAnchorElement,
-        gTypeHTMLAnchorElement)
+        getType, setHash, getHash, getHashUnsafe, getHashUnchecked,
+        setHost, getHost, getHostUnsafe, getHostUnchecked, setHostname,
+        getHostname, getHostnameUnsafe, getHostnameUnchecked, setPathname,
+        getPathname, getPathnameUnsafe, getPathnameUnchecked, setPort,
+        getPort, getPortUnsafe, getPortUnchecked, setProtocol, getProtocol,
+        getProtocolUnsafe, getProtocolUnchecked, setSearch, getSearch,
+        getSearchUnsafe, getSearchUnchecked, getOrigin, getOriginUnsafe,
+        getOriginUnchecked, setText, getText, getRelList, getRelListUnsafe,
+        getRelListUnchecked, HTMLAnchorElement(..), gTypeHTMLAnchorElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -25,6 +30,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.toString Mozilla HTMLAnchorElement.toString documentation> 
 toString ::
@@ -177,6 +192,15 @@
 getHash self = liftDOM ((self ^. js "hash") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hash Mozilla HTMLAnchorElement.hash documentation> 
+getHashUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                HTMLAnchorElement -> m result
+getHashUnsafe self
+  = liftDOM
+      (((self ^. js "hash") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hash Mozilla HTMLAnchorElement.hash documentation> 
 getHashUnchecked ::
                  (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
 getHashUnchecked self
@@ -195,6 +219,15 @@
 getHost self = liftDOM ((self ^. js "host") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.host Mozilla HTMLAnchorElement.host documentation> 
+getHostUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                HTMLAnchorElement -> m result
+getHostUnsafe self
+  = liftDOM
+      (((self ^. js "host") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.host Mozilla HTMLAnchorElement.host documentation> 
 getHostUnchecked ::
                  (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
 getHostUnchecked self
@@ -215,6 +248,15 @@
   = liftDOM ((self ^. js "hostname") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hostname Mozilla HTMLAnchorElement.hostname documentation> 
+getHostnameUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    HTMLAnchorElement -> m result
+getHostnameUnsafe self
+  = liftDOM
+      (((self ^. js "hostname") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hostname Mozilla HTMLAnchorElement.hostname documentation> 
 getHostnameUnchecked ::
                      (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
 getHostnameUnchecked self
@@ -235,6 +277,15 @@
   = liftDOM ((self ^. js "pathname") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.pathname Mozilla HTMLAnchorElement.pathname documentation> 
+getPathnameUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    HTMLAnchorElement -> m result
+getPathnameUnsafe self
+  = liftDOM
+      (((self ^. js "pathname") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.pathname Mozilla HTMLAnchorElement.pathname documentation> 
 getPathnameUnchecked ::
                      (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
 getPathnameUnchecked self
@@ -253,6 +304,15 @@
 getPort self = liftDOM ((self ^. js "port") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.port Mozilla HTMLAnchorElement.port documentation> 
+getPortUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                HTMLAnchorElement -> m result
+getPortUnsafe self
+  = liftDOM
+      (((self ^. js "port") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.port Mozilla HTMLAnchorElement.port documentation> 
 getPortUnchecked ::
                  (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
 getPortUnchecked self
@@ -273,6 +333,15 @@
   = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.protocol Mozilla HTMLAnchorElement.protocol documentation> 
+getProtocolUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    HTMLAnchorElement -> m result
+getProtocolUnsafe self
+  = liftDOM
+      (((self ^. js "protocol") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.protocol Mozilla HTMLAnchorElement.protocol documentation> 
 getProtocolUnchecked ::
                      (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
 getProtocolUnchecked self
@@ -292,6 +361,15 @@
   = liftDOM ((self ^. js "search") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.search Mozilla HTMLAnchorElement.search documentation> 
+getSearchUnsafe ::
+                (MonadDOM m, HasCallStack, FromJSString result) =>
+                  HTMLAnchorElement -> m result
+getSearchUnsafe self
+  = liftDOM
+      (((self ^. js "search") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.search Mozilla HTMLAnchorElement.search documentation> 
 getSearchUnchecked ::
                    (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
 getSearchUnchecked self
@@ -305,6 +383,15 @@
   = liftDOM ((self ^. js "origin") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.origin Mozilla HTMLAnchorElement.origin documentation> 
+getOriginUnsafe ::
+                (MonadDOM m, HasCallStack, FromJSString result) =>
+                  HTMLAnchorElement -> m result
+getOriginUnsafe self
+  = liftDOM
+      (((self ^. js "origin") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.origin Mozilla HTMLAnchorElement.origin documentation> 
 getOriginUnchecked ::
                    (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
 getOriginUnchecked self
@@ -324,6 +411,14 @@
 getRelList ::
            (MonadDOM m) => HTMLAnchorElement -> m (Maybe DOMTokenList)
 getRelList self = liftDOM ((self ^. js "relList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.relList Mozilla HTMLAnchorElement.relList documentation> 
+getRelListUnsafe ::
+                 (MonadDOM m, HasCallStack) => HTMLAnchorElement -> m DOMTokenList
+getRelListUnsafe self
+  = liftDOM
+      (((self ^. js "relList") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.relList Mozilla HTMLAnchorElement.relList documentation> 
 getRelListUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLAppletElement.hs b/src/JSDOM/Generated/HTMLAppletElement.hs
--- a/src/JSDOM/Generated/HTMLAppletElement.hs
+++ b/src/JSDOM/Generated/HTMLAppletElement.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLAppletElement
        (setAlign, getAlign, setAlt, getAlt, setArchive, getArchive,
         setCode, getCode, setCodeBase, getCodeBase, setHeight, getHeight,
         setHspace, getHspace, setName, getName, setObject, getObject,
-        setVspace, getVspace, setWidth, getWidth, HTMLAppletElement,
-        castToHTMLAppletElement, gTypeHTMLAppletElement)
+        setVspace, getVspace, setWidth, getWidth, HTMLAppletElement(..),
+        gTypeHTMLAppletElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
 setAlign ::
diff --git a/src/JSDOM/Generated/HTMLAreaElement.hs b/src/JSDOM/Generated/HTMLAreaElement.hs
--- a/src/JSDOM/Generated/HTMLAreaElement.hs
+++ b/src/JSDOM/Generated/HTMLAreaElement.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLAreaElement
        (setAlt, getAlt, setCoords, getCoords, setHref, getHref, setNoHref,
         getNoHref, setPing, getPing, setRel, getRel, setShape, getShape,
         setTarget, getTarget, getHash, getHost, getHostname, getPathname,
-        getPort, getProtocol, getSearch, getRelList, getRelListUnchecked,
-        HTMLAreaElement, castToHTMLAreaElement, gTypeHTMLAreaElement)
+        getPort, getProtocol, getSearch, getRelList, getRelListUnsafe,
+        getRelListUnchecked, HTMLAreaElement(..), gTypeHTMLAreaElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
 setAlt ::
@@ -143,6 +157,14 @@
 getRelList ::
            (MonadDOM m) => HTMLAreaElement -> m (Maybe DOMTokenList)
 getRelList self = liftDOM ((self ^. js "relList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.relList Mozilla HTMLAreaElement.relList documentation> 
+getRelListUnsafe ::
+                 (MonadDOM m, HasCallStack) => HTMLAreaElement -> m DOMTokenList
+getRelListUnsafe self
+  = liftDOM
+      (((self ^. js "relList") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.relList Mozilla HTMLAreaElement.relList documentation> 
 getRelListUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLBRElement.hs b/src/JSDOM/Generated/HTMLBRElement.hs
--- a/src/JSDOM/Generated/HTMLBRElement.hs
+++ b/src/JSDOM/Generated/HTMLBRElement.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLBRElement
-       (setClear, getClear, HTMLBRElement, castToHTMLBRElement,
-        gTypeHTMLBRElement)
-       where
+       (setClear, getClear, HTMLBRElement(..), gTypeHTMLBRElement) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
 setClear ::
diff --git a/src/JSDOM/Generated/HTMLBaseElement.hs b/src/JSDOM/Generated/HTMLBaseElement.hs
--- a/src/JSDOM/Generated/HTMLBaseElement.hs
+++ b/src/JSDOM/Generated/HTMLBaseElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLBaseElement
-       (setHref, getHref, getHrefUnchecked, setTarget, getTarget,
-        HTMLBaseElement, castToHTMLBaseElement, gTypeHTMLBaseElement)
+       (setHref, getHref, getHrefUnsafe, getHrefUnchecked, setTarget,
+        getTarget, HTMLBaseElement(..), gTypeHTMLBaseElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
 setHref ::
@@ -27,6 +41,15 @@
         (MonadDOM m, FromJSString result) =>
           HTMLBaseElement -> m (Maybe result)
 getHref self = liftDOM ((self ^. js "href") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
+getHrefUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                HTMLBaseElement -> m result
+getHrefUnsafe self
+  = liftDOM
+      (((self ^. js "href") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
 getHrefUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLBaseFontElement.hs b/src/JSDOM/Generated/HTMLBaseFontElement.hs
--- a/src/JSDOM/Generated/HTMLBaseFontElement.hs
+++ b/src/JSDOM/Generated/HTMLBaseFontElement.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLBaseFontElement
        (setColor, getColor, setFace, getFace, setSize, getSize,
-        HTMLBaseFontElement, castToHTMLBaseFontElement,
-        gTypeHTMLBaseFontElement)
+        HTMLBaseFontElement(..), gTypeHTMLBaseFontElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement.color Mozilla HTMLBaseFontElement.color documentation> 
 setColor ::
diff --git a/src/JSDOM/Generated/HTMLBodyElement.hs b/src/JSDOM/Generated/HTMLBodyElement.hs
--- a/src/JSDOM/Generated/HTMLBodyElement.hs
+++ b/src/JSDOM/Generated/HTMLBodyElement.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLBodyElement
        (setALink, getALink, setBackground, getBackground, setBgColor,
         getBgColor, setLink, getLink, setText, getText, setVLink, getVLink,
         beforeUnload, hashChange, message, offline, online, popState,
         resize, storage, unload, orientationChange, blur, error, focus,
-        load, HTMLBodyElement, castToHTMLBodyElement, gTypeHTMLBodyElement)
+        load, HTMLBodyElement(..), gTypeHTMLBodyElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
 setALink ::
diff --git a/src/JSDOM/Generated/HTMLButtonElement.hs b/src/JSDOM/Generated/HTMLButtonElement.hs
--- a/src/JSDOM/Generated/HTMLButtonElement.hs
+++ b/src/JSDOM/Generated/HTMLButtonElement.hs
@@ -1,18 +1,24 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLButtonElement
        (checkValidity, checkValidity_, setCustomValidity, setAutofocus,
-        getAutofocus, setDisabled, getDisabled, getForm, getFormUnchecked,
-        setFormAction, getFormAction, setFormEnctype, getFormEnctype,
-        getFormEnctypeUnchecked, setFormMethod, getFormMethod,
+        getAutofocus, setDisabled, getDisabled, getForm, getFormUnsafe,
+        getFormUnchecked, setFormAction, getFormAction, setFormEnctype,
+        getFormEnctype, getFormEnctypeUnsafe, getFormEnctypeUnchecked,
+        setFormMethod, getFormMethod, getFormMethodUnsafe,
         getFormMethodUnchecked, setFormNoValidate, getFormNoValidate,
         setFormTarget, getFormTarget, setName, getName, setType, getType,
-        getTypeUnchecked, setValue, getValue, getWillValidate, getValidity,
+        getTypeUnsafe, getTypeUnchecked, setValue, getValue,
+        getWillValidate, getValidity, getValidityUnsafe,
         getValidityUnchecked, getValidationMessage, getLabels,
-        getLabelsUnchecked, HTMLButtonElement, castToHTMLButtonElement,
+        getLabelsUnsafe, getLabelsUnchecked, HTMLButtonElement(..),
         gTypeHTMLButtonElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +29,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
 checkValidity :: (MonadDOM m) => HTMLButtonElement -> m Bool
@@ -66,6 +82,15 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.form Mozilla HTMLButtonElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLButtonElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.form Mozilla HTMLButtonElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLButtonElement -> m HTMLFormElement
 getFormUnchecked self
@@ -98,6 +123,15 @@
   = liftDOM ((self ^. js "formEnctype") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
+getFormEnctypeUnsafe ::
+                     (MonadDOM m, HasCallStack, FromJSString result) =>
+                       HTMLButtonElement -> m result
+getFormEnctypeUnsafe self
+  = liftDOM
+      (((self ^. js "formEnctype") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
 getFormEnctypeUnchecked ::
                         (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
 getFormEnctypeUnchecked self
@@ -118,6 +152,15 @@
   = liftDOM ((self ^. js "formMethod") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
+getFormMethodUnsafe ::
+                    (MonadDOM m, HasCallStack, FromJSString result) =>
+                      HTMLButtonElement -> m result
+getFormMethodUnsafe self
+  = liftDOM
+      (((self ^. js "formMethod") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
 getFormMethodUnchecked ::
                        (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
 getFormMethodUnchecked self
@@ -169,6 +212,15 @@
 getType self = liftDOM ((self ^. js "type") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
+getTypeUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                HTMLButtonElement -> m result
+getTypeUnsafe self
+  = liftDOM
+      (((self ^. js "type") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
 getTypeUnchecked ::
                  (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
 getTypeUnchecked self
@@ -196,6 +248,14 @@
 getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validity Mozilla HTMLButtonElement.validity documentation> 
+getValidityUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLButtonElement -> m ValidityState
+getValidityUnsafe self
+  = liftDOM
+      (((self ^. js "validity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validity Mozilla HTMLButtonElement.validity documentation> 
 getValidityUnchecked ::
                      (MonadDOM m) => HTMLButtonElement -> m ValidityState
 getValidityUnchecked self
@@ -211,6 +271,14 @@
 getLabels ::
           (MonadDOM m) => HTMLButtonElement -> m (Maybe NodeList)
 getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.labels Mozilla HTMLButtonElement.labels documentation> 
+getLabelsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLButtonElement -> m NodeList
+getLabelsUnsafe self
+  = liftDOM
+      (((self ^. js "labels") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.labels Mozilla HTMLButtonElement.labels documentation> 
 getLabelsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLCanvasElement.hs b/src/JSDOM/Generated/HTMLCanvasElement.hs
--- a/src/JSDOM/Generated/HTMLCanvasElement.hs
+++ b/src/JSDOM/Generated/HTMLCanvasElement.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLCanvasElement
        (toDataURL, toDataURL_, getContext, getContext_,
         probablySupportsContext, probablySupportsContext_, setWidth,
-        getWidth, setHeight, getHeight, HTMLCanvasElement,
-        castToHTMLCanvasElement, gTypeHTMLCanvasElement)
+        getWidth, setHeight, getHeight, HTMLCanvasElement(..),
+        gTypeHTMLCanvasElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
 toDataURL ::
diff --git a/src/JSDOM/Generated/HTMLCollection.hs b/src/JSDOM/Generated/HTMLCollection.hs
--- a/src/JSDOM/Generated/HTMLCollection.hs
+++ b/src/JSDOM/Generated/HTMLCollection.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLCollection
-       (item, item_, itemUnchecked, namedItem, namedItem_,
-        namedItemUnchecked, getLength, HTMLCollection,
-        castToHTMLCollection, gTypeHTMLCollection, IsHTMLCollection,
-        toHTMLCollection)
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked, getLength, HTMLCollection(..),
+        gTypeHTMLCollection, IsHTMLCollection, toHTMLCollection)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
 item ::
@@ -35,6 +48,16 @@
       (void ((toHTMLCollection self) ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, IsHTMLCollection self, HasCallStack) =>
+             self -> Word -> m Node
+itemUnsafe self index
+  = liftDOM
+      ((((toHTMLCollection self) ^. jsf "item" [toJSVal index]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
 itemUnchecked ::
               (MonadDOM m, IsHTMLCollection self) => self -> Word -> m Node
 itemUnchecked self index
@@ -58,6 +81,17 @@
 namedItem_ self name
   = liftDOM
       (void ((toHTMLCollection self) ^. jsf "namedItem" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, IsHTMLCollection self, ToJSString name,
+                 HasCallStack) =>
+                  self -> name -> m Node
+namedItemUnsafe self name
+  = liftDOM
+      ((((toHTMLCollection self) ^. jsf "namedItem" [toJSVal name]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
 namedItemUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLDListElement.hs b/src/JSDOM/Generated/HTMLDListElement.hs
--- a/src/JSDOM/Generated/HTMLDListElement.hs
+++ b/src/JSDOM/Generated/HTMLDListElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLDListElement
-       (setCompact, getCompact, HTMLDListElement, castToHTMLDListElement,
+       (setCompact, getCompact, HTMLDListElement(..),
         gTypeHTMLDListElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
 setCompact :: (MonadDOM m) => HTMLDListElement -> Bool -> m ()
diff --git a/src/JSDOM/Generated/HTMLDataListElement.hs b/src/JSDOM/Generated/HTMLDataListElement.hs
--- a/src/JSDOM/Generated/HTMLDataListElement.hs
+++ b/src/JSDOM/Generated/HTMLDataListElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLDataListElement
-       (getOptions, getOptionsUnchecked, HTMLDataListElement,
-        castToHTMLDataListElement, gTypeHTMLDataListElement)
+       (getOptions, getOptionsUnsafe, getOptionsUnchecked,
+        HTMLDataListElement(..), gTypeHTMLDataListElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
 getOptions ::
            (MonadDOM m) => HTMLDataListElement -> m (Maybe HTMLCollection)
 getOptions self = liftDOM ((self ^. js "options") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
+getOptionsUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   HTMLDataListElement -> m HTMLCollection
+getOptionsUnsafe self
+  = liftDOM
+      (((self ^. js "options") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
 getOptionsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLDetailsElement.hs b/src/JSDOM/Generated/HTMLDetailsElement.hs
--- a/src/JSDOM/Generated/HTMLDetailsElement.hs
+++ b/src/JSDOM/Generated/HTMLDetailsElement.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLDetailsElement
-       (setOpen, getOpen, HTMLDetailsElement, castToHTMLDetailsElement,
-        gTypeHTMLDetailsElement)
+       (setOpen, getOpen, HTMLDetailsElement(..), gTypeHTMLDetailsElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
 setOpen :: (MonadDOM m) => HTMLDetailsElement -> Bool -> m ()
diff --git a/src/JSDOM/Generated/HTMLDirectoryElement.hs b/src/JSDOM/Generated/HTMLDirectoryElement.hs
--- a/src/JSDOM/Generated/HTMLDirectoryElement.hs
+++ b/src/JSDOM/Generated/HTMLDirectoryElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLDirectoryElement
-       (setCompact, getCompact, HTMLDirectoryElement,
-        castToHTMLDirectoryElement, gTypeHTMLDirectoryElement)
+       (setCompact, getCompact, HTMLDirectoryElement(..),
+        gTypeHTMLDirectoryElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
 setCompact :: (MonadDOM m) => HTMLDirectoryElement -> Bool -> m ()
diff --git a/src/JSDOM/Generated/HTMLDivElement.hs b/src/JSDOM/Generated/HTMLDivElement.hs
--- a/src/JSDOM/Generated/HTMLDivElement.hs
+++ b/src/JSDOM/Generated/HTMLDivElement.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLDivElement
-       (setAlign, getAlign, HTMLDivElement, castToHTMLDivElement,
-        gTypeHTMLDivElement)
-       where
+       (setAlign, getAlign, HTMLDivElement(..), gTypeHTMLDivElement) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
 setAlign ::
diff --git a/src/JSDOM/Generated/HTMLDocument.hs b/src/JSDOM/Generated/HTMLDocument.hs
--- a/src/JSDOM/Generated/HTMLDocument.hs
+++ b/src/JSDOM/Generated/HTMLDocument.hs
@@ -1,19 +1,26 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLDocument
        (open, close, write, writeln, clear, captureEvents, releaseEvents,
-        getEmbeds, getEmbedsUnchecked, getPlugins, getPluginsUnchecked,
-        getScripts, getScriptsUnchecked, getAll, getAllUnchecked, getWidth,
-        getHeight, setDir, getDir, getDirUnchecked, setDesignMode,
-        getDesignMode, getDesignModeUnchecked, getCompatMode, setBgColor,
-        getBgColor, getBgColorUnchecked, setFgColor, getFgColor,
-        getFgColorUnchecked, setAlinkColor, getAlinkColor,
-        getAlinkColorUnchecked, setLinkColor, getLinkColor,
+        getEmbeds, getEmbedsUnsafe, getEmbedsUnchecked, getPlugins,
+        getPluginsUnsafe, getPluginsUnchecked, getScripts,
+        getScriptsUnsafe, getScriptsUnchecked, getAll, getAllUnsafe,
+        getAllUnchecked, getWidth, getHeight, setDir, getDir, getDirUnsafe,
+        getDirUnchecked, setDesignMode, getDesignMode, getDesignModeUnsafe,
+        getDesignModeUnchecked, getCompatMode, setBgColor, getBgColor,
+        getBgColorUnsafe, getBgColorUnchecked, setFgColor, getFgColor,
+        getFgColorUnsafe, getFgColorUnchecked, setAlinkColor,
+        getAlinkColor, getAlinkColorUnsafe, getAlinkColorUnchecked,
+        setLinkColor, getLinkColor, getLinkColorUnsafe,
         getLinkColorUnchecked, setVlinkColor, getVlinkColor,
-        getVlinkColorUnchecked, HTMLDocument, castToHTMLDocument,
+        getVlinkColorUnsafe, getVlinkColorUnchecked, HTMLDocument(..),
         gTypeHTMLDocument)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -24,6 +31,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.open Mozilla HTMLDocument.open documentation> 
 open :: (MonadDOM m) => HTMLDocument -> m ()
@@ -65,6 +82,14 @@
 getEmbeds self = liftDOM ((self ^. js "embeds") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.embeds Mozilla HTMLDocument.embeds documentation> 
+getEmbedsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLDocument -> m HTMLCollection
+getEmbedsUnsafe self
+  = liftDOM
+      (((self ^. js "embeds") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.embeds Mozilla HTMLDocument.embeds documentation> 
 getEmbedsUnchecked ::
                    (MonadDOM m) => HTMLDocument -> m HTMLCollection
 getEmbedsUnchecked self
@@ -76,6 +101,14 @@
 getPlugins self = liftDOM ((self ^. js "plugins") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.plugins Mozilla HTMLDocument.plugins documentation> 
+getPluginsUnsafe ::
+                 (MonadDOM m, HasCallStack) => HTMLDocument -> m HTMLCollection
+getPluginsUnsafe self
+  = liftDOM
+      (((self ^. js "plugins") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.plugins Mozilla HTMLDocument.plugins documentation> 
 getPluginsUnchecked ::
                     (MonadDOM m) => HTMLDocument -> m HTMLCollection
 getPluginsUnchecked self
@@ -87,6 +120,14 @@
 getScripts self = liftDOM ((self ^. js "scripts") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.scripts Mozilla HTMLDocument.scripts documentation> 
+getScriptsUnsafe ::
+                 (MonadDOM m, HasCallStack) => HTMLDocument -> m HTMLCollection
+getScriptsUnsafe self
+  = liftDOM
+      (((self ^. js "scripts") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.scripts Mozilla HTMLDocument.scripts documentation> 
 getScriptsUnchecked ::
                     (MonadDOM m) => HTMLDocument -> m HTMLCollection
 getScriptsUnchecked self
@@ -98,6 +139,14 @@
 getAll self = liftDOM ((self ^. js "all") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.all Mozilla HTMLDocument.all documentation> 
+getAllUnsafe ::
+             (MonadDOM m, HasCallStack) => HTMLDocument -> m HTMLAllCollection
+getAllUnsafe self
+  = liftDOM
+      (((self ^. js "all") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.all Mozilla HTMLDocument.all documentation> 
 getAllUnchecked ::
                 (MonadDOM m) => HTMLDocument -> m HTMLAllCollection
 getAllUnchecked self
@@ -125,6 +174,15 @@
 getDir self = liftDOM ((self ^. js "dir") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.dir Mozilla HTMLDocument.dir documentation> 
+getDirUnsafe ::
+             (MonadDOM m, HasCallStack, FromJSString result) =>
+               HTMLDocument -> m result
+getDirUnsafe self
+  = liftDOM
+      (((self ^. js "dir") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.dir Mozilla HTMLDocument.dir documentation> 
 getDirUnchecked ::
                 (MonadDOM m, FromJSString result) => HTMLDocument -> m result
 getDirUnchecked self
@@ -144,6 +202,15 @@
   = liftDOM ((self ^. js "designMode") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.designMode Mozilla HTMLDocument.designMode documentation> 
+getDesignModeUnsafe ::
+                    (MonadDOM m, HasCallStack, FromJSString result) =>
+                      HTMLDocument -> m result
+getDesignModeUnsafe self
+  = liftDOM
+      (((self ^. js "designMode") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.designMode Mozilla HTMLDocument.designMode documentation> 
 getDesignModeUnchecked ::
                        (MonadDOM m, FromJSString result) => HTMLDocument -> m result
 getDesignModeUnchecked self
@@ -168,6 +235,15 @@
   = liftDOM ((self ^. js "bgColor") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
+getBgColorUnsafe ::
+                 (MonadDOM m, HasCallStack, FromJSString result) =>
+                   HTMLDocument -> m result
+getBgColorUnsafe self
+  = liftDOM
+      (((self ^. js "bgColor") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
 getBgColorUnchecked ::
                     (MonadDOM m, FromJSString result) => HTMLDocument -> m result
 getBgColorUnchecked self
@@ -186,6 +262,15 @@
   = liftDOM ((self ^. js "fgColor") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
+getFgColorUnsafe ::
+                 (MonadDOM m, HasCallStack, FromJSString result) =>
+                   HTMLDocument -> m result
+getFgColorUnsafe self
+  = liftDOM
+      (((self ^. js "fgColor") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
 getFgColorUnchecked ::
                     (MonadDOM m, FromJSString result) => HTMLDocument -> m result
 getFgColorUnchecked self
@@ -205,6 +290,15 @@
   = liftDOM ((self ^. js "alinkColor") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
+getAlinkColorUnsafe ::
+                    (MonadDOM m, HasCallStack, FromJSString result) =>
+                      HTMLDocument -> m result
+getAlinkColorUnsafe self
+  = liftDOM
+      (((self ^. js "alinkColor") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
 getAlinkColorUnchecked ::
                        (MonadDOM m, FromJSString result) => HTMLDocument -> m result
 getAlinkColorUnchecked self
@@ -224,6 +318,15 @@
   = liftDOM ((self ^. js "linkColor") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
+getLinkColorUnsafe ::
+                   (MonadDOM m, HasCallStack, FromJSString result) =>
+                     HTMLDocument -> m result
+getLinkColorUnsafe self
+  = liftDOM
+      (((self ^. js "linkColor") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
 getLinkColorUnchecked ::
                       (MonadDOM m, FromJSString result) => HTMLDocument -> m result
 getLinkColorUnchecked self
@@ -241,6 +344,15 @@
                 HTMLDocument -> m (Maybe result)
 getVlinkColor self
   = liftDOM ((self ^. js "vlinkColor") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
+getVlinkColorUnsafe ::
+                    (MonadDOM m, HasCallStack, FromJSString result) =>
+                      HTMLDocument -> m result
+getVlinkColorUnsafe self
+  = liftDOM
+      (((self ^. js "vlinkColor") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
 getVlinkColorUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLElement.hs b/src/JSDOM/Generated/HTMLElement.hs
--- a/src/JSDOM/Generated/HTMLElement.hs
+++ b/src/JSDOM/Generated/HTMLElement.hs
@@ -1,20 +1,26 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLElement
        (insertAdjacentElement, insertAdjacentElement_,
-        insertAdjacentElementUnchecked, insertAdjacentHTML,
-        insertAdjacentText, click, setTitle, getTitle, setLang, getLang,
-        setTranslate, getTranslate, setDir, getDir, setTabIndex,
-        getTabIndex, setDraggable, getDraggable, setWebkitdropzone,
-        getWebkitdropzone, setHidden, getHidden, setAccessKey,
-        getAccessKey, setInnerText, getInnerText, getInnerTextUnchecked,
-        setOuterText, getOuterText, getOuterTextUnchecked, getChildren,
-        getChildrenUnchecked, setContentEditable, getContentEditable,
+        insertAdjacentElementUnsafe, insertAdjacentElementUnchecked,
+        insertAdjacentHTML, insertAdjacentText, click, setTitle, getTitle,
+        setLang, getLang, setTranslate, getTranslate, setDir, getDir,
+        setTabIndex, getTabIndex, setDraggable, getDraggable,
+        setWebkitdropzone, getWebkitdropzone, setHidden, getHidden,
+        setAccessKey, getAccessKey, setInnerText, getInnerText,
+        getInnerTextUnsafe, getInnerTextUnchecked, setOuterText,
+        getOuterText, getOuterTextUnsafe, getOuterTextUnchecked,
+        getChildren, getChildrenUnsafe, getChildrenUnchecked,
+        setContentEditable, getContentEditable, getContentEditableUnsafe,
         getContentEditableUnchecked, getIsContentEditable, setSpellcheck,
-        getSpellcheck, HTMLElement, castToHTMLElement, gTypeHTMLElement,
-        IsHTMLElement, toHTMLElement)
+        getSpellcheck, HTMLElement(..), gTypeHTMLElement, IsHTMLElement,
+        toHTMLElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -25,6 +31,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentElement Mozilla HTMLElement.insertAdjacentElement documentation> 
 insertAdjacentElement ::
@@ -49,6 +65,18 @@
             [toJSVal where', toJSVal element]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentElement Mozilla HTMLElement.insertAdjacentElement documentation> 
+insertAdjacentElementUnsafe ::
+                            (MonadDOM m, IsHTMLElement self, ToJSString where',
+                             IsElement element, HasCallStack) =>
+                              self -> where' -> Maybe element -> m Element
+insertAdjacentElementUnsafe self where' element
+  = liftDOM
+      ((((toHTMLElement self) ^. jsf "insertAdjacentElement"
+           [toJSVal where', toJSVal element])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.insertAdjacentElement Mozilla HTMLElement.insertAdjacentElement documentation> 
 insertAdjacentElementUnchecked ::
                                (MonadDOM m, IsHTMLElement self, ToJSString where',
                                 IsElement element) =>
@@ -225,6 +253,16 @@
       (((toHTMLElement self) ^. js "innerText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
+getInnerTextUnsafe ::
+                   (MonadDOM m, IsHTMLElement self, HasCallStack,
+                    FromJSString result) =>
+                     self -> m result
+getInnerTextUnsafe self
+  = liftDOM
+      ((((toHTMLElement self) ^. js "innerText") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
 getInnerTextUnchecked ::
                       (MonadDOM m, IsHTMLElement self, FromJSString result) =>
                         self -> m result
@@ -248,6 +286,16 @@
       (((toHTMLElement self) ^. js "outerText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
+getOuterTextUnsafe ::
+                   (MonadDOM m, IsHTMLElement self, HasCallStack,
+                    FromJSString result) =>
+                     self -> m result
+getOuterTextUnsafe self
+  = liftDOM
+      ((((toHTMLElement self) ^. js "outerText") >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
 getOuterTextUnchecked ::
                       (MonadDOM m, IsHTMLElement self, FromJSString result) =>
                         self -> m result
@@ -263,6 +311,15 @@
   = liftDOM (((toHTMLElement self) ^. js "children") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.children Mozilla HTMLElement.children documentation> 
+getChildrenUnsafe ::
+                  (MonadDOM m, IsHTMLElement self, HasCallStack) =>
+                    self -> m HTMLCollection
+getChildrenUnsafe self
+  = liftDOM
+      ((((toHTMLElement self) ^. js "children") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.children Mozilla HTMLElement.children documentation> 
 getChildrenUnchecked ::
                      (MonadDOM m, IsHTMLElement self) => self -> m HTMLCollection
 getChildrenUnchecked self
@@ -285,6 +342,17 @@
   = liftDOM
       (((toHTMLElement self) ^. js "contentEditable") >>=
          fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
+getContentEditableUnsafe ::
+                         (MonadDOM m, IsHTMLElement self, HasCallStack,
+                          FromJSString result) =>
+                           self -> m result
+getContentEditableUnsafe self
+  = liftDOM
+      ((((toHTMLElement self) ^. js "contentEditable") >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
 getContentEditableUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLEmbedElement.hs b/src/JSDOM/Generated/HTMLEmbedElement.hs
--- a/src/JSDOM/Generated/HTMLEmbedElement.hs
+++ b/src/JSDOM/Generated/HTMLEmbedElement.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLEmbedElement
-       (getSVGDocument, getSVGDocument_, getSVGDocumentUnchecked,
-        setAlign, getAlign, setHeight, getHeight, setName, getName, setSrc,
-        getSrc, setType, getType, setWidth, getWidth, HTMLEmbedElement,
-        castToHTMLEmbedElement, gTypeHTMLEmbedElement)
+       (getSVGDocument, getSVGDocument_, getSVGDocumentUnsafe,
+        getSVGDocumentUnchecked, setAlign, getAlign, setHeight, getHeight,
+        setName, getName, setSrc, getSrc, setType, getType, setWidth,
+        getWidth, HTMLEmbedElement(..), gTypeHTMLEmbedElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
 getSVGDocument ::
@@ -28,6 +42,14 @@
 getSVGDocument_ :: (MonadDOM m) => HTMLEmbedElement -> m ()
 getSVGDocument_ self
   = liftDOM (void (self ^. jsf "getSVGDocument" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
+getSVGDocumentUnsafe ::
+                     (MonadDOM m, HasCallStack) => HTMLEmbedElement -> m SVGDocument
+getSVGDocumentUnsafe self
+  = liftDOM
+      (((self ^. jsf "getSVGDocument" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
 getSVGDocumentUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLFieldSetElement.hs b/src/JSDOM/Generated/HTMLFieldSetElement.hs
--- a/src/JSDOM/Generated/HTMLFieldSetElement.hs
+++ b/src/JSDOM/Generated/HTMLFieldSetElement.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLFieldSetElement
        (checkValidity, checkValidity_, setCustomValidity, setDisabled,
-        getDisabled, getForm, getFormUnchecked, setName, getName, getType,
-        getElements, getElementsUnchecked, getWillValidate, getValidity,
-        getValidityUnchecked, getValidationMessage, HTMLFieldSetElement,
-        castToHTMLFieldSetElement, gTypeHTMLFieldSetElement)
+        getDisabled, getForm, getFormUnsafe, getFormUnchecked, setName,
+        getName, getType, getElements, getElementsUnsafe,
+        getElementsUnchecked, getWillValidate, getValidity,
+        getValidityUnsafe, getValidityUnchecked, getValidationMessage,
+        HTMLFieldSetElement(..), gTypeHTMLFieldSetElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
 checkValidity :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
@@ -51,6 +66,15 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.form Mozilla HTMLFieldSetElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLFieldSetElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.form Mozilla HTMLFieldSetElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLFieldSetElement -> m HTMLFormElement
 getFormUnchecked self
@@ -79,6 +103,15 @@
 getElements self = liftDOM ((self ^. js "elements") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.elements Mozilla HTMLFieldSetElement.elements documentation> 
+getElementsUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    HTMLFieldSetElement -> m HTMLCollection
+getElementsUnsafe self
+  = liftDOM
+      (((self ^. js "elements") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.elements Mozilla HTMLFieldSetElement.elements documentation> 
 getElementsUnchecked ::
                      (MonadDOM m) => HTMLFieldSetElement -> m HTMLCollection
 getElementsUnchecked self
@@ -93,6 +126,15 @@
 getValidity ::
             (MonadDOM m) => HTMLFieldSetElement -> m (Maybe ValidityState)
 getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validity Mozilla HTMLFieldSetElement.validity documentation> 
+getValidityUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    HTMLFieldSetElement -> m ValidityState
+getValidityUnsafe self
+  = liftDOM
+      (((self ^. js "validity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validity Mozilla HTMLFieldSetElement.validity documentation> 
 getValidityUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLFontElement.hs b/src/JSDOM/Generated/HTMLFontElement.hs
--- a/src/JSDOM/Generated/HTMLFontElement.hs
+++ b/src/JSDOM/Generated/HTMLFontElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLFontElement
        (setColor, getColor, setFace, getFace, setSize, getSize,
-        HTMLFontElement, castToHTMLFontElement, gTypeHTMLFontElement)
+        HTMLFontElement(..), gTypeHTMLFontElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
 setColor ::
diff --git a/src/JSDOM/Generated/HTMLFormControlsCollection.hs b/src/JSDOM/Generated/HTMLFormControlsCollection.hs
--- a/src/JSDOM/Generated/HTMLFormControlsCollection.hs
+++ b/src/JSDOM/Generated/HTMLFormControlsCollection.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLFormControlsCollection
-       (_get, _get_, _getUnchecked, namedItem, namedItem_,
-        namedItemUnchecked, HTMLFormControlsCollection,
-        castToHTMLFormControlsCollection, gTypeHTMLFormControlsCollection)
+       (_get, _get_, _getUnsafe, _getUnchecked, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked,
+        HTMLFormControlsCollection(..), gTypeHTMLFormControlsCollection)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection._get Mozilla HTMLFormControlsCollection._get documentation> 
 _get ::
@@ -30,6 +44,15 @@
   = liftDOM (void (self ^. jsf "_get" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection._get Mozilla HTMLFormControlsCollection._get documentation> 
+_getUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             HTMLFormControlsCollection -> Word -> m Node
+_getUnsafe self index
+  = liftDOM
+      (((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection._get Mozilla HTMLFormControlsCollection._get documentation> 
 _getUnchecked ::
               (MonadDOM m) => HTMLFormControlsCollection -> Word -> m Node
 _getUnchecked self index
@@ -49,6 +72,15 @@
              HTMLFormControlsCollection -> name -> m ()
 namedItem_ self name
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  HTMLFormControlsCollection -> name -> m Node
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
 namedItemUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLFormElement.hs b/src/JSDOM/Generated/HTMLFormElement.hs
--- a/src/JSDOM/Generated/HTMLFormElement.hs
+++ b/src/JSDOM/Generated/HTMLFormElement.hs
@@ -1,19 +1,24 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLFormElement
-       (_get, _get_, _getUnchecked, submit, reset, checkValidity,
-        checkValidity_, requestAutocomplete, setAcceptCharset,
-        getAcceptCharset, setAction, getAction, setAutocomplete,
-        getAutocomplete, setEnctype, getEnctype, getEnctypeUnchecked,
-        setEncoding, getEncoding, getEncodingUnchecked, setMethod,
-        getMethod, getMethodUnchecked, setName, getName, setNoValidate,
-        getNoValidate, setTarget, getTarget, getElements,
-        getElementsUnchecked, getLength, setAutocorrect, getAutocorrect,
-        setAutocapitalize, getAutocapitalize, getAutocapitalizeUnchecked,
-        autocomplete, autocompleteerror, HTMLFormElement,
-        castToHTMLFormElement, gTypeHTMLFormElement)
+       (_get, _get_, _getUnsafe, _getUnchecked, submit, reset,
+        checkValidity, checkValidity_, requestAutocomplete,
+        setAcceptCharset, getAcceptCharset, setAction, getAction,
+        setAutocomplete, getAutocomplete, setEnctype, getEnctype,
+        getEnctypeUnsafe, getEnctypeUnchecked, setEncoding, getEncoding,
+        getEncodingUnsafe, getEncodingUnchecked, setMethod, getMethod,
+        getMethodUnsafe, getMethodUnchecked, setName, getName,
+        setNoValidate, getNoValidate, setTarget, getTarget, getElements,
+        getElementsUnsafe, getElementsUnchecked, getLength, setAutocorrect,
+        getAutocorrect, setAutocapitalize, getAutocapitalize,
+        getAutocapitalizeUnsafe, getAutocapitalizeUnchecked, autocomplete,
+        autocompleteerror, HTMLFormElement(..), gTypeHTMLFormElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -24,6 +29,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement._get Mozilla HTMLFormElement._get documentation> 
 _get ::
@@ -37,6 +52,14 @@
   = liftDOM (void (self ^. jsf "_get" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement._get Mozilla HTMLFormElement._get documentation> 
+_getUnsafe ::
+           (MonadDOM m, HasCallStack) => HTMLFormElement -> Word -> m Element
+_getUnsafe self index
+  = liftDOM
+      (((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement._get Mozilla HTMLFormElement._get documentation> 
 _getUnchecked ::
               (MonadDOM m) => HTMLFormElement -> Word -> m Element
 _getUnchecked self index
@@ -115,6 +138,15 @@
   = liftDOM ((self ^. js "enctype") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
+getEnctypeUnsafe ::
+                 (MonadDOM m, HasCallStack, FromJSString result) =>
+                   HTMLFormElement -> m result
+getEnctypeUnsafe self
+  = liftDOM
+      (((self ^. js "enctype") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
 getEnctypeUnchecked ::
                     (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
 getEnctypeUnchecked self
@@ -135,6 +167,15 @@
   = liftDOM ((self ^. js "encoding") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
+getEncodingUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    HTMLFormElement -> m result
+getEncodingUnsafe self
+  = liftDOM
+      (((self ^. js "encoding") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
 getEncodingUnchecked ::
                      (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
 getEncodingUnchecked self
@@ -154,6 +195,15 @@
   = liftDOM ((self ^. js "method") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
+getMethodUnsafe ::
+                (MonadDOM m, HasCallStack, FromJSString result) =>
+                  HTMLFormElement -> m result
+getMethodUnsafe self
+  = liftDOM
+      (((self ^. js "method") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
 getMethodUnchecked ::
                    (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
 getMethodUnchecked self
@@ -196,6 +246,14 @@
 getElements self = liftDOM ((self ^. js "elements") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements Mozilla HTMLFormElement.elements documentation> 
+getElementsUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLFormElement -> m HTMLCollection
+getElementsUnsafe self
+  = liftDOM
+      (((self ^. js "elements") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements Mozilla HTMLFormElement.elements documentation> 
 getElementsUnchecked ::
                      (MonadDOM m) => HTMLFormElement -> m HTMLCollection
 getElementsUnchecked self
@@ -229,6 +287,15 @@
                     HTMLFormElement -> m (Maybe result)
 getAutocapitalize self
   = liftDOM ((self ^. js "autocapitalize") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocapitalize Mozilla HTMLFormElement.autocapitalize documentation> 
+getAutocapitalizeUnsafe ::
+                        (MonadDOM m, HasCallStack, FromJSString result) =>
+                          HTMLFormElement -> m result
+getAutocapitalizeUnsafe self
+  = liftDOM
+      (((self ^. js "autocapitalize") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocapitalize Mozilla HTMLFormElement.autocapitalize documentation> 
 getAutocapitalizeUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLFrameElement.hs b/src/JSDOM/Generated/HTMLFrameElement.hs
--- a/src/JSDOM/Generated/HTMLFrameElement.hs
+++ b/src/JSDOM/Generated/HTMLFrameElement.hs
@@ -1,17 +1,22 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLFrameElement
-       (getSVGDocument, getSVGDocument_, getSVGDocumentUnchecked,
-        setFrameBorder, getFrameBorder, setLongDesc, getLongDesc,
-        setMarginHeight, getMarginHeight, setMarginWidth, getMarginWidth,
-        setName, getName, setNoResize, getNoResize, setScrolling,
-        getScrolling, setSrc, getSrc, getContentDocument,
+       (getSVGDocument, getSVGDocument_, getSVGDocumentUnsafe,
+        getSVGDocumentUnchecked, setFrameBorder, getFrameBorder,
+        setLongDesc, getLongDesc, setMarginHeight, getMarginHeight,
+        setMarginWidth, getMarginWidth, setName, getName, setNoResize,
+        getNoResize, setScrolling, getScrolling, setSrc, getSrc,
+        getContentDocument, getContentDocumentUnsafe,
         getContentDocumentUnchecked, getContentWindow,
-        getContentWindowUnchecked, setLocation, getLocation,
-        getLocationUnchecked, getWidth, getHeight, HTMLFrameElement,
-        castToHTMLFrameElement, gTypeHTMLFrameElement)
+        getContentWindowUnsafe, getContentWindowUnchecked, setLocation,
+        getLocation, getLocationUnsafe, getLocationUnchecked, getWidth,
+        getHeight, HTMLFrameElement(..), gTypeHTMLFrameElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
 getSVGDocument ::
@@ -35,6 +50,14 @@
   = liftDOM (void (self ^. jsf "getSVGDocument" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
+getSVGDocumentUnsafe ::
+                     (MonadDOM m, HasCallStack) => HTMLFrameElement -> m SVGDocument
+getSVGDocumentUnsafe self
+  = liftDOM
+      (((self ^. jsf "getSVGDocument" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
 getSVGDocumentUnchecked ::
                         (MonadDOM m) => HTMLFrameElement -> m SVGDocument
 getSVGDocumentUnchecked self
@@ -137,6 +160,14 @@
   = liftDOM ((self ^. js "contentDocument") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentDocument Mozilla HTMLFrameElement.contentDocument documentation> 
+getContentDocumentUnsafe ::
+                         (MonadDOM m, HasCallStack) => HTMLFrameElement -> m Document
+getContentDocumentUnsafe self
+  = liftDOM
+      (((self ^. js "contentDocument") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentDocument Mozilla HTMLFrameElement.contentDocument documentation> 
 getContentDocumentUnchecked ::
                             (MonadDOM m) => HTMLFrameElement -> m Document
 getContentDocumentUnchecked self
@@ -149,6 +180,14 @@
   = liftDOM ((self ^. js "contentWindow") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentWindow Mozilla HTMLFrameElement.contentWindow documentation> 
+getContentWindowUnsafe ::
+                       (MonadDOM m, HasCallStack) => HTMLFrameElement -> m Window
+getContentWindowUnsafe self
+  = liftDOM
+      (((self ^. js "contentWindow") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentWindow Mozilla HTMLFrameElement.contentWindow documentation> 
 getContentWindowUnchecked ::
                           (MonadDOM m) => HTMLFrameElement -> m Window
 getContentWindowUnchecked self
@@ -167,6 +206,15 @@
               HTMLFrameElement -> m (Maybe result)
 getLocation self
   = liftDOM ((self ^. js "location") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
+getLocationUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    HTMLFrameElement -> m result
+getLocationUnsafe self
+  = liftDOM
+      (((self ^. js "location") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
 getLocationUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLFrameSetElement.hs b/src/JSDOM/Generated/HTMLFrameSetElement.hs
--- a/src/JSDOM/Generated/HTMLFrameSetElement.hs
+++ b/src/JSDOM/Generated/HTMLFrameSetElement.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLFrameSetElement
        (setCols, getCols, setRows, getRows, beforeUnload, hashChange,
         message, offline, online, popState, resize, storage, unload,
-        orientationChange, blur, error, focus, load, HTMLFrameSetElement,
-        castToHTMLFrameSetElement, gTypeHTMLFrameSetElement)
+        orientationChange, blur, error, focus, load,
+        HTMLFrameSetElement(..), gTypeHTMLFrameSetElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
 setCols ::
diff --git a/src/JSDOM/Generated/HTMLHRElement.hs b/src/JSDOM/Generated/HTMLHRElement.hs
--- a/src/JSDOM/Generated/HTMLHRElement.hs
+++ b/src/JSDOM/Generated/HTMLHRElement.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLHRElement
        (setAlign, getAlign, setNoShade, getNoShade, setSize, getSize,
-        setWidth, getWidth, HTMLHRElement, castToHTMLHRElement,
-        gTypeHTMLHRElement)
+        setWidth, getWidth, HTMLHRElement(..), gTypeHTMLHRElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
 setAlign ::
diff --git a/src/JSDOM/Generated/HTMLHeadElement.hs b/src/JSDOM/Generated/HTMLHeadElement.hs
--- a/src/JSDOM/Generated/HTMLHeadElement.hs
+++ b/src/JSDOM/Generated/HTMLHeadElement.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLHeadElement
-       (setProfile, getProfile, HTMLHeadElement, castToHTMLHeadElement,
-        gTypeHTMLHeadElement)
+       (setProfile, getProfile, HTMLHeadElement(..), gTypeHTMLHeadElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
 setProfile ::
diff --git a/src/JSDOM/Generated/HTMLHeadingElement.hs b/src/JSDOM/Generated/HTMLHeadingElement.hs
--- a/src/JSDOM/Generated/HTMLHeadingElement.hs
+++ b/src/JSDOM/Generated/HTMLHeadingElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLHeadingElement
-       (setAlign, getAlign, HTMLHeadingElement, castToHTMLHeadingElement,
+       (setAlign, getAlign, HTMLHeadingElement(..),
         gTypeHTMLHeadingElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
 setAlign ::
diff --git a/src/JSDOM/Generated/HTMLHtmlElement.hs b/src/JSDOM/Generated/HTMLHtmlElement.hs
--- a/src/JSDOM/Generated/HTMLHtmlElement.hs
+++ b/src/JSDOM/Generated/HTMLHtmlElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLHtmlElement
-       (setVersion, getVersion, setManifest, getManifest, HTMLHtmlElement,
-        castToHTMLHtmlElement, gTypeHTMLHtmlElement)
+       (setVersion, getVersion, setManifest, getManifest,
+        HTMLHtmlElement(..), gTypeHTMLHtmlElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
 setVersion ::
diff --git a/src/JSDOM/Generated/HTMLIFrameElement.hs b/src/JSDOM/Generated/HTMLIFrameElement.hs
--- a/src/JSDOM/Generated/HTMLIFrameElement.hs
+++ b/src/JSDOM/Generated/HTMLIFrameElement.hs
@@ -1,17 +1,22 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLIFrameElement
-       (getSVGDocument, getSVGDocument_, getSVGDocumentUnchecked,
-        setAlign, getAlign, setFrameBorder, getFrameBorder, setHeight,
-        getHeight, setLongDesc, getLongDesc, setMarginHeight,
-        getMarginHeight, setMarginWidth, getMarginWidth, setName, getName,
-        setSandbox, getSandbox, setScrolling, getScrolling, setSrc, getSrc,
-        setSrcdoc, getSrcdoc, setWidth, getWidth, getContentDocument,
+       (getSVGDocument, getSVGDocument_, getSVGDocumentUnsafe,
+        getSVGDocumentUnchecked, setAlign, getAlign, setFrameBorder,
+        getFrameBorder, setHeight, getHeight, setLongDesc, getLongDesc,
+        setMarginHeight, getMarginHeight, setMarginWidth, getMarginWidth,
+        setName, getName, setSandbox, getSandbox, setScrolling,
+        getScrolling, setSrc, getSrc, setSrcdoc, getSrcdoc, setWidth,
+        getWidth, getContentDocument, getContentDocumentUnsafe,
         getContentDocumentUnchecked, getContentWindow,
-        getContentWindowUnchecked, HTMLIFrameElement,
-        castToHTMLIFrameElement, gTypeHTMLIFrameElement)
+        getContentWindowUnsafe, getContentWindowUnchecked,
+        HTMLIFrameElement(..), gTypeHTMLIFrameElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
 getSVGDocument ::
@@ -35,6 +50,14 @@
   = liftDOM (void (self ^. jsf "getSVGDocument" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
+getSVGDocumentUnsafe ::
+                     (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m SVGDocument
+getSVGDocumentUnsafe self
+  = liftDOM
+      (((self ^. jsf "getSVGDocument" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
 getSVGDocumentUnchecked ::
                         (MonadDOM m) => HTMLIFrameElement -> m SVGDocument
 getSVGDocumentUnchecked self
@@ -183,6 +206,14 @@
   = liftDOM ((self ^. js "contentDocument") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentDocument Mozilla HTMLIFrameElement.contentDocument documentation> 
+getContentDocumentUnsafe ::
+                         (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m Document
+getContentDocumentUnsafe self
+  = liftDOM
+      (((self ^. js "contentDocument") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentDocument Mozilla HTMLIFrameElement.contentDocument documentation> 
 getContentDocumentUnchecked ::
                             (MonadDOM m) => HTMLIFrameElement -> m Document
 getContentDocumentUnchecked self
@@ -193,6 +224,14 @@
                  (MonadDOM m) => HTMLIFrameElement -> m (Maybe Window)
 getContentWindow self
   = liftDOM ((self ^. js "contentWindow") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentWindow Mozilla HTMLIFrameElement.contentWindow documentation> 
+getContentWindowUnsafe ::
+                       (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m Window
+getContentWindowUnsafe self
+  = liftDOM
+      (((self ^. js "contentWindow") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentWindow Mozilla HTMLIFrameElement.contentWindow documentation> 
 getContentWindowUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLImageElement.hs b/src/JSDOM/Generated/HTMLImageElement.hs
--- a/src/JSDOM/Generated/HTMLImageElement.hs
+++ b/src/JSDOM/Generated/HTMLImageElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLImageElement
        (setName, getName, setAlign, getAlign, setAlt, getAlt, setBorder,
@@ -7,10 +10,11 @@
         setSrc, getSrc, setSrcset, getSrcset, setSizes, getSizes,
         getCurrentSrc, setUseMap, getUseMap, setVspace, getVspace,
         setWidth, getWidth, getComplete, setLowsrc, getLowsrc,
-        getNaturalHeight, getNaturalWidth, getX, getY, HTMLImageElement,
-        castToHTMLImageElement, gTypeHTMLImageElement)
+        getNaturalHeight, getNaturalWidth, getX, getY,
+        HTMLImageElement(..), gTypeHTMLImageElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
 setName ::
diff --git a/src/JSDOM/Generated/HTMLInputElement.hs b/src/JSDOM/Generated/HTMLInputElement.hs
--- a/src/JSDOM/Generated/HTMLInputElement.hs
+++ b/src/JSDOM/Generated/HTMLInputElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLInputElement
        (stepUp, stepDown, checkValidity, checkValidity_,
@@ -7,31 +10,35 @@
         setAutocomplete, getAutocomplete, setAutofocus, getAutofocus,
         setDefaultChecked, getDefaultChecked, setChecked, getChecked,
         setDirName, getDirName, setDisabled, getDisabled, getForm,
-        getFormUnchecked, setFiles, getFiles, getFilesUnchecked,
-        setFormAction, getFormAction, setFormEnctype, getFormEnctype,
+        getFormUnsafe, getFormUnchecked, setFiles, getFiles,
+        getFilesUnsafe, getFilesUnchecked, setFormAction, getFormAction,
+        setFormEnctype, getFormEnctype, getFormEnctypeUnsafe,
         getFormEnctypeUnchecked, setFormMethod, getFormMethod,
-        getFormMethodUnchecked, setFormNoValidate, getFormNoValidate,
-        setFormTarget, getFormTarget, setHeight, getHeight,
-        setIndeterminate, getIndeterminate, getList, getListUnchecked,
-        setMax, getMax, setMaxLength, getMaxLength, setMin, getMin,
-        setMultiple, getMultiple, setName, getName, setPattern, getPattern,
-        setPlaceholder, getPlaceholder, setReadOnly, getReadOnly,
-        setRequired, getRequired, setSize, getSize, setSrc, getSrc,
-        setStep, getStep, setType, getType, setDefaultValue,
-        getDefaultValue, getDefaultValueUnchecked, setValue, getValue,
+        getFormMethodUnsafe, getFormMethodUnchecked, setFormNoValidate,
+        getFormNoValidate, setFormTarget, getFormTarget, setHeight,
+        getHeight, setIndeterminate, getIndeterminate, getList,
+        getListUnsafe, getListUnchecked, setMax, getMax, setMaxLength,
+        getMaxLength, setMin, getMin, setMultiple, getMultiple, setName,
+        getName, setPattern, getPattern, setPlaceholder, getPlaceholder,
+        setReadOnly, getReadOnly, setRequired, getRequired, setSize,
+        getSize, setSrc, getSrc, setStep, getStep, setType, getType,
+        setDefaultValue, getDefaultValue, getDefaultValueUnsafe,
+        getDefaultValueUnchecked, setValue, getValue, getValueUnsafe,
         getValueUnchecked, setValueAsDate, getValueAsDate,
-        getValueAsDateUnchecked, setValueAsNumber, getValueAsNumber,
-        setWidth, getWidth, getWillValidate, getValidity,
-        getValidityUnchecked, getValidationMessage, getLabels,
-        getLabelsUnchecked, setSelectionStart, getSelectionStart,
-        setSelectionEnd, getSelectionEnd, setSelectionDirection,
-        getSelectionDirection, setAlign, getAlign, setUseMap, getUseMap,
-        setIncremental, getIncremental, setAutocorrect, getAutocorrect,
-        setAutocapitalize, getAutocapitalize, getAutocapitalizeUnchecked,
-        setCapture, getCapture, HTMLInputElement, castToHTMLInputElement,
-        gTypeHTMLInputElement)
+        getValueAsDateUnsafe, getValueAsDateUnchecked, setValueAsNumber,
+        getValueAsNumber, setWidth, getWidth, getWillValidate, getValidity,
+        getValidityUnsafe, getValidityUnchecked, getValidationMessage,
+        getLabels, getLabelsUnsafe, getLabelsUnchecked, setSelectionStart,
+        getSelectionStart, setSelectionEnd, getSelectionEnd,
+        setSelectionDirection, getSelectionDirection, setAlign, getAlign,
+        setUseMap, getUseMap, setIncremental, getIncremental,
+        setAutocorrect, getAutocorrect, setAutocapitalize,
+        getAutocapitalize, getAutocapitalizeUnsafe,
+        getAutocapitalizeUnchecked, setCapture, getCapture,
+        HTMLInputElement(..), gTypeHTMLInputElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -42,6 +49,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepUp Mozilla HTMLInputElement.stepUp documentation> 
 stepUp :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
@@ -190,6 +207,14 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.form Mozilla HTMLInputElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) => HTMLInputElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.form Mozilla HTMLInputElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLInputElement -> m HTMLFormElement
 getFormUnchecked self
@@ -205,6 +230,14 @@
 getFiles self = liftDOM ((self ^. js "files") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+getFilesUnsafe ::
+               (MonadDOM m, HasCallStack) => HTMLInputElement -> m FileList
+getFilesUnsafe self
+  = liftDOM
+      (((self ^. js "files") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
 getFilesUnchecked :: (MonadDOM m) => HTMLInputElement -> m FileList
 getFilesUnchecked self
   = liftDOM ((self ^. js "files") >>= fromJSValUnchecked)
@@ -236,6 +269,15 @@
   = liftDOM ((self ^. js "formEnctype") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
+getFormEnctypeUnsafe ::
+                     (MonadDOM m, HasCallStack, FromJSString result) =>
+                       HTMLInputElement -> m result
+getFormEnctypeUnsafe self
+  = liftDOM
+      (((self ^. js "formEnctype") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
 getFormEnctypeUnchecked ::
                         (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
 getFormEnctypeUnchecked self
@@ -256,6 +298,15 @@
   = liftDOM ((self ^. js "formMethod") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
+getFormMethodUnsafe ::
+                    (MonadDOM m, HasCallStack, FromJSString result) =>
+                      HTMLInputElement -> m result
+getFormMethodUnsafe self
+  = liftDOM
+      (((self ^. js "formMethod") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
 getFormMethodUnchecked ::
                        (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
 getFormMethodUnchecked self
@@ -310,6 +361,14 @@
 getList self = liftDOM ((self ^. js "list") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.list Mozilla HTMLInputElement.list documentation> 
+getListUnsafe ::
+              (MonadDOM m, HasCallStack) => HTMLInputElement -> m HTMLElement
+getListUnsafe self
+  = liftDOM
+      (((self ^. js "list") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.list Mozilla HTMLInputElement.list documentation> 
 getListUnchecked ::
                  (MonadDOM m) => HTMLInputElement -> m HTMLElement
 getListUnchecked self
@@ -459,6 +518,15 @@
   = liftDOM ((self ^. js "defaultValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
+getDefaultValueUnsafe ::
+                      (MonadDOM m, HasCallStack, FromJSString result) =>
+                        HTMLInputElement -> m result
+getDefaultValueUnsafe self
+  = liftDOM
+      (((self ^. js "defaultValue") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
 getDefaultValueUnchecked ::
                          (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
 getDefaultValueUnchecked self
@@ -478,6 +546,15 @@
   = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
+getValueUnsafe ::
+               (MonadDOM m, HasCallStack, FromJSString result) =>
+                 HTMLInputElement -> m result
+getValueUnsafe self
+  = liftDOM
+      (((self ^. js "value") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
 getValueUnchecked ::
                   (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
 getValueUnchecked self
@@ -496,6 +573,14 @@
   = liftDOM ((self ^. js "valueAsDate") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
+getValueAsDateUnsafe ::
+                     (MonadDOM m, HasCallStack) => HTMLInputElement -> m Date
+getValueAsDateUnsafe self
+  = liftDOM
+      (((self ^. js "valueAsDate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
 getValueAsDateUnchecked ::
                         (MonadDOM m) => HTMLInputElement -> m Date
 getValueAsDateUnchecked self
@@ -532,6 +617,14 @@
 getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validity Mozilla HTMLInputElement.validity documentation> 
+getValidityUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLInputElement -> m ValidityState
+getValidityUnsafe self
+  = liftDOM
+      (((self ^. js "validity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validity Mozilla HTMLInputElement.validity documentation> 
 getValidityUnchecked ::
                      (MonadDOM m) => HTMLInputElement -> m ValidityState
 getValidityUnchecked self
@@ -548,6 +641,14 @@
 getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.labels Mozilla HTMLInputElement.labels documentation> 
+getLabelsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLInputElement -> m NodeList
+getLabelsUnsafe self
+  = liftDOM
+      (((self ^. js "labels") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.labels Mozilla HTMLInputElement.labels documentation> 
 getLabelsUnchecked ::
                    (MonadDOM m) => HTMLInputElement -> m NodeList
 getLabelsUnchecked self
@@ -643,6 +744,15 @@
                     HTMLInputElement -> m (Maybe result)
 getAutocapitalize self
   = liftDOM ((self ^. js "autocapitalize") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocapitalize Mozilla HTMLInputElement.autocapitalize documentation> 
+getAutocapitalizeUnsafe ::
+                        (MonadDOM m, HasCallStack, FromJSString result) =>
+                          HTMLInputElement -> m result
+getAutocapitalizeUnsafe self
+  = liftDOM
+      (((self ^. js "autocapitalize") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocapitalize Mozilla HTMLInputElement.autocapitalize documentation> 
 getAutocapitalizeUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLKeygenElement.hs b/src/JSDOM/Generated/HTMLKeygenElement.hs
--- a/src/JSDOM/Generated/HTMLKeygenElement.hs
+++ b/src/JSDOM/Generated/HTMLKeygenElement.hs
@@ -1,15 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLKeygenElement
        (checkValidity, checkValidity_, setCustomValidity, setAutofocus,
         getAutofocus, setChallenge, getChallenge, setDisabled, getDisabled,
-        getForm, getFormUnchecked, setKeytype, getKeytype, setName,
-        getName, getType, getWillValidate, getValidity,
-        getValidityUnchecked, getValidationMessage, getLabels,
-        getLabelsUnchecked, HTMLKeygenElement, castToHTMLKeygenElement,
-        gTypeHTMLKeygenElement)
+        getForm, getFormUnsafe, getFormUnchecked, setKeytype, getKeytype,
+        setName, getName, getType, getWillValidate, getValidity,
+        getValidityUnsafe, getValidityUnchecked, getValidationMessage,
+        getLabels, getLabelsUnsafe, getLabelsUnchecked,
+        HTMLKeygenElement(..), gTypeHTMLKeygenElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
 checkValidity :: (MonadDOM m) => HTMLKeygenElement -> m Bool
@@ -75,6 +89,15 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.form Mozilla HTMLKeygenElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLKeygenElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.form Mozilla HTMLKeygenElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLKeygenElement -> m HTMLFormElement
 getFormUnchecked self
@@ -117,6 +140,14 @@
 getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validity Mozilla HTMLKeygenElement.validity documentation> 
+getValidityUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLKeygenElement -> m ValidityState
+getValidityUnsafe self
+  = liftDOM
+      (((self ^. js "validity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validity Mozilla HTMLKeygenElement.validity documentation> 
 getValidityUnchecked ::
                      (MonadDOM m) => HTMLKeygenElement -> m ValidityState
 getValidityUnchecked self
@@ -132,6 +163,14 @@
 getLabels ::
           (MonadDOM m) => HTMLKeygenElement -> m (Maybe NodeList)
 getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.labels Mozilla HTMLKeygenElement.labels documentation> 
+getLabelsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLKeygenElement -> m NodeList
+getLabelsUnsafe self
+  = liftDOM
+      (((self ^. js "labels") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.labels Mozilla HTMLKeygenElement.labels documentation> 
 getLabelsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLLIElement.hs b/src/JSDOM/Generated/HTMLLIElement.hs
--- a/src/JSDOM/Generated/HTMLLIElement.hs
+++ b/src/JSDOM/Generated/HTMLLIElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLLIElement
-       (setType, getType, setValue, getValue, HTMLLIElement,
-        castToHTMLLIElement, gTypeHTMLLIElement)
+       (setType, getType, setValue, getValue, HTMLLIElement(..),
+        gTypeHTMLLIElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
 setType ::
diff --git a/src/JSDOM/Generated/HTMLLabelElement.hs b/src/JSDOM/Generated/HTMLLabelElement.hs
--- a/src/JSDOM/Generated/HTMLLabelElement.hs
+++ b/src/JSDOM/Generated/HTMLLabelElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLLabelElement
-       (getForm, getFormUnchecked, setHtmlFor, getHtmlFor, getControl,
-        getControlUnchecked, HTMLLabelElement, castToHTMLLabelElement,
-        gTypeHTMLLabelElement)
+       (getForm, getFormUnsafe, getFormUnchecked, setHtmlFor, getHtmlFor,
+        getControl, getControlUnsafe, getControlUnchecked,
+        HTMLLabelElement(..), gTypeHTMLLabelElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
 getForm ::
@@ -23,6 +37,14 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) => HTMLLabelElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLLabelElement -> m HTMLFormElement
 getFormUnchecked self
@@ -43,6 +65,14 @@
 getControl ::
            (MonadDOM m) => HTMLLabelElement -> m (Maybe HTMLElement)
 getControl self = liftDOM ((self ^. js "control") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.control Mozilla HTMLLabelElement.control documentation> 
+getControlUnsafe ::
+                 (MonadDOM m, HasCallStack) => HTMLLabelElement -> m HTMLElement
+getControlUnsafe self
+  = liftDOM
+      (((self ^. js "control") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.control Mozilla HTMLLabelElement.control documentation> 
 getControlUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLLegendElement.hs b/src/JSDOM/Generated/HTMLLegendElement.hs
--- a/src/JSDOM/Generated/HTMLLegendElement.hs
+++ b/src/JSDOM/Generated/HTMLLegendElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLLegendElement
-       (getForm, getFormUnchecked, setAlign, getAlign, HTMLLegendElement,
-        castToHTMLLegendElement, gTypeHTMLLegendElement)
+       (getForm, getFormUnsafe, getFormUnchecked, setAlign, getAlign,
+        HTMLLegendElement(..), gTypeHTMLLegendElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
 getForm ::
         (MonadDOM m) => HTMLLegendElement -> m (Maybe HTMLFormElement)
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLLegendElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
 getFormUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLLinkElement.hs b/src/JSDOM/Generated/HTMLLinkElement.hs
--- a/src/JSDOM/Generated/HTMLLinkElement.hs
+++ b/src/JSDOM/Generated/HTMLLinkElement.hs
@@ -1,14 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLLinkElement
        (setDisabled, getDisabled, setCharset, getCharset, setHref,
         getHref, setHreflang, getHreflang, setMedia, getMedia, setRel,
-        getRel, setRev, getRev, setSizes, getSizes, getSizesUnchecked,
-        setTarget, getTarget, setType, getType, getSheet,
-        getSheetUnchecked, getRelList, getRelListUnchecked,
-        HTMLLinkElement, castToHTMLLinkElement, gTypeHTMLLinkElement)
+        getRel, setRev, getRev, setSizes, getSizes, getSizesUnsafe,
+        getSizesUnchecked, setTarget, getTarget, setType, getType,
+        getSheet, getSheetUnsafe, getSheetUnchecked, getRelList,
+        getRelListUnsafe, getRelListUnchecked, HTMLLinkElement(..),
+        gTypeHTMLLinkElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
 setDisabled :: (MonadDOM m) => HTMLLinkElement -> Bool -> m ()
@@ -105,6 +120,15 @@
 getSizes self = liftDOM ((self ^. js "sizes") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
+getSizesUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 HTMLLinkElement -> m DOMSettableTokenList
+getSizesUnsafe self
+  = liftDOM
+      (((self ^. js "sizes") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
 getSizesUnchecked ::
                   (MonadDOM m) => HTMLLinkElement -> m DOMSettableTokenList
 getSizesUnchecked self
@@ -136,6 +160,14 @@
 getSheet self = liftDOM ((self ^. js "sheet") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sheet Mozilla HTMLLinkElement.sheet documentation> 
+getSheetUnsafe ::
+               (MonadDOM m, HasCallStack) => HTMLLinkElement -> m StyleSheet
+getSheetUnsafe self
+  = liftDOM
+      (((self ^. js "sheet") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sheet Mozilla HTMLLinkElement.sheet documentation> 
 getSheetUnchecked ::
                   (MonadDOM m) => HTMLLinkElement -> m StyleSheet
 getSheetUnchecked self
@@ -145,6 +177,14 @@
 getRelList ::
            (MonadDOM m) => HTMLLinkElement -> m (Maybe DOMTokenList)
 getRelList self = liftDOM ((self ^. js "relList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.relList Mozilla HTMLLinkElement.relList documentation> 
+getRelListUnsafe ::
+                 (MonadDOM m, HasCallStack) => HTMLLinkElement -> m DOMTokenList
+getRelListUnsafe self
+  = liftDOM
+      (((self ^. js "relList") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.relList Mozilla HTMLLinkElement.relList documentation> 
 getRelListUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLMapElement.hs b/src/JSDOM/Generated/HTMLMapElement.hs
--- a/src/JSDOM/Generated/HTMLMapElement.hs
+++ b/src/JSDOM/Generated/HTMLMapElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLMapElement
-       (getAreas, getAreasUnchecked, setName, getName, HTMLMapElement,
-        castToHTMLMapElement, gTypeHTMLMapElement)
+       (getAreas, getAreasUnsafe, getAreasUnchecked, setName, getName,
+        HTMLMapElement(..), gTypeHTMLMapElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
 getAreas ::
          (MonadDOM m) => HTMLMapElement -> m (Maybe HTMLCollection)
 getAreas self = liftDOM ((self ^. js "areas") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
+getAreasUnsafe ::
+               (MonadDOM m, HasCallStack) => HTMLMapElement -> m HTMLCollection
+getAreasUnsafe self
+  = liftDOM
+      (((self ^. js "areas") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
 getAreasUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLMarqueeElement.hs b/src/JSDOM/Generated/HTMLMarqueeElement.hs
--- a/src/JSDOM/Generated/HTMLMarqueeElement.hs
+++ b/src/JSDOM/Generated/HTMLMarqueeElement.hs
@@ -1,14 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLMarqueeElement
        (start, stop, setBehavior, getBehavior, setBgColor, getBgColor,
         setDirection, getDirection, setHeight, getHeight, setHspace,
         getHspace, setLoop, getLoop, setScrollAmount, getScrollAmount,
         setScrollDelay, getScrollDelay, setTrueSpeed, getTrueSpeed,
-        setVspace, getVspace, setWidth, getWidth, HTMLMarqueeElement,
-        castToHTMLMarqueeElement, gTypeHTMLMarqueeElement)
+        setVspace, getVspace, setWidth, getWidth, HTMLMarqueeElement(..),
+        gTypeHTMLMarqueeElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.start Mozilla HTMLMarqueeElement.start documentation> 
 start :: (MonadDOM m) => HTMLMarqueeElement -> m ()
diff --git a/src/JSDOM/Generated/HTMLMediaElement.hs b/src/JSDOM/Generated/HTMLMediaElement.hs
--- a/src/JSDOM/Generated/HTMLMediaElement.hs
+++ b/src/JSDOM/Generated/HTMLMediaElement.hs
@@ -1,44 +1,52 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLMediaElement
        (load, canPlayType, canPlayType_, play, pause, fastSeek,
         webkitGenerateKeyRequest, webkitAddKey, webkitCancelKeyRequest,
         webkitSetMediaKeys, addTextTrack, addTextTrack_,
-        addTextTrackUnchecked, getVideoPlaybackQuality,
-        getVideoPlaybackQuality_, getVideoPlaybackQualityUnchecked,
-        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, getError,
+        addTextTrackUnsafe, addTextTrackUnchecked, getVideoPlaybackQuality,
+        getVideoPlaybackQuality_, getVideoPlaybackQualityUnsafe,
+        getVideoPlaybackQualityUnchecked, 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, getError, getErrorUnsafe,
         getErrorUnchecked, setSrc, getSrc, getCurrentSrc, getNetworkState,
-        setPreload, getPreload, getBuffered, getBufferedUnchecked,
-        getReadyState, getSeeking, setCurrentTime, getCurrentTime,
-        getDuration, getPaused, setDefaultPlaybackRate,
+        setPreload, getPreload, getBuffered, getBufferedUnsafe,
+        getBufferedUnchecked, getReadyState, getSeeking, setCurrentTime,
+        getCurrentTime, getDuration, getPaused, setDefaultPlaybackRate,
         getDefaultPlaybackRate, setPlaybackRate, getPlaybackRate,
-        getPlayed, getPlayedUnchecked, getSeekable, getSeekableUnchecked,
-        getEnded, setAutoplay, getAutoplay, setLoop, getLoop, setControls,
-        getControls, setVolume, getVolume, setMuted, getMuted,
-        setDefaultMuted, getDefaultMuted, emptied, loadedMetadata,
-        loadedData, canPlay, canPlayThrough, playing, ended, waiting,
-        durationChange, timeUpdate, playEvent, pauseEvent, rateChange,
-        volumeChange, setWebkitPreservesPitch, getWebkitPreservesPitch,
-        getWebkitHasClosedCaptions, setWebkitClosedCaptionsVisible,
-        getWebkitClosedCaptionsVisible, getWebkitAudioDecodedByteCount,
-        getWebkitVideoDecodedByteCount, webKitKeyAdded, webKitKeyError,
-        webKitKeyMessage, webKitNeedKey, getWebkitKeys,
-        getWebkitKeysUnchecked, getAudioTracks, getAudioTracksUnchecked,
-        getTextTracks, getTextTracksUnchecked, getVideoTracks,
-        getVideoTracksUnchecked, setMediaGroup, getMediaGroup,
+        getPlayed, getPlayedUnsafe, getPlayedUnchecked, getSeekable,
+        getSeekableUnsafe, getSeekableUnchecked, getEnded, setAutoplay,
+        getAutoplay, setLoop, getLoop, setControls, getControls, setVolume,
+        getVolume, setMuted, getMuted, setDefaultMuted, getDefaultMuted,
+        emptied, loadedMetadata, loadedData, canPlay, canPlayThrough,
+        playing, ended, waiting, durationChange, timeUpdate, playEvent,
+        pauseEvent, rateChange, volumeChange, setWebkitPreservesPitch,
+        getWebkitPreservesPitch, getWebkitHasClosedCaptions,
+        setWebkitClosedCaptionsVisible, getWebkitClosedCaptionsVisible,
+        getWebkitAudioDecodedByteCount, getWebkitVideoDecodedByteCount,
+        webKitKeyAdded, webKitKeyError, webKitKeyMessage, webKitNeedKey,
+        getWebkitKeys, getWebkitKeysUnsafe, getWebkitKeysUnchecked,
+        getAudioTracks, getAudioTracksUnsafe, getAudioTracksUnchecked,
+        getTextTracks, getTextTracksUnsafe, getTextTracksUnchecked,
+        getVideoTracks, getVideoTracksUnsafe, getVideoTracksUnchecked,
+        setMediaGroup, getMediaGroup, getMediaGroupUnsafe,
         getMediaGroupUnchecked, setController, getController,
-        getControllerUnchecked, getWebkitCurrentPlaybackTargetIsWireless,
+        getControllerUnsafe, getControllerUnchecked,
+        getWebkitCurrentPlaybackTargetIsWireless,
         webKitCurrentPlaybackTargetIsWirelessChanged,
         webKitPlaybackTargetAvailabilityChanged, setSrcObject,
-        getSrcObject, getSrcObjectUnchecked, HTMLMediaElement,
-        castToHTMLMediaElement, gTypeHTMLMediaElement, IsHTMLMediaElement,
+        getSrcObject, getSrcObjectUnsafe, getSrcObjectUnchecked,
+        HTMLMediaElement(..), gTypeHTMLMediaElement, IsHTMLMediaElement,
         toHTMLMediaElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -49,6 +57,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.load Mozilla HTMLMediaElement.load documentation> 
 load :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
@@ -162,6 +180,18 @@
             [toJSVal kind, toJSVal label, toJSVal language]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
+addTextTrackUnsafe ::
+                   (MonadDOM m, IsHTMLMediaElement self, ToJSString kind,
+                    ToJSString label, ToJSString language, HasCallStack) =>
+                     self -> kind -> label -> language -> m TextTrack
+addTextTrackUnsafe self kind label language
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. jsf "addTextTrack"
+           [toJSVal kind, toJSVal label, toJSVal language])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
 addTextTrackUnchecked ::
                       (MonadDOM m, IsHTMLMediaElement self, ToJSString kind,
                        ToJSString label, ToJSString language) =>
@@ -190,6 +220,16 @@
          ((toHTMLMediaElement self) ^. jsf "getVideoPlaybackQuality" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
+getVideoPlaybackQualityUnsafe ::
+                              (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                                self -> m VideoPlaybackQuality
+getVideoPlaybackQualityUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. jsf "getVideoPlaybackQuality" ())
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
 getVideoPlaybackQualityUnchecked ::
                                  (MonadDOM m, IsHTMLMediaElement self) =>
                                    self -> m VideoPlaybackQuality
@@ -224,6 +264,15 @@
   = liftDOM (((toHTMLMediaElement self) ^. js "error") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.error Mozilla HTMLMediaElement.error documentation> 
+getErrorUnsafe ::
+               (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                 self -> m MediaError
+getErrorUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "error") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.error Mozilla HTMLMediaElement.error documentation> 
 getErrorUnchecked ::
                   (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaError
 getErrorUnchecked self
@@ -288,6 +337,15 @@
       (((toHTMLMediaElement self) ^. js "buffered") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.buffered Mozilla HTMLMediaElement.buffered documentation> 
+getBufferedUnsafe ::
+                  (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                    self -> m TimeRanges
+getBufferedUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "buffered") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.buffered Mozilla HTMLMediaElement.buffered documentation> 
 getBufferedUnchecked ::
                      (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
 getBufferedUnchecked self
@@ -377,6 +435,15 @@
       (((toHTMLMediaElement self) ^. js "played") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.played Mozilla HTMLMediaElement.played documentation> 
+getPlayedUnsafe ::
+                (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                  self -> m TimeRanges
+getPlayedUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "played") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.played Mozilla HTMLMediaElement.played documentation> 
 getPlayedUnchecked ::
                    (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
 getPlayedUnchecked self
@@ -392,6 +459,15 @@
       (((toHTMLMediaElement self) ^. js "seekable") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seekable Mozilla HTMLMediaElement.seekable documentation> 
+getSeekableUnsafe ::
+                  (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                    self -> m TimeRanges
+getSeekableUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "seekable") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seekable Mozilla HTMLMediaElement.seekable documentation> 
 getSeekableUnchecked ::
                      (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
 getSeekableUnchecked self
@@ -656,6 +732,15 @@
       (((toHTMLMediaElement self) ^. js "webkitKeys") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitKeys Mozilla HTMLMediaElement.webkitKeys documentation> 
+getWebkitKeysUnsafe ::
+                    (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                      self -> m MediaKeys
+getWebkitKeysUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "webkitKeys") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitKeys Mozilla HTMLMediaElement.webkitKeys documentation> 
 getWebkitKeysUnchecked ::
                        (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaKeys
 getWebkitKeysUnchecked self
@@ -672,6 +757,15 @@
       (((toHTMLMediaElement self) ^. js "audioTracks") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.audioTracks Mozilla HTMLMediaElement.audioTracks documentation> 
+getAudioTracksUnsafe ::
+                     (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                       self -> m AudioTrackList
+getAudioTracksUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "audioTracks") >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.audioTracks Mozilla HTMLMediaElement.audioTracks documentation> 
 getAudioTracksUnchecked ::
                         (MonadDOM m, IsHTMLMediaElement self) => self -> m AudioTrackList
 getAudioTracksUnchecked self
@@ -688,6 +782,15 @@
       (((toHTMLMediaElement self) ^. js "textTracks") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.textTracks Mozilla HTMLMediaElement.textTracks documentation> 
+getTextTracksUnsafe ::
+                    (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                      self -> m TextTrackList
+getTextTracksUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "textTracks") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.textTracks Mozilla HTMLMediaElement.textTracks documentation> 
 getTextTracksUnchecked ::
                        (MonadDOM m, IsHTMLMediaElement self) => self -> m TextTrackList
 getTextTracksUnchecked self
@@ -704,6 +807,15 @@
       (((toHTMLMediaElement self) ^. js "videoTracks") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.videoTracks Mozilla HTMLMediaElement.videoTracks documentation> 
+getVideoTracksUnsafe ::
+                     (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                       self -> m VideoTrackList
+getVideoTracksUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "videoTracks") >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.videoTracks Mozilla HTMLMediaElement.videoTracks documentation> 
 getVideoTracksUnchecked ::
                         (MonadDOM m, IsHTMLMediaElement self) => self -> m VideoTrackList
 getVideoTracksUnchecked self
@@ -729,6 +841,17 @@
          fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
+getMediaGroupUnsafe ::
+                    (MonadDOM m, IsHTMLMediaElement self, HasCallStack,
+                     FromJSString result) =>
+                      self -> m result
+getMediaGroupUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "mediaGroup") >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
 getMediaGroupUnchecked ::
                        (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
                          self -> m result
@@ -754,6 +877,15 @@
       (((toHTMLMediaElement self) ^. js "controller") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
+getControllerUnsafe ::
+                    (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                      self -> m MediaController
+getControllerUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "controller") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
 getControllerUnchecked ::
                        (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaController
 getControllerUnchecked self
@@ -801,6 +933,15 @@
 getSrcObject self
   = liftDOM
       (((toHTMLMediaElement self) ^. js "srcObject") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+getSrcObjectUnsafe ::
+                   (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
+                     self -> m MediaStream
+getSrcObjectUnsafe self
+  = liftDOM
+      ((((toHTMLMediaElement self) ^. js "srcObject") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
 getSrcObjectUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLMenuElement.hs b/src/JSDOM/Generated/HTMLMenuElement.hs
--- a/src/JSDOM/Generated/HTMLMenuElement.hs
+++ b/src/JSDOM/Generated/HTMLMenuElement.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLMenuElement
-       (setCompact, getCompact, HTMLMenuElement, castToHTMLMenuElement,
-        gTypeHTMLMenuElement)
+       (setCompact, getCompact, HTMLMenuElement(..), gTypeHTMLMenuElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
 setCompact :: (MonadDOM m) => HTMLMenuElement -> Bool -> m ()
diff --git a/src/JSDOM/Generated/HTMLMetaElement.hs b/src/JSDOM/Generated/HTMLMetaElement.hs
--- a/src/JSDOM/Generated/HTMLMetaElement.hs
+++ b/src/JSDOM/Generated/HTMLMetaElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLMetaElement
        (setContent, getContent, setHttpEquiv, getHttpEquiv, setName,
-        getName, setScheme, getScheme, HTMLMetaElement,
-        castToHTMLMetaElement, gTypeHTMLMetaElement)
+        getName, setScheme, getScheme, HTMLMetaElement(..),
+        gTypeHTMLMetaElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
 setContent ::
diff --git a/src/JSDOM/Generated/HTMLMeterElement.hs b/src/JSDOM/Generated/HTMLMeterElement.hs
--- a/src/JSDOM/Generated/HTMLMeterElement.hs
+++ b/src/JSDOM/Generated/HTMLMeterElement.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLMeterElement
        (setValue, getValue, setMin, getMin, setMax, getMax, setLow,
         getLow, setHigh, getHigh, setOptimum, getOptimum, getLabels,
-        getLabelsUnchecked, HTMLMeterElement, castToHTMLMeterElement,
+        getLabelsUnsafe, getLabelsUnchecked, HTMLMeterElement(..),
         gTypeHTMLMeterElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
 setValue :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
@@ -69,6 +83,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.labels Mozilla HTMLMeterElement.labels documentation> 
 getLabels :: (MonadDOM m) => HTMLMeterElement -> m (Maybe NodeList)
 getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.labels Mozilla HTMLMeterElement.labels documentation> 
+getLabelsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLMeterElement -> m NodeList
+getLabelsUnsafe self
+  = liftDOM
+      (((self ^. js "labels") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.labels Mozilla HTMLMeterElement.labels documentation> 
 getLabelsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLModElement.hs b/src/JSDOM/Generated/HTMLModElement.hs
--- a/src/JSDOM/Generated/HTMLModElement.hs
+++ b/src/JSDOM/Generated/HTMLModElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLModElement
-       (setCite, getCite, setDateTime, getDateTime, HTMLModElement,
-        castToHTMLModElement, gTypeHTMLModElement)
+       (setCite, getCite, setDateTime, getDateTime, HTMLModElement(..),
+        gTypeHTMLModElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
 setCite ::
diff --git a/src/JSDOM/Generated/HTMLOListElement.hs b/src/JSDOM/Generated/HTMLOListElement.hs
--- a/src/JSDOM/Generated/HTMLOListElement.hs
+++ b/src/JSDOM/Generated/HTMLOListElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLOListElement
        (setCompact, getCompact, setStart, getStart, setReversed,
-        getReversed, setType, getType, HTMLOListElement,
-        castToHTMLOListElement, gTypeHTMLOListElement)
+        getReversed, setType, getType, HTMLOListElement(..),
+        gTypeHTMLOListElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
 setCompact :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
diff --git a/src/JSDOM/Generated/HTMLObjectElement.hs b/src/JSDOM/Generated/HTMLObjectElement.hs
--- a/src/JSDOM/Generated/HTMLObjectElement.hs
+++ b/src/JSDOM/Generated/HTMLObjectElement.hs
@@ -1,19 +1,24 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLObjectElement
        (checkValidity, checkValidity_, setCustomValidity, getSVGDocument,
-        getSVGDocument_, getSVGDocumentUnchecked, getForm,
-        getFormUnchecked, setCode, getCode, setAlign, getAlign, setArchive,
-        getArchive, setBorder, getBorder, setCodeBase, getCodeBase,
-        setCodeType, getCodeType, setData, getData, setDeclare, getDeclare,
-        setHeight, getHeight, setHspace, getHspace, setName, getName,
-        setStandby, getStandby, setType, getType, setUseMap, getUseMap,
-        setVspace, getVspace, setWidth, getWidth, getWillValidate,
-        getValidity, getValidityUnchecked, getValidationMessage,
-        getContentDocument, getContentDocumentUnchecked, HTMLObjectElement,
-        castToHTMLObjectElement, gTypeHTMLObjectElement)
+        getSVGDocument_, getSVGDocumentUnsafe, getSVGDocumentUnchecked,
+        getForm, getFormUnsafe, getFormUnchecked, setCode, getCode,
+        setAlign, getAlign, setArchive, getArchive, setBorder, getBorder,
+        setCodeBase, getCodeBase, setCodeType, getCodeType, setData,
+        getData, setDeclare, getDeclare, setHeight, getHeight, setHspace,
+        getHspace, setName, getName, setStandby, getStandby, setType,
+        getType, setUseMap, getUseMap, setVspace, getVspace, setWidth,
+        getWidth, getWillValidate, getValidity, getValidityUnsafe,
+        getValidityUnchecked, getValidationMessage, getContentDocument,
+        getContentDocumentUnsafe, getContentDocumentUnchecked,
+        HTMLObjectElement(..), gTypeHTMLObjectElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -24,6 +29,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
 checkValidity :: (MonadDOM m) => HTMLObjectElement -> m Bool
@@ -54,6 +69,14 @@
   = liftDOM (void (self ^. jsf "getSVGDocument" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
+getSVGDocumentUnsafe ::
+                     (MonadDOM m, HasCallStack) => HTMLObjectElement -> m SVGDocument
+getSVGDocumentUnsafe self
+  = liftDOM
+      (((self ^. jsf "getSVGDocument" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
 getSVGDocumentUnchecked ::
                         (MonadDOM m) => HTMLObjectElement -> m SVGDocument
 getSVGDocumentUnchecked self
@@ -66,6 +89,15 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.form Mozilla HTMLObjectElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLObjectElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.form Mozilla HTMLObjectElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLObjectElement -> m HTMLFormElement
 getFormUnchecked self
@@ -249,6 +281,14 @@
 getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validity Mozilla HTMLObjectElement.validity documentation> 
+getValidityUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLObjectElement -> m ValidityState
+getValidityUnsafe self
+  = liftDOM
+      (((self ^. js "validity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validity Mozilla HTMLObjectElement.validity documentation> 
 getValidityUnchecked ::
                      (MonadDOM m) => HTMLObjectElement -> m ValidityState
 getValidityUnchecked self
@@ -265,6 +305,14 @@
                    (MonadDOM m) => HTMLObjectElement -> m (Maybe Document)
 getContentDocument self
   = liftDOM ((self ^. js "contentDocument") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.contentDocument Mozilla HTMLObjectElement.contentDocument documentation> 
+getContentDocumentUnsafe ::
+                         (MonadDOM m, HasCallStack) => HTMLObjectElement -> m Document
+getContentDocumentUnsafe self
+  = liftDOM
+      (((self ^. js "contentDocument") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.contentDocument Mozilla HTMLObjectElement.contentDocument documentation> 
 getContentDocumentUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLOptGroupElement.hs b/src/JSDOM/Generated/HTMLOptGroupElement.hs
--- a/src/JSDOM/Generated/HTMLOptGroupElement.hs
+++ b/src/JSDOM/Generated/HTMLOptGroupElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLOptGroupElement
-       (setDisabled, getDisabled, setLabel, getLabel, HTMLOptGroupElement,
-        castToHTMLOptGroupElement, gTypeHTMLOptGroupElement)
+       (setDisabled, getDisabled, setLabel, getLabel,
+        HTMLOptGroupElement(..), gTypeHTMLOptGroupElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
 setDisabled :: (MonadDOM m) => HTMLOptGroupElement -> Bool -> m ()
diff --git a/src/JSDOM/Generated/HTMLOptionElement.hs b/src/JSDOM/Generated/HTMLOptionElement.hs
--- a/src/JSDOM/Generated/HTMLOptionElement.hs
+++ b/src/JSDOM/Generated/HTMLOptionElement.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLOptionElement
-       (setDisabled, getDisabled, getForm, getFormUnchecked, setLabel,
-        getLabel, setDefaultSelected, getDefaultSelected, setSelected,
-        getSelected, setValue, getValue, setText, getText, getIndex,
-        HTMLOptionElement, castToHTMLOptionElement, gTypeHTMLOptionElement)
+       (setDisabled, getDisabled, getForm, getFormUnsafe,
+        getFormUnchecked, setLabel, getLabel, setDefaultSelected,
+        getDefaultSelected, setSelected, getSelected, setValue, getValue,
+        setText, getText, getIndex, HTMLOptionElement(..),
+        gTypeHTMLOptionElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
 setDisabled :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
@@ -31,6 +46,15 @@
 getForm ::
         (MonadDOM m) => HTMLOptionElement -> m (Maybe HTMLFormElement)
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.form Mozilla HTMLOptionElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLOptionElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.form Mozilla HTMLOptionElement.form documentation> 
 getFormUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLOptionsCollection.hs b/src/JSDOM/Generated/HTMLOptionsCollection.hs
--- a/src/JSDOM/Generated/HTMLOptionsCollection.hs
+++ b/src/JSDOM/Generated/HTMLOptionsCollection.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLOptionsCollection
-       (namedItem, namedItem_, namedItemUnchecked, addBefore, add, remove,
-        setSelectedIndex, getSelectedIndex, setLength, getLength,
-        HTMLOptionsCollection, castToHTMLOptionsCollection,
+       (namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        addBefore, add, remove, setSelectedIndex, getSelectedIndex,
+        setLength, getLength, HTMLOptionsCollection(..),
         gTypeHTMLOptionsCollection)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
 namedItem ::
@@ -31,6 +45,15 @@
              HTMLOptionsCollection -> name -> m ()
 namedItem_ self name
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  HTMLOptionsCollection -> name -> m Node
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
 namedItemUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLOutputElement.hs b/src/JSDOM/Generated/HTMLOutputElement.hs
--- a/src/JSDOM/Generated/HTMLOutputElement.hs
+++ b/src/JSDOM/Generated/HTMLOutputElement.hs
@@ -1,15 +1,21 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLOutputElement
        (checkValidity, checkValidity_, setCustomValidity, getHtmlFor,
-        getHtmlForUnchecked, getForm, getFormUnchecked, setName, getName,
-        getType, setDefaultValue, getDefaultValue,
-        getDefaultValueUnchecked, setValue, getValue, getValueUnchecked,
-        getWillValidate, getValidity, getValidityUnchecked,
-        getValidationMessage, getLabels, getLabelsUnchecked,
-        HTMLOutputElement, castToHTMLOutputElement, gTypeHTMLOutputElement)
+        getHtmlForUnsafe, getHtmlForUnchecked, getForm, getFormUnsafe,
+        getFormUnchecked, setName, getName, getType, setDefaultValue,
+        getDefaultValue, getDefaultValueUnsafe, getDefaultValueUnchecked,
+        setValue, getValue, getValueUnsafe, getValueUnchecked,
+        getWillValidate, getValidity, getValidityUnsafe,
+        getValidityUnchecked, getValidationMessage, getLabels,
+        getLabelsUnsafe, getLabelsUnchecked, HTMLOutputElement(..),
+        gTypeHTMLOutputElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +26,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
 checkValidity :: (MonadDOM m) => HTMLOutputElement -> m Bool
@@ -44,6 +60,15 @@
 getHtmlFor self = liftDOM ((self ^. js "htmlFor") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.htmlFor Mozilla HTMLOutputElement.htmlFor documentation> 
+getHtmlForUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   HTMLOutputElement -> m DOMSettableTokenList
+getHtmlForUnsafe self
+  = liftDOM
+      (((self ^. js "htmlFor") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.htmlFor Mozilla HTMLOutputElement.htmlFor documentation> 
 getHtmlForUnchecked ::
                     (MonadDOM m) => HTMLOutputElement -> m DOMSettableTokenList
 getHtmlForUnchecked self
@@ -55,6 +80,15 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.form Mozilla HTMLOutputElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLOutputElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.form Mozilla HTMLOutputElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLOutputElement -> m HTMLFormElement
 getFormUnchecked self
@@ -90,6 +124,15 @@
   = liftDOM ((self ^. js "defaultValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
+getDefaultValueUnsafe ::
+                      (MonadDOM m, HasCallStack, FromJSString result) =>
+                        HTMLOutputElement -> m result
+getDefaultValueUnsafe self
+  = liftDOM
+      (((self ^. js "defaultValue") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
 getDefaultValueUnchecked ::
                          (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
 getDefaultValueUnchecked self
@@ -109,6 +152,15 @@
   = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
+getValueUnsafe ::
+               (MonadDOM m, HasCallStack, FromJSString result) =>
+                 HTMLOutputElement -> m result
+getValueUnsafe self
+  = liftDOM
+      (((self ^. js "value") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
 getValueUnchecked ::
                   (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
 getValueUnchecked self
@@ -125,6 +177,14 @@
 getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validity Mozilla HTMLOutputElement.validity documentation> 
+getValidityUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLOutputElement -> m ValidityState
+getValidityUnsafe self
+  = liftDOM
+      (((self ^. js "validity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validity Mozilla HTMLOutputElement.validity documentation> 
 getValidityUnchecked ::
                      (MonadDOM m) => HTMLOutputElement -> m ValidityState
 getValidityUnchecked self
@@ -140,6 +200,14 @@
 getLabels ::
           (MonadDOM m) => HTMLOutputElement -> m (Maybe NodeList)
 getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.labels Mozilla HTMLOutputElement.labels documentation> 
+getLabelsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLOutputElement -> m NodeList
+getLabelsUnsafe self
+  = liftDOM
+      (((self ^. js "labels") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.labels Mozilla HTMLOutputElement.labels documentation> 
 getLabelsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLParagraphElement.hs b/src/JSDOM/Generated/HTMLParagraphElement.hs
--- a/src/JSDOM/Generated/HTMLParagraphElement.hs
+++ b/src/JSDOM/Generated/HTMLParagraphElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLParagraphElement
-       (setAlign, getAlign, HTMLParagraphElement,
-        castToHTMLParagraphElement, gTypeHTMLParagraphElement)
+       (setAlign, getAlign, HTMLParagraphElement(..),
+        gTypeHTMLParagraphElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
 setAlign ::
diff --git a/src/JSDOM/Generated/HTMLParamElement.hs b/src/JSDOM/Generated/HTMLParamElement.hs
--- a/src/JSDOM/Generated/HTMLParamElement.hs
+++ b/src/JSDOM/Generated/HTMLParamElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLParamElement
        (setName, getName, setType, getType, setValue, getValue,
-        setValueType, getValueType, HTMLParamElement,
-        castToHTMLParamElement, gTypeHTMLParamElement)
+        setValueType, getValueType, HTMLParamElement(..),
+        gTypeHTMLParamElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
 setName ::
diff --git a/src/JSDOM/Generated/HTMLPreElement.hs b/src/JSDOM/Generated/HTMLPreElement.hs
--- a/src/JSDOM/Generated/HTMLPreElement.hs
+++ b/src/JSDOM/Generated/HTMLPreElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLPreElement
-       (setWidth, getWidth, setWrap, getWrap, HTMLPreElement,
-        castToHTMLPreElement, gTypeHTMLPreElement)
+       (setWidth, getWidth, setWrap, getWrap, HTMLPreElement(..),
+        gTypeHTMLPreElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
 setWidth :: (MonadDOM m) => HTMLPreElement -> Int -> m ()
diff --git a/src/JSDOM/Generated/HTMLProgressElement.hs b/src/JSDOM/Generated/HTMLProgressElement.hs
--- a/src/JSDOM/Generated/HTMLProgressElement.hs
+++ b/src/JSDOM/Generated/HTMLProgressElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLProgressElement
        (setValue, getValue, setMax, getMax, getPosition, getLabels,
-        getLabelsUnchecked, HTMLProgressElement, castToHTMLProgressElement,
+        getLabelsUnsafe, getLabelsUnchecked, HTMLProgressElement(..),
         gTypeHTMLProgressElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
 setValue :: (MonadDOM m) => HTMLProgressElement -> Double -> m ()
@@ -42,6 +56,14 @@
 getLabels ::
           (MonadDOM m) => HTMLProgressElement -> m (Maybe NodeList)
 getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.labels Mozilla HTMLProgressElement.labels documentation> 
+getLabelsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLProgressElement -> m NodeList
+getLabelsUnsafe self
+  = liftDOM
+      (((self ^. js "labels") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.labels Mozilla HTMLProgressElement.labels documentation> 
 getLabelsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLQuoteElement.hs b/src/JSDOM/Generated/HTMLQuoteElement.hs
--- a/src/JSDOM/Generated/HTMLQuoteElement.hs
+++ b/src/JSDOM/Generated/HTMLQuoteElement.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLQuoteElement
-       (setCite, getCite, HTMLQuoteElement, castToHTMLQuoteElement,
-        gTypeHTMLQuoteElement)
+       (setCite, getCite, HTMLQuoteElement(..), gTypeHTMLQuoteElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
 setCite ::
diff --git a/src/JSDOM/Generated/HTMLScriptElement.hs b/src/JSDOM/Generated/HTMLScriptElement.hs
--- a/src/JSDOM/Generated/HTMLScriptElement.hs
+++ b/src/JSDOM/Generated/HTMLScriptElement.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLScriptElement
-       (setText, getText, getTextUnchecked, setHtmlFor, getHtmlFor,
-        setEvent, getEvent, setCharset, getCharset, setAsync, getAsync,
-        setDefer, getDefer, setSrc, getSrc, setType, getType,
+       (setText, getText, getTextUnsafe, getTextUnchecked, setHtmlFor,
+        getHtmlFor, setEvent, getEvent, setCharset, getCharset, setAsync,
+        getAsync, setDefer, getDefer, setSrc, getSrc, setType, getType,
         setCrossOrigin, getCrossOrigin, setNonce, getNonce,
-        HTMLScriptElement, castToHTMLScriptElement, gTypeHTMLScriptElement)
+        HTMLScriptElement(..), gTypeHTMLScriptElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
 setText ::
@@ -30,6 +44,15 @@
         (MonadDOM m, FromJSString result) =>
           HTMLScriptElement -> m (Maybe result)
 getText self = liftDOM ((self ^. js "text") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
+getTextUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                HTMLScriptElement -> m result
+getTextUnsafe self
+  = liftDOM
+      (((self ^. js "text") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
 getTextUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLSelectElement.hs b/src/JSDOM/Generated/HTMLSelectElement.hs
--- a/src/JSDOM/Generated/HTMLSelectElement.hs
+++ b/src/JSDOM/Generated/HTMLSelectElement.hs
@@ -1,20 +1,26 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLSelectElement
-       (item, item_, itemUnchecked, namedItem, namedItem_,
-        namedItemUnchecked, addBefore, add, remove, checkValidity,
-        checkValidity_, setCustomValidity, setAutofocus, getAutofocus,
-        setDisabled, getDisabled, getForm, getFormUnchecked, setMultiple,
-        getMultiple, setName, getName, setRequired, getRequired, setSize,
-        getSize, getType, getOptions, getOptionsUnchecked, setLength,
-        getLength, getSelectedOptions, getSelectedOptionsUnchecked,
-        setSelectedIndex, getSelectedIndex, setValue, getValue,
-        getValueUnchecked, getWillValidate, getValidity,
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked, addBefore, add, remove,
+        checkValidity, checkValidity_, setCustomValidity, setAutofocus,
+        getAutofocus, setDisabled, getDisabled, getForm, getFormUnsafe,
+        getFormUnchecked, setMultiple, getMultiple, setName, getName,
+        setRequired, getRequired, setSize, getSize, getType, getOptions,
+        getOptionsUnsafe, getOptionsUnchecked, setLength, getLength,
+        getSelectedOptions, getSelectedOptionsUnsafe,
+        getSelectedOptionsUnchecked, setSelectedIndex, getSelectedIndex,
+        setValue, getValue, getValueUnsafe, getValueUnchecked,
+        getWillValidate, getValidity, getValidityUnsafe,
         getValidityUnchecked, getValidationMessage, getLabels,
-        getLabelsUnchecked, HTMLSelectElement, castToHTMLSelectElement,
+        getLabelsUnsafe, getLabelsUnchecked, HTMLSelectElement(..),
         gTypeHTMLSelectElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -25,6 +31,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
 item :: (MonadDOM m) => HTMLSelectElement -> Word -> m (Maybe Node)
@@ -37,6 +53,14 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => HTMLSelectElement -> Word -> m Node
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => HTMLSelectElement -> Word -> m Node
 itemUnchecked self index
@@ -57,6 +81,15 @@
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  HTMLSelectElement -> name -> m Node
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
 namedItemUnchecked ::
                    (MonadDOM m, ToJSString name) =>
                      HTMLSelectElement -> name -> m Node
@@ -126,6 +159,15 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLSelectElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLSelectElement -> m HTMLFormElement
 getFormUnchecked self
@@ -180,6 +222,15 @@
 getOptions self = liftDOM ((self ^. js "options") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.options Mozilla HTMLSelectElement.options documentation> 
+getOptionsUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   HTMLSelectElement -> m HTMLOptionsCollection
+getOptionsUnsafe self
+  = liftDOM
+      (((self ^. js "options") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.options Mozilla HTMLSelectElement.options documentation> 
 getOptionsUnchecked ::
                     (MonadDOM m) => HTMLSelectElement -> m HTMLOptionsCollection
 getOptionsUnchecked self
@@ -201,6 +252,14 @@
   = liftDOM ((self ^. js "selectedOptions") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedOptions Mozilla HTMLSelectElement.selectedOptions documentation> 
+getSelectedOptionsUnsafe ::
+                         (MonadDOM m, HasCallStack) => HTMLSelectElement -> m HTMLCollection
+getSelectedOptionsUnsafe self
+  = liftDOM
+      (((self ^. js "selectedOptions") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedOptions Mozilla HTMLSelectElement.selectedOptions documentation> 
 getSelectedOptionsUnchecked ::
                             (MonadDOM m) => HTMLSelectElement -> m HTMLCollection
 getSelectedOptionsUnchecked self
@@ -232,6 +291,15 @@
   = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
+getValueUnsafe ::
+               (MonadDOM m, HasCallStack, FromJSString result) =>
+                 HTMLSelectElement -> m result
+getValueUnsafe self
+  = liftDOM
+      (((self ^. js "value") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
 getValueUnchecked ::
                   (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
 getValueUnchecked self
@@ -248,6 +316,14 @@
 getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validity Mozilla HTMLSelectElement.validity documentation> 
+getValidityUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLSelectElement -> m ValidityState
+getValidityUnsafe self
+  = liftDOM
+      (((self ^. js "validity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validity Mozilla HTMLSelectElement.validity documentation> 
 getValidityUnchecked ::
                      (MonadDOM m) => HTMLSelectElement -> m ValidityState
 getValidityUnchecked self
@@ -263,6 +339,14 @@
 getLabels ::
           (MonadDOM m) => HTMLSelectElement -> m (Maybe NodeList)
 getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.labels Mozilla HTMLSelectElement.labels documentation> 
+getLabelsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLSelectElement -> m NodeList
+getLabelsUnsafe self
+  = liftDOM
+      (((self ^. js "labels") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.labels Mozilla HTMLSelectElement.labels documentation> 
 getLabelsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLSourceElement.hs b/src/JSDOM/Generated/HTMLSourceElement.hs
--- a/src/JSDOM/Generated/HTMLSourceElement.hs
+++ b/src/JSDOM/Generated/HTMLSourceElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLSourceElement
        (setSrc, getSrc, setType, getType, setMedia, getMedia,
-        HTMLSourceElement, castToHTMLSourceElement, gTypeHTMLSourceElement)
+        HTMLSourceElement(..), gTypeHTMLSourceElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
 setSrc ::
diff --git a/src/JSDOM/Generated/HTMLStyleElement.hs b/src/JSDOM/Generated/HTMLStyleElement.hs
--- a/src/JSDOM/Generated/HTMLStyleElement.hs
+++ b/src/JSDOM/Generated/HTMLStyleElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLStyleElement
        (setDisabled, getDisabled, setMedia, getMedia, setType, getType,
-        getSheet, getSheetUnchecked, HTMLStyleElement,
-        castToHTMLStyleElement, gTypeHTMLStyleElement)
+        getSheet, getSheetUnsafe, getSheetUnchecked, HTMLStyleElement(..),
+        gTypeHTMLStyleElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
 setDisabled :: (MonadDOM m) => HTMLStyleElement -> Bool -> m ()
@@ -51,6 +65,14 @@
 getSheet ::
          (MonadDOM m) => HTMLStyleElement -> m (Maybe StyleSheet)
 getSheet self = liftDOM ((self ^. js "sheet") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.sheet Mozilla HTMLStyleElement.sheet documentation> 
+getSheetUnsafe ::
+               (MonadDOM m, HasCallStack) => HTMLStyleElement -> m StyleSheet
+getSheetUnsafe self
+  = liftDOM
+      (((self ^. js "sheet") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.sheet Mozilla HTMLStyleElement.sheet documentation> 
 getSheetUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLTableCaptionElement.hs b/src/JSDOM/Generated/HTMLTableCaptionElement.hs
--- a/src/JSDOM/Generated/HTMLTableCaptionElement.hs
+++ b/src/JSDOM/Generated/HTMLTableCaptionElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTableCaptionElement
-       (setAlign, getAlign, HTMLTableCaptionElement,
-        castToHTMLTableCaptionElement, gTypeHTMLTableCaptionElement)
+       (setAlign, getAlign, HTMLTableCaptionElement(..),
+        gTypeHTMLTableCaptionElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
 setAlign ::
diff --git a/src/JSDOM/Generated/HTMLTableCellElement.hs b/src/JSDOM/Generated/HTMLTableCellElement.hs
--- a/src/JSDOM/Generated/HTMLTableCellElement.hs
+++ b/src/JSDOM/Generated/HTMLTableCellElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTableCellElement
        (getCellIndex, setAbbr, getAbbr, setAlign, getAlign, setAxis,
@@ -6,10 +9,10 @@
         setColSpan, getColSpan, setHeaders, getHeaders, setHeight,
         getHeight, setNoWrap, getNoWrap, setRowSpan, getRowSpan, setScope,
         getScope, setVAlign, getVAlign, setWidth, getWidth,
-        HTMLTableCellElement, castToHTMLTableCellElement,
-        gTypeHTMLTableCellElement)
+        HTMLTableCellElement(..), gTypeHTMLTableCellElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.cellIndex Mozilla HTMLTableCellElement.cellIndex documentation> 
 getCellIndex :: (MonadDOM m) => HTMLTableCellElement -> m Int
diff --git a/src/JSDOM/Generated/HTMLTableColElement.hs b/src/JSDOM/Generated/HTMLTableColElement.hs
--- a/src/JSDOM/Generated/HTMLTableColElement.hs
+++ b/src/JSDOM/Generated/HTMLTableColElement.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTableColElement
        (setAlign, getAlign, setCh, getCh, setChOff, getChOff, setSpan,
         getSpan, setVAlign, getVAlign, setWidth, getWidth,
-        HTMLTableColElement, castToHTMLTableColElement,
-        gTypeHTMLTableColElement)
+        HTMLTableColElement(..), gTypeHTMLTableColElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
 setAlign ::
diff --git a/src/JSDOM/Generated/HTMLTableElement.hs b/src/JSDOM/Generated/HTMLTableElement.hs
--- a/src/JSDOM/Generated/HTMLTableElement.hs
+++ b/src/JSDOM/Generated/HTMLTableElement.hs
@@ -1,20 +1,28 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTableElement
-       (createTHead, createTHead_, createTHeadUnchecked, deleteTHead,
-        createTFoot, createTFoot_, createTFootUnchecked, deleteTFoot,
-        createTBody, createTBody_, createTBodyUnchecked, createCaption,
-        createCaption_, createCaptionUnchecked, deleteCaption, insertRow,
-        insertRow_, insertRowUnchecked, deleteRow, setCaption, getCaption,
-        getCaptionUnchecked, setTHead, getTHead, getTHeadUnchecked,
-        setTFoot, getTFoot, getTFootUnchecked, getRows, getRowsUnchecked,
-        getTBodies, getTBodiesUnchecked, setAlign, getAlign, setBgColor,
-        getBgColor, setBorder, getBorder, setCellPadding, getCellPadding,
+       (createTHead, createTHead_, createTHeadUnsafe,
+        createTHeadUnchecked, deleteTHead, createTFoot, createTFoot_,
+        createTFootUnsafe, createTFootUnchecked, deleteTFoot, createTBody,
+        createTBody_, createTBodyUnsafe, createTBodyUnchecked,
+        createCaption, createCaption_, createCaptionUnsafe,
+        createCaptionUnchecked, deleteCaption, insertRow, insertRow_,
+        insertRowUnsafe, insertRowUnchecked, deleteRow, setCaption,
+        getCaption, getCaptionUnsafe, getCaptionUnchecked, setTHead,
+        getTHead, getTHeadUnsafe, getTHeadUnchecked, setTFoot, getTFoot,
+        getTFootUnsafe, getTFootUnchecked, getRows, getRowsUnsafe,
+        getRowsUnchecked, getTBodies, getTBodiesUnsafe,
+        getTBodiesUnchecked, setAlign, getAlign, setBgColor, getBgColor,
+        setBorder, getBorder, setCellPadding, getCellPadding,
         setCellSpacing, getCellSpacing, setFrame, getFrame, setRules,
         getRules, setSummary, getSummary, setWidth, getWidth,
-        HTMLTableElement, castToHTMLTableElement, gTypeHTMLTableElement)
+        HTMLTableElement(..), gTypeHTMLTableElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -25,6 +33,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
 createTHead ::
@@ -37,6 +55,14 @@
 createTHead_ self = liftDOM (void (self ^. jsf "createTHead" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
+createTHeadUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLElement
+createTHeadUnsafe self
+  = liftDOM
+      (((self ^. jsf "createTHead" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
 createTHeadUnchecked ::
                      (MonadDOM m) => HTMLTableElement -> m HTMLElement
 createTHeadUnchecked self
@@ -57,6 +83,14 @@
 createTFoot_ self = liftDOM (void (self ^. jsf "createTFoot" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
+createTFootUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLElement
+createTFootUnsafe self
+  = liftDOM
+      (((self ^. jsf "createTFoot" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
 createTFootUnchecked ::
                      (MonadDOM m) => HTMLTableElement -> m HTMLElement
 createTFootUnchecked self
@@ -77,6 +111,14 @@
 createTBody_ self = liftDOM (void (self ^. jsf "createTBody" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
+createTBodyUnsafe ::
+                  (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLElement
+createTBodyUnsafe self
+  = liftDOM
+      (((self ^. jsf "createTBody" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
 createTBodyUnchecked ::
                      (MonadDOM m) => HTMLTableElement -> m HTMLElement
 createTBodyUnchecked self
@@ -94,6 +136,14 @@
   = liftDOM (void (self ^. jsf "createCaption" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
+createCaptionUnsafe ::
+                    (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLElement
+createCaptionUnsafe self
+  = liftDOM
+      (((self ^. jsf "createCaption" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
 createCaptionUnchecked ::
                        (MonadDOM m) => HTMLTableElement -> m HTMLElement
 createCaptionUnchecked self
@@ -116,6 +166,15 @@
   = liftDOM (void (self ^. jsf "insertRow" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
+insertRowUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  HTMLTableElement -> Int -> m HTMLElement
+insertRowUnsafe self index
+  = liftDOM
+      (((self ^. jsf "insertRow" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
 insertRowUnchecked ::
                    (MonadDOM m) => HTMLTableElement -> Int -> m HTMLElement
 insertRowUnchecked self index
@@ -140,6 +199,15 @@
 getCaption self = liftDOM ((self ^. js "caption") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
+getCaptionUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   HTMLTableElement -> m HTMLTableCaptionElement
+getCaptionUnsafe self
+  = liftDOM
+      (((self ^. js "caption") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
 getCaptionUnchecked ::
                     (MonadDOM m) => HTMLTableElement -> m HTMLTableCaptionElement
 getCaptionUnchecked self
@@ -158,6 +226,15 @@
 getTHead self = liftDOM ((self ^. js "tHead") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
+getTHeadUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 HTMLTableElement -> m HTMLTableSectionElement
+getTHeadUnsafe self
+  = liftDOM
+      (((self ^. js "tHead") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
 getTHeadUnchecked ::
                   (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
 getTHeadUnchecked self
@@ -176,6 +253,15 @@
 getTFoot self = liftDOM ((self ^. js "tFoot") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
+getTFootUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 HTMLTableElement -> m HTMLTableSectionElement
+getTFootUnsafe self
+  = liftDOM
+      (((self ^. js "tFoot") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
 getTFootUnchecked ::
                   (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
 getTFootUnchecked self
@@ -187,6 +273,14 @@
 getRows self = liftDOM ((self ^. js "rows") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rows Mozilla HTMLTableElement.rows documentation> 
+getRowsUnsafe ::
+              (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLCollection
+getRowsUnsafe self
+  = liftDOM
+      (((self ^. js "rows") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rows Mozilla HTMLTableElement.rows documentation> 
 getRowsUnchecked ::
                  (MonadDOM m) => HTMLTableElement -> m HTMLCollection
 getRowsUnchecked self
@@ -196,6 +290,14 @@
 getTBodies ::
            (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLCollection)
 getTBodies self = liftDOM ((self ^. js "tBodies") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tBodies Mozilla HTMLTableElement.tBodies documentation> 
+getTBodiesUnsafe ::
+                 (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLCollection
+getTBodiesUnsafe self
+  = liftDOM
+      (((self ^. js "tBodies") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tBodies Mozilla HTMLTableElement.tBodies documentation> 
 getTBodiesUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLTableRowElement.hs b/src/JSDOM/Generated/HTMLTableRowElement.hs
--- a/src/JSDOM/Generated/HTMLTableRowElement.hs
+++ b/src/JSDOM/Generated/HTMLTableRowElement.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTableRowElement
-       (insertCell, insertCell_, insertCellUnchecked, deleteCell,
-        getRowIndex, getSectionRowIndex, getCells, getCellsUnchecked,
-        setAlign, getAlign, setBgColor, getBgColor, setCh, getCh, setChOff,
-        getChOff, setVAlign, getVAlign, HTMLTableRowElement,
-        castToHTMLTableRowElement, gTypeHTMLTableRowElement)
+       (insertCell, insertCell_, insertCellUnsafe, insertCellUnchecked,
+        deleteCell, getRowIndex, getSectionRowIndex, getCells,
+        getCellsUnsafe, getCellsUnchecked, setAlign, getAlign, setBgColor,
+        getBgColor, setCh, getCh, setChOff, getChOff, setVAlign, getVAlign,
+        HTMLTableRowElement(..), gTypeHTMLTableRowElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
 insertCell ::
@@ -32,6 +46,15 @@
   = liftDOM (void (self ^. jsf "insertCell" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
+insertCellUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   HTMLTableRowElement -> Int -> m HTMLElement
+insertCellUnsafe self index
+  = liftDOM
+      (((self ^. jsf "insertCell" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
 insertCellUnchecked ::
                     (MonadDOM m) => HTMLTableRowElement -> Int -> m HTMLElement
 insertCellUnchecked self index
@@ -58,6 +81,15 @@
 getCells ::
          (MonadDOM m) => HTMLTableRowElement -> m (Maybe HTMLCollection)
 getCells self = liftDOM ((self ^. js "cells") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.cells Mozilla HTMLTableRowElement.cells documentation> 
+getCellsUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 HTMLTableRowElement -> m HTMLCollection
+getCellsUnsafe self
+  = liftDOM
+      (((self ^. js "cells") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.cells Mozilla HTMLTableRowElement.cells documentation> 
 getCellsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLTableSectionElement.hs b/src/JSDOM/Generated/HTMLTableSectionElement.hs
--- a/src/JSDOM/Generated/HTMLTableSectionElement.hs
+++ b/src/JSDOM/Generated/HTMLTableSectionElement.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTableSectionElement
-       (insertRow, insertRow_, insertRowUnchecked, deleteRow, setAlign,
-        getAlign, setCh, getCh, setChOff, getChOff, setVAlign, getVAlign,
-        getRows, getRowsUnchecked, HTMLTableSectionElement,
-        castToHTMLTableSectionElement, gTypeHTMLTableSectionElement)
+       (insertRow, insertRow_, insertRowUnsafe, insertRowUnchecked,
+        deleteRow, setAlign, getAlign, setCh, getCh, setChOff, getChOff,
+        setVAlign, getVAlign, getRows, getRowsUnsafe, getRowsUnchecked,
+        HTMLTableSectionElement(..), gTypeHTMLTableSectionElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
 insertRow ::
@@ -32,6 +46,15 @@
   = liftDOM (void (self ^. jsf "insertRow" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
+insertRowUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  HTMLTableSectionElement -> Int -> m HTMLElement
+insertRowUnsafe self index
+  = liftDOM
+      (((self ^. jsf "insertRow" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
 insertRowUnchecked ::
                    (MonadDOM m) => HTMLTableSectionElement -> Int -> m HTMLElement
 insertRowUnchecked self index
@@ -98,6 +121,15 @@
 getRows ::
         (MonadDOM m) => HTMLTableSectionElement -> m (Maybe HTMLCollection)
 getRows self = liftDOM ((self ^. js "rows") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.rows Mozilla HTMLTableSectionElement.rows documentation> 
+getRowsUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLTableSectionElement -> m HTMLCollection
+getRowsUnsafe self
+  = liftDOM
+      (((self ^. js "rows") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.rows Mozilla HTMLTableSectionElement.rows documentation> 
 getRowsUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLTemplateElement.hs b/src/JSDOM/Generated/HTMLTemplateElement.hs
--- a/src/JSDOM/Generated/HTMLTemplateElement.hs
+++ b/src/JSDOM/Generated/HTMLTemplateElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTemplateElement
-       (getContent, getContentUnchecked, HTMLTemplateElement,
-        castToHTMLTemplateElement, gTypeHTMLTemplateElement)
+       (getContent, getContentUnsafe, getContentUnchecked,
+        HTMLTemplateElement(..), gTypeHTMLTemplateElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
 getContent ::
            (MonadDOM m) => HTMLTemplateElement -> m (Maybe DocumentFragment)
 getContent self = liftDOM ((self ^. js "content") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
+getContentUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   HTMLTemplateElement -> m DocumentFragment
+getContentUnsafe self
+  = liftDOM
+      (((self ^. js "content") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
 getContentUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLTextAreaElement.hs b/src/JSDOM/Generated/HTMLTextAreaElement.hs
--- a/src/JSDOM/Generated/HTMLTextAreaElement.hs
+++ b/src/JSDOM/Generated/HTMLTextAreaElement.hs
@@ -1,24 +1,29 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTextAreaElement
        (checkValidity, checkValidity_, setCustomValidity, select,
         setRangeText, setRangeText4, setSelectionRange, setAutofocus,
         getAutofocus, setCols, getCols, setDirName, getDirName,
-        setDisabled, getDisabled, getForm, getFormUnchecked, setMaxLength,
-        getMaxLength, setName, getName, setPlaceholder, getPlaceholder,
-        setReadOnly, getReadOnly, setRequired, getRequired, setRows,
-        getRows, setWrap, getWrap, getType, setDefaultValue,
-        getDefaultValue, getDefaultValueUnchecked, setValue, getValue,
-        getValueUnchecked, getTextLength, getWillValidate, getValidity,
+        setDisabled, getDisabled, getForm, getFormUnsafe, getFormUnchecked,
+        setMaxLength, getMaxLength, setName, getName, setPlaceholder,
+        getPlaceholder, setReadOnly, getReadOnly, setRequired, getRequired,
+        setRows, getRows, setWrap, getWrap, getType, setDefaultValue,
+        getDefaultValue, getDefaultValueUnsafe, getDefaultValueUnchecked,
+        setValue, getValue, getValueUnsafe, getValueUnchecked,
+        getTextLength, getWillValidate, getValidity, getValidityUnsafe,
         getValidityUnchecked, getValidationMessage, getLabels,
-        getLabelsUnchecked, setSelectionStart, getSelectionStart,
-        setSelectionEnd, getSelectionEnd, setSelectionDirection,
-        getSelectionDirection, setAutocorrect, getAutocorrect,
-        setAutocapitalize, getAutocapitalize, getAutocapitalizeUnchecked,
-        HTMLTextAreaElement, castToHTMLTextAreaElement,
-        gTypeHTMLTextAreaElement)
+        getLabelsUnsafe, getLabelsUnchecked, setSelectionStart,
+        getSelectionStart, setSelectionEnd, getSelectionEnd,
+        setSelectionDirection, getSelectionDirection, setAutocorrect,
+        getAutocorrect, setAutocapitalize, getAutocapitalize,
+        getAutocapitalizeUnsafe, getAutocapitalizeUnchecked,
+        HTMLTextAreaElement(..), gTypeHTMLTextAreaElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -29,6 +34,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
 checkValidity :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
@@ -126,6 +141,15 @@
 getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.form Mozilla HTMLTextAreaElement.form documentation> 
+getFormUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                HTMLTextAreaElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftDOM
+      (((self ^. js "form") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.form Mozilla HTMLTextAreaElement.form documentation> 
 getFormUnchecked ::
                  (MonadDOM m) => HTMLTextAreaElement -> m HTMLFormElement
 getFormUnchecked self
@@ -224,6 +248,15 @@
   = liftDOM ((self ^. js "defaultValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
+getDefaultValueUnsafe ::
+                      (MonadDOM m, HasCallStack, FromJSString result) =>
+                        HTMLTextAreaElement -> m result
+getDefaultValueUnsafe self
+  = liftDOM
+      (((self ^. js "defaultValue") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
 getDefaultValueUnchecked ::
                          (MonadDOM m, FromJSString result) =>
                            HTMLTextAreaElement -> m result
@@ -244,6 +277,15 @@
   = liftDOM ((self ^. js "value") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
+getValueUnsafe ::
+               (MonadDOM m, HasCallStack, FromJSString result) =>
+                 HTMLTextAreaElement -> m result
+getValueUnsafe self
+  = liftDOM
+      (((self ^. js "value") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
 getValueUnchecked ::
                   (MonadDOM m, FromJSString result) =>
                     HTMLTextAreaElement -> m result
@@ -266,6 +308,15 @@
 getValidity self = liftDOM ((self ^. js "validity") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validity Mozilla HTMLTextAreaElement.validity documentation> 
+getValidityUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    HTMLTextAreaElement -> m ValidityState
+getValidityUnsafe self
+  = liftDOM
+      (((self ^. js "validity") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validity Mozilla HTMLTextAreaElement.validity documentation> 
 getValidityUnchecked ::
                      (MonadDOM m) => HTMLTextAreaElement -> m ValidityState
 getValidityUnchecked self
@@ -284,6 +335,14 @@
 getLabels self = liftDOM ((self ^. js "labels") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.labels Mozilla HTMLTextAreaElement.labels documentation> 
+getLabelsUnsafe ::
+                (MonadDOM m, HasCallStack) => HTMLTextAreaElement -> m NodeList
+getLabelsUnsafe self
+  = liftDOM
+      (((self ^. js "labels") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.labels Mozilla HTMLTextAreaElement.labels documentation> 
 getLabelsUnchecked ::
                    (MonadDOM m) => HTMLTextAreaElement -> m NodeList
 getLabelsUnchecked self
@@ -350,6 +409,15 @@
                     HTMLTextAreaElement -> m (Maybe result)
 getAutocapitalize self
   = liftDOM ((self ^. js "autocapitalize") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocapitalize Mozilla HTMLTextAreaElement.autocapitalize documentation> 
+getAutocapitalizeUnsafe ::
+                        (MonadDOM m, HasCallStack, FromJSString result) =>
+                          HTMLTextAreaElement -> m result
+getAutocapitalizeUnsafe self
+  = liftDOM
+      (((self ^. js "autocapitalize") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocapitalize Mozilla HTMLTextAreaElement.autocapitalize documentation> 
 getAutocapitalizeUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLTitleElement.hs b/src/JSDOM/Generated/HTMLTitleElement.hs
--- a/src/JSDOM/Generated/HTMLTitleElement.hs
+++ b/src/JSDOM/Generated/HTMLTitleElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTitleElement
-       (setText, getText, getTextUnchecked, HTMLTitleElement,
-        castToHTMLTitleElement, gTypeHTMLTitleElement)
+       (setText, getText, getTextUnsafe, getTextUnchecked,
+        HTMLTitleElement(..), gTypeHTMLTitleElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
 setText ::
@@ -27,6 +41,15 @@
         (MonadDOM m, FromJSString result) =>
           HTMLTitleElement -> m (Maybe result)
 getText self = liftDOM ((self ^. js "text") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
+getTextUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                HTMLTitleElement -> m result
+getTextUnsafe self
+  = liftDOM
+      (((self ^. js "text") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
 getTextUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLTrackElement.hs b/src/JSDOM/Generated/HTMLTrackElement.hs
--- a/src/JSDOM/Generated/HTMLTrackElement.hs
+++ b/src/JSDOM/Generated/HTMLTrackElement.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLTrackElement
        (pattern NONE, pattern LOADING, pattern LOADED, pattern ERROR,
         setKind, getKind, setSrc, getSrc, setSrclang, getSrclang, setLabel,
         getLabel, setDefault, getDefault, getReadyState, getTrack,
-        getTrackUnchecked, HTMLTrackElement, castToHTMLTrackElement,
+        getTrackUnsafe, getTrackUnchecked, HTMLTrackElement(..),
         gTypeHTMLTrackElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern NONE = 0
 pattern LOADING = 1
 pattern LOADED = 2
@@ -81,6 +95,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.track Mozilla HTMLTrackElement.track documentation> 
 getTrack :: (MonadDOM m) => HTMLTrackElement -> m (Maybe TextTrack)
 getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.track Mozilla HTMLTrackElement.track documentation> 
+getTrackUnsafe ::
+               (MonadDOM m, HasCallStack) => HTMLTrackElement -> m TextTrack
+getTrackUnsafe self
+  = liftDOM
+      (((self ^. js "track") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.track Mozilla HTMLTrackElement.track documentation> 
 getTrackUnchecked ::
diff --git a/src/JSDOM/Generated/HTMLUListElement.hs b/src/JSDOM/Generated/HTMLUListElement.hs
--- a/src/JSDOM/Generated/HTMLUListElement.hs
+++ b/src/JSDOM/Generated/HTMLUListElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLUListElement
-       (setCompact, getCompact, setType, getType, HTMLUListElement,
-        castToHTMLUListElement, gTypeHTMLUListElement)
+       (setCompact, getCompact, setType, getType, HTMLUListElement(..),
+        gTypeHTMLUListElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
 setCompact :: (MonadDOM m) => HTMLUListElement -> Bool -> m ()
diff --git a/src/JSDOM/Generated/HTMLVideoElement.hs b/src/JSDOM/Generated/HTMLVideoElement.hs
--- a/src/JSDOM/Generated/HTMLVideoElement.hs
+++ b/src/JSDOM/Generated/HTMLVideoElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HTMLVideoElement
        (webkitEnterFullscreen, webkitExitFullscreen,
@@ -10,10 +13,11 @@
         setWebkitWirelessVideoPlaybackDisabled,
         getWebkitWirelessVideoPlaybackDisabled, getWebkitDecodedFrameCount,
         getWebkitDroppedFrameCount, getWebkitPresentationMode,
-        webKitPresentationModeChanged, HTMLVideoElement,
-        castToHTMLVideoElement, gTypeHTMLVideoElement)
+        webKitPresentationModeChanged, HTMLVideoElement(..),
+        gTypeHTMLVideoElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -24,6 +28,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullscreen Mozilla HTMLVideoElement.webkitEnterFullscreen documentation> 
 webkitEnterFullscreen :: (MonadDOM m) => HTMLVideoElement -> m ()
diff --git a/src/JSDOM/Generated/HashChangeEvent.hs b/src/JSDOM/Generated/HashChangeEvent.hs
--- a/src/JSDOM/Generated/HashChangeEvent.hs
+++ b/src/JSDOM/Generated/HashChangeEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.HashChangeEvent
-       (initHashChangeEvent, getOldURL, getNewURL, HashChangeEvent,
-        castToHashChangeEvent, gTypeHashChangeEvent)
+       (initHashChangeEvent, getOldURL, getNewURL, HashChangeEvent(..),
+        gTypeHashChangeEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.initHashChangeEvent Mozilla HashChangeEvent.initHashChangeEvent documentation> 
 initHashChangeEvent ::
diff --git a/src/JSDOM/Generated/History.hs b/src/JSDOM/Generated/History.hs
--- a/src/JSDOM/Generated/History.hs
+++ b/src/JSDOM/Generated/History.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.History
        (back, forward, go, pushState, replaceState, getLength, getState,
-        getStateUnchecked, History, castToHistory, gTypeHistory)
+        getStateUnsafe, getStateUnchecked, History(..), gTypeHistory)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/History.back Mozilla History.back documentation> 
 back :: (MonadDOM m) => History -> m ()
@@ -58,6 +72,14 @@
 getState ::
          (MonadDOM m) => History -> m (Maybe SerializedScriptValue)
 getState self = liftDOM ((self ^. js "state") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.state Mozilla History.state documentation> 
+getStateUnsafe ::
+               (MonadDOM m, HasCallStack) => History -> m SerializedScriptValue
+getStateUnsafe self
+  = liftDOM
+      (((self ^. js "state") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/History.state Mozilla History.state documentation> 
 getStateUnchecked ::
diff --git a/src/JSDOM/Generated/IDBCursor.hs b/src/JSDOM/Generated/IDBCursor.hs
--- a/src/JSDOM/Generated/IDBCursor.hs
+++ b/src/JSDOM/Generated/IDBCursor.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBCursor
-       (update, update_, updateUnchecked, advance, continue, delete,
-        delete_, deleteUnchecked, getSource, getSourceUnchecked,
-        getDirection, getKey, getPrimaryKey, IDBCursor, castToIDBCursor,
-        gTypeIDBCursor, IsIDBCursor, toIDBCursor)
+       (update, update_, updateUnsafe, updateUnchecked, advance, continue,
+        delete, delete_, deleteUnsafe, deleteUnchecked, getSource,
+        getSourceUnsafe, getSourceUnchecked, getDirection, getKey,
+        getPrimaryKey, IDBCursor(..), gTypeIDBCursor, IsIDBCursor,
+        toIDBCursor)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
 update ::
@@ -34,6 +49,16 @@
       (void ((toIDBCursor self) ^. jsf "update" [toJSVal value]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
+updateUnsafe ::
+             (MonadDOM m, IsIDBCursor self, HasCallStack) =>
+               self -> JSVal -> m IDBRequest
+updateUnsafe self value
+  = liftDOM
+      ((((toIDBCursor self) ^. jsf "update" [toJSVal value]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
 updateUnchecked ::
                 (MonadDOM m, IsIDBCursor self) => self -> JSVal -> m IDBRequest
 updateUnchecked self value
@@ -65,6 +90,15 @@
   = liftDOM (void ((toIDBCursor self) ^. jsf "delete" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
+deleteUnsafe ::
+             (MonadDOM m, IsIDBCursor self, HasCallStack) =>
+               self -> m IDBRequest
+deleteUnsafe self
+  = liftDOM
+      ((((toIDBCursor self) ^. jsf "delete" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
 deleteUnchecked ::
                 (MonadDOM m, IsIDBCursor self) => self -> m IDBRequest
 deleteUnchecked self
@@ -76,6 +110,14 @@
           (MonadDOM m, IsIDBCursor self) => self -> m (Maybe IDBAny)
 getSource self
   = liftDOM (((toIDBCursor self) ^. js "source") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.source Mozilla IDBCursor.source documentation> 
+getSourceUnsafe ::
+                (MonadDOM m, IsIDBCursor self, HasCallStack) => self -> m IDBAny
+getSourceUnsafe self
+  = liftDOM
+      ((((toIDBCursor self) ^. js "source") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.source Mozilla IDBCursor.source documentation> 
 getSourceUnchecked ::
diff --git a/src/JSDOM/Generated/IDBCursorWithValue.hs b/src/JSDOM/Generated/IDBCursorWithValue.hs
--- a/src/JSDOM/Generated/IDBCursorWithValue.hs
+++ b/src/JSDOM/Generated/IDBCursorWithValue.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBCursorWithValue
-       (getValue, IDBCursorWithValue, castToIDBCursorWithValue,
-        gTypeIDBCursorWithValue)
-       where
+       (getValue, IDBCursorWithValue(..), gTypeIDBCursorWithValue) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue.value Mozilla IDBCursorWithValue.value documentation> 
 getValue :: (MonadDOM m) => IDBCursorWithValue -> m JSVal
diff --git a/src/JSDOM/Generated/IDBDatabase.hs b/src/JSDOM/Generated/IDBDatabase.hs
--- a/src/JSDOM/Generated/IDBDatabase.hs
+++ b/src/JSDOM/Generated/IDBDatabase.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBDatabase
-       (createObjectStore, createObjectStore_, createObjectStoreUnchecked,
-        deleteObjectStore, transaction, transaction_, transactionUnchecked,
-        transaction', transaction'_, transaction'Unchecked, close, getName,
-        getVersion, getObjectStoreNames, getObjectStoreNamesUnchecked,
-        abort, error, versionChange, IDBDatabase, castToIDBDatabase,
-        gTypeIDBDatabase)
+       (createObjectStore, createObjectStore_, createObjectStoreUnsafe,
+        createObjectStoreUnchecked, deleteObjectStore, transaction,
+        transaction_, transactionUnsafe, transactionUnchecked,
+        transaction', transaction'_, transaction'Unsafe,
+        transaction'Unchecked, close, getName, getVersion,
+        getObjectStoreNames, getObjectStoreNamesUnsafe,
+        getObjectStoreNamesUnchecked, abort, error, versionChange,
+        IDBDatabase(..), gTypeIDBDatabase)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
 createObjectStore ::
@@ -39,6 +55,17 @@
          (self ^. jsf "createObjectStore" [toJSVal name, toJSVal options]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
+createObjectStoreUnsafe ::
+                        (MonadDOM m, ToJSString name, IsDictionary options,
+                         HasCallStack) =>
+                          IDBDatabase -> name -> Maybe options -> m IDBObjectStore
+createObjectStoreUnsafe self name options
+  = liftDOM
+      (((self ^. jsf "createObjectStore" [toJSVal name, toJSVal options])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
 createObjectStoreUnchecked ::
                            (MonadDOM m, ToJSString name, IsDictionary options) =>
                              IDBDatabase -> name -> Maybe options -> m IDBObjectStore
@@ -72,6 +99,17 @@
          (self ^. jsf "transaction" [toJSVal storeName, toJSVal mode]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
+transactionUnsafe ::
+                  (MonadDOM m, ToJSString storeName, ToJSString mode,
+                   HasCallStack) =>
+                    IDBDatabase -> storeName -> mode -> m IDBTransaction
+transactionUnsafe self storeName mode
+  = liftDOM
+      (((self ^. jsf "transaction" [toJSVal storeName, toJSVal mode]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
 transactionUnchecked ::
                      (MonadDOM m, ToJSString storeName, ToJSString mode) =>
                        IDBDatabase -> storeName -> mode -> m IDBTransaction
@@ -101,6 +139,18 @@
             [toJSVal (array storeNames), toJSVal mode]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
+transaction'Unsafe ::
+                   (MonadDOM m, ToJSString storeNames, ToJSString mode,
+                    HasCallStack) =>
+                     IDBDatabase -> [storeNames] -> mode -> m IDBTransaction
+transaction'Unsafe self storeNames mode
+  = liftDOM
+      (((self ^. jsf "transaction"
+           [toJSVal (array storeNames), toJSVal mode])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
 transaction'Unchecked ::
                       (MonadDOM m, ToJSString storeNames, ToJSString mode) =>
                         IDBDatabase -> [storeNames] -> mode -> m IDBTransaction
@@ -129,6 +179,14 @@
                     (MonadDOM m) => IDBDatabase -> m (Maybe DOMStringList)
 getObjectStoreNames self
   = liftDOM ((self ^. js "objectStoreNames") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.objectStoreNames Mozilla IDBDatabase.objectStoreNames documentation> 
+getObjectStoreNamesUnsafe ::
+                          (MonadDOM m, HasCallStack) => IDBDatabase -> m DOMStringList
+getObjectStoreNamesUnsafe self
+  = liftDOM
+      (((self ^. js "objectStoreNames") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.objectStoreNames Mozilla IDBDatabase.objectStoreNames documentation> 
 getObjectStoreNamesUnchecked ::
diff --git a/src/JSDOM/Generated/IDBFactory.hs b/src/JSDOM/Generated/IDBFactory.hs
--- a/src/JSDOM/Generated/IDBFactory.hs
+++ b/src/JSDOM/Generated/IDBFactory.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBFactory
-       (open, open_, openUnchecked, deleteDatabase, deleteDatabase_,
-        deleteDatabaseUnchecked, cmp, cmp_, IDBFactory, castToIDBFactory,
-        gTypeIDBFactory)
+       (open, open_, openUnsafe, openUnchecked, deleteDatabase,
+        deleteDatabase_, deleteDatabaseUnsafe, deleteDatabaseUnchecked,
+        cmp, cmp_, IDBFactory(..), gTypeIDBFactory)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
 open ::
@@ -35,6 +49,16 @@
       (void (self ^. jsf "open" [toJSVal name, toJSVal version]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
+openUnsafe ::
+           (MonadDOM m, ToJSString name, HasCallStack) =>
+             IDBFactory -> name -> Word64 -> m IDBOpenDBRequest
+openUnsafe self name version
+  = liftDOM
+      (((self ^. jsf "open" [toJSVal name, toJSVal version]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
 openUnchecked ::
               (MonadDOM m, ToJSString name) =>
                 IDBFactory -> name -> Word64 -> m IDBOpenDBRequest
@@ -56,6 +80,15 @@
                 (MonadDOM m, ToJSString name) => IDBFactory -> name -> m ()
 deleteDatabase_ self name
   = liftDOM (void (self ^. jsf "deleteDatabase" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
+deleteDatabaseUnsafe ::
+                     (MonadDOM m, ToJSString name, HasCallStack) =>
+                       IDBFactory -> name -> m IDBOpenDBRequest
+deleteDatabaseUnsafe self name
+  = liftDOM
+      (((self ^. jsf "deleteDatabase" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
 deleteDatabaseUnchecked ::
diff --git a/src/JSDOM/Generated/IDBIndex.hs b/src/JSDOM/Generated/IDBIndex.hs
--- a/src/JSDOM/Generated/IDBIndex.hs
+++ b/src/JSDOM/Generated/IDBIndex.hs
@@ -1,18 +1,27 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBIndex
-       (openCursorRange, openCursorRange_, openCursorRangeUnchecked,
-        openCursor, openCursor_, openCursorUnchecked, openKeyCursorRange,
-        openKeyCursorRange_, openKeyCursorRangeUnchecked, openKeyCursor,
-        openKeyCursor_, openKeyCursorUnchecked, getRange, getRange_,
-        getRangeUnchecked, get, get_, getUnchecked, getKeyRange,
-        getKeyRange_, getKeyRangeUnchecked, getKey, getKey_,
-        getKeyUnchecked, countRange, countRange_, countRangeUnchecked,
-        count, count_, countUnchecked, getName, getObjectStore,
-        getObjectStoreUnchecked, getKeyPath, getKeyPathUnchecked,
-        getMultiEntry, getUnique, IDBIndex, castToIDBIndex, gTypeIDBIndex)
+       (openCursorRange, openCursorRange_, openCursorRangeUnsafe,
+        openCursorRangeUnchecked, openCursor, openCursor_,
+        openCursorUnsafe, openCursorUnchecked, openKeyCursorRange,
+        openKeyCursorRange_, openKeyCursorRangeUnsafe,
+        openKeyCursorRangeUnchecked, openKeyCursor, openKeyCursor_,
+        openKeyCursorUnsafe, openKeyCursorUnchecked, getRange, getRange_,
+        getRangeUnsafe, getRangeUnchecked, get, get_, getUnsafe,
+        getUnchecked, getKeyRange, getKeyRange_, getKeyRangeUnsafe,
+        getKeyRangeUnchecked, getKey, getKey_, getKeyUnsafe,
+        getKeyUnchecked, countRange, countRange_, countRangeUnsafe,
+        countRangeUnchecked, count, count_, countUnsafe, countUnchecked,
+        getName, getObjectStore, getObjectStoreUnsafe,
+        getObjectStoreUnchecked, getKeyPath, getKeyPathUnsafe,
+        getKeyPathUnchecked, getMultiEntry, getUnique, IDBIndex(..),
+        gTypeIDBIndex)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +32,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
 openCursorRange ::
@@ -43,6 +62,16 @@
          (self ^. jsf "openCursor" [toJSVal range, toJSVal direction]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursorRangeUnsafe ::
+                      (MonadDOM m, ToJSString direction, HasCallStack) =>
+                        IDBIndex -> Maybe IDBKeyRange -> direction -> m IDBRequest
+openCursorRangeUnsafe self range direction
+  = liftDOM
+      (((self ^. jsf "openCursor" [toJSVal range, toJSVal direction]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
 openCursorRangeUnchecked ::
                          (MonadDOM m, ToJSString direction) =>
                            IDBIndex -> Maybe IDBKeyRange -> direction -> m IDBRequest
@@ -69,6 +98,16 @@
       (void (self ^. jsf "openCursor" [toJSVal key, toJSVal direction]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursorUnsafe ::
+                 (MonadDOM m, ToJSString direction, HasCallStack) =>
+                   IDBIndex -> JSVal -> direction -> m IDBRequest
+openCursorUnsafe self key direction
+  = liftDOM
+      (((self ^. jsf "openCursor" [toJSVal key, toJSVal direction]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
 openCursorUnchecked ::
                     (MonadDOM m, ToJSString direction) =>
                       IDBIndex -> JSVal -> direction -> m IDBRequest
@@ -96,6 +135,16 @@
          (self ^. jsf "openKeyCursor" [toJSVal range, toJSVal direction]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursorRangeUnsafe ::
+                         (MonadDOM m, ToJSString direction, HasCallStack) =>
+                           IDBIndex -> Maybe IDBKeyRange -> direction -> m IDBRequest
+openKeyCursorRangeUnsafe self range direction
+  = liftDOM
+      (((self ^. jsf "openKeyCursor" [toJSVal range, toJSVal direction])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
 openKeyCursorRangeUnchecked ::
                             (MonadDOM m, ToJSString direction) =>
                               IDBIndex -> Maybe IDBKeyRange -> direction -> m IDBRequest
@@ -123,6 +172,16 @@
          (self ^. jsf "openKeyCursor" [toJSVal key, toJSVal direction]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursorUnsafe ::
+                    (MonadDOM m, ToJSString direction, HasCallStack) =>
+                      IDBIndex -> JSVal -> direction -> m IDBRequest
+openKeyCursorUnsafe self key direction
+  = liftDOM
+      (((self ^. jsf "openKeyCursor" [toJSVal key, toJSVal direction])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
 openKeyCursorUnchecked ::
                        (MonadDOM m, ToJSString direction) =>
                          IDBIndex -> JSVal -> direction -> m IDBRequest
@@ -144,6 +203,15 @@
   = liftDOM (void (self ^. jsf "get" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+getRangeUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
+getRangeUnsafe self key
+  = liftDOM
+      (((self ^. jsf "get" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
 getRangeUnchecked ::
                   (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
 getRangeUnchecked self key
@@ -160,6 +228,14 @@
 get_ self key = liftDOM (void (self ^. jsf "get" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+getUnsafe ::
+          (MonadDOM m, HasCallStack) => IDBIndex -> JSVal -> m IDBRequest
+getUnsafe self key
+  = liftDOM
+      (((self ^. jsf "get" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
 getUnchecked :: (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
 getUnchecked self key
   = liftDOM
@@ -179,6 +255,15 @@
   = liftDOM (void (self ^. jsf "getKey" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKeyRangeUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
+getKeyRangeUnsafe self key
+  = liftDOM
+      (((self ^. jsf "getKey" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
 getKeyRangeUnchecked ::
                      (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
 getKeyRangeUnchecked self key
@@ -196,6 +281,14 @@
   = liftDOM (void (self ^. jsf "getKey" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKeyUnsafe ::
+             (MonadDOM m, HasCallStack) => IDBIndex -> JSVal -> m IDBRequest
+getKeyUnsafe self key
+  = liftDOM
+      (((self ^. jsf "getKey" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
 getKeyUnchecked ::
                 (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
 getKeyUnchecked self key
@@ -216,6 +309,15 @@
   = liftDOM (void (self ^. jsf "count" [toJSVal range]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+countRangeUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
+countRangeUnsafe self range
+  = liftDOM
+      (((self ^. jsf "count" [toJSVal range]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
 countRangeUnchecked ::
                     (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
 countRangeUnchecked self range
@@ -233,6 +335,14 @@
   = liftDOM (void (self ^. jsf "count" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+countUnsafe ::
+            (MonadDOM m, HasCallStack) => IDBIndex -> JSVal -> m IDBRequest
+countUnsafe self key
+  = liftDOM
+      (((self ^. jsf "count" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
 countUnchecked :: (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
 countUnchecked self key
   = liftDOM
@@ -250,6 +360,14 @@
   = liftDOM ((self ^. js "objectStore") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.objectStore Mozilla IDBIndex.objectStore documentation> 
+getObjectStoreUnsafe ::
+                     (MonadDOM m, HasCallStack) => IDBIndex -> m IDBObjectStore
+getObjectStoreUnsafe self
+  = liftDOM
+      (((self ^. js "objectStore") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.objectStore Mozilla IDBIndex.objectStore documentation> 
 getObjectStoreUnchecked ::
                         (MonadDOM m) => IDBIndex -> m IDBObjectStore
 getObjectStoreUnchecked self
@@ -258,6 +376,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
 getKeyPath :: (MonadDOM m) => IDBIndex -> m (Maybe IDBAny)
 getKeyPath self = liftDOM ((self ^. js "keyPath") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
+getKeyPathUnsafe ::
+                 (MonadDOM m, HasCallStack) => IDBIndex -> m IDBAny
+getKeyPathUnsafe self
+  = liftDOM
+      (((self ^. js "keyPath") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
 getKeyPathUnchecked :: (MonadDOM m) => IDBIndex -> m IDBAny
diff --git a/src/JSDOM/Generated/IDBKeyRange.hs b/src/JSDOM/Generated/IDBKeyRange.hs
--- a/src/JSDOM/Generated/IDBKeyRange.hs
+++ b/src/JSDOM/Generated/IDBKeyRange.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBKeyRange
-       (only, only_, onlyUnchecked, lowerBound, lowerBound_,
-        lowerBoundUnchecked, upperBound, upperBound_, upperBoundUnchecked,
-        bound, bound_, boundUnchecked, getLower, getUpper, getLowerOpen,
-        getUpperOpen, IDBKeyRange, castToIDBKeyRange, gTypeIDBKeyRange)
+       (only, only_, onlyUnsafe, onlyUnchecked, lowerBound, lowerBound_,
+        lowerBoundUnsafe, lowerBoundUnchecked, upperBound, upperBound_,
+        upperBoundUnsafe, upperBoundUnchecked, bound, bound_, boundUnsafe,
+        boundUnchecked, getLower, getUpper, getLowerOpen, getUpperOpen,
+        IDBKeyRange(..), gTypeIDBKeyRange)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
 only ::
@@ -30,6 +45,14 @@
   = liftDOM (void (self ^. jsf "only" [toJSVal value]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
+onlyUnsafe ::
+           (MonadDOM m, HasCallStack) => IDBKeyRange -> JSVal -> m IDBKeyRange
+onlyUnsafe self value
+  = liftDOM
+      (((self ^. jsf "only" [toJSVal value]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
 onlyUnchecked ::
               (MonadDOM m) => IDBKeyRange -> JSVal -> m IDBKeyRange
 onlyUnchecked self value
@@ -52,6 +75,16 @@
       (void (self ^. jsf "lowerBound" [toJSVal lower, toJSVal open]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
+lowerBoundUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   IDBKeyRange -> JSVal -> Bool -> m IDBKeyRange
+lowerBoundUnsafe self lower open
+  = liftDOM
+      (((self ^. jsf "lowerBound" [toJSVal lower, toJSVal open]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
 lowerBoundUnchecked ::
                     (MonadDOM m) => IDBKeyRange -> JSVal -> Bool -> m IDBKeyRange
 lowerBoundUnchecked self lower open
@@ -75,6 +108,16 @@
       (void (self ^. jsf "upperBound" [toJSVal upper, toJSVal open]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
+upperBoundUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   IDBKeyRange -> JSVal -> Bool -> m IDBKeyRange
+upperBoundUnsafe self upper open
+  = liftDOM
+      (((self ^. jsf "upperBound" [toJSVal upper, toJSVal open]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
 upperBoundUnchecked ::
                     (MonadDOM m) => IDBKeyRange -> JSVal -> Bool -> m IDBKeyRange
 upperBoundUnchecked self upper open
@@ -104,6 +147,18 @@
          (self ^. jsf "bound"
             [toJSVal lower, toJSVal upper, toJSVal lowerOpen,
              toJSVal upperOpen]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
+boundUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              IDBKeyRange -> JSVal -> JSVal -> Bool -> Bool -> m IDBKeyRange
+boundUnsafe self lower upper lowerOpen upperOpen
+  = liftDOM
+      (((self ^. jsf "bound"
+           [toJSVal lower, toJSVal upper, toJSVal lowerOpen,
+            toJSVal upperOpen])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
 boundUnchecked ::
diff --git a/src/JSDOM/Generated/IDBObjectStore.hs b/src/JSDOM/Generated/IDBObjectStore.hs
--- a/src/JSDOM/Generated/IDBObjectStore.hs
+++ b/src/JSDOM/Generated/IDBObjectStore.hs
@@ -1,21 +1,30 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBObjectStore
-       (put, put_, putUnchecked, add, add_, addUnchecked, deleteRange,
-        deleteRange_, deleteRangeUnchecked, delete, delete_,
-        deleteUnchecked, getRange, getRange_, getRangeUnchecked, get, get_,
-        getUnchecked, clear, clear_, clearUnchecked, openCursorRange,
-        openCursorRange_, openCursorRangeUnchecked, openCursor,
-        openCursor_, openCursorUnchecked, createIndex', createIndex'_,
+       (put, put_, putUnsafe, putUnchecked, add, add_, addUnsafe,
+        addUnchecked, deleteRange, deleteRange_, deleteRangeUnsafe,
+        deleteRangeUnchecked, delete, delete_, deleteUnsafe,
+        deleteUnchecked, getRange, getRange_, getRangeUnsafe,
+        getRangeUnchecked, get, get_, getUnsafe, getUnchecked, clear,
+        clear_, clearUnsafe, clearUnchecked, openCursorRange,
+        openCursorRange_, openCursorRangeUnsafe, openCursorRangeUnchecked,
+        openCursor, openCursor_, openCursorUnsafe, openCursorUnchecked,
+        createIndex', createIndex'_, createIndex'Unsafe,
         createIndex'Unchecked, createIndex, createIndex_,
-        createIndexUnchecked, index, index_, indexUnchecked, deleteIndex,
-        countRange, countRange_, countRangeUnchecked, count, count_,
-        countUnchecked, getName, getNameUnchecked, getKeyPath,
-        getKeyPathUnchecked, getIndexNames, getIndexNamesUnchecked,
-        getTransaction, getTransactionUnchecked, getAutoIncrement,
-        IDBObjectStore, castToIDBObjectStore, gTypeIDBObjectStore)
+        createIndexUnsafe, createIndexUnchecked, index, index_,
+        indexUnsafe, indexUnchecked, deleteIndex, countRange, countRange_,
+        countRangeUnsafe, countRangeUnchecked, count, count_, countUnsafe,
+        countUnchecked, getName, getNameUnsafe, getNameUnchecked,
+        getKeyPath, getKeyPathUnsafe, getKeyPathUnchecked, getIndexNames,
+        getIndexNamesUnsafe, getIndexNamesUnchecked, getTransaction,
+        getTransactionUnsafe, getTransactionUnchecked, getAutoIncrement,
+        IDBObjectStore(..), gTypeIDBObjectStore)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -26,6 +35,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
 put ::
@@ -41,6 +60,15 @@
   = liftDOM (void (self ^. jsf "put" [toJSVal value, toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
+putUnsafe ::
+          (MonadDOM m, HasCallStack) =>
+            IDBObjectStore -> JSVal -> JSVal -> m IDBRequest
+putUnsafe self value key
+  = liftDOM
+      (((self ^. jsf "put" [toJSVal value, toJSVal key]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
 putUnchecked ::
              (MonadDOM m) => IDBObjectStore -> JSVal -> JSVal -> m IDBRequest
 putUnchecked self value key
@@ -62,6 +90,15 @@
   = liftDOM (void (self ^. jsf "add" [toJSVal value, toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
+addUnsafe ::
+          (MonadDOM m, HasCallStack) =>
+            IDBObjectStore -> JSVal -> JSVal -> m IDBRequest
+addUnsafe self value key
+  = liftDOM
+      (((self ^. jsf "add" [toJSVal value, toJSVal key]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
 addUnchecked ::
              (MonadDOM m) => IDBObjectStore -> JSVal -> JSVal -> m IDBRequest
 addUnchecked self value key
@@ -83,6 +120,15 @@
   = liftDOM (void (self ^. jsf "delete" [toJSVal keyRange]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+deleteRangeUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
+deleteRangeUnsafe self keyRange
+  = liftDOM
+      (((self ^. jsf "delete" [toJSVal keyRange]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
 deleteRangeUnchecked ::
                      (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
 deleteRangeUnchecked self keyRange
@@ -101,6 +147,15 @@
   = liftDOM (void (self ^. jsf "delete" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+deleteUnsafe ::
+             (MonadDOM m, HasCallStack) =>
+               IDBObjectStore -> JSVal -> m IDBRequest
+deleteUnsafe self key
+  = liftDOM
+      (((self ^. jsf "delete" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
 deleteUnchecked ::
                 (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
 deleteUnchecked self key
@@ -121,6 +176,15 @@
   = liftDOM (void (self ^. jsf "get" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+getRangeUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
+getRangeUnsafe self key
+  = liftDOM
+      (((self ^. jsf "get" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
 getRangeUnchecked ::
                   (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
 getRangeUnchecked self key
@@ -138,6 +202,15 @@
 get_ self key = liftDOM (void (self ^. jsf "get" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+getUnsafe ::
+          (MonadDOM m, HasCallStack) =>
+            IDBObjectStore -> JSVal -> m IDBRequest
+getUnsafe self key
+  = liftDOM
+      (((self ^. jsf "get" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
 getUnchecked ::
              (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
 getUnchecked self key
@@ -153,6 +226,14 @@
 clear_ self = liftDOM (void (self ^. jsf "clear" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
+clearUnsafe ::
+            (MonadDOM m, HasCallStack) => IDBObjectStore -> m IDBRequest
+clearUnsafe self
+  = liftDOM
+      (((self ^. jsf "clear" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
 clearUnchecked :: (MonadDOM m) => IDBObjectStore -> m IDBRequest
 clearUnchecked self
   = liftDOM ((self ^. jsf "clear" ()) >>= fromJSValUnchecked)
@@ -177,6 +258,16 @@
          (self ^. jsf "openCursor" [toJSVal range, toJSVal direction]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursorRangeUnsafe ::
+                      (MonadDOM m, ToJSString direction, HasCallStack) =>
+                        IDBObjectStore -> Maybe IDBKeyRange -> direction -> m IDBRequest
+openCursorRangeUnsafe self range direction
+  = liftDOM
+      (((self ^. jsf "openCursor" [toJSVal range, toJSVal direction]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
 openCursorRangeUnchecked ::
                          (MonadDOM m, ToJSString direction) =>
                            IDBObjectStore -> Maybe IDBKeyRange -> direction -> m IDBRequest
@@ -203,6 +294,16 @@
       (void (self ^. jsf "openCursor" [toJSVal key, toJSVal direction]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursorUnsafe ::
+                 (MonadDOM m, ToJSString direction, HasCallStack) =>
+                   IDBObjectStore -> JSVal -> direction -> m IDBRequest
+openCursorUnsafe self key direction
+  = liftDOM
+      (((self ^. jsf "openCursor" [toJSVal key, toJSVal direction]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
 openCursorUnchecked ::
                     (MonadDOM m, ToJSString direction) =>
                       IDBObjectStore -> JSVal -> direction -> m IDBRequest
@@ -235,6 +336,18 @@
             [toJSVal name, toJSVal (array keyPath), toJSVal options]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
+createIndex'Unsafe ::
+                   (MonadDOM m, ToJSString name, ToJSString keyPath,
+                    IsDictionary options, HasCallStack) =>
+                     IDBObjectStore -> name -> [keyPath] -> Maybe options -> m IDBIndex
+createIndex'Unsafe self name keyPath options
+  = liftDOM
+      (((self ^. jsf "createIndex"
+           [toJSVal name, toJSVal (array keyPath), toJSVal options])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
 createIndex'Unchecked ::
                       (MonadDOM m, ToJSString name, ToJSString keyPath,
                        IsDictionary options) =>
@@ -269,6 +382,18 @@
             [toJSVal name, toJSVal keyPath, toJSVal options]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
+createIndexUnsafe ::
+                  (MonadDOM m, ToJSString name, ToJSString keyPath,
+                   IsDictionary options, HasCallStack) =>
+                    IDBObjectStore -> name -> keyPath -> Maybe options -> m IDBIndex
+createIndexUnsafe self name keyPath options
+  = liftDOM
+      (((self ^. jsf "createIndex"
+           [toJSVal name, toJSVal keyPath, toJSVal options])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
 createIndexUnchecked ::
                      (MonadDOM m, ToJSString name, ToJSString keyPath,
                       IsDictionary options) =>
@@ -293,6 +418,15 @@
   = liftDOM (void (self ^. jsf "index" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
+indexUnsafe ::
+            (MonadDOM m, ToJSString name, HasCallStack) =>
+              IDBObjectStore -> name -> m IDBIndex
+indexUnsafe self name
+  = liftDOM
+      (((self ^. jsf "index" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
 indexUnchecked ::
                (MonadDOM m, ToJSString name) =>
                  IDBObjectStore -> name -> m IDBIndex
@@ -320,6 +454,15 @@
   = liftDOM (void (self ^. jsf "count" [toJSVal range]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+countRangeUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
+countRangeUnsafe self range
+  = liftDOM
+      (((self ^. jsf "count" [toJSVal range]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
 countRangeUnchecked ::
                     (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
 countRangeUnchecked self range
@@ -338,6 +481,15 @@
   = liftDOM (void (self ^. jsf "count" [toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+countUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              IDBObjectStore -> JSVal -> m IDBRequest
+countUnsafe self key
+  = liftDOM
+      (((self ^. jsf "count" [toJSVal key]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
 countUnchecked ::
                (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
 countUnchecked self key
@@ -351,6 +503,15 @@
 getName self = liftDOM ((self ^. js "name") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
+getNameUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                IDBObjectStore -> m result
+getNameUnsafe self
+  = liftDOM
+      (((self ^. js "name") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
 getNameUnchecked ::
                  (MonadDOM m, FromJSString result) => IDBObjectStore -> m result
 getNameUnchecked self
@@ -361,6 +522,14 @@
 getKeyPath self = liftDOM ((self ^. js "keyPath") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
+getKeyPathUnsafe ::
+                 (MonadDOM m, HasCallStack) => IDBObjectStore -> m IDBAny
+getKeyPathUnsafe self
+  = liftDOM
+      (((self ^. js "keyPath") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
 getKeyPathUnchecked :: (MonadDOM m) => IDBObjectStore -> m IDBAny
 getKeyPathUnchecked self
   = liftDOM ((self ^. js "keyPath") >>= fromJSValUnchecked)
@@ -372,6 +541,14 @@
   = liftDOM ((self ^. js "indexNames") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.indexNames Mozilla IDBObjectStore.indexNames documentation> 
+getIndexNamesUnsafe ::
+                    (MonadDOM m, HasCallStack) => IDBObjectStore -> m DOMStringList
+getIndexNamesUnsafe self
+  = liftDOM
+      (((self ^. js "indexNames") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.indexNames Mozilla IDBObjectStore.indexNames documentation> 
 getIndexNamesUnchecked ::
                        (MonadDOM m) => IDBObjectStore -> m DOMStringList
 getIndexNamesUnchecked self
@@ -382,6 +559,14 @@
                (MonadDOM m) => IDBObjectStore -> m (Maybe IDBTransaction)
 getTransaction self
   = liftDOM ((self ^. js "transaction") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.transaction Mozilla IDBObjectStore.transaction documentation> 
+getTransactionUnsafe ::
+                     (MonadDOM m, HasCallStack) => IDBObjectStore -> m IDBTransaction
+getTransactionUnsafe self
+  = liftDOM
+      (((self ^. js "transaction") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.transaction Mozilla IDBObjectStore.transaction documentation> 
 getTransactionUnchecked ::
diff --git a/src/JSDOM/Generated/IDBOpenDBRequest.hs b/src/JSDOM/Generated/IDBOpenDBRequest.hs
--- a/src/JSDOM/Generated/IDBOpenDBRequest.hs
+++ b/src/JSDOM/Generated/IDBOpenDBRequest.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBOpenDBRequest
-       (blocked, upgradeNeeded, IDBOpenDBRequest, castToIDBOpenDBRequest,
+       (blocked, upgradeNeeded, IDBOpenDBRequest(..),
         gTypeIDBOpenDBRequest)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onblocked Mozilla IDBOpenDBRequest.onblocked documentation> 
 blocked :: EventName IDBOpenDBRequest IDBVersionChangeEvent
diff --git a/src/JSDOM/Generated/IDBRequest.hs b/src/JSDOM/Generated/IDBRequest.hs
--- a/src/JSDOM/Generated/IDBRequest.hs
+++ b/src/JSDOM/Generated/IDBRequest.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBRequest
-       (getResult, getResultUnchecked, getError, getErrorUnchecked,
-        getSource, getSourceUnchecked, getTransaction,
-        getTransactionUnchecked, getReadyState, success, error, IDBRequest,
-        castToIDBRequest, gTypeIDBRequest, IsIDBRequest, toIDBRequest)
+       (getResult, getResultUnsafe, getResultUnchecked, getError,
+        getErrorUnsafe, getErrorUnchecked, getSource, getSourceUnsafe,
+        getSourceUnchecked, getTransaction, getTransactionUnsafe,
+        getTransactionUnchecked, getReadyState, success, error,
+        IDBRequest(..), gTypeIDBRequest, IsIDBRequest, toIDBRequest)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
 getResult ::
@@ -25,6 +40,14 @@
   = liftDOM (((toIDBRequest self) ^. js "result") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
+getResultUnsafe ::
+                (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m IDBAny
+getResultUnsafe self
+  = liftDOM
+      ((((toIDBRequest self) ^. js "result") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
 getResultUnchecked ::
                    (MonadDOM m, IsIDBRequest self) => self -> m IDBAny
 getResultUnchecked self
@@ -38,6 +61,14 @@
   = liftDOM (((toIDBRequest self) ^. js "error") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
+getErrorUnsafe ::
+               (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m DOMError
+getErrorUnsafe self
+  = liftDOM
+      ((((toIDBRequest self) ^. js "error") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
 getErrorUnchecked ::
                   (MonadDOM m, IsIDBRequest self) => self -> m DOMError
 getErrorUnchecked self
@@ -51,6 +82,14 @@
   = liftDOM (((toIDBRequest self) ^. js "source") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
+getSourceUnsafe ::
+                (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m IDBAny
+getSourceUnsafe self
+  = liftDOM
+      ((((toIDBRequest self) ^. js "source") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
 getSourceUnchecked ::
                    (MonadDOM m, IsIDBRequest self) => self -> m IDBAny
 getSourceUnchecked self
@@ -62,6 +101,15 @@
                (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBTransaction)
 getTransaction self
   = liftDOM (((toIDBRequest self) ^. js "transaction") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.transaction Mozilla IDBRequest.transaction documentation> 
+getTransactionUnsafe ::
+                     (MonadDOM m, IsIDBRequest self, HasCallStack) =>
+                       self -> m IDBTransaction
+getTransactionUnsafe self
+  = liftDOM
+      ((((toIDBRequest self) ^. js "transaction") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.transaction Mozilla IDBRequest.transaction documentation> 
 getTransactionUnchecked ::
diff --git a/src/JSDOM/Generated/IDBTransaction.hs b/src/JSDOM/Generated/IDBTransaction.hs
--- a/src/JSDOM/Generated/IDBTransaction.hs
+++ b/src/JSDOM/Generated/IDBTransaction.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBTransaction
-       (objectStore, objectStore_, objectStoreUnchecked, abort, getMode,
-        getDb, getDbUnchecked, getError, getErrorUnchecked, abortEvent,
-        complete, error, IDBTransaction, castToIDBTransaction,
+       (objectStore, objectStore_, objectStoreUnsafe,
+        objectStoreUnchecked, abort, getMode, getDb, getDbUnsafe,
+        getDbUnchecked, getError, getErrorUnsafe, getErrorUnchecked,
+        abortEvent, complete, error, IDBTransaction(..),
         gTypeIDBTransaction)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
 objectStore ::
@@ -33,6 +48,15 @@
   = liftDOM (void (self ^. jsf "objectStore" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
+objectStoreUnsafe ::
+                  (MonadDOM m, ToJSString name, HasCallStack) =>
+                    IDBTransaction -> name -> m IDBObjectStore
+objectStoreUnsafe self name
+  = liftDOM
+      (((self ^. jsf "objectStore" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
 objectStoreUnchecked ::
                      (MonadDOM m, ToJSString name) =>
                        IDBTransaction -> name -> m IDBObjectStore
@@ -54,6 +78,14 @@
 getDb self = liftDOM ((self ^. js "db") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.db Mozilla IDBTransaction.db documentation> 
+getDbUnsafe ::
+            (MonadDOM m, HasCallStack) => IDBTransaction -> m IDBDatabase
+getDbUnsafe self
+  = liftDOM
+      (((self ^. js "db") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.db Mozilla IDBTransaction.db documentation> 
 getDbUnchecked :: (MonadDOM m) => IDBTransaction -> m IDBDatabase
 getDbUnchecked self
   = liftDOM ((self ^. js "db") >>= fromJSValUnchecked)
@@ -61,6 +93,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.error Mozilla IDBTransaction.error documentation> 
 getError :: (MonadDOM m) => IDBTransaction -> m (Maybe DOMError)
 getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.error Mozilla IDBTransaction.error documentation> 
+getErrorUnsafe ::
+               (MonadDOM m, HasCallStack) => IDBTransaction -> m DOMError
+getErrorUnsafe self
+  = liftDOM
+      (((self ^. js "error") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.error Mozilla IDBTransaction.error documentation> 
 getErrorUnchecked :: (MonadDOM m) => IDBTransaction -> m DOMError
diff --git a/src/JSDOM/Generated/IDBVersionChangeEvent.hs b/src/JSDOM/Generated/IDBVersionChangeEvent.hs
--- a/src/JSDOM/Generated/IDBVersionChangeEvent.hs
+++ b/src/JSDOM/Generated/IDBVersionChangeEvent.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.IDBVersionChangeEvent
-       (getOldVersion, getNewVersion, getNewVersionUnchecked,
-        IDBVersionChangeEvent, castToIDBVersionChangeEvent,
+       (getOldVersion, getNewVersion, getNewVersionUnsafe,
+        getNewVersionUnchecked, IDBVersionChangeEvent(..),
         gTypeIDBVersionChangeEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.oldVersion Mozilla IDBVersionChangeEvent.oldVersion documentation> 
 getOldVersion :: (MonadDOM m) => IDBVersionChangeEvent -> m Word64
@@ -27,6 +41,14 @@
               (MonadDOM m) => IDBVersionChangeEvent -> m (Maybe Word64)
 getNewVersion self
   = liftDOM ((self ^. js "newVersion") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
+getNewVersionUnsafe ::
+                    (MonadDOM m, HasCallStack) => IDBVersionChangeEvent -> m Word64
+getNewVersionUnsafe self
+  = liftDOM
+      (((self ^. js "newVersion") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
 getNewVersionUnchecked ::
diff --git a/src/JSDOM/Generated/ImageData.hs b/src/JSDOM/Generated/ImageData.hs
--- a/src/JSDOM/Generated/ImageData.hs
+++ b/src/JSDOM/Generated/ImageData.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ImageData
-       (newImageData, newImageData', getWidth, getHeight, ImageData,
-        castToImageData, gTypeImageData)
+       (newImageData, newImageData', getWidth, getHeight, ImageData(..),
+        gTypeImageData)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
 newImageData ::
diff --git a/src/JSDOM/Generated/InspectorFrontendHost.hs b/src/JSDOM/Generated/InspectorFrontendHost.hs
--- a/src/JSDOM/Generated/InspectorFrontendHost.hs
+++ b/src/JSDOM/Generated/InspectorFrontendHost.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.InspectorFrontendHost
        (loaded, closeWindow, bringToFront, setZoomFactor,
@@ -9,10 +12,11 @@
         append, close, platform, platform_, port, port_, showContextMenu,
         dispatchEventAsContextMenuEvent, sendMessageToBackend,
         unbufferedLog, isUnderTest, isUnderTest_, beep, canInspectWorkers,
-        canInspectWorkers_, canSaveAs, canSaveAs_, InspectorFrontendHost,
-        castToInspectorFrontendHost, gTypeInspectorFrontendHost)
+        canInspectWorkers_, canSaveAs, canSaveAs_,
+        InspectorFrontendHost(..), gTypeInspectorFrontendHost)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.loaded Mozilla InspectorFrontendHost.loaded documentation> 
 loaded :: (MonadDOM m) => InspectorFrontendHost -> m ()
diff --git a/src/JSDOM/Generated/InternalSettings.hs b/src/JSDOM/Generated/InternalSettings.hs
--- a/src/JSDOM/Generated/InternalSettings.hs
+++ b/src/JSDOM/Generated/InternalSettings.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.InternalSettings
        (setTouchEventEmulationEnabled, setStandardFontFamily,
@@ -19,9 +22,10 @@
         setAutoscrollForDragAndDropEnabled,
         setBackgroundShouldExtendBeyondPage,
         setScrollingTreeIncludesFrames, setMinimumTimerInterval,
-        InternalSettings, castToInternalSettings, gTypeInternalSettings)
+        InternalSettings(..), gTypeInternalSettings)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -32,6 +36,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings.setTouchEventEmulationEnabled Mozilla InternalSettings.setTouchEventEmulationEnabled documentation> 
 setTouchEventEmulationEnabled ::
diff --git a/src/JSDOM/Generated/Internals.hs b/src/JSDOM/Generated/Internals.hs
--- a/src/JSDOM/Generated/Internals.hs
+++ b/src/JSDOM/Generated/Internals.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Internals
        (address, address_, nodeNeedsStyleRecalc, nodeNeedsStyleRecalc_,
@@ -11,15 +14,18 @@
         clearPageCache, pageCacheSize, pageCacheSize_,
         computedStyleIncludingVisitedInfo,
         computedStyleIncludingVisitedInfo_,
+        computedStyleIncludingVisitedInfoUnsafe,
         computedStyleIncludingVisitedInfoUnchecked, ensureShadowRoot,
-        ensureShadowRoot_, ensureShadowRootUnchecked, createShadowRoot,
-        createShadowRoot_, createShadowRootUnchecked, shadowRoot,
-        shadowRoot_, shadowRootUnchecked, shadowRootType, shadowRootType_,
-        includerFor, includerFor_, includerForUnchecked, shadowPseudoId,
-        shadowPseudoId_, setShadowPseudoId, treeScopeRootNode,
-        treeScopeRootNode_, treeScopeRootNodeUnchecked, parentTreeScope,
-        parentTreeScope_, parentTreeScopeUnchecked,
-        lastSpatialNavigationCandidateCount,
+        ensureShadowRoot_, ensureShadowRootUnsafe,
+        ensureShadowRootUnchecked, createShadowRoot, createShadowRoot_,
+        createShadowRootUnsafe, createShadowRootUnchecked, shadowRoot,
+        shadowRoot_, shadowRootUnsafe, shadowRootUnchecked, shadowRootType,
+        shadowRootType_, includerFor, includerFor_, includerForUnsafe,
+        includerForUnchecked, shadowPseudoId, shadowPseudoId_,
+        setShadowPseudoId, treeScopeRootNode, treeScopeRootNode_,
+        treeScopeRootNodeUnsafe, treeScopeRootNodeUnchecked,
+        parentTreeScope, parentTreeScope_, parentTreeScopeUnsafe,
+        parentTreeScopeUnchecked, lastSpatialNavigationCandidateCount,
         lastSpatialNavigationCandidateCount_, numberOfActiveAnimations,
         numberOfActiveAnimations_, suspendAnimations, resumeAnimations,
         animationsAreSuspended, animationsAreSuspended_,
@@ -33,26 +39,29 @@
         formControlStateOfPreviousHistoryItem,
         formControlStateOfPreviousHistoryItem_,
         setFormControlStateOfPreviousHistoryItem, absoluteCaretBounds,
-        absoluteCaretBounds_, absoluteCaretBoundsUnchecked, boundingBox,
-        boundingBox_, boundingBoxUnchecked, inspectorHighlightRects,
-        inspectorHighlightRects_, inspectorHighlightRectsUnchecked,
-        inspectorHighlightObject, inspectorHighlightObject_,
-        markerCountForNode, markerCountForNode_, markerRangeForNode,
-        markerRangeForNode_, markerRangeForNodeUnchecked,
-        markerDescriptionForNode, markerDescriptionForNode_,
-        addTextMatchMarker, setMarkedTextMatchesAreHighlighted,
-        invalidateFontCache, setScrollViewPosition, setPagination,
-        configurationForViewport, configurationForViewport_,
-        wasLastChangeUserEdit, wasLastChangeUserEdit_,
-        elementShouldAutoComplete, elementShouldAutoComplete_,
-        setEditingValue, setAutofilled, countMatchesForText,
-        countMatchesForText_, paintControlTints, scrollElementToRect,
-        rangeFromLocationAndLength, rangeFromLocationAndLength_,
+        absoluteCaretBounds_, absoluteCaretBoundsUnsafe,
+        absoluteCaretBoundsUnchecked, boundingBox, boundingBox_,
+        boundingBoxUnsafe, boundingBoxUnchecked, inspectorHighlightRects,
+        inspectorHighlightRects_, inspectorHighlightRectsUnsafe,
+        inspectorHighlightRectsUnchecked, inspectorHighlightObject,
+        inspectorHighlightObject_, markerCountForNode, markerCountForNode_,
+        markerRangeForNode, markerRangeForNode_, markerRangeForNodeUnsafe,
+        markerRangeForNodeUnchecked, markerDescriptionForNode,
+        markerDescriptionForNode_, addTextMatchMarker,
+        setMarkedTextMatchesAreHighlighted, invalidateFontCache,
+        setScrollViewPosition, setPagination, configurationForViewport,
+        configurationForViewport_, wasLastChangeUserEdit,
+        wasLastChangeUserEdit_, elementShouldAutoComplete,
+        elementShouldAutoComplete_, setEditingValue, setAutofilled,
+        countMatchesForText, countMatchesForText_, paintControlTints,
+        scrollElementToRect, rangeFromLocationAndLength,
+        rangeFromLocationAndLength_, rangeFromLocationAndLengthUnsafe,
         rangeFromLocationAndLengthUnchecked, locationFromRange,
         locationFromRange_, lengthFromRange, lengthFromRange_, rangeAsText,
-        rangeAsText_, subrange, subrange_, subrangeUnchecked,
-        rangeForDictionaryLookupAtLocation,
+        rangeAsText_, subrange, subrange_, subrangeUnsafe,
+        subrangeUnchecked, rangeForDictionaryLookupAtLocation,
         rangeForDictionaryLookupAtLocation_,
+        rangeForDictionaryLookupAtLocationUnsafe,
         rangeForDictionaryLookupAtLocationUnchecked, setDelegatesScrolling,
         lastSpellCheckRequestSequence, lastSpellCheckRequestSequence_,
         lastSpellCheckProcessedSequence, lastSpellCheckProcessedSequence_,
@@ -60,8 +69,8 @@
         setUserPreferredLanguages, wheelEventHandlerCount,
         wheelEventHandlerCount_, touchEventHandlerCount,
         touchEventHandlerCount_, nodesFromRect, nodesFromRect_,
-        nodesFromRectUnchecked, parserMetaData, parserMetaData_,
-        updateEditorUINowIfScheduled, hasSpellingMarker,
+        nodesFromRectUnsafe, nodesFromRectUnchecked, parserMetaData,
+        parserMetaData_, updateEditorUINowIfScheduled, hasSpellingMarker,
         hasSpellingMarker_, hasGrammarMarker, hasGrammarMarker_,
         hasAutocorrectedMarker, hasAutocorrectedMarker_,
         setContinuousSpellCheckingEnabled,
@@ -76,14 +85,15 @@
         layerTreeAsText_, scrollingStateTreeAsText,
         scrollingStateTreeAsText_, mainThreadScrollingReasons,
         mainThreadScrollingReasons_, nonFastScrollableRects,
-        nonFastScrollableRects_, nonFastScrollableRectsUnchecked,
-        repaintRectsAsText, repaintRectsAsText_,
-        garbageCollectDocumentResources, allowRoundingHacks,
-        insertAuthorCSS, insertUserCSS, setBatteryStatus,
-        setDeviceProximity, numberOfLiveNodes, numberOfLiveNodes_,
-        numberOfLiveDocuments, numberOfLiveDocuments_,
+        nonFastScrollableRects_, nonFastScrollableRectsUnsafe,
+        nonFastScrollableRectsUnchecked, repaintRectsAsText,
+        repaintRectsAsText_, garbageCollectDocumentResources,
+        allowRoundingHacks, insertAuthorCSS, insertUserCSS,
+        setBatteryStatus, setDeviceProximity, numberOfLiveNodes,
+        numberOfLiveNodes_, numberOfLiveDocuments, numberOfLiveDocuments_,
         consoleMessageArgumentCounts, consoleMessageArgumentCounts_,
         openDummyInspectorFrontend, openDummyInspectorFrontend_,
+        openDummyInspectorFrontendUnsafe,
         openDummyInspectorFrontendUnchecked, closeDummyInspectorFrontend,
         setJavaScriptProfilingEnabled, setInspectorIsUnderTest,
         counterValue, counterValue_, pageNumber, pageNumber_,
@@ -98,35 +108,38 @@
         webkitDidExitFullScreenForElement, setApplicationCacheOriginQuota,
         registerURLSchemeAsBypassingContentSecurityPolicy,
         removeURLSchemeRegisteredAsBypassingContentSecurityPolicy,
-        mallocStatistics, mallocStatistics_, mallocStatisticsUnchecked,
-        typeConversions, typeConversions_, typeConversionsUnchecked,
-        memoryInfo, memoryInfo_, memoryInfoUnchecked,
+        mallocStatistics, mallocStatistics_, mallocStatisticsUnsafe,
+        mallocStatisticsUnchecked, typeConversions, typeConversions_,
+        typeConversionsUnsafe, typeConversionsUnchecked, memoryInfo,
+        memoryInfo_, memoryInfoUnsafe, memoryInfoUnchecked,
         getReferencedFilePaths, getReferencedFilePaths_,
         startTrackingRepaints, stopTrackingRepaints, isTimerThrottled,
         isTimerThrottled_,
         updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks,
         getCurrentCursorInfo, getCurrentCursorInfo_, markerTextForListItem,
         markerTextForListItem_, toolTipFromElement, toolTipFromElement_,
-        deserializeBuffer, deserializeBuffer_, deserializeBufferUnchecked,
-        serializeObject, serializeObject_, serializeObjectUnchecked,
+        deserializeBuffer, deserializeBuffer_, deserializeBufferUnsafe,
+        deserializeBufferUnchecked, serializeObject, serializeObject_,
+        serializeObjectUnsafe, serializeObjectUnchecked,
         setUsesOverlayScrollbars, forceReload, simulateAudioInterruption,
         mediaElementHasCharacteristic, mediaElementHasCharacteristic_,
         initializeMockCDM, enableMockSpeechSynthesizer, getImageSourceURL,
         getImageSourceURL_, captionsStyleSheetOverride,
         captionsStyleSheetOverride_, setCaptionsStyleSheetOverride,
         setPrimaryAudioTrackLanguageOverride, setCaptionDisplayMode,
-        createTimeRanges, createTimeRanges_, createTimeRangesUnchecked,
-        closestTimeToTimeRanges, closestTimeToTimeRanges_,
-        isSelectPopupVisible, isSelectPopupVisible_, isVibrating,
-        isVibrating_, isPluginUnavailabilityIndicatorObscured,
+        createTimeRanges, createTimeRanges_, createTimeRangesUnsafe,
+        createTimeRangesUnchecked, closestTimeToTimeRanges,
+        closestTimeToTimeRanges_, isSelectPopupVisible,
+        isSelectPopupVisible_, isVibrating, isVibrating_,
+        isPluginUnavailabilityIndicatorObscured,
         isPluginUnavailabilityIndicatorObscured_, isPluginSnapshotted,
         isPluginSnapshotted_, selectionBounds, selectionBounds_,
-        selectionBoundsUnchecked, initializeMockMediaSource,
-        bufferedSamplesForTrackID, bufferedSamplesForTrackID_,
-        beginMediaSessionInterruption, endMediaSessionInterruption,
-        applicationWillEnterForeground, applicationWillEnterBackground,
-        setMediaSessionRestrictions, postRemoteControlCommand,
-        simulateSystemSleep, simulateSystemWake,
+        selectionBoundsUnsafe, selectionBoundsUnchecked,
+        initializeMockMediaSource, bufferedSamplesForTrackID,
+        bufferedSamplesForTrackID_, beginMediaSessionInterruption,
+        endMediaSessionInterruption, applicationWillEnterForeground,
+        applicationWillEnterBackground, setMediaSessionRestrictions,
+        postRemoteControlCommand, simulateSystemSleep, simulateSystemWake,
         elementIsBlockingDisplaySleep, elementIsBlockingDisplaySleep_,
         installMockPageOverlay, pageOverlayLayerTreeAsText,
         pageOverlayLayerTreeAsText_, setPageMuted, isPagePlayingAudio,
@@ -135,10 +148,11 @@
         pattern LAYER_TREE_INCLUDES_REPAINT_RECTS,
         pattern LAYER_TREE_INCLUDES_PAINTING_PHASES,
         pattern LAYER_TREE_INCLUDES_CONTENT_LAYERS, getSettings,
-        getSettingsUnchecked, getWorkerThreadCount, getConsoleProfiles,
-        Internals, castToInternals, gTypeInternals)
+        getSettingsUnsafe, getSettingsUnchecked, getWorkerThreadCount,
+        getConsoleProfiles, Internals(..), gTypeInternals)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -149,6 +163,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.address Mozilla Internals.address documentation> 
 address ::
@@ -323,6 +347,16 @@
          (self ^. jsf "computedStyleIncludingVisitedInfo" [toJSVal node]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.computedStyleIncludingVisitedInfo Mozilla Internals.computedStyleIncludingVisitedInfo documentation> 
+computedStyleIncludingVisitedInfoUnsafe ::
+                                        (MonadDOM m, IsNode node, HasCallStack) =>
+                                          Internals -> Maybe node -> m CSSStyleDeclaration
+computedStyleIncludingVisitedInfoUnsafe self node
+  = liftDOM
+      (((self ^. jsf "computedStyleIncludingVisitedInfo" [toJSVal node])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.computedStyleIncludingVisitedInfo Mozilla Internals.computedStyleIncludingVisitedInfo documentation> 
 computedStyleIncludingVisitedInfoUnchecked ::
                                            (MonadDOM m, IsNode node) =>
                                              Internals -> Maybe node -> m CSSStyleDeclaration
@@ -346,6 +380,15 @@
   = liftDOM (void (self ^. jsf "ensureShadowRoot" [toJSVal host]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.ensureShadowRoot Mozilla Internals.ensureShadowRoot documentation> 
+ensureShadowRootUnsafe ::
+                       (MonadDOM m, IsElement host, HasCallStack) =>
+                         Internals -> Maybe host -> m Node
+ensureShadowRootUnsafe self host
+  = liftDOM
+      (((self ^. jsf "ensureShadowRoot" [toJSVal host]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.ensureShadowRoot Mozilla Internals.ensureShadowRoot documentation> 
 ensureShadowRootUnchecked ::
                           (MonadDOM m, IsElement host) => Internals -> Maybe host -> m Node
 ensureShadowRootUnchecked self host
@@ -368,6 +411,15 @@
   = liftDOM (void (self ^. jsf "createShadowRoot" [toJSVal host]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.createShadowRoot Mozilla Internals.createShadowRoot documentation> 
+createShadowRootUnsafe ::
+                       (MonadDOM m, IsElement host, HasCallStack) =>
+                         Internals -> Maybe host -> m Node
+createShadowRootUnsafe self host
+  = liftDOM
+      (((self ^. jsf "createShadowRoot" [toJSVal host]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.createShadowRoot Mozilla Internals.createShadowRoot documentation> 
 createShadowRootUnchecked ::
                           (MonadDOM m, IsElement host) => Internals -> Maybe host -> m Node
 createShadowRootUnchecked self host
@@ -389,6 +441,15 @@
   = liftDOM (void (self ^. jsf "shadowRoot" [toJSVal host]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shadowRoot Mozilla Internals.shadowRoot documentation> 
+shadowRootUnsafe ::
+                 (MonadDOM m, IsElement host, HasCallStack) =>
+                   Internals -> Maybe host -> m Node
+shadowRootUnsafe self host
+  = liftDOM
+      (((self ^. jsf "shadowRoot" [toJSVal host]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.shadowRoot Mozilla Internals.shadowRoot documentation> 
 shadowRootUnchecked ::
                     (MonadDOM m, IsElement host) => Internals -> Maybe host -> m Node
 shadowRootUnchecked self host
@@ -425,6 +486,15 @@
   = liftDOM (void (self ^. jsf "includerFor" [toJSVal node]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.includerFor Mozilla Internals.includerFor documentation> 
+includerForUnsafe ::
+                  (MonadDOM m, IsNode node, HasCallStack) =>
+                    Internals -> Maybe node -> m Element
+includerForUnsafe self node
+  = liftDOM
+      (((self ^. jsf "includerFor" [toJSVal node]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.includerFor Mozilla Internals.includerFor documentation> 
 includerForUnchecked ::
                      (MonadDOM m, IsNode node) => Internals -> Maybe node -> m Element
 includerForUnchecked self node
@@ -471,6 +541,15 @@
   = liftDOM (void (self ^. jsf "treeScopeRootNode" [toJSVal node]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.treeScopeRootNode Mozilla Internals.treeScopeRootNode documentation> 
+treeScopeRootNodeUnsafe ::
+                        (MonadDOM m, IsNode node, HasCallStack) =>
+                          Internals -> Maybe node -> m Node
+treeScopeRootNodeUnsafe self node
+  = liftDOM
+      (((self ^. jsf "treeScopeRootNode" [toJSVal node]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.treeScopeRootNode Mozilla Internals.treeScopeRootNode documentation> 
 treeScopeRootNodeUnchecked ::
                            (MonadDOM m, IsNode node) => Internals -> Maybe node -> m Node
 treeScopeRootNodeUnchecked self node
@@ -493,6 +572,15 @@
   = liftDOM (void (self ^. jsf "parentTreeScope" [toJSVal node]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.parentTreeScope Mozilla Internals.parentTreeScope documentation> 
+parentTreeScopeUnsafe ::
+                      (MonadDOM m, IsNode node, HasCallStack) =>
+                        Internals -> Maybe node -> m Node
+parentTreeScopeUnsafe self node
+  = liftDOM
+      (((self ^. jsf "parentTreeScope" [toJSVal node]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.parentTreeScope Mozilla Internals.parentTreeScope documentation> 
 parentTreeScopeUnchecked ::
                          (MonadDOM m, IsNode node) => Internals -> Maybe node -> m Node
 parentTreeScopeUnchecked self node
@@ -722,6 +810,14 @@
   = liftDOM (void (self ^. jsf "absoluteCaretBounds" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.absoluteCaretBounds Mozilla Internals.absoluteCaretBounds documentation> 
+absoluteCaretBoundsUnsafe ::
+                          (MonadDOM m, HasCallStack) => Internals -> m ClientRect
+absoluteCaretBoundsUnsafe self
+  = liftDOM
+      (((self ^. jsf "absoluteCaretBounds" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.absoluteCaretBounds Mozilla Internals.absoluteCaretBounds documentation> 
 absoluteCaretBoundsUnchecked ::
                              (MonadDOM m) => Internals -> m ClientRect
 absoluteCaretBoundsUnchecked self
@@ -744,6 +840,15 @@
   = liftDOM (void (self ^. jsf "boundingBox" [toJSVal element]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.boundingBox Mozilla Internals.boundingBox documentation> 
+boundingBoxUnsafe ::
+                  (MonadDOM m, IsElement element, HasCallStack) =>
+                    Internals -> Maybe element -> m ClientRect
+boundingBoxUnsafe self element
+  = liftDOM
+      (((self ^. jsf "boundingBox" [toJSVal element]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.boundingBox Mozilla Internals.boundingBox documentation> 
 boundingBoxUnchecked ::
                      (MonadDOM m, IsElement element) =>
                        Internals -> Maybe element -> m ClientRect
@@ -765,6 +870,14 @@
   = liftDOM (void (self ^. jsf "inspectorHighlightRects" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.inspectorHighlightRects Mozilla Internals.inspectorHighlightRects documentation> 
+inspectorHighlightRectsUnsafe ::
+                              (MonadDOM m, HasCallStack) => Internals -> m ClientRectList
+inspectorHighlightRectsUnsafe self
+  = liftDOM
+      (((self ^. jsf "inspectorHighlightRects" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.inspectorHighlightRects Mozilla Internals.inspectorHighlightRects documentation> 
 inspectorHighlightRectsUnchecked ::
                                  (MonadDOM m) => Internals -> m ClientRectList
 inspectorHighlightRectsUnchecked self
@@ -826,6 +939,17 @@
             [toJSVal node, toJSVal markerType, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerRangeForNode Mozilla Internals.markerRangeForNode documentation> 
+markerRangeForNodeUnsafe ::
+                         (MonadDOM m, IsNode node, ToJSString markerType, HasCallStack) =>
+                           Internals -> Maybe node -> markerType -> Word -> m Range
+markerRangeForNodeUnsafe self node markerType index
+  = liftDOM
+      (((self ^. jsf "markerRangeForNode"
+           [toJSVal node, toJSVal markerType, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.markerRangeForNode Mozilla Internals.markerRangeForNode documentation> 
 markerRangeForNodeUnchecked ::
                             (MonadDOM m, IsNode node, ToJSString markerType) =>
                               Internals -> Maybe node -> markerType -> Word -> m Range
@@ -1033,6 +1157,18 @@
             [toJSVal scope, toJSVal rangeLocation, toJSVal rangeLength]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeFromLocationAndLength Mozilla Internals.rangeFromLocationAndLength documentation> 
+rangeFromLocationAndLengthUnsafe ::
+                                 (MonadDOM m, IsElement scope, HasCallStack) =>
+                                   Internals -> Maybe scope -> Int -> Int -> m Range
+rangeFromLocationAndLengthUnsafe self scope rangeLocation
+  rangeLength
+  = liftDOM
+      (((self ^. jsf "rangeFromLocationAndLength"
+           [toJSVal scope, toJSVal rangeLocation, toJSVal rangeLength])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeFromLocationAndLength Mozilla Internals.rangeFromLocationAndLength documentation> 
 rangeFromLocationAndLengthUnchecked ::
                                     (MonadDOM m, IsElement scope) =>
                                       Internals -> Maybe scope -> Int -> Int -> m Range
@@ -1115,6 +1251,17 @@
             [toJSVal range, toJSVal rangeLocation, toJSVal rangeLength]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.subrange Mozilla Internals.subrange documentation> 
+subrangeUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 Internals -> Maybe Range -> Int -> Int -> m Range
+subrangeUnsafe self range rangeLocation rangeLength
+  = liftDOM
+      (((self ^. jsf "subrange"
+           [toJSVal range, toJSVal rangeLocation, toJSVal rangeLength])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.subrange Mozilla Internals.subrange documentation> 
 subrangeUnchecked ::
                   (MonadDOM m) => Internals -> Maybe Range -> Int -> Int -> m Range
 subrangeUnchecked self range rangeLocation rangeLength
@@ -1142,6 +1289,17 @@
             [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeForDictionaryLookupAtLocation Mozilla Internals.rangeForDictionaryLookupAtLocation documentation> 
+rangeForDictionaryLookupAtLocationUnsafe ::
+                                         (MonadDOM m, HasCallStack) =>
+                                           Internals -> Int -> Int -> m Range
+rangeForDictionaryLookupAtLocationUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "rangeForDictionaryLookupAtLocation"
+           [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.rangeForDictionaryLookupAtLocation Mozilla Internals.rangeForDictionaryLookupAtLocation documentation> 
 rangeForDictionaryLookupAtLocationUnchecked ::
                                             (MonadDOM m) => Internals -> Int -> Int -> m Range
 rangeForDictionaryLookupAtLocationUnchecked self x y
@@ -1269,6 +1427,26 @@
              toJSVal allowChildFrameContent]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nodesFromRect Mozilla Internals.nodesFromRect documentation> 
+nodesFromRectUnsafe ::
+                    (MonadDOM m, IsDocument document, HasCallStack) =>
+                      Internals ->
+                        Maybe document ->
+                          Int ->
+                            Int ->
+                              Word -> Word -> Word -> Word -> Bool -> Bool -> Bool -> m NodeList
+nodesFromRectUnsafe self document x y topPadding rightPadding
+  bottomPadding leftPadding ignoreClipping allowShadowContent
+  allowChildFrameContent
+  = liftDOM
+      (((self ^. jsf "nodesFromRect"
+           [toJSVal document, toJSVal x, toJSVal y, toJSVal topPadding,
+            toJSVal rightPadding, toJSVal bottomPadding, toJSVal leftPadding,
+            toJSVal ignoreClipping, toJSVal allowShadowContent,
+            toJSVal allowChildFrameContent])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nodesFromRect Mozilla Internals.nodesFromRect documentation> 
 nodesFromRectUnchecked ::
                        (MonadDOM m, IsDocument document) =>
                          Internals ->
@@ -1504,6 +1682,14 @@
   = liftDOM (void (self ^. jsf "nonFastScrollableRects" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nonFastScrollableRects Mozilla Internals.nonFastScrollableRects documentation> 
+nonFastScrollableRectsUnsafe ::
+                             (MonadDOM m, HasCallStack) => Internals -> m ClientRectList
+nonFastScrollableRectsUnsafe self
+  = liftDOM
+      (((self ^. jsf "nonFastScrollableRects" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.nonFastScrollableRects Mozilla Internals.nonFastScrollableRects documentation> 
 nonFastScrollableRectsUnchecked ::
                                 (MonadDOM m) => Internals -> m ClientRectList
 nonFastScrollableRectsUnchecked self
@@ -1621,6 +1807,16 @@
       (void (self ^. jsf "openDummyInspectorFrontend" [toJSVal url]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.openDummyInspectorFrontend Mozilla Internals.openDummyInspectorFrontend documentation> 
+openDummyInspectorFrontendUnsafe ::
+                                 (MonadDOM m, ToJSString url, HasCallStack) =>
+                                   Internals -> url -> m Window
+openDummyInspectorFrontendUnsafe self url
+  = liftDOM
+      (((self ^. jsf "openDummyInspectorFrontend" [toJSVal url]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.openDummyInspectorFrontend Mozilla Internals.openDummyInspectorFrontend documentation> 
 openDummyInspectorFrontendUnchecked ::
                                     (MonadDOM m, ToJSString url) => Internals -> url -> m Window
 openDummyInspectorFrontendUnchecked self url
@@ -1887,6 +2083,14 @@
   = liftDOM (void (self ^. jsf "mallocStatistics" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.mallocStatistics Mozilla Internals.mallocStatistics documentation> 
+mallocStatisticsUnsafe ::
+                       (MonadDOM m, HasCallStack) => Internals -> m MallocStatistics
+mallocStatisticsUnsafe self
+  = liftDOM
+      (((self ^. jsf "mallocStatistics" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.mallocStatistics Mozilla Internals.mallocStatistics documentation> 
 mallocStatisticsUnchecked ::
                           (MonadDOM m) => Internals -> m MallocStatistics
 mallocStatisticsUnchecked self
@@ -1905,6 +2109,14 @@
   = liftDOM (void (self ^. jsf "typeConversions" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.typeConversions Mozilla Internals.typeConversions documentation> 
+typeConversionsUnsafe ::
+                      (MonadDOM m, HasCallStack) => Internals -> m TypeConversions
+typeConversionsUnsafe self
+  = liftDOM
+      (((self ^. jsf "typeConversions" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.typeConversions Mozilla Internals.typeConversions documentation> 
 typeConversionsUnchecked ::
                          (MonadDOM m) => Internals -> m TypeConversions
 typeConversionsUnchecked self
@@ -1921,6 +2133,14 @@
 memoryInfo_ self = liftDOM (void (self ^. jsf "memoryInfo" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.memoryInfo Mozilla Internals.memoryInfo documentation> 
+memoryInfoUnsafe ::
+                 (MonadDOM m, HasCallStack) => Internals -> m MemoryInfo
+memoryInfoUnsafe self
+  = liftDOM
+      (((self ^. jsf "memoryInfo" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.memoryInfo Mozilla Internals.memoryInfo documentation> 
 memoryInfoUnchecked :: (MonadDOM m) => Internals -> m MemoryInfo
 memoryInfoUnchecked self
   = liftDOM ((self ^. jsf "memoryInfo" ()) >>= fromJSValUnchecked)
@@ -2034,6 +2254,15 @@
   = liftDOM (void (self ^. jsf "deserializeBuffer" [toJSVal buffer]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.deserializeBuffer Mozilla Internals.deserializeBuffer documentation> 
+deserializeBufferUnsafe ::
+                        (MonadDOM m, IsArrayBuffer buffer, HasCallStack) =>
+                          Internals -> Maybe buffer -> m SerializedScriptValue
+deserializeBufferUnsafe self buffer
+  = liftDOM
+      (((self ^. jsf "deserializeBuffer" [toJSVal buffer]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.deserializeBuffer Mozilla Internals.deserializeBuffer documentation> 
 deserializeBufferUnchecked ::
                            (MonadDOM m, IsArrayBuffer buffer) =>
                              Internals -> Maybe buffer -> m SerializedScriptValue
@@ -2058,6 +2287,15 @@
   = liftDOM (void (self ^. jsf "serializeObject" [toJSVal obj]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.serializeObject Mozilla Internals.serializeObject documentation> 
+serializeObjectUnsafe ::
+                      (MonadDOM m, IsSerializedScriptValue obj, HasCallStack) =>
+                        Internals -> Maybe obj -> m ArrayBuffer
+serializeObjectUnsafe self obj
+  = liftDOM
+      (((self ^. jsf "serializeObject" [toJSVal obj]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.serializeObject Mozilla Internals.serializeObject documentation> 
 serializeObjectUnchecked ::
                          (MonadDOM m, IsSerializedScriptValue obj) =>
                            Internals -> Maybe obj -> m ArrayBuffer
@@ -2192,6 +2430,18 @@
             [toJSVal startTimes, toJSVal endTimes]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.createTimeRanges Mozilla Internals.createTimeRanges documentation> 
+createTimeRangesUnsafe ::
+                       (MonadDOM m, IsFloat32Array startTimes, IsFloat32Array endTimes,
+                        HasCallStack) =>
+                         Internals -> Maybe startTimes -> Maybe endTimes -> m TimeRanges
+createTimeRangesUnsafe self startTimes endTimes
+  = liftDOM
+      (((self ^. jsf "createTimeRanges"
+           [toJSVal startTimes, toJSVal endTimes])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.createTimeRanges Mozilla Internals.createTimeRanges documentation> 
 createTimeRangesUnchecked ::
                           (MonadDOM m, IsFloat32Array startTimes, IsFloat32Array endTimes) =>
                             Internals -> Maybe startTimes -> Maybe endTimes -> m TimeRanges
@@ -2291,6 +2541,14 @@
   = liftDOM (void (self ^. jsf "selectionBounds" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.selectionBounds Mozilla Internals.selectionBounds documentation> 
+selectionBoundsUnsafe ::
+                      (MonadDOM m, HasCallStack) => Internals -> m ClientRect
+selectionBoundsUnsafe self
+  = liftDOM
+      (((self ^. jsf "selectionBounds" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.selectionBounds Mozilla Internals.selectionBounds documentation> 
 selectionBoundsUnchecked ::
                          (MonadDOM m) => Internals -> m ClientRect
 selectionBoundsUnchecked self
@@ -2433,6 +2691,14 @@
 getSettings ::
             (MonadDOM m) => Internals -> m (Maybe InternalSettings)
 getSettings self = liftDOM ((self ^. js "settings") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.settings Mozilla Internals.settings documentation> 
+getSettingsUnsafe ::
+                  (MonadDOM m, HasCallStack) => Internals -> m InternalSettings
+getSettingsUnsafe self
+  = liftDOM
+      (((self ^. js "settings") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Internals.settings Mozilla Internals.settings documentation> 
 getSettingsUnchecked ::
diff --git a/src/JSDOM/Generated/KeyboardEvent.hs b/src/JSDOM/Generated/KeyboardEvent.hs
--- a/src/JSDOM/Generated/KeyboardEvent.hs
+++ b/src/JSDOM/Generated/KeyboardEvent.hs
@@ -1,14 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.KeyboardEvent
        (initKeyboardEvent, pattern DOM_KEY_LOCATION_STANDARD,
         pattern DOM_KEY_LOCATION_LEFT, pattern DOM_KEY_LOCATION_RIGHT,
         pattern DOM_KEY_LOCATION_NUMPAD, getKeyIdentifier, getLocation,
         getKeyLocation, getCtrlKey, getShiftKey, getAltKey, getMetaKey,
-        getAltGraphKey, KeyboardEvent, castToKeyboardEvent,
-        gTypeKeyboardEvent)
+        getAltGraphKey, KeyboardEvent(..), gTypeKeyboardEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.initKeyboardEvent Mozilla KeyboardEvent.initKeyboardEvent documentation> 
 initKeyboardEvent ::
diff --git a/src/JSDOM/Generated/Location.hs b/src/JSDOM/Generated/Location.hs
--- a/src/JSDOM/Generated/Location.hs
+++ b/src/JSDOM/Generated/Location.hs
@@ -1,14 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Location
        (assign, replace, reload, toString, toString_, setHref, getHref,
         setProtocol, getProtocol, setHost, getHost, setHostname,
         getHostname, setPort, getPort, setPathname, getPathname, setSearch,
         getSearch, setHash, getHash, getOrigin, getAncestorOrigins,
-        getAncestorOriginsUnchecked, Location, castToLocation,
-        gTypeLocation)
+        getAncestorOriginsUnsafe, getAncestorOriginsUnchecked,
+        Location(..), gTypeLocation)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.assign Mozilla Location.assign documentation> 
 assign :: (MonadDOM m, ToJSString url) => Location -> url -> m ()
@@ -138,6 +152,14 @@
                    (MonadDOM m) => Location -> m (Maybe DOMStringList)
 getAncestorOrigins self
   = liftDOM ((self ^. js "ancestorOrigins") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.ancestorOrigins Mozilla Location.ancestorOrigins documentation> 
+getAncestorOriginsUnsafe ::
+                         (MonadDOM m, HasCallStack) => Location -> m DOMStringList
+getAncestorOriginsUnsafe self
+  = liftDOM
+      (((self ^. js "ancestorOrigins") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.ancestorOrigins Mozilla Location.ancestorOrigins documentation> 
 getAncestorOriginsUnchecked ::
diff --git a/src/JSDOM/Generated/MallocStatistics.hs b/src/JSDOM/Generated/MallocStatistics.hs
--- a/src/JSDOM/Generated/MallocStatistics.hs
+++ b/src/JSDOM/Generated/MallocStatistics.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MallocStatistics
        (getReservedVMBytes, getCommittedVMBytes, getFreeListBytes,
-        MallocStatistics, castToMallocStatistics, gTypeMallocStatistics)
+        MallocStatistics(..), gTypeMallocStatistics)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics.reservedVMBytes Mozilla MallocStatistics.reservedVMBytes documentation> 
 getReservedVMBytes :: (MonadDOM m) => MallocStatistics -> m Word
diff --git a/src/JSDOM/Generated/MediaController.hs b/src/JSDOM/Generated/MediaController.hs
--- a/src/JSDOM/Generated/MediaController.hs
+++ b/src/JSDOM/Generated/MediaController.hs
@@ -1,15 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaController
        (newMediaController, play, pause, unpause, getBuffered,
-        getBufferedUnchecked, getSeekable, getSeekableUnchecked,
-        getDuration, setCurrentTime, getCurrentTime, getPaused, getPlayed,
-        getPlayedUnchecked, getPlaybackState, setDefaultPlaybackRate,
-        getDefaultPlaybackRate, setPlaybackRate, getPlaybackRate,
-        setVolume, getVolume, setMuted, getMuted, MediaController,
-        castToMediaController, gTypeMediaController)
+        getBufferedUnsafe, getBufferedUnchecked, getSeekable,
+        getSeekableUnsafe, getSeekableUnchecked, getDuration,
+        setCurrentTime, getCurrentTime, getPaused, getPlayed,
+        getPlayedUnsafe, getPlayedUnchecked, getPlaybackState,
+        setDefaultPlaybackRate, getDefaultPlaybackRate, setPlaybackRate,
+        getPlaybackRate, setVolume, getVolume, setMuted, getMuted,
+        MediaController(..), gTypeMediaController)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation> 
 newMediaController :: (MonadDOM m) => m MediaController
@@ -44,6 +59,14 @@
 getBuffered self = liftDOM ((self ^. js "buffered") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.buffered Mozilla MediaController.buffered documentation> 
+getBufferedUnsafe ::
+                  (MonadDOM m, HasCallStack) => MediaController -> m TimeRanges
+getBufferedUnsafe self
+  = liftDOM
+      (((self ^. js "buffered") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.buffered Mozilla MediaController.buffered documentation> 
 getBufferedUnchecked ::
                      (MonadDOM m) => MediaController -> m TimeRanges
 getBufferedUnchecked self
@@ -55,6 +78,14 @@
 getSeekable self = liftDOM ((self ^. js "seekable") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.seekable Mozilla MediaController.seekable documentation> 
+getSeekableUnsafe ::
+                  (MonadDOM m, HasCallStack) => MediaController -> m TimeRanges
+getSeekableUnsafe self
+  = liftDOM
+      (((self ^. js "seekable") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.seekable Mozilla MediaController.seekable documentation> 
 getSeekableUnchecked ::
                      (MonadDOM m) => MediaController -> m TimeRanges
 getSeekableUnchecked self
@@ -83,6 +114,14 @@
 getPlayed ::
           (MonadDOM m) => MediaController -> m (Maybe TimeRanges)
 getPlayed self = liftDOM ((self ^. js "played") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.played Mozilla MediaController.played documentation> 
+getPlayedUnsafe ::
+                (MonadDOM m, HasCallStack) => MediaController -> m TimeRanges
+getPlayedUnsafe self
+  = liftDOM
+      (((self ^. js "played") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.played Mozilla MediaController.played documentation> 
 getPlayedUnchecked ::
diff --git a/src/JSDOM/Generated/MediaControlsHost.hs b/src/JSDOM/Generated/MediaControlsHost.hs
--- a/src/JSDOM/Generated/MediaControlsHost.hs
+++ b/src/JSDOM/Generated/MediaControlsHost.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaControlsHost
        (sortedTrackListForMenu, sortedTrackListForMenu_,
@@ -8,16 +11,19 @@
         setSelectedTextTrack, updateTextTrackContainer, enteredFullscreen,
         exitedFullscreen, enterFullscreenOptimized, mediaUIImageData,
         mediaUIImageData_, getCaptionMenuOffItem,
-        getCaptionMenuOffItemUnchecked, getCaptionMenuAutomaticItem,
+        getCaptionMenuOffItemUnsafe, getCaptionMenuOffItemUnchecked,
+        getCaptionMenuAutomaticItem, getCaptionMenuAutomaticItemUnsafe,
         getCaptionMenuAutomaticItemUnchecked, getCaptionDisplayMode,
-        getTextTrackContainer, getTextTrackContainerUnchecked,
-        getMediaPlaybackAllowsInline, getSupportsFullscreen,
-        getUserGestureRequired, getExternalDeviceDisplayName,
-        getExternalDeviceType, setControlsDependOnPageScaleFactor,
-        getControlsDependOnPageScaleFactor, MediaControlsHost,
-        castToMediaControlsHost, gTypeMediaControlsHost)
+        getTextTrackContainer, getTextTrackContainerUnsafe,
+        getTextTrackContainerUnchecked, getMediaPlaybackAllowsInline,
+        getSupportsFullscreen, getUserGestureRequired,
+        getExternalDeviceDisplayName, getExternalDeviceType,
+        setControlsDependOnPageScaleFactor,
+        getControlsDependOnPageScaleFactor, MediaControlsHost(..),
+        gTypeMediaControlsHost)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -28,6 +34,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
 sortedTrackListForMenu ::
@@ -144,6 +160,14 @@
   = liftDOM ((self ^. js "captionMenuOffItem") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuOffItem Mozilla MediaControlsHost.captionMenuOffItem documentation> 
+getCaptionMenuOffItemUnsafe ::
+                            (MonadDOM m, HasCallStack) => MediaControlsHost -> m TextTrack
+getCaptionMenuOffItemUnsafe self
+  = liftDOM
+      (((self ^. js "captionMenuOffItem") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuOffItem Mozilla MediaControlsHost.captionMenuOffItem documentation> 
 getCaptionMenuOffItemUnchecked ::
                                (MonadDOM m) => MediaControlsHost -> m TextTrack
 getCaptionMenuOffItemUnchecked self
@@ -157,6 +181,14 @@
   = liftDOM ((self ^. js "captionMenuAutomaticItem") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuAutomaticItem Mozilla MediaControlsHost.captionMenuAutomaticItem documentation> 
+getCaptionMenuAutomaticItemUnsafe ::
+                                  (MonadDOM m, HasCallStack) => MediaControlsHost -> m TextTrack
+getCaptionMenuAutomaticItemUnsafe self
+  = liftDOM
+      (((self ^. js "captionMenuAutomaticItem") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuAutomaticItem Mozilla MediaControlsHost.captionMenuAutomaticItem documentation> 
 getCaptionMenuAutomaticItemUnchecked ::
                                      (MonadDOM m) => MediaControlsHost -> m TextTrack
 getCaptionMenuAutomaticItemUnchecked self
@@ -175,6 +207,14 @@
                       (MonadDOM m) => MediaControlsHost -> m (Maybe HTMLElement)
 getTextTrackContainer self
   = liftDOM ((self ^. js "textTrackContainer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.textTrackContainer Mozilla MediaControlsHost.textTrackContainer documentation> 
+getTextTrackContainerUnsafe ::
+                            (MonadDOM m, HasCallStack) => MediaControlsHost -> m HTMLElement
+getTextTrackContainerUnsafe self
+  = liftDOM
+      (((self ^. js "textTrackContainer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.textTrackContainer Mozilla MediaControlsHost.textTrackContainer documentation> 
 getTextTrackContainerUnchecked ::
diff --git a/src/JSDOM/Generated/MediaElementAudioSourceNode.hs b/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
--- a/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
+++ b/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaElementAudioSourceNode
-       (getMediaElement, getMediaElementUnchecked,
-        MediaElementAudioSourceNode, castToMediaElementAudioSourceNode,
-        gTypeMediaElementAudioSourceNode)
+       (getMediaElement, getMediaElementUnsafe, getMediaElementUnchecked,
+        MediaElementAudioSourceNode(..), gTypeMediaElementAudioSourceNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
 getMediaElement ::
@@ -23,6 +36,15 @@
                   MediaElementAudioSourceNode -> m (Maybe HTMLMediaElement)
 getMediaElement self
   = liftDOM ((self ^. js "mediaElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
+getMediaElementUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        MediaElementAudioSourceNode -> m HTMLMediaElement
+getMediaElementUnsafe self
+  = liftDOM
+      (((self ^. js "mediaElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
 getMediaElementUnchecked ::
diff --git a/src/JSDOM/Generated/MediaError.hs b/src/JSDOM/Generated/MediaError.hs
--- a/src/JSDOM/Generated/MediaError.hs
+++ b/src/JSDOM/Generated/MediaError.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaError
        (pattern MEDIA_ERR_ABORTED, pattern MEDIA_ERR_NETWORK,
         pattern MEDIA_ERR_DECODE, pattern MEDIA_ERR_SRC_NOT_SUPPORTED,
-        pattern MEDIA_ERR_ENCRYPTED, getCode, MediaError, castToMediaError,
+        pattern MEDIA_ERR_ENCRYPTED, getCode, MediaError(..),
         gTypeMediaError)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern MEDIA_ERR_ABORTED = 1
 pattern MEDIA_ERR_NETWORK = 2
 pattern MEDIA_ERR_DECODE = 3
diff --git a/src/JSDOM/Generated/MediaKeyError.hs b/src/JSDOM/Generated/MediaKeyError.hs
--- a/src/JSDOM/Generated/MediaKeyError.hs
+++ b/src/JSDOM/Generated/MediaKeyError.hs
@@ -1,13 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.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,
-        getCode, getSystemCode, MediaKeyError, castToMediaKeyError,
-        gTypeMediaKeyError)
+        getCode, getSystemCode, MediaKeyError(..), gTypeMediaKeyError)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern MEDIA_KEYERR_UNKNOWN = 1
 pattern MEDIA_KEYERR_CLIENT = 2
 pattern MEDIA_KEYERR_SERVICE = 3
diff --git a/src/JSDOM/Generated/MediaKeyEvent.hs b/src/JSDOM/Generated/MediaKeyEvent.hs
--- a/src/JSDOM/Generated/MediaKeyEvent.hs
+++ b/src/JSDOM/Generated/MediaKeyEvent.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaKeyEvent
-       (getKeySystem, getSessionId, getInitData, getInitDataUnchecked,
-        getMessage, getMessageUnchecked, getDefaultURL, getErrorCode,
-        getErrorCodeUnchecked, getSystemCode, MediaKeyEvent,
-        castToMediaKeyEvent, gTypeMediaKeyEvent)
+       (getKeySystem, getSessionId, getInitData, getInitDataUnsafe,
+        getInitDataUnchecked, getMessage, getMessageUnsafe,
+        getMessageUnchecked, getDefaultURL, getErrorCode,
+        getErrorCodeUnsafe, getErrorCodeUnchecked, getSystemCode,
+        MediaKeyEvent(..), gTypeMediaKeyEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.keySystem Mozilla MediaKeyEvent.keySystem documentation> 
 getKeySystem ::
@@ -36,6 +51,14 @@
 getInitData self = liftDOM ((self ^. js "initData") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.initData Mozilla MediaKeyEvent.initData documentation> 
+getInitDataUnsafe ::
+                  (MonadDOM m, HasCallStack) => MediaKeyEvent -> m Uint8Array
+getInitDataUnsafe self
+  = liftDOM
+      (((self ^. js "initData") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.initData Mozilla MediaKeyEvent.initData documentation> 
 getInitDataUnchecked ::
                      (MonadDOM m) => MediaKeyEvent -> m Uint8Array
 getInitDataUnchecked self
@@ -46,6 +69,14 @@
 getMessage self = liftDOM ((self ^. js "message") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.message Mozilla MediaKeyEvent.message documentation> 
+getMessageUnsafe ::
+                 (MonadDOM m, HasCallStack) => MediaKeyEvent -> m Uint8Array
+getMessageUnsafe self
+  = liftDOM
+      (((self ^. js "message") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.message Mozilla MediaKeyEvent.message documentation> 
 getMessageUnchecked ::
                     (MonadDOM m) => MediaKeyEvent -> m Uint8Array
 getMessageUnchecked self
@@ -62,6 +93,14 @@
              (MonadDOM m) => MediaKeyEvent -> m (Maybe MediaKeyError)
 getErrorCode self
   = liftDOM ((self ^. js "errorCode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.errorCode Mozilla MediaKeyEvent.errorCode documentation> 
+getErrorCodeUnsafe ::
+                   (MonadDOM m, HasCallStack) => MediaKeyEvent -> m MediaKeyError
+getErrorCodeUnsafe self
+  = liftDOM
+      (((self ^. js "errorCode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent.errorCode Mozilla MediaKeyEvent.errorCode documentation> 
 getErrorCodeUnchecked ::
diff --git a/src/JSDOM/Generated/MediaKeyMessageEvent.hs b/src/JSDOM/Generated/MediaKeyMessageEvent.hs
--- a/src/JSDOM/Generated/MediaKeyMessageEvent.hs
+++ b/src/JSDOM/Generated/MediaKeyMessageEvent.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaKeyMessageEvent
-       (getMessage, getMessageUnchecked, getDestinationURL,
-        MediaKeyMessageEvent, castToMediaKeyMessageEvent,
+       (getMessage, getMessageUnsafe, getMessageUnchecked,
+        getDestinationURL, MediaKeyMessageEvent(..),
         gTypeMediaKeyMessageEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,11 +20,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
 getMessage ::
            (MonadDOM m) => MediaKeyMessageEvent -> m (Maybe Uint8Array)
 getMessage self = liftDOM ((self ^. js "message") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
+getMessageUnsafe ::
+                 (MonadDOM m, HasCallStack) => MediaKeyMessageEvent -> m Uint8Array
+getMessageUnsafe self
+  = liftDOM
+      (((self ^. js "message") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
 getMessageUnchecked ::
diff --git a/src/JSDOM/Generated/MediaKeyNeededEvent.hs b/src/JSDOM/Generated/MediaKeyNeededEvent.hs
--- a/src/JSDOM/Generated/MediaKeyNeededEvent.hs
+++ b/src/JSDOM/Generated/MediaKeyNeededEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaKeyNeededEvent
-       (getInitData, getInitDataUnchecked, MediaKeyNeededEvent,
-        castToMediaKeyNeededEvent, gTypeMediaKeyNeededEvent)
+       (getInitData, getInitDataUnsafe, getInitDataUnchecked,
+        MediaKeyNeededEvent(..), gTypeMediaKeyNeededEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent.initData Mozilla MediaKeyNeededEvent.initData documentation> 
 getInitData ::
             (MonadDOM m) => MediaKeyNeededEvent -> m (Maybe Uint8Array)
 getInitData self = liftDOM ((self ^. js "initData") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent.initData Mozilla MediaKeyNeededEvent.initData documentation> 
+getInitDataUnsafe ::
+                  (MonadDOM m, HasCallStack) => MediaKeyNeededEvent -> m Uint8Array
+getInitDataUnsafe self
+  = liftDOM
+      (((self ^. js "initData") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent.initData Mozilla MediaKeyNeededEvent.initData documentation> 
 getInitDataUnchecked ::
diff --git a/src/JSDOM/Generated/MediaKeySession.hs b/src/JSDOM/Generated/MediaKeySession.hs
--- a/src/JSDOM/Generated/MediaKeySession.hs
+++ b/src/JSDOM/Generated/MediaKeySession.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaKeySession
-       (update, close, getError, getErrorUnchecked, getKeySystem,
-        getSessionId, webKitKeyAdded, webKitKeyError, webKitKeyMessage,
-        MediaKeySession, castToMediaKeySession, gTypeMediaKeySession)
+       (update, close, getError, getErrorUnsafe, getErrorUnchecked,
+        getKeySystem, getSessionId, webKitKeyAdded, webKitKeyError,
+        webKitKeyMessage, MediaKeySession(..), gTypeMediaKeySession)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
 update ::
@@ -32,6 +46,14 @@
 getError ::
          (MonadDOM m) => MediaKeySession -> m (Maybe MediaKeyError)
 getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.error Mozilla WebKitMediaKeySession.error documentation> 
+getErrorUnsafe ::
+               (MonadDOM m, HasCallStack) => MediaKeySession -> m MediaKeyError
+getErrorUnsafe self
+  = liftDOM
+      (((self ^. js "error") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.error Mozilla WebKitMediaKeySession.error documentation> 
 getErrorUnchecked ::
diff --git a/src/JSDOM/Generated/MediaKeys.hs b/src/JSDOM/Generated/MediaKeys.hs
--- a/src/JSDOM/Generated/MediaKeys.hs
+++ b/src/JSDOM/Generated/MediaKeys.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaKeys
-       (newMediaKeys, createSession, createSession_,
+       (newMediaKeys, createSession, createSession_, createSessionUnsafe,
         createSessionUnchecked, isTypeSupported, isTypeSupported_,
-        getKeySystem, MediaKeys, castToMediaKeys, gTypeMediaKeys)
+        getKeySystem, MediaKeys(..), gTypeMediaKeys)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation> 
 newMediaKeys ::
@@ -40,6 +54,17 @@
   = liftDOM
       (void
          (self ^. jsf "createSession" [toJSVal type', toJSVal initData]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
+createSessionUnsafe ::
+                    (MonadDOM m, ToJSString type', IsUint8Array initData,
+                     HasCallStack) =>
+                      MediaKeys -> type' -> Maybe initData -> m MediaKeySession
+createSessionUnsafe self type' initData
+  = liftDOM
+      (((self ^. jsf "createSession" [toJSVal type', toJSVal initData])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
 createSessionUnchecked ::
diff --git a/src/JSDOM/Generated/MediaList.hs b/src/JSDOM/Generated/MediaList.hs
--- a/src/JSDOM/Generated/MediaList.hs
+++ b/src/JSDOM/Generated/MediaList.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaList
-       (item, item_, itemUnchecked, deleteMedium, appendMedium,
-        setMediaText, getMediaText, getMediaTextUnchecked, getLength,
-        MediaList, castToMediaList, gTypeMediaList)
+       (item, item_, itemUnsafe, itemUnchecked, deleteMedium,
+        appendMedium, setMediaText, getMediaText, getMediaTextUnsafe,
+        getMediaTextUnchecked, getLength, MediaList(..), gTypeMediaList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
 item ::
@@ -31,6 +45,15 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack, FromJSString result) =>
+             MediaList -> Word -> m result
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
 itemUnchecked ::
               (MonadDOM m, FromJSString result) => MediaList -> Word -> m result
 itemUnchecked self index
@@ -62,6 +85,15 @@
              (MonadDOM m, FromJSString result) => MediaList -> m (Maybe result)
 getMediaText self
   = liftDOM ((self ^. js "mediaText") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
+getMediaTextUnsafe ::
+                   (MonadDOM m, HasCallStack, FromJSString result) =>
+                     MediaList -> m result
+getMediaTextUnsafe self
+  = liftDOM
+      (((self ^. js "mediaText") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
 getMediaTextUnchecked ::
diff --git a/src/JSDOM/Generated/MediaQueryList.hs b/src/JSDOM/Generated/MediaQueryList.hs
--- a/src/JSDOM/Generated/MediaQueryList.hs
+++ b/src/JSDOM/Generated/MediaQueryList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaQueryList
-       (addListener, removeListener, getMedia, getMatches, MediaQueryList,
-        castToMediaQueryList, gTypeMediaQueryList)
+       (addListener, removeListener, getMedia, getMatches,
+        MediaQueryList(..), gTypeMediaQueryList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.addListener Mozilla MediaQueryList.addListener documentation> 
 addListener ::
diff --git a/src/JSDOM/Generated/MediaQueryListListener.hs b/src/JSDOM/Generated/MediaQueryListListener.hs
--- a/src/JSDOM/Generated/MediaQueryListListener.hs
+++ b/src/JSDOM/Generated/MediaQueryListListener.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaQueryListListener
        (newMediaQueryListListener, newMediaQueryListListenerSync,
         newMediaQueryListListenerAsync, MediaQueryListListener)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
 newMediaQueryListListener ::
diff --git a/src/JSDOM/Generated/MediaSource.hs b/src/JSDOM/Generated/MediaSource.hs
--- a/src/JSDOM/Generated/MediaSource.hs
+++ b/src/JSDOM/Generated/MediaSource.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaSource
        (newMediaSource, addSourceBuffer, addSourceBuffer_,
-        addSourceBufferUnchecked, removeSourceBuffer, endOfStream,
-        isTypeSupported, isTypeSupported_, getSourceBuffers,
+        addSourceBufferUnsafe, addSourceBufferUnchecked,
+        removeSourceBuffer, endOfStream, isTypeSupported, isTypeSupported_,
+        getSourceBuffers, getSourceBuffersUnsafe,
         getSourceBuffersUnchecked, getActiveSourceBuffers,
-        getActiveSourceBuffersUnchecked, setDuration, getDuration,
-        getReadyState, MediaSource, castToMediaSource, gTypeMediaSource)
+        getActiveSourceBuffersUnsafe, getActiveSourceBuffersUnchecked,
+        setDuration, getDuration, getReadyState, MediaSource(..),
+        gTypeMediaSource)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation> 
 newMediaSource :: (MonadDOM m) => m MediaSource
@@ -40,6 +56,15 @@
   = liftDOM (void (self ^. jsf "addSourceBuffer" [toJSVal type']))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
+addSourceBufferUnsafe ::
+                      (MonadDOM m, ToJSString type', HasCallStack) =>
+                        MediaSource -> type' -> m SourceBuffer
+addSourceBufferUnsafe self type'
+  = liftDOM
+      (((self ^. jsf "addSourceBuffer" [toJSVal type']) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
 addSourceBufferUnchecked ::
                          (MonadDOM m, ToJSString type') =>
                            MediaSource -> type' -> m SourceBuffer
@@ -81,6 +106,14 @@
   = liftDOM ((self ^. js "sourceBuffers") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.sourceBuffers Mozilla MediaSource.sourceBuffers documentation> 
+getSourceBuffersUnsafe ::
+                       (MonadDOM m, HasCallStack) => MediaSource -> m SourceBufferList
+getSourceBuffersUnsafe self
+  = liftDOM
+      (((self ^. js "sourceBuffers") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.sourceBuffers Mozilla MediaSource.sourceBuffers documentation> 
 getSourceBuffersUnchecked ::
                           (MonadDOM m) => MediaSource -> m SourceBufferList
 getSourceBuffersUnchecked self
@@ -91,6 +124,14 @@
                        (MonadDOM m) => MediaSource -> m (Maybe SourceBufferList)
 getActiveSourceBuffers self
   = liftDOM ((self ^. js "activeSourceBuffers") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.activeSourceBuffers Mozilla MediaSource.activeSourceBuffers documentation> 
+getActiveSourceBuffersUnsafe ::
+                             (MonadDOM m, HasCallStack) => MediaSource -> m SourceBufferList
+getActiveSourceBuffersUnsafe self
+  = liftDOM
+      (((self ^. js "activeSourceBuffers") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.activeSourceBuffers Mozilla MediaSource.activeSourceBuffers documentation> 
 getActiveSourceBuffersUnchecked ::
diff --git a/src/JSDOM/Generated/MediaSourceStates.hs b/src/JSDOM/Generated/MediaSourceStates.hs
--- a/src/JSDOM/Generated/MediaSourceStates.hs
+++ b/src/JSDOM/Generated/MediaSourceStates.hs
@@ -1,13 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaSourceStates
-       (getSourceType, getSourceId, getWidth, getWidthUnchecked,
-        getHeight, getHeightUnchecked, getFrameRate, getFrameRateUnchecked,
-        getAspectRatio, getAspectRatioUnchecked, getFacingMode,
-        getFacingModeUnchecked, getVolume, getVolumeUnchecked,
-        MediaSourceStates, castToMediaSourceStates, gTypeMediaSourceStates)
+       (getSourceType, getSourceId, getWidth, getWidthUnsafe,
+        getWidthUnchecked, getHeight, getHeightUnsafe, getHeightUnchecked,
+        getFrameRate, getFrameRateUnsafe, getFrameRateUnchecked,
+        getAspectRatio, getAspectRatioUnsafe, getAspectRatioUnchecked,
+        getFacingMode, getFacingModeUnsafe, getFacingModeUnchecked,
+        getVolume, getVolumeUnsafe, getVolumeUnchecked,
+        MediaSourceStates(..), gTypeMediaSourceStates)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.sourceType Mozilla MediaSourceStates.sourceType documentation> 
 getSourceType ::
@@ -36,6 +52,14 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.width Mozilla MediaSourceStates.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) => MediaSourceStates -> m Word
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.width Mozilla MediaSourceStates.width documentation> 
 getWidthUnchecked :: (MonadDOM m) => MediaSourceStates -> m Word
 getWidthUnchecked self
   = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
@@ -45,6 +69,14 @@
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.height Mozilla MediaSourceStates.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) => MediaSourceStates -> m Word
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.height Mozilla MediaSourceStates.height documentation> 
 getHeightUnchecked :: (MonadDOM m) => MediaSourceStates -> m Word
 getHeightUnchecked self
   = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
@@ -56,6 +88,14 @@
   = liftDOM ((self ^. js "frameRate") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.frameRate Mozilla MediaSourceStates.frameRate documentation> 
+getFrameRateUnsafe ::
+                   (MonadDOM m, HasCallStack) => MediaSourceStates -> m Float
+getFrameRateUnsafe self
+  = liftDOM
+      (((self ^. js "frameRate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.frameRate Mozilla MediaSourceStates.frameRate documentation> 
 getFrameRateUnchecked ::
                       (MonadDOM m) => MediaSourceStates -> m Float
 getFrameRateUnchecked self
@@ -68,6 +108,14 @@
   = liftDOM ((self ^. js "aspectRatio") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.aspectRatio Mozilla MediaSourceStates.aspectRatio documentation> 
+getAspectRatioUnsafe ::
+                     (MonadDOM m, HasCallStack) => MediaSourceStates -> m Float
+getAspectRatioUnsafe self
+  = liftDOM
+      (((self ^. js "aspectRatio") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.aspectRatio Mozilla MediaSourceStates.aspectRatio documentation> 
 getAspectRatioUnchecked ::
                         (MonadDOM m) => MediaSourceStates -> m Float
 getAspectRatioUnchecked self
@@ -80,6 +128,15 @@
   = liftDOM ((self ^. js "facingMode") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.facingMode Mozilla MediaSourceStates.facingMode documentation> 
+getFacingModeUnsafe ::
+                    (MonadDOM m, HasCallStack) =>
+                      MediaSourceStates -> m VideoFacingModeEnum
+getFacingModeUnsafe self
+  = liftDOM
+      (((self ^. js "facingMode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.facingMode Mozilla MediaSourceStates.facingMode documentation> 
 getFacingModeUnchecked ::
                        (MonadDOM m) => MediaSourceStates -> m VideoFacingModeEnum
 getFacingModeUnchecked self
@@ -88,6 +145,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.volume Mozilla MediaSourceStates.volume documentation> 
 getVolume :: (MonadDOM m) => MediaSourceStates -> m (Maybe Word)
 getVolume self = liftDOM ((self ^. js "volume") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.volume Mozilla MediaSourceStates.volume documentation> 
+getVolumeUnsafe ::
+                (MonadDOM m, HasCallStack) => MediaSourceStates -> m Word
+getVolumeUnsafe self
+  = liftDOM
+      (((self ^. js "volume") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates.volume Mozilla MediaSourceStates.volume documentation> 
 getVolumeUnchecked :: (MonadDOM m) => MediaSourceStates -> m Word
diff --git a/src/JSDOM/Generated/MediaStream.hs b/src/JSDOM/Generated/MediaStream.hs
--- a/src/JSDOM/Generated/MediaStream.hs
+++ b/src/JSDOM/Generated/MediaStream.hs
@@ -1,14 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaStream
        (newMediaStream, newMediaStream', newMediaStream'', getAudioTracks,
         getAudioTracks_, getVideoTracks, getVideoTracks_, getTracks,
         getTracks_, addTrack, removeTrack, getTrackById, getTrackById_,
-        getTrackByIdUnchecked, clone, clone_, cloneUnchecked, getId,
-        getActive, active, inactive, addTrackEvent, removeTrackEvent,
-        MediaStream, castToMediaStream, gTypeMediaStream)
+        getTrackByIdUnsafe, getTrackByIdUnchecked, clone, clone_,
+        cloneUnsafe, cloneUnchecked, getId, getActive, active, inactive,
+        addTrackEvent, removeTrackEvent, MediaStream(..), gTypeMediaStream)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
 newMediaStream :: (MonadDOM m) => m MediaStream
@@ -101,6 +115,15 @@
   = liftDOM (void (self ^. jsf "getTrackById" [toJSVal trackId]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
+getTrackByIdUnsafe ::
+                   (MonadDOM m, ToJSString trackId, HasCallStack) =>
+                     MediaStream -> trackId -> m MediaStreamTrack
+getTrackByIdUnsafe self trackId
+  = liftDOM
+      (((self ^. jsf "getTrackById" [toJSVal trackId]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
 getTrackByIdUnchecked ::
                       (MonadDOM m, ToJSString trackId) =>
                         MediaStream -> trackId -> m MediaStreamTrack
@@ -116,6 +139,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
 clone_ :: (MonadDOM m) => MediaStream -> m ()
 clone_ self = liftDOM (void (self ^. jsf "clone" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
+cloneUnsafe ::
+            (MonadDOM m, HasCallStack) => MediaStream -> m MediaStream
+cloneUnsafe self
+  = liftDOM
+      (((self ^. jsf "clone" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
 cloneUnchecked :: (MonadDOM m) => MediaStream -> m MediaStream
diff --git a/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs b/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
--- a/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
+++ b/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaStreamAudioDestinationNode
-       (getStream, getStreamUnchecked, MediaStreamAudioDestinationNode,
-        castToMediaStreamAudioDestinationNode,
+       (getStream, getStreamUnsafe, getStreamUnchecked,
+        MediaStreamAudioDestinationNode(..),
         gTypeMediaStreamAudioDestinationNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,12 +20,31 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
 getStream ::
           (MonadDOM m) =>
             MediaStreamAudioDestinationNode -> m (Maybe MediaStream)
 getStream self = liftDOM ((self ^. js "stream") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
+getStreamUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  MediaStreamAudioDestinationNode -> m MediaStream
+getStreamUnsafe self
+  = liftDOM
+      (((self ^. js "stream") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
 getStreamUnchecked ::
diff --git a/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs b/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
--- a/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
+++ b/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaStreamAudioSourceNode
-       (getMediaStream, getMediaStreamUnchecked,
-        MediaStreamAudioSourceNode, castToMediaStreamAudioSourceNode,
-        gTypeMediaStreamAudioSourceNode)
+       (getMediaStream, getMediaStreamUnsafe, getMediaStreamUnchecked,
+        MediaStreamAudioSourceNode(..), gTypeMediaStreamAudioSourceNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,12 +19,31 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
 getMediaStream ::
                (MonadDOM m) => MediaStreamAudioSourceNode -> m (Maybe MediaStream)
 getMediaStream self
   = liftDOM ((self ^. js "mediaStream") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
+getMediaStreamUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       MediaStreamAudioSourceNode -> m MediaStream
+getMediaStreamUnsafe self
+  = liftDOM
+      (((self ^. js "mediaStream") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
 getMediaStreamUnchecked ::
diff --git a/src/JSDOM/Generated/MediaStreamEvent.hs b/src/JSDOM/Generated/MediaStreamEvent.hs
--- a/src/JSDOM/Generated/MediaStreamEvent.hs
+++ b/src/JSDOM/Generated/MediaStreamEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaStreamEvent
-       (getStream, getStreamUnchecked, MediaStreamEvent,
-        castToMediaStreamEvent, gTypeMediaStreamEvent)
+       (getStream, getStreamUnsafe, getStreamUnchecked,
+        MediaStreamEvent(..), gTypeMediaStreamEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
 getStream ::
           (MonadDOM m) => MediaStreamEvent -> m (Maybe MediaStream)
 getStream self = liftDOM ((self ^. js "stream") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
+getStreamUnsafe ::
+                (MonadDOM m, HasCallStack) => MediaStreamEvent -> m MediaStream
+getStreamUnsafe self
+  = liftDOM
+      (((self ^. js "stream") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
 getStreamUnchecked ::
diff --git a/src/JSDOM/Generated/MediaStreamTrack.hs b/src/JSDOM/Generated/MediaStreamTrack.hs
--- a/src/JSDOM/Generated/MediaStreamTrack.hs
+++ b/src/JSDOM/Generated/MediaStreamTrack.hs
@@ -1,16 +1,21 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaStreamTrack
-       (getSources, getConstraints, getConstraints_,
-        getConstraintsUnchecked, states, states_, statesUnchecked,
-        getCapabilities, getCapabilities_, getCapabilitiesUnchecked,
-        applyConstraints, clone, clone_, cloneUnchecked, stop, getKind,
-        getId, getLabel, setEnabled, getEnabled, getMuted, mute, unmute,
+       (getSources, getConstraints, getConstraints_, getConstraintsUnsafe,
+        getConstraintsUnchecked, states, states_, statesUnsafe,
+        statesUnchecked, getCapabilities, getCapabilities_,
+        getCapabilitiesUnsafe, getCapabilitiesUnchecked, applyConstraints,
+        clone, clone_, cloneUnsafe, cloneUnchecked, stop, getKind, getId,
+        getLabel, setEnabled, getEnabled, getMuted, mute, unmute,
         get_readonly, getRemote, getReadyState, started, ended,
-        overConstrained, MediaStreamTrack, castToMediaStreamTrack,
-        gTypeMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack)
+        overConstrained, MediaStreamTrack(..), gTypeMediaStreamTrack,
+        IsMediaStreamTrack, toMediaStreamTrack)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +26,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSources Mozilla MediaStreamTrack.getSources documentation> 
 getSources ::
@@ -48,6 +63,16 @@
       (void ((toMediaStreamTrack self) ^. jsf "getConstraints" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
+getConstraintsUnsafe ::
+                     (MonadDOM m, IsMediaStreamTrack self, HasCallStack) =>
+                       self -> m MediaTrackConstraints
+getConstraintsUnsafe self
+  = liftDOM
+      ((((toMediaStreamTrack self) ^. jsf "getConstraints" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
 getConstraintsUnchecked ::
                         (MonadDOM m, IsMediaStreamTrack self) =>
                           self -> m MediaTrackConstraints
@@ -70,6 +95,15 @@
   = liftDOM (void ((toMediaStreamTrack self) ^. jsf "states" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.states Mozilla MediaStreamTrack.states documentation> 
+statesUnsafe ::
+             (MonadDOM m, IsMediaStreamTrack self, HasCallStack) =>
+               self -> m MediaSourceStates
+statesUnsafe self
+  = liftDOM
+      ((((toMediaStreamTrack self) ^. jsf "states" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.states Mozilla MediaStreamTrack.states documentation> 
 statesUnchecked ::
                 (MonadDOM m, IsMediaStreamTrack self) =>
                   self -> m MediaSourceStates
@@ -95,6 +129,16 @@
       (void ((toMediaStreamTrack self) ^. jsf "getCapabilities" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
+getCapabilitiesUnsafe ::
+                      (MonadDOM m, IsMediaStreamTrack self, HasCallStack) =>
+                        self -> m MediaStreamCapabilities
+getCapabilitiesUnsafe self
+  = liftDOM
+      ((((toMediaStreamTrack self) ^. jsf "getCapabilities" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
 getCapabilitiesUnchecked ::
                          (MonadDOM m, IsMediaStreamTrack self) =>
                            self -> m MediaStreamCapabilities
@@ -125,6 +169,15 @@
 clone_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
 clone_ self
   = liftDOM (void ((toMediaStreamTrack self) ^. jsf "clone" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
+cloneUnsafe ::
+            (MonadDOM m, IsMediaStreamTrack self, HasCallStack) =>
+              self -> m MediaStreamTrack
+cloneUnsafe self
+  = liftDOM
+      ((((toMediaStreamTrack self) ^. jsf "clone" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
 cloneUnchecked ::
diff --git a/src/JSDOM/Generated/MediaStreamTrackEvent.hs b/src/JSDOM/Generated/MediaStreamTrackEvent.hs
--- a/src/JSDOM/Generated/MediaStreamTrackEvent.hs
+++ b/src/JSDOM/Generated/MediaStreamTrackEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaStreamTrackEvent
-       (getTrack, getTrackUnchecked, MediaStreamTrackEvent,
-        castToMediaStreamTrackEvent, gTypeMediaStreamTrackEvent)
+       (getTrack, getTrackUnsafe, getTrackUnchecked,
+        MediaStreamTrackEvent(..), gTypeMediaStreamTrackEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent.track Mozilla MediaStreamTrackEvent.track documentation> 
 getTrack ::
          (MonadDOM m) => MediaStreamTrackEvent -> m (Maybe MediaStreamTrack)
 getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent.track Mozilla MediaStreamTrackEvent.track documentation> 
+getTrackUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 MediaStreamTrackEvent -> m MediaStreamTrack
+getTrackUnsafe self
+  = liftDOM
+      (((self ^. js "track") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent.track Mozilla MediaStreamTrackEvent.track documentation> 
 getTrackUnchecked ::
diff --git a/src/JSDOM/Generated/MediaStreamTrackSourcesCallback.hs b/src/JSDOM/Generated/MediaStreamTrackSourcesCallback.hs
--- a/src/JSDOM/Generated/MediaStreamTrackSourcesCallback.hs
+++ b/src/JSDOM/Generated/MediaStreamTrackSourcesCallback.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaStreamTrackSourcesCallback
        (newMediaStreamTrackSourcesCallback,
@@ -7,6 +10,7 @@
         MediaStreamTrackSourcesCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackSourcesCallback Mozilla MediaStreamTrackSourcesCallback documentation> 
 newMediaStreamTrackSourcesCallback ::
diff --git a/src/JSDOM/Generated/MediaTrackConstraints.hs b/src/JSDOM/Generated/MediaTrackConstraints.hs
--- a/src/JSDOM/Generated/MediaTrackConstraints.hs
+++ b/src/JSDOM/Generated/MediaTrackConstraints.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MediaTrackConstraints
-       (getMandatory, getMandatoryUnchecked, getOptional,
-        MediaTrackConstraints, castToMediaTrackConstraints,
-        gTypeMediaTrackConstraints)
+       (getMandatory, getMandatoryUnsafe, getMandatoryUnchecked,
+        getOptional, MediaTrackConstraints(..), gTypeMediaTrackConstraints)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints.mandatory Mozilla MediaTrackConstraints.mandatory documentation> 
 getMandatory ::
@@ -23,6 +36,15 @@
                MediaTrackConstraints -> m (Maybe MediaTrackConstraintSet)
 getMandatory self
   = liftDOM ((self ^. js "mandatory") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints.mandatory Mozilla MediaTrackConstraints.mandatory documentation> 
+getMandatoryUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     MediaTrackConstraints -> m MediaTrackConstraintSet
+getMandatoryUnsafe self
+  = liftDOM
+      (((self ^. js "mandatory") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints.mandatory Mozilla MediaTrackConstraints.mandatory documentation> 
 getMandatoryUnchecked ::
diff --git a/src/JSDOM/Generated/MemoryInfo.hs b/src/JSDOM/Generated/MemoryInfo.hs
--- a/src/JSDOM/Generated/MemoryInfo.hs
+++ b/src/JSDOM/Generated/MemoryInfo.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MemoryInfo
-       (getUsedJSHeapSize, getTotalJSHeapSize, MemoryInfo,
-        castToMemoryInfo, gTypeMemoryInfo)
+       (getUsedJSHeapSize, getTotalJSHeapSize, MemoryInfo(..),
+        gTypeMemoryInfo)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo.usedJSHeapSize Mozilla MemoryInfo.usedJSHeapSize documentation> 
 getUsedJSHeapSize :: (MonadDOM m) => MemoryInfo -> m Word
diff --git a/src/JSDOM/Generated/MessageChannel.hs b/src/JSDOM/Generated/MessageChannel.hs
--- a/src/JSDOM/Generated/MessageChannel.hs
+++ b/src/JSDOM/Generated/MessageChannel.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MessageChannel
-       (newMessageChannel, getPort1, getPort1Unchecked, getPort2,
-        getPort2Unchecked, MessageChannel, castToMessageChannel,
+       (newMessageChannel, getPort1, getPort1Unsafe, getPort1Unchecked,
+        getPort2, getPort2Unsafe, getPort2Unchecked, MessageChannel(..),
         gTypeMessageChannel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation> 
 newMessageChannel :: (MonadDOM m) => m MessageChannel
@@ -27,6 +41,14 @@
 getPort1 self = liftDOM ((self ^. js "port1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port1 Mozilla MessageChannel.port1 documentation> 
+getPort1Unsafe ::
+               (MonadDOM m, HasCallStack) => MessageChannel -> m MessagePort
+getPort1Unsafe self
+  = liftDOM
+      (((self ^. js "port1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port1 Mozilla MessageChannel.port1 documentation> 
 getPort1Unchecked ::
                   (MonadDOM m) => MessageChannel -> m MessagePort
 getPort1Unchecked self
@@ -35,6 +57,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port2 Mozilla MessageChannel.port2 documentation> 
 getPort2 :: (MonadDOM m) => MessageChannel -> m (Maybe MessagePort)
 getPort2 self = liftDOM ((self ^. js "port2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port2 Mozilla MessageChannel.port2 documentation> 
+getPort2Unsafe ::
+               (MonadDOM m, HasCallStack) => MessageChannel -> m MessagePort
+getPort2Unsafe self
+  = liftDOM
+      (((self ^. js "port2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port2 Mozilla MessageChannel.port2 documentation> 
 getPort2Unchecked ::
diff --git a/src/JSDOM/Generated/MessageEvent.hs b/src/JSDOM/Generated/MessageEvent.hs
--- a/src/JSDOM/Generated/MessageEvent.hs
+++ b/src/JSDOM/Generated/MessageEvent.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MessageEvent
        (initMessageEvent, webkitInitMessageEvent, getOrigin,
-        getLastEventId, getSource, getSourceUnchecked, getData, getPorts,
-        MessageEvent, castToMessageEvent, gTypeMessageEvent)
+        getLastEventId, getSource, getSourceUnsafe, getSourceUnchecked,
+        getData, getPorts, MessageEvent(..), gTypeMessageEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.initMessageEvent Mozilla MessageEvent.initMessageEvent documentation> 
 initMessageEvent ::
@@ -72,6 +86,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
 getSource :: (MonadDOM m) => MessageEvent -> m (Maybe EventTarget)
 getSource self = liftDOM ((self ^. js "source") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
+getSourceUnsafe ::
+                (MonadDOM m, HasCallStack) => MessageEvent -> m EventTarget
+getSourceUnsafe self
+  = liftDOM
+      (((self ^. js "source") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
 getSourceUnchecked :: (MonadDOM m) => MessageEvent -> m EventTarget
diff --git a/src/JSDOM/Generated/MessagePort.hs b/src/JSDOM/Generated/MessagePort.hs
--- a/src/JSDOM/Generated/MessagePort.hs
+++ b/src/JSDOM/Generated/MessagePort.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MessagePort
-       (postMessage, start, close, message, MessagePort,
-        castToMessagePort, gTypeMessagePort)
+       (postMessage, start, close, message, MessagePort(..),
+        gTypeMessagePort)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
 postMessage ::
diff --git a/src/JSDOM/Generated/MimeType.hs b/src/JSDOM/Generated/MimeType.hs
--- a/src/JSDOM/Generated/MimeType.hs
+++ b/src/JSDOM/Generated/MimeType.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MimeType
        (getType, getSuffixes, getDescription, getEnabledPlugin,
-        getEnabledPluginUnchecked, MimeType, castToMimeType, gTypeMimeType)
+        getEnabledPluginUnsafe, getEnabledPluginUnchecked, MimeType(..),
+        gTypeMimeType)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.type Mozilla MimeType.type documentation> 
 getType ::
@@ -37,6 +52,14 @@
 getEnabledPlugin :: (MonadDOM m) => MimeType -> m (Maybe Plugin)
 getEnabledPlugin self
   = liftDOM ((self ^. js "enabledPlugin") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.enabledPlugin Mozilla MimeType.enabledPlugin documentation> 
+getEnabledPluginUnsafe ::
+                       (MonadDOM m, HasCallStack) => MimeType -> m Plugin
+getEnabledPluginUnsafe self
+  = liftDOM
+      (((self ^. js "enabledPlugin") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.enabledPlugin Mozilla MimeType.enabledPlugin documentation> 
 getEnabledPluginUnchecked :: (MonadDOM m) => MimeType -> m Plugin
diff --git a/src/JSDOM/Generated/MimeTypeArray.hs b/src/JSDOM/Generated/MimeTypeArray.hs
--- a/src/JSDOM/Generated/MimeTypeArray.hs
+++ b/src/JSDOM/Generated/MimeTypeArray.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MimeTypeArray
-       (item, item_, itemUnchecked, namedItem, namedItem_,
-        namedItemUnchecked, getLength, MimeTypeArray, castToMimeTypeArray,
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked, getLength, MimeTypeArray(..),
         gTypeMimeTypeArray)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
 item :: (MonadDOM m) => MimeTypeArray -> Word -> m (Maybe MimeType)
@@ -28,6 +42,14 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => MimeTypeArray -> Word -> m MimeType
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => MimeTypeArray -> Word -> m MimeType
 itemUnchecked self index
@@ -46,6 +68,15 @@
            (MonadDOM m, ToJSString name) => MimeTypeArray -> name -> m ()
 namedItem_ self name
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  MimeTypeArray -> name -> m MimeType
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
 namedItemUnchecked ::
diff --git a/src/JSDOM/Generated/MouseEvent.hs b/src/JSDOM/Generated/MouseEvent.hs
--- a/src/JSDOM/Generated/MouseEvent.hs
+++ b/src/JSDOM/Generated/MouseEvent.hs
@@ -1,15 +1,21 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MouseEvent
        (initMouseEvent, getScreenX, getScreenY, getClientX, getClientY,
         getCtrlKey, getShiftKey, getAltKey, getMetaKey, getButton,
-        getRelatedTarget, getRelatedTargetUnchecked, getMovementX,
-        getMovementY, getOffsetX, getOffsetY, getX, getY, getFromElement,
-        getFromElementUnchecked, getToElement, getToElementUnchecked,
-        getDataTransfer, getDataTransferUnchecked, MouseEvent,
-        castToMouseEvent, gTypeMouseEvent, IsMouseEvent, toMouseEvent)
+        getRelatedTarget, getRelatedTargetUnsafe,
+        getRelatedTargetUnchecked, getMovementX, getMovementY, getOffsetX,
+        getOffsetY, getX, getY, getFromElement, getFromElementUnsafe,
+        getFromElementUnchecked, getToElement, getToElementUnsafe,
+        getToElementUnchecked, getDataTransfer, getDataTransferUnsafe,
+        getDataTransferUnchecked, MouseEvent(..), gTypeMouseEvent,
+        IsMouseEvent, toMouseEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.initMouseEvent Mozilla MouseEvent.initMouseEvent documentation> 
 initMouseEvent ::
@@ -106,6 +122,15 @@
       (((toMouseEvent self) ^. js "relatedTarget") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
+getRelatedTargetUnsafe ::
+                       (MonadDOM m, IsMouseEvent self, HasCallStack) =>
+                         self -> m EventTarget
+getRelatedTargetUnsafe self
+  = liftDOM
+      ((((toMouseEvent self) ^. js "relatedTarget") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
 getRelatedTargetUnchecked ::
                           (MonadDOM m, IsMouseEvent self) => self -> m EventTarget
 getRelatedTargetUnchecked self
@@ -158,6 +183,14 @@
   = liftDOM (((toMouseEvent self) ^. js "fromElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
+getFromElementUnsafe ::
+                     (MonadDOM m, IsMouseEvent self, HasCallStack) => self -> m Node
+getFromElementUnsafe self
+  = liftDOM
+      ((((toMouseEvent self) ^. js "fromElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
 getFromElementUnchecked ::
                         (MonadDOM m, IsMouseEvent self) => self -> m Node
 getFromElementUnchecked self
@@ -171,6 +204,14 @@
   = liftDOM (((toMouseEvent self) ^. js "toElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
+getToElementUnsafe ::
+                   (MonadDOM m, IsMouseEvent self, HasCallStack) => self -> m Node
+getToElementUnsafe self
+  = liftDOM
+      ((((toMouseEvent self) ^. js "toElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
 getToElementUnchecked ::
                       (MonadDOM m, IsMouseEvent self) => self -> m Node
 getToElementUnchecked self
@@ -183,6 +224,15 @@
 getDataTransfer self
   = liftDOM
       (((toMouseEvent self) ^. js "dataTransfer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
+getDataTransferUnsafe ::
+                      (MonadDOM m, IsMouseEvent self, HasCallStack) =>
+                        self -> m DataTransfer
+getDataTransferUnsafe self
+  = liftDOM
+      ((((toMouseEvent self) ^. js "dataTransfer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
 getDataTransferUnchecked ::
diff --git a/src/JSDOM/Generated/MutationEvent.hs b/src/JSDOM/Generated/MutationEvent.hs
--- a/src/JSDOM/Generated/MutationEvent.hs
+++ b/src/JSDOM/Generated/MutationEvent.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MutationEvent
        (initMutationEvent, pattern MODIFICATION, pattern ADDITION,
-        pattern REMOVAL, getRelatedNode, getRelatedNodeUnchecked,
-        getPrevValue, getNewValue, getAttrName, getAttrChange,
-        MutationEvent, castToMutationEvent, gTypeMutationEvent)
+        pattern REMOVAL, getRelatedNode, getRelatedNodeUnsafe,
+        getRelatedNodeUnchecked, getPrevValue, getNewValue, getAttrName,
+        getAttrChange, MutationEvent(..), gTypeMutationEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.initMutationEvent Mozilla MutationEvent.initMutationEvent documentation> 
 initMutationEvent ::
@@ -44,6 +58,14 @@
 getRelatedNode :: (MonadDOM m) => MutationEvent -> m (Maybe Node)
 getRelatedNode self
   = liftDOM ((self ^. js "relatedNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
+getRelatedNodeUnsafe ::
+                     (MonadDOM m, HasCallStack) => MutationEvent -> m Node
+getRelatedNodeUnsafe self
+  = liftDOM
+      (((self ^. js "relatedNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
 getRelatedNodeUnchecked :: (MonadDOM m) => MutationEvent -> m Node
diff --git a/src/JSDOM/Generated/MutationObserver.hs b/src/JSDOM/Generated/MutationObserver.hs
--- a/src/JSDOM/Generated/MutationObserver.hs
+++ b/src/JSDOM/Generated/MutationObserver.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MutationObserver
        (newMutationObserver, observe, takeRecords, takeRecords_,
-        disconnect, MutationObserver, castToMutationObserver,
-        gTypeMutationObserver)
+        disconnect, MutationObserver(..), gTypeMutationObserver)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation> 
 newMutationObserver ::
diff --git a/src/JSDOM/Generated/MutationRecord.hs b/src/JSDOM/Generated/MutationRecord.hs
--- a/src/JSDOM/Generated/MutationRecord.hs
+++ b/src/JSDOM/Generated/MutationRecord.hs
@@ -1,15 +1,22 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.MutationRecord
-       (getType, getTarget, getTargetUnchecked, getAddedNodes,
-        getAddedNodesUnchecked, getRemovedNodes, getRemovedNodesUnchecked,
-        getPreviousSibling, getPreviousSiblingUnchecked, getNextSibling,
-        getNextSiblingUnchecked, getAttributeName,
+       (getType, getTarget, getTargetUnsafe, getTargetUnchecked,
+        getAddedNodes, getAddedNodesUnsafe, getAddedNodesUnchecked,
+        getRemovedNodes, getRemovedNodesUnsafe, getRemovedNodesUnchecked,
+        getPreviousSibling, getPreviousSiblingUnsafe,
+        getPreviousSiblingUnchecked, getNextSibling, getNextSiblingUnsafe,
+        getNextSiblingUnchecked, getAttributeName, getAttributeNameUnsafe,
         getAttributeNameUnchecked, getAttributeNamespace,
-        getAttributeNamespaceUnchecked, getOldValue, getOldValueUnchecked,
-        MutationRecord, castToMutationRecord, gTypeMutationRecord)
+        getAttributeNamespaceUnsafe, getAttributeNamespaceUnchecked,
+        getOldValue, getOldValueUnsafe, getOldValueUnchecked,
+        MutationRecord(..), gTypeMutationRecord)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.type Mozilla MutationRecord.type documentation> 
 getType ::
@@ -31,6 +48,14 @@
 getTarget self = liftDOM ((self ^. js "target") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.target Mozilla MutationRecord.target documentation> 
+getTargetUnsafe ::
+                (MonadDOM m, HasCallStack) => MutationRecord -> m Node
+getTargetUnsafe self
+  = liftDOM
+      (((self ^. js "target") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.target Mozilla MutationRecord.target documentation> 
 getTargetUnchecked :: (MonadDOM m) => MutationRecord -> m Node
 getTargetUnchecked self
   = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
@@ -42,6 +67,14 @@
   = liftDOM ((self ^. js "addedNodes") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.addedNodes Mozilla MutationRecord.addedNodes documentation> 
+getAddedNodesUnsafe ::
+                    (MonadDOM m, HasCallStack) => MutationRecord -> m NodeList
+getAddedNodesUnsafe self
+  = liftDOM
+      (((self ^. js "addedNodes") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.addedNodes Mozilla MutationRecord.addedNodes documentation> 
 getAddedNodesUnchecked ::
                        (MonadDOM m) => MutationRecord -> m NodeList
 getAddedNodesUnchecked self
@@ -54,6 +87,14 @@
   = liftDOM ((self ^. js "removedNodes") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.removedNodes Mozilla MutationRecord.removedNodes documentation> 
+getRemovedNodesUnsafe ::
+                      (MonadDOM m, HasCallStack) => MutationRecord -> m NodeList
+getRemovedNodesUnsafe self
+  = liftDOM
+      (((self ^. js "removedNodes") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.removedNodes Mozilla MutationRecord.removedNodes documentation> 
 getRemovedNodesUnchecked ::
                          (MonadDOM m) => MutationRecord -> m NodeList
 getRemovedNodesUnchecked self
@@ -66,6 +107,14 @@
   = liftDOM ((self ^. js "previousSibling") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
+getPreviousSiblingUnsafe ::
+                         (MonadDOM m, HasCallStack) => MutationRecord -> m Node
+getPreviousSiblingUnsafe self
+  = liftDOM
+      (((self ^. js "previousSibling") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
 getPreviousSiblingUnchecked ::
                             (MonadDOM m) => MutationRecord -> m Node
 getPreviousSiblingUnchecked self
@@ -77,6 +126,14 @@
   = liftDOM ((self ^. js "nextSibling") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
+getNextSiblingUnsafe ::
+                     (MonadDOM m, HasCallStack) => MutationRecord -> m Node
+getNextSiblingUnsafe self
+  = liftDOM
+      (((self ^. js "nextSibling") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
 getNextSiblingUnchecked :: (MonadDOM m) => MutationRecord -> m Node
 getNextSiblingUnchecked self
   = liftDOM ((self ^. js "nextSibling") >>= fromJSValUnchecked)
@@ -89,6 +146,15 @@
   = liftDOM ((self ^. js "attributeName") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
+getAttributeNameUnsafe ::
+                       (MonadDOM m, HasCallStack, FromJSString result) =>
+                         MutationRecord -> m result
+getAttributeNameUnsafe self
+  = liftDOM
+      (((self ^. js "attributeName") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
 getAttributeNameUnchecked ::
                           (MonadDOM m, FromJSString result) => MutationRecord -> m result
 getAttributeNameUnchecked self
@@ -102,6 +168,15 @@
   = liftDOM ((self ^. js "attributeNamespace") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
+getAttributeNamespaceUnsafe ::
+                            (MonadDOM m, HasCallStack, FromJSString result) =>
+                              MutationRecord -> m result
+getAttributeNamespaceUnsafe self
+  = liftDOM
+      (((self ^. js "attributeNamespace") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
 getAttributeNamespaceUnchecked ::
                                (MonadDOM m, FromJSString result) => MutationRecord -> m result
 getAttributeNamespaceUnchecked self
@@ -114,6 +189,15 @@
               MutationRecord -> m (Maybe result)
 getOldValue self
   = liftDOM ((self ^. js "oldValue") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
+getOldValueUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    MutationRecord -> m result
+getOldValueUnsafe self
+  = liftDOM
+      (((self ^. js "oldValue") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
 getOldValueUnchecked ::
diff --git a/src/JSDOM/Generated/NamedNodeMap.hs b/src/JSDOM/Generated/NamedNodeMap.hs
--- a/src/JSDOM/Generated/NamedNodeMap.hs
+++ b/src/JSDOM/Generated/NamedNodeMap.hs
@@ -1,16 +1,22 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NamedNodeMap
-       (getNamedItem, getNamedItem_, getNamedItemUnchecked, setNamedItem,
-        setNamedItem_, setNamedItemUnchecked, removeNamedItem,
-        removeNamedItem_, removeNamedItemUnchecked, item, item_,
-        itemUnchecked, getNamedItemNS, getNamedItemNS_,
-        getNamedItemNSUnchecked, setNamedItemNS, setNamedItemNS_,
+       (getNamedItem, getNamedItem_, getNamedItemUnsafe,
+        getNamedItemUnchecked, setNamedItem, setNamedItem_,
+        setNamedItemUnsafe, setNamedItemUnchecked, removeNamedItem,
+        removeNamedItem_, removeNamedItemUnsafe, removeNamedItemUnchecked,
+        item, item_, itemUnsafe, itemUnchecked, getNamedItemNS,
+        getNamedItemNS_, getNamedItemNSUnsafe, getNamedItemNSUnchecked,
+        setNamedItemNS, setNamedItemNS_, setNamedItemNSUnsafe,
         setNamedItemNSUnchecked, removeNamedItemNS, removeNamedItemNS_,
-        removeNamedItemNSUnchecked, getLength, NamedNodeMap,
-        castToNamedNodeMap, gTypeNamedNodeMap)
+        removeNamedItemNSUnsafe, removeNamedItemNSUnchecked, getLength,
+        NamedNodeMap(..), gTypeNamedNodeMap)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
 getNamedItem ::
@@ -37,6 +53,15 @@
   = liftDOM (void (self ^. jsf "getNamedItem" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
+getNamedItemUnsafe ::
+                   (MonadDOM m, ToJSString name, HasCallStack) =>
+                     NamedNodeMap -> name -> m Node
+getNamedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "getNamedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
 getNamedItemUnchecked ::
                       (MonadDOM m, ToJSString name) => NamedNodeMap -> name -> m Node
 getNamedItemUnchecked self name
@@ -59,6 +84,15 @@
   = liftDOM (void (self ^. jsf "setNamedItem" [toJSVal node]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
+setNamedItemUnsafe ::
+                   (MonadDOM m, IsNode node, HasCallStack) =>
+                     NamedNodeMap -> Maybe node -> m Node
+setNamedItemUnsafe self node
+  = liftDOM
+      (((self ^. jsf "setNamedItem" [toJSVal node]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
 setNamedItemUnchecked ::
                       (MonadDOM m, IsNode node) => NamedNodeMap -> Maybe node -> m Node
 setNamedItemUnchecked self node
@@ -81,6 +115,15 @@
   = liftDOM (void (self ^. jsf "removeNamedItem" [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
+removeNamedItemUnsafe ::
+                      (MonadDOM m, ToJSString name, HasCallStack) =>
+                        NamedNodeMap -> name -> m Node
+removeNamedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "removeNamedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
 removeNamedItemUnchecked ::
                          (MonadDOM m, ToJSString name) => NamedNodeMap -> name -> m Node
 removeNamedItemUnchecked self name
@@ -99,6 +142,14 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => NamedNodeMap -> Word -> m Node
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
 itemUnchecked :: (MonadDOM m) => NamedNodeMap -> Word -> m Node
 itemUnchecked self index
   = liftDOM
@@ -125,6 +176,18 @@
             [toJSVal namespaceURI, toJSVal localName]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
+getNamedItemNSUnsafe ::
+                     (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
+                      HasCallStack) =>
+                       NamedNodeMap -> Maybe namespaceURI -> localName -> m Node
+getNamedItemNSUnsafe self namespaceURI localName
+  = liftDOM
+      (((self ^. jsf "getNamedItemNS"
+           [toJSVal namespaceURI, toJSVal localName])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
 getNamedItemNSUnchecked ::
                         (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
                           NamedNodeMap -> Maybe namespaceURI -> localName -> m Node
@@ -149,6 +212,15 @@
   = liftDOM (void (self ^. jsf "setNamedItemNS" [toJSVal node]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
+setNamedItemNSUnsafe ::
+                     (MonadDOM m, IsNode node, HasCallStack) =>
+                       NamedNodeMap -> Maybe node -> m Node
+setNamedItemNSUnsafe self node
+  = liftDOM
+      (((self ^. jsf "setNamedItemNS" [toJSVal node]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
 setNamedItemNSUnchecked ::
                         (MonadDOM m, IsNode node) => NamedNodeMap -> Maybe node -> m Node
 setNamedItemNSUnchecked self node
@@ -175,6 +247,18 @@
       (void
          (self ^. jsf "removeNamedItemNS"
             [toJSVal namespaceURI, toJSVal localName]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
+removeNamedItemNSUnsafe ::
+                        (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
+                         HasCallStack) =>
+                          NamedNodeMap -> Maybe namespaceURI -> localName -> m Node
+removeNamedItemNSUnsafe self namespaceURI localName
+  = liftDOM
+      (((self ^. jsf "removeNamedItemNS"
+           [toJSVal namespaceURI, toJSVal localName])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
 removeNamedItemNSUnchecked ::
diff --git a/src/JSDOM/Generated/Navigator.hs b/src/JSDOM/Generated/Navigator.hs
--- a/src/JSDOM/Generated/Navigator.hs
+++ b/src/JSDOM/Generated/Navigator.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Navigator
        (getGamepads, getGamepads_, webkitGetUserMedia,
@@ -6,16 +9,20 @@
         isProtocolHandlerRegistered_, unregisterProtocolHandler,
         vibratePattern, vibratePattern_, vibrate, vibrate_, javaEnabled,
         javaEnabled_, getStorageUpdates, getWebkitBattery,
-        getWebkitBatteryUnchecked, getGeolocation, getGeolocationUnchecked,
-        getWebkitTemporaryStorage, getWebkitTemporaryStorageUnchecked,
-        getWebkitPersistentStorage, getWebkitPersistentStorageUnchecked,
-        getAppCodeName, getAppName, getAppVersion, getLanguage,
-        getUserAgent, getPlatform, getPlugins, getPluginsUnchecked,
-        getMimeTypes, getMimeTypesUnchecked, getProduct, getProductSub,
-        getVendor, getVendorSub, getCookieEnabled, getOnLine,
-        getHardwareConcurrency, Navigator, castToNavigator, gTypeNavigator)
+        getWebkitBatteryUnsafe, getWebkitBatteryUnchecked, getGeolocation,
+        getGeolocationUnsafe, getGeolocationUnchecked,
+        getWebkitTemporaryStorage, getWebkitTemporaryStorageUnsafe,
+        getWebkitTemporaryStorageUnchecked, getWebkitPersistentStorage,
+        getWebkitPersistentStorageUnsafe,
+        getWebkitPersistentStorageUnchecked, getAppCodeName, getAppName,
+        getAppVersion, getLanguage, getUserAgent, getPlatform, getPlugins,
+        getPluginsUnsafe, getPluginsUnchecked, getMimeTypes,
+        getMimeTypesUnsafe, getMimeTypesUnchecked, getProduct,
+        getProductSub, getVendor, getVendorSub, getCookieEnabled,
+        getOnLine, getHardwareConcurrency, Navigator(..), gTypeNavigator)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -26,6 +33,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads Mozilla Navigator.getGamepads documentation> 
 getGamepads :: (MonadDOM m) => Navigator -> m [Maybe Gamepad]
@@ -133,6 +150,14 @@
   = liftDOM ((self ^. js "webkitBattery") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitBattery Mozilla Navigator.webkitBattery documentation> 
+getWebkitBatteryUnsafe ::
+                       (MonadDOM m, HasCallStack) => Navigator -> m BatteryManager
+getWebkitBatteryUnsafe self
+  = liftDOM
+      (((self ^. js "webkitBattery") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitBattery Mozilla Navigator.webkitBattery documentation> 
 getWebkitBatteryUnchecked ::
                           (MonadDOM m) => Navigator -> m BatteryManager
 getWebkitBatteryUnchecked self
@@ -145,6 +170,14 @@
   = liftDOM ((self ^. js "geolocation") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.geolocation Mozilla Navigator.geolocation documentation> 
+getGeolocationUnsafe ::
+                     (MonadDOM m, HasCallStack) => Navigator -> m Geolocation
+getGeolocationUnsafe self
+  = liftDOM
+      (((self ^. js "geolocation") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.geolocation Mozilla Navigator.geolocation documentation> 
 getGeolocationUnchecked ::
                         (MonadDOM m) => Navigator -> m Geolocation
 getGeolocationUnchecked self
@@ -157,6 +190,14 @@
   = liftDOM ((self ^. js "webkitTemporaryStorage") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitTemporaryStorage Mozilla Navigator.webkitTemporaryStorage documentation> 
+getWebkitTemporaryStorageUnsafe ::
+                                (MonadDOM m, HasCallStack) => Navigator -> m StorageQuota
+getWebkitTemporaryStorageUnsafe self
+  = liftDOM
+      (((self ^. js "webkitTemporaryStorage") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitTemporaryStorage Mozilla Navigator.webkitTemporaryStorage documentation> 
 getWebkitTemporaryStorageUnchecked ::
                                    (MonadDOM m) => Navigator -> m StorageQuota
 getWebkitTemporaryStorageUnchecked self
@@ -170,6 +211,14 @@
   = liftDOM ((self ^. js "webkitPersistentStorage") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitPersistentStorage Mozilla Navigator.webkitPersistentStorage documentation> 
+getWebkitPersistentStorageUnsafe ::
+                                 (MonadDOM m, HasCallStack) => Navigator -> m StorageQuota
+getWebkitPersistentStorageUnsafe self
+  = liftDOM
+      (((self ^. js "webkitPersistentStorage") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitPersistentStorage Mozilla Navigator.webkitPersistentStorage documentation> 
 getWebkitPersistentStorageUnchecked ::
                                     (MonadDOM m) => Navigator -> m StorageQuota
 getWebkitPersistentStorageUnchecked self
@@ -217,6 +266,14 @@
 getPlugins self = liftDOM ((self ^. js "plugins") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.plugins Mozilla Navigator.plugins documentation> 
+getPluginsUnsafe ::
+                 (MonadDOM m, HasCallStack) => Navigator -> m PluginArray
+getPluginsUnsafe self
+  = liftDOM
+      (((self ^. js "plugins") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.plugins Mozilla Navigator.plugins documentation> 
 getPluginsUnchecked :: (MonadDOM m) => Navigator -> m PluginArray
 getPluginsUnchecked self
   = liftDOM ((self ^. js "plugins") >>= fromJSValUnchecked)
@@ -226,6 +283,14 @@
              (MonadDOM m) => Navigator -> m (Maybe MimeTypeArray)
 getMimeTypes self
   = liftDOM ((self ^. js "mimeTypes") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mimeTypes Mozilla Navigator.mimeTypes documentation> 
+getMimeTypesUnsafe ::
+                   (MonadDOM m, HasCallStack) => Navigator -> m MimeTypeArray
+getMimeTypesUnsafe self
+  = liftDOM
+      (((self ^. js "mimeTypes") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mimeTypes Mozilla Navigator.mimeTypes documentation> 
 getMimeTypesUnchecked ::
diff --git a/src/JSDOM/Generated/NavigatorUserMediaError.hs b/src/JSDOM/Generated/NavigatorUserMediaError.hs
--- a/src/JSDOM/Generated/NavigatorUserMediaError.hs
+++ b/src/JSDOM/Generated/NavigatorUserMediaError.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NavigatorUserMediaError
-       (getConstraintName, NavigatorUserMediaError,
-        castToNavigatorUserMediaError, gTypeNavigatorUserMediaError)
+       (getConstraintName, NavigatorUserMediaError(..),
+        gTypeNavigatorUserMediaError)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError.constraintName Mozilla NavigatorUserMediaError.constraintName documentation> 
 getConstraintName ::
diff --git a/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs b/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs
--- a/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs
+++ b/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NavigatorUserMediaErrorCallback
        (newNavigatorUserMediaErrorCallback,
@@ -7,6 +10,7 @@
         NavigatorUserMediaErrorCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
 newNavigatorUserMediaErrorCallback ::
diff --git a/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs b/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs
--- a/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs
+++ b/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NavigatorUserMediaSuccessCallback
        (newNavigatorUserMediaSuccessCallback,
@@ -7,6 +10,7 @@
         NavigatorUserMediaSuccessCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
 newNavigatorUserMediaSuccessCallback ::
diff --git a/src/JSDOM/Generated/Node.hs b/src/JSDOM/Generated/Node.hs
--- a/src/JSDOM/Generated/Node.hs
+++ b/src/JSDOM/Generated/Node.hs
@@ -1,44 +1,54 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Node
-       (insertBefore, insertBefore_, insertBeforeUnchecked, replaceChild,
-        replaceChild_, replaceChildUnchecked, removeChild, removeChild_,
-        removeChildUnchecked, appendChild, appendChild_,
-        appendChildUnchecked, hasChildNodes, hasChildNodes_, cloneNode,
-        cloneNode_, cloneNodeUnchecked, normalize, isSupported,
+       (insertBefore, insertBefore_, insertBeforeUnsafe,
+        insertBeforeUnchecked, replaceChild, replaceChild_,
+        replaceChildUnsafe, replaceChildUnchecked, removeChild,
+        removeChild_, removeChildUnsafe, removeChildUnchecked, appendChild,
+        appendChild_, appendChildUnsafe, appendChildUnchecked,
+        hasChildNodes, hasChildNodes_, cloneNode, cloneNode_,
+        cloneNodeUnsafe, cloneNodeUnchecked, normalize, isSupported,
         isSupported_, isSameNode, isSameNode_, isEqualNode, isEqualNode_,
-        lookupPrefix, lookupPrefix_, lookupPrefixUnchecked,
-        isDefaultNamespace, isDefaultNamespace_, lookupNamespaceURI,
-        lookupNamespaceURI_, lookupNamespaceURIUnchecked,
-        compareDocumentPosition, compareDocumentPosition_, 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,
+        lookupPrefix, lookupPrefix_, lookupPrefixUnsafe,
+        lookupPrefixUnchecked, isDefaultNamespace, isDefaultNamespace_,
+        lookupNamespaceURI, lookupNamespaceURI_, lookupNamespaceURIUnsafe,
+        lookupNamespaceURIUnchecked, compareDocumentPosition,
+        compareDocumentPosition_, 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, getNodeName,
-        getNodeNameUnchecked, setNodeValue, getNodeValue,
-        getNodeValueUnchecked, getNodeType, getParentNode,
-        getParentNodeUnchecked, getChildNodes, getChildNodesUnchecked,
-        getFirstChild, getFirstChildUnchecked, getLastChild,
+        getNodeNameUnsafe, getNodeNameUnchecked, setNodeValue,
+        getNodeValue, getNodeValueUnsafe, getNodeValueUnchecked,
+        getNodeType, getParentNode, getParentNodeUnsafe,
+        getParentNodeUnchecked, getChildNodes, getChildNodesUnsafe,
+        getChildNodesUnchecked, getFirstChild, getFirstChildUnsafe,
+        getFirstChildUnchecked, getLastChild, getLastChildUnsafe,
         getLastChildUnchecked, getPreviousSibling,
-        getPreviousSiblingUnchecked, getNextSibling,
-        getNextSiblingUnchecked, getOwnerDocument,
-        getOwnerDocumentUnchecked, getNamespaceURI,
-        getNamespaceURIUnchecked, setPrefix, getPrefix, getPrefixUnchecked,
-        getLocalName, getLocalNameUnchecked, getBaseURI,
+        getPreviousSiblingUnsafe, getPreviousSiblingUnchecked,
+        getNextSibling, getNextSiblingUnsafe, getNextSiblingUnchecked,
+        getOwnerDocument, getOwnerDocumentUnsafe,
+        getOwnerDocumentUnchecked, getNamespaceURI, getNamespaceURIUnsafe,
+        getNamespaceURIUnchecked, setPrefix, getPrefix, getPrefixUnsafe,
+        getPrefixUnchecked, getLocalName, getLocalNameUnsafe,
+        getLocalNameUnchecked, getBaseURI, getBaseURIUnsafe,
         getBaseURIUnchecked, setTextContent, getTextContent,
-        getTextContentUnchecked, getParentElement,
-        getParentElementUnchecked, Node, castToNode, gTypeNode, IsNode,
-        toNode)
+        getTextContentUnsafe, getTextContentUnchecked, getParentElement,
+        getParentElementUnsafe, getParentElementUnchecked, Node(..),
+        gTypeNode, IsNode, toNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -49,6 +59,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
 insertBefore ::
@@ -71,6 +91,18 @@
             [toJSVal newChild, toJSVal refChild]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
+insertBeforeUnsafe ::
+                   (MonadDOM m, IsNode self, IsNode newChild, IsNode refChild,
+                    HasCallStack) =>
+                     self -> Maybe newChild -> Maybe refChild -> m Node
+insertBeforeUnsafe self newChild refChild
+  = liftDOM
+      ((((toNode self) ^. jsf "insertBefore"
+           [toJSVal newChild, toJSVal refChild])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
 insertBeforeUnchecked ::
                       (MonadDOM m, IsNode self, IsNode newChild, IsNode refChild) =>
                         self -> Maybe newChild -> Maybe refChild -> m Node
@@ -101,6 +133,18 @@
             [toJSVal newChild, toJSVal oldChild]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
+replaceChildUnsafe ::
+                   (MonadDOM m, IsNode self, IsNode newChild, IsNode oldChild,
+                    HasCallStack) =>
+                     self -> Maybe newChild -> Maybe oldChild -> m Node
+replaceChildUnsafe self newChild oldChild
+  = liftDOM
+      ((((toNode self) ^. jsf "replaceChild"
+           [toJSVal newChild, toJSVal oldChild])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
 replaceChildUnchecked ::
                       (MonadDOM m, IsNode self, IsNode newChild, IsNode oldChild) =>
                         self -> Maybe newChild -> Maybe oldChild -> m Node
@@ -128,6 +172,16 @@
       (void ((toNode self) ^. jsf "removeChild" [toJSVal oldChild]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
+removeChildUnsafe ::
+                  (MonadDOM m, IsNode self, IsNode oldChild, HasCallStack) =>
+                    self -> Maybe oldChild -> m Node
+removeChildUnsafe self oldChild
+  = liftDOM
+      ((((toNode self) ^. jsf "removeChild" [toJSVal oldChild]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
 removeChildUnchecked ::
                      (MonadDOM m, IsNode self, IsNode oldChild) =>
                        self -> Maybe oldChild -> m Node
@@ -154,6 +208,16 @@
       (void ((toNode self) ^. jsf "appendChild" [toJSVal newChild]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
+appendChildUnsafe ::
+                  (MonadDOM m, IsNode self, IsNode newChild, HasCallStack) =>
+                    self -> Maybe newChild -> m Node
+appendChildUnsafe self newChild
+  = liftDOM
+      ((((toNode self) ^. jsf "appendChild" [toJSVal newChild]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
 appendChildUnchecked ::
                      (MonadDOM m, IsNode self, IsNode newChild) =>
                        self -> Maybe newChild -> m Node
@@ -185,6 +249,14 @@
   = liftDOM (void ((toNode self) ^. jsf "cloneNode" [toJSVal deep]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
+cloneNodeUnsafe ::
+                (MonadDOM m, IsNode self, HasCallStack) => self -> Bool -> m Node
+cloneNodeUnsafe self deep
+  = liftDOM
+      ((((toNode self) ^. jsf "cloneNode" [toJSVal deep]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
 cloneNodeUnchecked ::
                    (MonadDOM m, IsNode self) => self -> Bool -> m Node
 cloneNodeUnchecked self deep
@@ -271,6 +343,17 @@
       (void ((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
+lookupPrefixUnsafe ::
+                   (MonadDOM m, IsNode self, ToJSString namespaceURI, HasCallStack,
+                    FromJSString result) =>
+                     self -> Maybe namespaceURI -> m result
+lookupPrefixUnsafe self namespaceURI
+  = liftDOM
+      ((((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
 lookupPrefixUnchecked ::
                       (MonadDOM m, IsNode self, ToJSString namespaceURI,
                        FromJSString result) =>
@@ -317,6 +400,17 @@
       (void ((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
+lookupNamespaceURIUnsafe ::
+                         (MonadDOM m, IsNode self, ToJSString prefix, HasCallStack,
+                          FromJSString result) =>
+                           self -> Maybe prefix -> m result
+lookupNamespaceURIUnsafe self prefix
+  = liftDOM
+      ((((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
 lookupNamespaceURIUnchecked ::
                             (MonadDOM m, IsNode self, ToJSString prefix,
                              FromJSString result) =>
@@ -386,6 +480,15 @@
   = liftDOM (((toNode self) ^. js "nodeName") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeName Mozilla Node.nodeName documentation> 
+getNodeNameUnsafe ::
+                  (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
+                    self -> m result
+getNodeNameUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "nodeName") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeName Mozilla Node.nodeName documentation> 
 getNodeNameUnchecked ::
                      (MonadDOM m, IsNode self, FromJSString result) => self -> m result
 getNodeNameUnchecked self
@@ -406,6 +509,15 @@
   = liftDOM (((toNode self) ^. js "nodeValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
+getNodeValueUnsafe ::
+                   (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
+                     self -> m result
+getNodeValueUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "nodeValue") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
 getNodeValueUnchecked ::
                       (MonadDOM m, IsNode self, FromJSString result) => self -> m result
 getNodeValueUnchecked self
@@ -425,6 +537,14 @@
   = liftDOM (((toNode self) ^. js "parentNode") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
+getParentNodeUnsafe ::
+                    (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getParentNodeUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "parentNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
 getParentNodeUnchecked ::
                        (MonadDOM m, IsNode self) => self -> m Node
 getParentNodeUnchecked self
@@ -438,6 +558,14 @@
   = liftDOM (((toNode self) ^. js "childNodes") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes Mozilla Node.childNodes documentation> 
+getChildNodesUnsafe ::
+                    (MonadDOM m, IsNode self, HasCallStack) => self -> m NodeList
+getChildNodesUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "childNodes") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes Mozilla Node.childNodes documentation> 
 getChildNodesUnchecked ::
                        (MonadDOM m, IsNode self) => self -> m NodeList
 getChildNodesUnchecked self
@@ -451,6 +579,14 @@
   = liftDOM (((toNode self) ^. js "firstChild") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
+getFirstChildUnsafe ::
+                    (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getFirstChildUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "firstChild") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
 getFirstChildUnchecked ::
                        (MonadDOM m, IsNode self) => self -> m Node
 getFirstChildUnchecked self
@@ -463,6 +599,14 @@
   = liftDOM (((toNode self) ^. js "lastChild") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
+getLastChildUnsafe ::
+                   (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getLastChildUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "lastChild") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
 getLastChildUnchecked ::
                       (MonadDOM m, IsNode self) => self -> m Node
 getLastChildUnchecked self
@@ -476,6 +620,14 @@
   = liftDOM (((toNode self) ^. js "previousSibling") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
+getPreviousSiblingUnsafe ::
+                         (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getPreviousSiblingUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "previousSibling") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
 getPreviousSiblingUnchecked ::
                             (MonadDOM m, IsNode self) => self -> m Node
 getPreviousSiblingUnchecked self
@@ -489,6 +641,14 @@
   = liftDOM (((toNode self) ^. js "nextSibling") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
+getNextSiblingUnsafe ::
+                     (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
+getNextSiblingUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "nextSibling") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
 getNextSiblingUnchecked ::
                         (MonadDOM m, IsNode self) => self -> m Node
 getNextSiblingUnchecked self
@@ -502,6 +662,14 @@
   = liftDOM (((toNode self) ^. js "ownerDocument") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
+getOwnerDocumentUnsafe ::
+                       (MonadDOM m, IsNode self, HasCallStack) => self -> m Document
+getOwnerDocumentUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "ownerDocument") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
 getOwnerDocumentUnchecked ::
                           (MonadDOM m, IsNode self) => self -> m Document
 getOwnerDocumentUnchecked self
@@ -517,6 +685,15 @@
       (((toNode self) ^. js "namespaceURI") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.namespaceURI Mozilla Node.namespaceURI documentation> 
+getNamespaceURIUnsafe ::
+                      (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
+                        self -> m result
+getNamespaceURIUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "namespaceURI") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.namespaceURI Mozilla Node.namespaceURI documentation> 
 getNamespaceURIUnchecked ::
                          (MonadDOM m, IsNode self, FromJSString result) => self -> m result
 getNamespaceURIUnchecked self
@@ -538,6 +715,15 @@
   = liftDOM (((toNode self) ^. js "prefix") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.prefix Mozilla Node.prefix documentation> 
+getPrefixUnsafe ::
+                (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
+                  self -> m result
+getPrefixUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "prefix") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.prefix Mozilla Node.prefix documentation> 
 getPrefixUnchecked ::
                    (MonadDOM m, IsNode self, FromJSString result) => self -> m result
 getPrefixUnchecked self
@@ -551,6 +737,15 @@
   = liftDOM (((toNode self) ^. js "localName") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.localName Mozilla Node.localName documentation> 
+getLocalNameUnsafe ::
+                   (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
+                     self -> m result
+getLocalNameUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "localName") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.localName Mozilla Node.localName documentation> 
 getLocalNameUnchecked ::
                       (MonadDOM m, IsNode self, FromJSString result) => self -> m result
 getLocalNameUnchecked self
@@ -565,6 +760,15 @@
   = liftDOM (((toNode self) ^. js "baseURI") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.baseURI Mozilla Node.baseURI documentation> 
+getBaseURIUnsafe ::
+                 (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
+                   self -> m result
+getBaseURIUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "baseURI") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.baseURI Mozilla Node.baseURI documentation> 
 getBaseURIUnchecked ::
                     (MonadDOM m, IsNode self, FromJSString result) => self -> m result
 getBaseURIUnchecked self
@@ -586,6 +790,15 @@
       (((toNode self) ^. js "textContent") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
+getTextContentUnsafe ::
+                     (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
+                       self -> m result
+getTextContentUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "textContent") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
 getTextContentUnchecked ::
                         (MonadDOM m, IsNode self, FromJSString result) => self -> m result
 getTextContentUnchecked self
@@ -597,6 +810,14 @@
                  (MonadDOM m, IsNode self) => self -> m (Maybe Element)
 getParentElement self
   = liftDOM (((toNode self) ^. js "parentElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
+getParentElementUnsafe ::
+                       (MonadDOM m, IsNode self, HasCallStack) => self -> m Element
+getParentElementUnsafe self
+  = liftDOM
+      ((((toNode self) ^. js "parentElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
 getParentElementUnchecked ::
diff --git a/src/JSDOM/Generated/NodeFilter.hs b/src/JSDOM/Generated/NodeFilter.hs
--- a/src/JSDOM/Generated/NodeFilter.hs
+++ b/src/JSDOM/Generated/NodeFilter.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NodeFilter
        (acceptNode, acceptNode_, pattern FILTER_ACCEPT,
@@ -8,10 +11,10 @@
         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)
+        pattern SHOW_NOTATION, NodeFilter(..), gTypeNodeFilter)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter.acceptNode Mozilla NodeFilter.acceptNode documentation> 
 acceptNode ::
diff --git a/src/JSDOM/Generated/NodeIterator.hs b/src/JSDOM/Generated/NodeIterator.hs
--- a/src/JSDOM/Generated/NodeIterator.hs
+++ b/src/JSDOM/Generated/NodeIterator.hs
@@ -1,14 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NodeIterator
-       (nextNode, nextNode_, nextNodeUnchecked, previousNode,
-        previousNode_, previousNodeUnchecked, detach, getRoot,
-        getRootUnchecked, getWhatToShow, getFilter, getFilterUnchecked,
-        getExpandEntityReferences, getReferenceNode,
-        getReferenceNodeUnchecked, getPointerBeforeReferenceNode,
-        NodeIterator, castToNodeIterator, gTypeNodeIterator)
+       (nextNode, nextNode_, nextNodeUnsafe, nextNodeUnchecked,
+        previousNode, previousNode_, previousNodeUnsafe,
+        previousNodeUnchecked, detach, getRoot, getRootUnsafe,
+        getRootUnchecked, getWhatToShow, getFilter, getFilterUnsafe,
+        getFilterUnchecked, getExpandEntityReferences, getReferenceNode,
+        getReferenceNodeUnsafe, getReferenceNodeUnchecked,
+        getPointerBeforeReferenceNode, NodeIterator(..), gTypeNodeIterator)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
 nextNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
@@ -29,6 +44,14 @@
 nextNode_ self = liftDOM (void (self ^. jsf "nextNode" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+nextNodeUnsafe ::
+               (MonadDOM m, HasCallStack) => NodeIterator -> m Node
+nextNodeUnsafe self
+  = liftDOM
+      (((self ^. jsf "nextNode" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
 nextNodeUnchecked :: (MonadDOM m) => NodeIterator -> m Node
 nextNodeUnchecked self
   = liftDOM ((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked)
@@ -43,6 +66,14 @@
 previousNode_ self = liftDOM (void (self ^. jsf "previousNode" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
+previousNodeUnsafe ::
+                   (MonadDOM m, HasCallStack) => NodeIterator -> m Node
+previousNodeUnsafe self
+  = liftDOM
+      (((self ^. jsf "previousNode" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
 previousNodeUnchecked :: (MonadDOM m) => NodeIterator -> m Node
 previousNodeUnchecked self
   = liftDOM ((self ^. jsf "previousNode" ()) >>= fromJSValUnchecked)
@@ -56,6 +87,14 @@
 getRoot self = liftDOM ((self ^. js "root") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.root Mozilla NodeIterator.root documentation> 
+getRootUnsafe ::
+              (MonadDOM m, HasCallStack) => NodeIterator -> m Node
+getRootUnsafe self
+  = liftDOM
+      (((self ^. js "root") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.root Mozilla NodeIterator.root documentation> 
 getRootUnchecked :: (MonadDOM m) => NodeIterator -> m Node
 getRootUnchecked self
   = liftDOM ((self ^. js "root") >>= fromJSValUnchecked)
@@ -70,6 +109,14 @@
 getFilter self = liftDOM ((self ^. js "filter") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.filter Mozilla NodeIterator.filter documentation> 
+getFilterUnsafe ::
+                (MonadDOM m, HasCallStack) => NodeIterator -> m NodeFilter
+getFilterUnsafe self
+  = liftDOM
+      (((self ^. js "filter") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.filter Mozilla NodeIterator.filter documentation> 
 getFilterUnchecked :: (MonadDOM m) => NodeIterator -> m NodeFilter
 getFilterUnchecked self
   = liftDOM ((self ^. js "filter") >>= fromJSValUnchecked)
@@ -83,6 +130,14 @@
 getReferenceNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
 getReferenceNode self
   = liftDOM ((self ^. js "referenceNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.referenceNode Mozilla NodeIterator.referenceNode documentation> 
+getReferenceNodeUnsafe ::
+                       (MonadDOM m, HasCallStack) => NodeIterator -> m Node
+getReferenceNodeUnsafe self
+  = liftDOM
+      (((self ^. js "referenceNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.referenceNode Mozilla NodeIterator.referenceNode documentation> 
 getReferenceNodeUnchecked :: (MonadDOM m) => NodeIterator -> m Node
diff --git a/src/JSDOM/Generated/NodeList.hs b/src/JSDOM/Generated/NodeList.hs
--- a/src/JSDOM/Generated/NodeList.hs
+++ b/src/JSDOM/Generated/NodeList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NodeList
-       (item, item_, itemUnchecked, getLength, NodeList, castToNodeList,
+       (item, item_, itemUnsafe, itemUnchecked, getLength, NodeList(..),
         gTypeNodeList, IsNodeList, toNodeList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
 item ::
@@ -27,6 +41,15 @@
 item_ :: (MonadDOM m, IsNodeList self) => self -> Word -> m ()
 item_ self index
   = liftDOM (void ((toNodeList self) ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, IsNodeList self, HasCallStack) =>
+             self -> Word -> m Node
+itemUnsafe self index
+  = liftDOM
+      ((((toNodeList self) ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
 itemUnchecked ::
diff --git a/src/JSDOM/Generated/Notification.hs b/src/JSDOM/Generated/Notification.hs
--- a/src/JSDOM/Generated/Notification.hs
+++ b/src/JSDOM/Generated/Notification.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Notification
-       (show, showEvent, error, close, click, Notification,
-        castToNotification, gTypeNotification)
+       (show, showEvent, error, close, click, Notification(..),
+        gTypeNotification)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.show Mozilla Notification.show documentation> 
 show :: (MonadDOM m) => Notification -> m ()
diff --git a/src/JSDOM/Generated/NotificationCenter.hs b/src/JSDOM/Generated/NotificationCenter.hs
--- a/src/JSDOM/Generated/NotificationCenter.hs
+++ b/src/JSDOM/Generated/NotificationCenter.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NotificationCenter
-       (createNotification, createNotification_,
+       (createNotification, createNotification_, createNotificationUnsafe,
         createNotificationUnchecked, checkPermission, checkPermission_,
-        requestPermission, NotificationCenter, castToNotificationCenter,
-        gTypeNotificationCenter)
+        requestPermission, NotificationCenter(..), gTypeNotificationCenter)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.createNotification Mozilla NotificationCenter.createNotification documentation> 
 createNotification ::
@@ -40,6 +53,18 @@
       (void
          (self ^. jsf "createNotification"
             [toJSVal iconUrl, toJSVal title, toJSVal body]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.createNotification Mozilla NotificationCenter.createNotification documentation> 
+createNotificationUnsafe ::
+                         (MonadDOM m, ToJSString iconUrl, ToJSString title, ToJSString body,
+                          HasCallStack) =>
+                           NotificationCenter -> iconUrl -> title -> body -> m Notification
+createNotificationUnsafe self iconUrl title body
+  = liftDOM
+      (((self ^. jsf "createNotification"
+           [toJSVal iconUrl, toJSVal title, toJSVal body])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter.createNotification Mozilla NotificationCenter.createNotification documentation> 
 createNotificationUnchecked ::
diff --git a/src/JSDOM/Generated/NotificationPermissionCallback.hs b/src/JSDOM/Generated/NotificationPermissionCallback.hs
--- a/src/JSDOM/Generated/NotificationPermissionCallback.hs
+++ b/src/JSDOM/Generated/NotificationPermissionCallback.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.NotificationPermissionCallback
        (newNotificationPermissionCallback,
@@ -7,6 +10,7 @@
         NotificationPermissionCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
 newNotificationPermissionCallback ::
diff --git a/src/JSDOM/Generated/OESStandardDerivatives.hs b/src/JSDOM/Generated/OESStandardDerivatives.hs
--- a/src/JSDOM/Generated/OESStandardDerivatives.hs
+++ b/src/JSDOM/Generated/OESStandardDerivatives.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.OESStandardDerivatives
        (pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
-        OESStandardDerivatives, castToOESStandardDerivatives,
-        gTypeOESStandardDerivatives)
+        OESStandardDerivatives(..), gTypeOESStandardDerivatives)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,4 +19,14 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723
diff --git a/src/JSDOM/Generated/OESTextureHalfFloat.hs b/src/JSDOM/Generated/OESTextureHalfFloat.hs
--- a/src/JSDOM/Generated/OESTextureHalfFloat.hs
+++ b/src/JSDOM/Generated/OESTextureHalfFloat.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.OESTextureHalfFloat
-       (pattern HALF_FLOAT_OES, OESTextureHalfFloat,
-        castToOESTextureHalfFloat, gTypeOESTextureHalfFloat)
+       (pattern HALF_FLOAT_OES, OESTextureHalfFloat(..),
+        gTypeOESTextureHalfFloat)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,4 +19,14 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern HALF_FLOAT_OES = 36193
diff --git a/src/JSDOM/Generated/OESVertexArrayObject.hs b/src/JSDOM/Generated/OESVertexArrayObject.hs
--- a/src/JSDOM/Generated/OESVertexArrayObject.hs
+++ b/src/JSDOM/Generated/OESVertexArrayObject.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.OESVertexArrayObject
        (createVertexArrayOES, createVertexArrayOES_,
-        createVertexArrayOESUnchecked, deleteVertexArrayOES,
-        isVertexArrayOES, isVertexArrayOES_, bindVertexArrayOES,
-        pattern VERTEX_ARRAY_BINDING_OES, OESVertexArrayObject,
-        castToOESVertexArrayObject, gTypeOESVertexArrayObject)
+        createVertexArrayOESUnsafe, createVertexArrayOESUnchecked,
+        deleteVertexArrayOES, isVertexArrayOES, isVertexArrayOES_,
+        bindVertexArrayOES, pattern VERTEX_ARRAY_BINDING_OES,
+        OESVertexArrayObject(..), gTypeOESVertexArrayObject)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
 createVertexArrayOES ::
@@ -31,6 +45,15 @@
                       (MonadDOM m) => OESVertexArrayObject -> m ()
 createVertexArrayOES_ self
   = liftDOM (void (self ^. jsf "createVertexArrayOES" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
+createVertexArrayOESUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             OESVertexArrayObject -> m WebGLVertexArrayObjectOES
+createVertexArrayOESUnsafe self
+  = liftDOM
+      (((self ^. jsf "createVertexArrayOES" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
 createVertexArrayOESUnchecked ::
diff --git a/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs b/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
--- a/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
+++ b/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.OfflineAudioCompletionEvent
-       (getRenderedBuffer, getRenderedBufferUnchecked,
-        OfflineAudioCompletionEvent, castToOfflineAudioCompletionEvent,
+       (getRenderedBuffer, getRenderedBufferUnsafe,
+        getRenderedBufferUnchecked, OfflineAudioCompletionEvent(..),
         gTypeOfflineAudioCompletionEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
 getRenderedBuffer ::
@@ -23,6 +37,15 @@
                     OfflineAudioCompletionEvent -> m (Maybe AudioBuffer)
 getRenderedBuffer self
   = liftDOM ((self ^. js "renderedBuffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
+getRenderedBufferUnsafe ::
+                        (MonadDOM m, HasCallStack) =>
+                          OfflineAudioCompletionEvent -> m AudioBuffer
+getRenderedBufferUnsafe self
+  = liftDOM
+      (((self ^. js "renderedBuffer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
 getRenderedBufferUnchecked ::
diff --git a/src/JSDOM/Generated/OfflineAudioContext.hs b/src/JSDOM/Generated/OfflineAudioContext.hs
--- a/src/JSDOM/Generated/OfflineAudioContext.hs
+++ b/src/JSDOM/Generated/OfflineAudioContext.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.OfflineAudioContext
-       (newOfflineAudioContext, OfflineAudioContext,
-        castToOfflineAudioContext, gTypeOfflineAudioContext)
+       (newOfflineAudioContext, OfflineAudioContext(..),
+        gTypeOfflineAudioContext)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation> 
 newOfflineAudioContext ::
diff --git a/src/JSDOM/Generated/OscillatorNode.hs b/src/JSDOM/Generated/OscillatorNode.hs
--- a/src/JSDOM/Generated/OscillatorNode.hs
+++ b/src/JSDOM/Generated/OscillatorNode.hs
@@ -1,15 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.OscillatorNode
        (start, stop, noteOn, noteOff, setPeriodicWave, pattern SINE,
         pattern SQUARE, pattern SAWTOOTH, pattern TRIANGLE, pattern CUSTOM,
         pattern UNSCHEDULED_STATE, pattern SCHEDULED_STATE,
         pattern PLAYING_STATE, pattern FINISHED_STATE, setType, getType,
-        getPlaybackState, getFrequency, getFrequencyUnchecked, getDetune,
-        getDetuneUnchecked, ended, OscillatorNode, castToOscillatorNode,
-        gTypeOscillatorNode)
+        getPlaybackState, getFrequency, getFrequencyUnsafe,
+        getFrequencyUnchecked, getDetune, getDetuneUnsafe,
+        getDetuneUnchecked, ended, OscillatorNode(..), gTypeOscillatorNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.start Mozilla OscillatorNode.start documentation> 
 start :: (MonadDOM m) => OscillatorNode -> Double -> m ()
@@ -78,6 +92,14 @@
   = liftDOM ((self ^. js "frequency") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.frequency Mozilla OscillatorNode.frequency documentation> 
+getFrequencyUnsafe ::
+                   (MonadDOM m, HasCallStack) => OscillatorNode -> m AudioParam
+getFrequencyUnsafe self
+  = liftDOM
+      (((self ^. js "frequency") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.frequency Mozilla OscillatorNode.frequency documentation> 
 getFrequencyUnchecked ::
                       (MonadDOM m) => OscillatorNode -> m AudioParam
 getFrequencyUnchecked self
@@ -86,6 +108,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.detune Mozilla OscillatorNode.detune documentation> 
 getDetune :: (MonadDOM m) => OscillatorNode -> m (Maybe AudioParam)
 getDetune self = liftDOM ((self ^. js "detune") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.detune Mozilla OscillatorNode.detune documentation> 
+getDetuneUnsafe ::
+                (MonadDOM m, HasCallStack) => OscillatorNode -> m AudioParam
+getDetuneUnsafe self
+  = liftDOM
+      (((self ^. js "detune") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.detune Mozilla OscillatorNode.detune documentation> 
 getDetuneUnchecked ::
diff --git a/src/JSDOM/Generated/OverflowEvent.hs b/src/JSDOM/Generated/OverflowEvent.hs
--- a/src/JSDOM/Generated/OverflowEvent.hs
+++ b/src/JSDOM/Generated/OverflowEvent.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.OverflowEvent
        (pattern HORIZONTAL, pattern VERTICAL, pattern BOTH, getOrient,
-        getHorizontalOverflow, getVerticalOverflow, OverflowEvent,
-        castToOverflowEvent, gTypeOverflowEvent)
+        getHorizontalOverflow, getVerticalOverflow, OverflowEvent(..),
+        gTypeOverflowEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern HORIZONTAL = 0
 pattern VERTICAL = 1
 pattern BOTH = 2
diff --git a/src/JSDOM/Generated/PageTransitionEvent.hs b/src/JSDOM/Generated/PageTransitionEvent.hs
--- a/src/JSDOM/Generated/PageTransitionEvent.hs
+++ b/src/JSDOM/Generated/PageTransitionEvent.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PageTransitionEvent
-       (getPersisted, PageTransitionEvent, castToPageTransitionEvent,
-        gTypePageTransitionEvent)
+       (getPersisted, PageTransitionEvent(..), gTypePageTransitionEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent.persisted Mozilla PageTransitionEvent.persisted documentation> 
 getPersisted :: (MonadDOM m) => PageTransitionEvent -> m Bool
diff --git a/src/JSDOM/Generated/PannerNode.hs b/src/JSDOM/Generated/PannerNode.hs
--- a/src/JSDOM/Generated/PannerNode.hs
+++ b/src/JSDOM/Generated/PannerNode.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PannerNode
        (setPosition, setOrientation, setVelocity, pattern EQUALPOWER,
@@ -8,10 +11,11 @@
         getDistanceModel, setRefDistance, getRefDistance, setMaxDistance,
         getMaxDistance, setRolloffFactor, getRolloffFactor,
         setConeInnerAngle, getConeInnerAngle, setConeOuterAngle,
-        getConeOuterAngle, setConeOuterGain, getConeOuterGain, PannerNode,
-        castToPannerNode, gTypePannerNode)
+        getConeOuterAngle, setConeOuterGain, getConeOuterGain,
+        PannerNode(..), gTypePannerNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +26,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setPosition Mozilla webkitAudioPannerNode.setPosition documentation> 
 setPosition ::
diff --git a/src/JSDOM/Generated/Path2D.hs b/src/JSDOM/Generated/Path2D.hs
--- a/src/JSDOM/Generated/Path2D.hs
+++ b/src/JSDOM/Generated/Path2D.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Path2D
        (newPath2D, newPath2D', newPath2D'', addPath, closePath, moveTo,
-        lineTo, quadraticCurveTo, bezierCurveTo, arcTo, rect, arc, Path2D,
-        castToPath2D, gTypePath2D)
+        lineTo, quadraticCurveTo, bezierCurveTo, arcTo, rect, arc,
+        Path2D(..), gTypePath2D)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
 newPath2D :: (MonadDOM m) => m Path2D
diff --git a/src/JSDOM/Generated/Performance.hs b/src/JSDOM/Generated/Performance.hs
--- a/src/JSDOM/Generated/Performance.hs
+++ b/src/JSDOM/Generated/Performance.hs
@@ -1,17 +1,23 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Performance
-       (webkitGetEntries, webkitGetEntries_, webkitGetEntriesUnchecked,
-        webkitGetEntriesByType, webkitGetEntriesByType_,
+       (webkitGetEntries, webkitGetEntries_, webkitGetEntriesUnsafe,
+        webkitGetEntriesUnchecked, webkitGetEntriesByType,
+        webkitGetEntriesByType_, webkitGetEntriesByTypeUnsafe,
         webkitGetEntriesByTypeUnchecked, webkitGetEntriesByName,
-        webkitGetEntriesByName_, webkitGetEntriesByNameUnchecked,
-        webkitClearResourceTimings, webkitSetResourceTimingBufferSize,
-        webkitMark, webkitClearMarks, webkitMeasure, webkitClearMeasures,
-        now, now_, getNavigation, getNavigationUnchecked, getTiming,
-        getTimingUnchecked, webKitResourceTimingBufferFull, Performance,
-        castToPerformance, gTypePerformance)
+        webkitGetEntriesByName_, webkitGetEntriesByNameUnsafe,
+        webkitGetEntriesByNameUnchecked, webkitClearResourceTimings,
+        webkitSetResourceTimingBufferSize, webkitMark, webkitClearMarks,
+        webkitMeasure, webkitClearMeasures, now, now_, getNavigation,
+        getNavigationUnsafe, getNavigationUnchecked, getTiming,
+        getTimingUnsafe, getTimingUnchecked,
+        webKitResourceTimingBufferFull, Performance(..), gTypePerformance)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +28,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntries Mozilla Performance.webkitGetEntries documentation> 
 webkitGetEntries ::
@@ -35,6 +51,14 @@
   = liftDOM (void (self ^. jsf "webkitGetEntries" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntries Mozilla Performance.webkitGetEntries documentation> 
+webkitGetEntriesUnsafe ::
+                       (MonadDOM m, HasCallStack) => Performance -> m PerformanceEntryList
+webkitGetEntriesUnsafe self
+  = liftDOM
+      (((self ^. jsf "webkitGetEntries" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntries Mozilla Performance.webkitGetEntries documentation> 
 webkitGetEntriesUnchecked ::
                           (MonadDOM m) => Performance -> m PerformanceEntryList
 webkitGetEntriesUnchecked self
@@ -59,6 +83,16 @@
       (void (self ^. jsf "webkitGetEntriesByType" [toJSVal entryType]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntriesByType Mozilla Performance.webkitGetEntriesByType documentation> 
+webkitGetEntriesByTypeUnsafe ::
+                             (MonadDOM m, ToJSString entryType, HasCallStack) =>
+                               Performance -> entryType -> m PerformanceEntryList
+webkitGetEntriesByTypeUnsafe self entryType
+  = liftDOM
+      (((self ^. jsf "webkitGetEntriesByType" [toJSVal entryType]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntriesByType Mozilla Performance.webkitGetEntriesByType documentation> 
 webkitGetEntriesByTypeUnchecked ::
                                 (MonadDOM m, ToJSString entryType) =>
                                   Performance -> entryType -> m PerformanceEntryList
@@ -88,6 +122,18 @@
             [toJSVal name, toJSVal entryType]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntriesByName Mozilla Performance.webkitGetEntriesByName documentation> 
+webkitGetEntriesByNameUnsafe ::
+                             (MonadDOM m, ToJSString name, ToJSString entryType,
+                              HasCallStack) =>
+                               Performance -> name -> entryType -> m PerformanceEntryList
+webkitGetEntriesByNameUnsafe self name entryType
+  = liftDOM
+      (((self ^. jsf "webkitGetEntriesByName"
+           [toJSVal name, toJSVal entryType])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.webkitGetEntriesByName Mozilla Performance.webkitGetEntriesByName documentation> 
 webkitGetEntriesByNameUnchecked ::
                                 (MonadDOM m, ToJSString name, ToJSString entryType) =>
                                   Performance -> name -> entryType -> m PerformanceEntryList
@@ -160,6 +206,15 @@
   = liftDOM ((self ^. js "navigation") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.navigation Mozilla Performance.navigation documentation> 
+getNavigationUnsafe ::
+                    (MonadDOM m, HasCallStack) =>
+                      Performance -> m PerformanceNavigation
+getNavigationUnsafe self
+  = liftDOM
+      (((self ^. js "navigation") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.navigation Mozilla Performance.navigation documentation> 
 getNavigationUnchecked ::
                        (MonadDOM m) => Performance -> m PerformanceNavigation
 getNavigationUnchecked self
@@ -169,6 +224,14 @@
 getTiming ::
           (MonadDOM m) => Performance -> m (Maybe PerformanceTiming)
 getTiming self = liftDOM ((self ^. js "timing") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.timing Mozilla Performance.timing documentation> 
+getTimingUnsafe ::
+                (MonadDOM m, HasCallStack) => Performance -> m PerformanceTiming
+getTimingUnsafe self
+  = liftDOM
+      (((self ^. js "timing") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.timing Mozilla Performance.timing documentation> 
 getTimingUnchecked ::
diff --git a/src/JSDOM/Generated/PerformanceEntry.hs b/src/JSDOM/Generated/PerformanceEntry.hs
--- a/src/JSDOM/Generated/PerformanceEntry.hs
+++ b/src/JSDOM/Generated/PerformanceEntry.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PerformanceEntry
        (getName, getEntryType, getStartTime, getDuration,
-        PerformanceEntry, castToPerformanceEntry, gTypePerformanceEntry,
-        IsPerformanceEntry, toPerformanceEntry)
+        PerformanceEntry(..), gTypePerformanceEntry, IsPerformanceEntry,
+        toPerformanceEntry)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.name Mozilla PerformanceEntry.name documentation> 
 getName ::
diff --git a/src/JSDOM/Generated/PerformanceEntryList.hs b/src/JSDOM/Generated/PerformanceEntryList.hs
--- a/src/JSDOM/Generated/PerformanceEntryList.hs
+++ b/src/JSDOM/Generated/PerformanceEntryList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PerformanceEntryList
-       (item, item_, itemUnchecked, getLength, PerformanceEntryList,
-        castToPerformanceEntryList, gTypePerformanceEntryList)
+       (item, item_, itemUnsafe, itemUnchecked, getLength,
+        PerformanceEntryList(..), gTypePerformanceEntryList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList.item Mozilla PerformanceEntryList.item documentation> 
 item ::
@@ -27,6 +41,15 @@
 item_ :: (MonadDOM m) => PerformanceEntryList -> Word -> m ()
 item_ self index
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList.item Mozilla PerformanceEntryList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             PerformanceEntryList -> Word -> m PerformanceEntry
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList.item Mozilla PerformanceEntryList.item documentation> 
 itemUnchecked ::
diff --git a/src/JSDOM/Generated/PerformanceNavigation.hs b/src/JSDOM/Generated/PerformanceNavigation.hs
--- a/src/JSDOM/Generated/PerformanceNavigation.hs
+++ b/src/JSDOM/Generated/PerformanceNavigation.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PerformanceNavigation
        (pattern TYPE_NAVIGATE, pattern TYPE_RELOAD,
         pattern TYPE_BACK_FORWARD, pattern TYPE_RESERVED, getType,
-        getRedirectCount, PerformanceNavigation,
-        castToPerformanceNavigation, gTypePerformanceNavigation)
+        getRedirectCount, PerformanceNavigation(..),
+        gTypePerformanceNavigation)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern TYPE_NAVIGATE = 0
 pattern TYPE_RELOAD = 1
 pattern TYPE_BACK_FORWARD = 2
diff --git a/src/JSDOM/Generated/PerformanceResourceTiming.hs b/src/JSDOM/Generated/PerformanceResourceTiming.hs
--- a/src/JSDOM/Generated/PerformanceResourceTiming.hs
+++ b/src/JSDOM/Generated/PerformanceResourceTiming.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PerformanceResourceTiming
        (getInitiatorType, getRedirectStart, getRedirectEnd, getFetchStart,
         getDomainLookupStart, getDomainLookupEnd, getConnectStart,
         getConnectEnd, getSecureConnectionStart, getRequestStart,
-        getResponseEnd, PerformanceResourceTiming,
-        castToPerformanceResourceTiming, gTypePerformanceResourceTiming)
+        getResponseEnd, PerformanceResourceTiming(..),
+        gTypePerformanceResourceTiming)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.initiatorType Mozilla PerformanceResourceTiming.initiatorType documentation> 
 getInitiatorType ::
diff --git a/src/JSDOM/Generated/PerformanceTiming.hs b/src/JSDOM/Generated/PerformanceTiming.hs
--- a/src/JSDOM/Generated/PerformanceTiming.hs
+++ b/src/JSDOM/Generated/PerformanceTiming.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PerformanceTiming
        (getNavigationStart, getUnloadEventStart, getUnloadEventEnd,
@@ -8,9 +11,10 @@
         getResponseStart, getResponseEnd, getDomLoading, getDomInteractive,
         getDomContentLoadedEventStart, getDomContentLoadedEventEnd,
         getDomComplete, getLoadEventStart, getLoadEventEnd,
-        PerformanceTiming, castToPerformanceTiming, gTypePerformanceTiming)
+        PerformanceTiming(..), gTypePerformanceTiming)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.navigationStart Mozilla PerformanceTiming.navigationStart documentation> 
 getNavigationStart :: (MonadDOM m) => PerformanceTiming -> m Word64
diff --git a/src/JSDOM/Generated/Plugin.hs b/src/JSDOM/Generated/Plugin.hs
--- a/src/JSDOM/Generated/Plugin.hs
+++ b/src/JSDOM/Generated/Plugin.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Plugin
-       (item, item_, itemUnchecked, namedItem, namedItem_,
-        namedItemUnchecked, getName, getFilename, getDescription,
-        getLength, Plugin, castToPlugin, gTypePlugin)
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked, getName, getFilename,
+        getDescription, getLength, Plugin(..), gTypePlugin)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
 item :: (MonadDOM m) => Plugin -> Word -> m (Maybe MimeType)
@@ -28,6 +42,14 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => Plugin -> Word -> m MimeType
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
 itemUnchecked :: (MonadDOM m) => Plugin -> Word -> m MimeType
 itemUnchecked self index
   = liftDOM
@@ -45,6 +67,15 @@
            (MonadDOM m, ToJSString name) => Plugin -> name -> m ()
 namedItem_ self name
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  Plugin -> name -> m MimeType
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
 namedItemUnchecked ::
diff --git a/src/JSDOM/Generated/PluginArray.hs b/src/JSDOM/Generated/PluginArray.hs
--- a/src/JSDOM/Generated/PluginArray.hs
+++ b/src/JSDOM/Generated/PluginArray.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PluginArray
-       (item, item_, itemUnchecked, namedItem, namedItem_,
-        namedItemUnchecked, refresh, getLength, PluginArray,
-        castToPluginArray, gTypePluginArray)
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked, refresh, getLength,
+        PluginArray(..), gTypePluginArray)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
 item :: (MonadDOM m) => PluginArray -> Word -> m (Maybe Plugin)
@@ -28,6 +42,14 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => PluginArray -> Word -> m Plugin
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
 itemUnchecked :: (MonadDOM m) => PluginArray -> Word -> m Plugin
 itemUnchecked self index
   = liftDOM
@@ -45,6 +67,15 @@
            (MonadDOM m, ToJSString name) => PluginArray -> name -> m ()
 namedItem_ self name
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  PluginArray -> name -> m Plugin
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
 namedItemUnchecked ::
diff --git a/src/JSDOM/Generated/PopStateEvent.hs b/src/JSDOM/Generated/PopStateEvent.hs
--- a/src/JSDOM/Generated/PopStateEvent.hs
+++ b/src/JSDOM/Generated/PopStateEvent.hs
@@ -1,9 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PopStateEvent
-       (getState, PopStateEvent, castToPopStateEvent, gTypePopStateEvent)
-       where
+       (getState, PopStateEvent(..), gTypePopStateEvent) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -14,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent.state Mozilla PopStateEvent.state documentation> 
 getState :: (MonadDOM m) => PopStateEvent -> m JSVal
diff --git a/src/JSDOM/Generated/PositionCallback.hs b/src/JSDOM/Generated/PositionCallback.hs
--- a/src/JSDOM/Generated/PositionCallback.hs
+++ b/src/JSDOM/Generated/PositionCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PositionCallback
        (newPositionCallback, newPositionCallbackSync,
         newPositionCallbackAsync, PositionCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
 newPositionCallback ::
diff --git a/src/JSDOM/Generated/PositionError.hs b/src/JSDOM/Generated/PositionError.hs
--- a/src/JSDOM/Generated/PositionError.hs
+++ b/src/JSDOM/Generated/PositionError.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PositionError
        (pattern PERMISSION_DENIED, pattern POSITION_UNAVAILABLE,
-        pattern TIMEOUT, getCode, getMessage, PositionError,
-        castToPositionError, gTypePositionError)
+        pattern TIMEOUT, getCode, getMessage, PositionError(..),
+        gTypePositionError)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern PERMISSION_DENIED = 1
 pattern POSITION_UNAVAILABLE = 2
 pattern TIMEOUT = 3
diff --git a/src/JSDOM/Generated/PositionErrorCallback.hs b/src/JSDOM/Generated/PositionErrorCallback.hs
--- a/src/JSDOM/Generated/PositionErrorCallback.hs
+++ b/src/JSDOM/Generated/PositionErrorCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.PositionErrorCallback
        (newPositionErrorCallback, newPositionErrorCallbackSync,
         newPositionErrorCallbackAsync, PositionErrorCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
 newPositionErrorCallback ::
diff --git a/src/JSDOM/Generated/ProcessingInstruction.hs b/src/JSDOM/Generated/ProcessingInstruction.hs
--- a/src/JSDOM/Generated/ProcessingInstruction.hs
+++ b/src/JSDOM/Generated/ProcessingInstruction.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ProcessingInstruction
-       (getTarget, getTargetUnchecked, getSheet, getSheetUnchecked,
-        ProcessingInstruction, castToProcessingInstruction,
+       (getTarget, getTargetUnsafe, getTargetUnchecked, getSheet,
+        getSheetUnsafe, getSheetUnchecked, ProcessingInstruction(..),
         gTypeProcessingInstruction)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
 getTarget ::
@@ -25,6 +39,15 @@
   = liftDOM ((self ^. js "target") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
+getTargetUnsafe ::
+                (MonadDOM m, HasCallStack, FromJSString result) =>
+                  ProcessingInstruction -> m result
+getTargetUnsafe self
+  = liftDOM
+      (((self ^. js "target") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
 getTargetUnchecked ::
                    (MonadDOM m, FromJSString result) =>
                      ProcessingInstruction -> m result
@@ -35,6 +58,14 @@
 getSheet ::
          (MonadDOM m) => ProcessingInstruction -> m (Maybe StyleSheet)
 getSheet self = liftDOM ((self ^. js "sheet") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
+getSheetUnsafe ::
+               (MonadDOM m, HasCallStack) => ProcessingInstruction -> m StyleSheet
+getSheetUnsafe self
+  = liftDOM
+      (((self ^. js "sheet") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
 getSheetUnchecked ::
diff --git a/src/JSDOM/Generated/ProgressEvent.hs b/src/JSDOM/Generated/ProgressEvent.hs
--- a/src/JSDOM/Generated/ProgressEvent.hs
+++ b/src/JSDOM/Generated/ProgressEvent.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ProgressEvent
-       (getLengthComputable, getLoaded, getTotal, ProgressEvent,
-        castToProgressEvent, gTypeProgressEvent, IsProgressEvent,
-        toProgressEvent)
+       (getLengthComputable, getLoaded, getTotal, ProgressEvent(..),
+        gTypeProgressEvent, IsProgressEvent, toProgressEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.lengthComputable Mozilla ProgressEvent.lengthComputable documentation> 
 getLengthComputable ::
diff --git a/src/JSDOM/Generated/QuickTimePluginReplacement.hs b/src/JSDOM/Generated/QuickTimePluginReplacement.hs
--- a/src/JSDOM/Generated/QuickTimePluginReplacement.hs
+++ b/src/JSDOM/Generated/QuickTimePluginReplacement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.QuickTimePluginReplacement
        (postEvent, getMovieSize, getTimedMetaData, getAccessLog,
-        getErrorLog, QuickTimePluginReplacement,
-        castToQuickTimePluginReplacement, gTypeQuickTimePluginReplacement)
+        getErrorLog, QuickTimePluginReplacement(..),
+        gTypeQuickTimePluginReplacement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.postEvent Mozilla QuickTimePluginReplacement.postEvent documentation> 
 postEvent ::
diff --git a/src/JSDOM/Generated/RGBColor.hs b/src/JSDOM/Generated/RGBColor.hs
--- a/src/JSDOM/Generated/RGBColor.hs
+++ b/src/JSDOM/Generated/RGBColor.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RGBColor
-       (getRed, getRedUnchecked, getGreen, getGreenUnchecked, getBlue,
-        getBlueUnchecked, RGBColor, castToRGBColor, gTypeRGBColor)
+       (getRed, getRedUnsafe, getRedUnchecked, getGreen, getGreenUnsafe,
+        getGreenUnchecked, getBlue, getBlueUnsafe, getBlueUnchecked,
+        RGBColor(..), gTypeRGBColor)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,12 +20,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
 getRed :: (MonadDOM m) => RGBColor -> m (Maybe CSSPrimitiveValue)
 getRed self = liftDOM ((self ^. js "red") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
+getRedUnsafe ::
+             (MonadDOM m, HasCallStack) => RGBColor -> m CSSPrimitiveValue
+getRedUnsafe self
+  = liftDOM
+      (((self ^. js "red") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
 getRedUnchecked :: (MonadDOM m) => RGBColor -> m CSSPrimitiveValue
 getRedUnchecked self
   = liftDOM ((self ^. js "red") >>= fromJSValUnchecked)
@@ -30,6 +53,14 @@
 getGreen self = liftDOM ((self ^. js "green") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.green Mozilla RGBColor.green documentation> 
+getGreenUnsafe ::
+               (MonadDOM m, HasCallStack) => RGBColor -> m CSSPrimitiveValue
+getGreenUnsafe self
+  = liftDOM
+      (((self ^. js "green") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.green Mozilla RGBColor.green documentation> 
 getGreenUnchecked ::
                   (MonadDOM m) => RGBColor -> m CSSPrimitiveValue
 getGreenUnchecked self
@@ -38,6 +69,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.blue Mozilla RGBColor.blue documentation> 
 getBlue :: (MonadDOM m) => RGBColor -> m (Maybe CSSPrimitiveValue)
 getBlue self = liftDOM ((self ^. js "blue") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.blue Mozilla RGBColor.blue documentation> 
+getBlueUnsafe ::
+              (MonadDOM m, HasCallStack) => RGBColor -> m CSSPrimitiveValue
+getBlueUnsafe self
+  = liftDOM
+      (((self ^. js "blue") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.blue Mozilla RGBColor.blue documentation> 
 getBlueUnchecked :: (MonadDOM m) => RGBColor -> m CSSPrimitiveValue
diff --git a/src/JSDOM/Generated/RTCConfiguration.hs b/src/JSDOM/Generated/RTCConfiguration.hs
--- a/src/JSDOM/Generated/RTCConfiguration.hs
+++ b/src/JSDOM/Generated/RTCConfiguration.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCConfiguration
        (getIceServers, getIceTransports, getRequestIdentity,
-        RTCConfiguration, castToRTCConfiguration, gTypeRTCConfiguration)
+        RTCConfiguration(..), gTypeRTCConfiguration)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration.iceServers Mozilla RTCConfiguration.iceServers documentation> 
 getIceServers ::
diff --git a/src/JSDOM/Generated/RTCDTMFSender.hs b/src/JSDOM/Generated/RTCDTMFSender.hs
--- a/src/JSDOM/Generated/RTCDTMFSender.hs
+++ b/src/JSDOM/Generated/RTCDTMFSender.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCDTMFSender
-       (insertDTMF, getCanInsertDTMF, getTrack, getTrackUnchecked,
-        getToneBuffer, getDuration, getInterToneGap, toneChange,
-        RTCDTMFSender, castToRTCDTMFSender, gTypeRTCDTMFSender)
+       (insertDTMF, getCanInsertDTMF, getTrack, getTrackUnsafe,
+        getTrackUnchecked, getToneBuffer, getDuration, getInterToneGap,
+        toneChange, RTCDTMFSender(..), gTypeRTCDTMFSender)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.insertDTMF Mozilla RTCDTMFSender.insertDTMF documentation> 
 insertDTMF ::
@@ -36,6 +50,14 @@
 getTrack ::
          (MonadDOM m) => RTCDTMFSender -> m (Maybe MediaStreamTrack)
 getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.track Mozilla RTCDTMFSender.track documentation> 
+getTrackUnsafe ::
+               (MonadDOM m, HasCallStack) => RTCDTMFSender -> m MediaStreamTrack
+getTrackUnsafe self
+  = liftDOM
+      (((self ^. js "track") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.track Mozilla RTCDTMFSender.track documentation> 
 getTrackUnchecked ::
diff --git a/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs b/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
--- a/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
+++ b/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCDTMFToneChangeEvent
-       (getTone, RTCDTMFToneChangeEvent, castToRTCDTMFToneChangeEvent,
-        gTypeRTCDTMFToneChangeEvent)
+       (getTone, RTCDTMFToneChangeEvent(..), gTypeRTCDTMFToneChangeEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent.tone Mozilla RTCDTMFToneChangeEvent.tone documentation> 
 getTone ::
diff --git a/src/JSDOM/Generated/RTCDataChannel.hs b/src/JSDOM/Generated/RTCDataChannel.hs
--- a/src/JSDOM/Generated/RTCDataChannel.hs
+++ b/src/JSDOM/Generated/RTCDataChannel.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCDataChannel
        (send, sendView, sendBlob, sendString, close, getLabel, getOrdered,
         getMaxRetransmitTime, getMaxRetransmits, getProtocol,
         getNegotiated, getId, getReadyState, getBufferedAmount,
         setBinaryType, getBinaryType, open, error, closeEvent, message,
-        RTCDataChannel, castToRTCDataChannel, gTypeRTCDataChannel)
+        RTCDataChannel(..), gTypeRTCDataChannel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
 send ::
diff --git a/src/JSDOM/Generated/RTCDataChannelEvent.hs b/src/JSDOM/Generated/RTCDataChannelEvent.hs
--- a/src/JSDOM/Generated/RTCDataChannelEvent.hs
+++ b/src/JSDOM/Generated/RTCDataChannelEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCDataChannelEvent
-       (getChannel, getChannelUnchecked, RTCDataChannelEvent,
-        castToRTCDataChannelEvent, gTypeRTCDataChannelEvent)
+       (getChannel, getChannelUnsafe, getChannelUnchecked,
+        RTCDataChannelEvent(..), gTypeRTCDataChannelEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent.channel Mozilla RTCDataChannelEvent.channel documentation> 
 getChannel ::
            (MonadDOM m) => RTCDataChannelEvent -> m (Maybe RTCDataChannel)
 getChannel self = liftDOM ((self ^. js "channel") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent.channel Mozilla RTCDataChannelEvent.channel documentation> 
+getChannelUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   RTCDataChannelEvent -> m RTCDataChannel
+getChannelUnsafe self
+  = liftDOM
+      (((self ^. js "channel") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent.channel Mozilla RTCDataChannelEvent.channel documentation> 
 getChannelUnchecked ::
diff --git a/src/JSDOM/Generated/RTCIceCandidate.hs b/src/JSDOM/Generated/RTCIceCandidate.hs
--- a/src/JSDOM/Generated/RTCIceCandidate.hs
+++ b/src/JSDOM/Generated/RTCIceCandidate.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCIceCandidate
        (newRTCIceCandidate, getCandidate, getSdpMid, getSdpMLineIndex,
-        RTCIceCandidate, castToRTCIceCandidate, gTypeRTCIceCandidate)
+        RTCIceCandidate(..), gTypeRTCIceCandidate)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation> 
 newRTCIceCandidate ::
diff --git a/src/JSDOM/Generated/RTCIceCandidateEvent.hs b/src/JSDOM/Generated/RTCIceCandidateEvent.hs
--- a/src/JSDOM/Generated/RTCIceCandidateEvent.hs
+++ b/src/JSDOM/Generated/RTCIceCandidateEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCIceCandidateEvent
-       (getCandidate, getCandidateUnchecked, RTCIceCandidateEvent,
-        castToRTCIceCandidateEvent, gTypeRTCIceCandidateEvent)
+       (getCandidate, getCandidateUnsafe, getCandidateUnchecked,
+        RTCIceCandidateEvent(..), gTypeRTCIceCandidateEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,12 +19,31 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
 getCandidate ::
              (MonadDOM m) => RTCIceCandidateEvent -> m (Maybe RTCIceCandidate)
 getCandidate self
   = liftDOM ((self ^. js "candidate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
+getCandidateUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     RTCIceCandidateEvent -> m RTCIceCandidate
+getCandidateUnsafe self
+  = liftDOM
+      (((self ^. js "candidate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
 getCandidateUnchecked ::
diff --git a/src/JSDOM/Generated/RTCIceServer.hs b/src/JSDOM/Generated/RTCIceServer.hs
--- a/src/JSDOM/Generated/RTCIceServer.hs
+++ b/src/JSDOM/Generated/RTCIceServer.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCIceServer
-       (getUrls, getUsername, getCredential, RTCIceServer,
-        castToRTCIceServer, gTypeRTCIceServer)
+       (getUrls, getUsername, getCredential, RTCIceServer(..),
+        gTypeRTCIceServer)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer.urls Mozilla RTCIceServer.urls documentation> 
 getUrls ::
diff --git a/src/JSDOM/Generated/RTCPeerConnection.hs b/src/JSDOM/Generated/RTCPeerConnection.hs
--- a/src/JSDOM/Generated/RTCPeerConnection.hs
+++ b/src/JSDOM/Generated/RTCPeerConnection.hs
@@ -1,23 +1,29 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCPeerConnection
        (newRTCPeerConnection, createOffer, createAnswer,
         setLocalDescription, setRemoteDescription, updateIce,
         addIceCandidate, getLocalStreams, getLocalStreams_,
         getRemoteStreams, getRemoteStreams_, getStreamById, getStreamById_,
-        getStreamByIdUnchecked, getConfiguration, getConfiguration_,
+        getStreamByIdUnsafe, getStreamByIdUnchecked, getConfiguration,
+        getConfiguration_, getConfigurationUnsafe,
         getConfigurationUnchecked, addStream, removeStream, getStats,
-        createDataChannel, createDataChannel_, createDataChannelUnchecked,
-        createDTMFSender, createDTMFSender_, createDTMFSenderUnchecked,
-        close, getLocalDescription, getLocalDescriptionUnchecked,
-        getRemoteDescription, getRemoteDescriptionUnchecked,
+        createDataChannel, createDataChannel_, createDataChannelUnsafe,
+        createDataChannelUnchecked, createDTMFSender, createDTMFSender_,
+        createDTMFSenderUnsafe, createDTMFSenderUnchecked, close,
+        getLocalDescription, getLocalDescriptionUnsafe,
+        getLocalDescriptionUnchecked, getRemoteDescription,
+        getRemoteDescriptionUnsafe, getRemoteDescriptionUnchecked,
         getSignalingState, getIceGatheringState, getIceConnectionState,
         negotiationNeeded, iceCandidate, signalingStateChange,
         addStreamEvent, removeStreamEvent, iceConnectionStateChange,
-        dataChannel, RTCPeerConnection, castToRTCPeerConnection,
-        gTypeRTCPeerConnection)
+        dataChannel, RTCPeerConnection(..), gTypeRTCPeerConnection)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -28,6 +34,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection Mozilla webkitRTCPeerConnection documentation> 
 newRTCPeerConnection ::
@@ -150,6 +166,15 @@
   = liftDOM (void (self ^. jsf "getStreamById" [toJSVal streamId]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
+getStreamByIdUnsafe ::
+                    (MonadDOM m, ToJSString streamId, HasCallStack) =>
+                      RTCPeerConnection -> streamId -> m MediaStream
+getStreamByIdUnsafe self streamId
+  = liftDOM
+      (((self ^. jsf "getStreamById" [toJSVal streamId]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
 getStreamByIdUnchecked ::
                        (MonadDOM m, ToJSString streamId) =>
                          RTCPeerConnection -> streamId -> m MediaStream
@@ -170,6 +195,15 @@
   = liftDOM (void (self ^. jsf "getConfiguration" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
+getConfigurationUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         RTCPeerConnection -> m RTCConfiguration
+getConfigurationUnsafe self
+  = liftDOM
+      (((self ^. jsf "getConfiguration" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
 getConfigurationUnchecked ::
                           (MonadDOM m) => RTCPeerConnection -> m RTCConfiguration
 getConfigurationUnchecked self
@@ -221,6 +255,19 @@
          (self ^. jsf "createDataChannel" [toJSVal label, toJSVal options]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
+createDataChannelUnsafe ::
+                        (MonadDOM m, ToJSString label, IsDictionary options,
+                         HasCallStack) =>
+                          RTCPeerConnection ->
+                            Maybe label -> Maybe options -> m RTCDataChannel
+createDataChannelUnsafe self label options
+  = liftDOM
+      (((self ^. jsf "createDataChannel"
+           [toJSVal label, toJSVal options])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
 createDataChannelUnchecked ::
                            (MonadDOM m, ToJSString label, IsDictionary options) =>
                              RTCPeerConnection ->
@@ -246,6 +293,15 @@
   = liftDOM (void (self ^. jsf "createDTMFSender" [toJSVal track]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDTMFSender Mozilla webkitRTCPeerConnection.createDTMFSender documentation> 
+createDTMFSenderUnsafe ::
+                       (MonadDOM m, IsMediaStreamTrack track, HasCallStack) =>
+                         RTCPeerConnection -> Maybe track -> m RTCDTMFSender
+createDTMFSenderUnsafe self track
+  = liftDOM
+      (((self ^. jsf "createDTMFSender" [toJSVal track]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDTMFSender Mozilla webkitRTCPeerConnection.createDTMFSender documentation> 
 createDTMFSenderUnchecked ::
                           (MonadDOM m, IsMediaStreamTrack track) =>
                             RTCPeerConnection -> Maybe track -> m RTCDTMFSender
@@ -266,6 +322,15 @@
   = liftDOM ((self ^. js "localDescription") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
+getLocalDescriptionUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            RTCPeerConnection -> m RTCSessionDescription
+getLocalDescriptionUnsafe self
+  = liftDOM
+      (((self ^. js "localDescription") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
 getLocalDescriptionUnchecked ::
                              (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
 getLocalDescriptionUnchecked self
@@ -277,6 +342,15 @@
                        RTCPeerConnection -> m (Maybe RTCSessionDescription)
 getRemoteDescription self
   = liftDOM ((self ^. js "remoteDescription") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
+getRemoteDescriptionUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             RTCPeerConnection -> m RTCSessionDescription
+getRemoteDescriptionUnsafe self
+  = liftDOM
+      (((self ^. js "remoteDescription") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
 getRemoteDescriptionUnchecked ::
diff --git a/src/JSDOM/Generated/RTCPeerConnectionErrorCallback.hs b/src/JSDOM/Generated/RTCPeerConnectionErrorCallback.hs
--- a/src/JSDOM/Generated/RTCPeerConnectionErrorCallback.hs
+++ b/src/JSDOM/Generated/RTCPeerConnectionErrorCallback.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCPeerConnectionErrorCallback
        (newRTCPeerConnectionErrorCallback,
@@ -7,6 +10,7 @@
         RTCPeerConnectionErrorCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionErrorCallback Mozilla RTCPeerConnectionErrorCallback documentation> 
 newRTCPeerConnectionErrorCallback ::
diff --git a/src/JSDOM/Generated/RTCSessionDescription.hs b/src/JSDOM/Generated/RTCSessionDescription.hs
--- a/src/JSDOM/Generated/RTCSessionDescription.hs
+++ b/src/JSDOM/Generated/RTCSessionDescription.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCSessionDescription
        (newRTCSessionDescription, setType, getType, setSdp, getSdp,
-        RTCSessionDescription, castToRTCSessionDescription,
-        gTypeRTCSessionDescription)
+        RTCSessionDescription(..), gTypeRTCSessionDescription)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation> 
 newRTCSessionDescription ::
diff --git a/src/JSDOM/Generated/RTCSessionDescriptionCallback.hs b/src/JSDOM/Generated/RTCSessionDescriptionCallback.hs
--- a/src/JSDOM/Generated/RTCSessionDescriptionCallback.hs
+++ b/src/JSDOM/Generated/RTCSessionDescriptionCallback.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCSessionDescriptionCallback
        (newRTCSessionDescriptionCallback,
@@ -7,6 +10,7 @@
         RTCSessionDescriptionCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionCallback Mozilla RTCSessionDescriptionCallback documentation> 
 newRTCSessionDescriptionCallback ::
diff --git a/src/JSDOM/Generated/RTCStatsCallback.hs b/src/JSDOM/Generated/RTCStatsCallback.hs
--- a/src/JSDOM/Generated/RTCStatsCallback.hs
+++ b/src/JSDOM/Generated/RTCStatsCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCStatsCallback
        (newRTCStatsCallback, newRTCStatsCallbackSync,
         newRTCStatsCallbackAsync, RTCStatsCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsCallback Mozilla RTCStatsCallback documentation> 
 newRTCStatsCallback ::
diff --git a/src/JSDOM/Generated/RTCStatsReport.hs b/src/JSDOM/Generated/RTCStatsReport.hs
--- a/src/JSDOM/Generated/RTCStatsReport.hs
+++ b/src/JSDOM/Generated/RTCStatsReport.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCStatsReport
-       (stat, stat_, names, names_, getTimestamp, getTimestampUnchecked,
-        getId, getType, getLocal, getLocalUnchecked, getRemote,
-        getRemoteUnchecked, RTCStatsReport, castToRTCStatsReport,
-        gTypeRTCStatsReport)
+       (stat, stat_, names, names_, getTimestamp, getTimestampUnsafe,
+        getTimestampUnchecked, getId, getType, getLocal, getLocalUnsafe,
+        getLocalUnchecked, getRemote, getRemoteUnsafe, getRemoteUnchecked,
+        RTCStatsReport(..), gTypeRTCStatsReport)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.stat Mozilla RTCStatsReport.stat documentation> 
 stat ::
@@ -48,6 +62,14 @@
   = liftDOM ((self ^. js "timestamp") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.timestamp Mozilla RTCStatsReport.timestamp documentation> 
+getTimestampUnsafe ::
+                   (MonadDOM m, HasCallStack) => RTCStatsReport -> m Date
+getTimestampUnsafe self
+  = liftDOM
+      (((self ^. js "timestamp") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.timestamp Mozilla RTCStatsReport.timestamp documentation> 
 getTimestampUnchecked :: (MonadDOM m) => RTCStatsReport -> m Date
 getTimestampUnchecked self
   = liftDOM ((self ^. js "timestamp") >>= fromJSValUnchecked)
@@ -68,6 +90,14 @@
 getLocal self = liftDOM ((self ^. js "local") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.local Mozilla RTCStatsReport.local documentation> 
+getLocalUnsafe ::
+               (MonadDOM m, HasCallStack) => RTCStatsReport -> m RTCStatsReport
+getLocalUnsafe self
+  = liftDOM
+      (((self ^. js "local") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.local Mozilla RTCStatsReport.local documentation> 
 getLocalUnchecked ::
                   (MonadDOM m) => RTCStatsReport -> m RTCStatsReport
 getLocalUnchecked self
@@ -77,6 +107,14 @@
 getRemote ::
           (MonadDOM m) => RTCStatsReport -> m (Maybe RTCStatsReport)
 getRemote self = liftDOM ((self ^. js "remote") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.remote Mozilla RTCStatsReport.remote documentation> 
+getRemoteUnsafe ::
+                (MonadDOM m, HasCallStack) => RTCStatsReport -> m RTCStatsReport
+getRemoteUnsafe self
+  = liftDOM
+      (((self ^. js "remote") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport.remote Mozilla RTCStatsReport.remote documentation> 
 getRemoteUnchecked ::
diff --git a/src/JSDOM/Generated/RTCStatsResponse.hs b/src/JSDOM/Generated/RTCStatsResponse.hs
--- a/src/JSDOM/Generated/RTCStatsResponse.hs
+++ b/src/JSDOM/Generated/RTCStatsResponse.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RTCStatsResponse
-       (result, result_, namedItem, namedItem_, namedItemUnchecked,
-        RTCStatsResponse, castToRTCStatsResponse, gTypeRTCStatsResponse)
+       (result, result_, namedItem, namedItem_, namedItemUnsafe,
+        namedItemUnchecked, RTCStatsResponse(..), gTypeRTCStatsResponse)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse.result Mozilla RTCStatsResponse.result documentation> 
 result ::
@@ -37,6 +51,15 @@
            (MonadDOM m, ToJSString name) => RTCStatsResponse -> name -> m ()
 namedItem_ self name
   = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse.namedItem Mozilla RTCStatsResponse.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadDOM m, ToJSString name, HasCallStack) =>
+                  RTCStatsResponse -> name -> m RTCStatsReport
+namedItemUnsafe self name
+  = liftDOM
+      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse.namedItem Mozilla RTCStatsResponse.namedItem documentation> 
 namedItemUnchecked ::
diff --git a/src/JSDOM/Generated/RadioNodeList.hs b/src/JSDOM/Generated/RadioNodeList.hs
--- a/src/JSDOM/Generated/RadioNodeList.hs
+++ b/src/JSDOM/Generated/RadioNodeList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RadioNodeList
-       (_get, _get_, _getUnchecked, setValue, getValue, RadioNodeList,
-        castToRadioNodeList, gTypeRadioNodeList)
+       (_get, _get_, _getUnsafe, _getUnchecked, setValue, getValue,
+        RadioNodeList(..), gTypeRadioNodeList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList._get Mozilla RadioNodeList._get documentation> 
 _get :: (MonadDOM m) => RadioNodeList -> Word -> m (Maybe Node)
@@ -25,6 +39,14 @@
 _get_ :: (MonadDOM m) => RadioNodeList -> Word -> m ()
 _get_ self index
   = liftDOM (void (self ^. jsf "_get" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList._get Mozilla RadioNodeList._get documentation> 
+_getUnsafe ::
+           (MonadDOM m, HasCallStack) => RadioNodeList -> Word -> m Node
+_getUnsafe self index
+  = liftDOM
+      (((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList._get Mozilla RadioNodeList._get documentation> 
 _getUnchecked :: (MonadDOM m) => RadioNodeList -> Word -> m Node
diff --git a/src/JSDOM/Generated/Range.hs b/src/JSDOM/Generated/Range.hs
--- a/src/JSDOM/Generated/Range.hs
+++ b/src/JSDOM/Generated/Range.hs
@@ -1,29 +1,37 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Range
        (newRange, setStart, setEnd, setStartBefore, setStartAfter,
         setEndBefore, setEndAfter, collapse, selectNode,
         selectNodeContents, compareBoundaryPoints, compareBoundaryPoints_,
         deleteContents, extractContents, extractContents_,
-        extractContentsUnchecked, cloneContents, cloneContents_,
-        cloneContentsUnchecked, insertNode, surroundContents, cloneRange,
-        cloneRange_, cloneRangeUnchecked, toString, toString_, detach,
-        getClientRects, getClientRects_, getClientRectsUnchecked,
-        getBoundingClientRect, getBoundingClientRect_,
+        extractContentsUnsafe, extractContentsUnchecked, cloneContents,
+        cloneContents_, cloneContentsUnsafe, cloneContentsUnchecked,
+        insertNode, surroundContents, cloneRange, cloneRange_,
+        cloneRangeUnsafe, cloneRangeUnchecked, toString, toString_, detach,
+        getClientRects, getClientRects_, getClientRectsUnsafe,
+        getClientRectsUnchecked, getBoundingClientRect,
+        getBoundingClientRect_, getBoundingClientRectUnsafe,
         getBoundingClientRectUnchecked, createContextualFragment,
-        createContextualFragment_, createContextualFragmentUnchecked,
-        intersectsNode, intersectsNode_, compareNode, compareNode_,
-        comparePoint, comparePoint_, isPointInRange, isPointInRange_,
-        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, getStartContainer, getStartContainerUnchecked,
-        getStartOffset, getEndContainer, getEndContainerUnchecked,
-        getEndOffset, getCollapsed, getCommonAncestorContainer,
-        getCommonAncestorContainerUnchecked, Range, castToRange,
-        gTypeRange)
+        createContextualFragment_, createContextualFragmentUnsafe,
+        createContextualFragmentUnchecked, intersectsNode, intersectsNode_,
+        compareNode, compareNode_, comparePoint, comparePoint_,
+        isPointInRange, isPointInRange_, 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,
+        getStartContainer, getStartContainerUnsafe,
+        getStartContainerUnchecked, getStartOffset, getEndContainer,
+        getEndContainerUnsafe, getEndContainerUnchecked, getEndOffset,
+        getCollapsed, getCommonAncestorContainer,
+        getCommonAncestorContainerUnsafe,
+        getCommonAncestorContainerUnchecked, Range(..), gTypeRange)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -34,6 +42,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation> 
 newRange :: (MonadDOM m) => m Range
@@ -133,6 +151,14 @@
   = liftDOM (void (self ^. jsf "extractContents" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
+extractContentsUnsafe ::
+                      (MonadDOM m, HasCallStack) => Range -> m DocumentFragment
+extractContentsUnsafe self
+  = liftDOM
+      (((self ^. jsf "extractContents" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
 extractContentsUnchecked ::
                          (MonadDOM m) => Range -> m DocumentFragment
 extractContentsUnchecked self
@@ -151,6 +177,14 @@
   = liftDOM (void (self ^. jsf "cloneContents" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
+cloneContentsUnsafe ::
+                    (MonadDOM m, HasCallStack) => Range -> m DocumentFragment
+cloneContentsUnsafe self
+  = liftDOM
+      (((self ^. jsf "cloneContents" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
 cloneContentsUnchecked ::
                        (MonadDOM m) => Range -> m DocumentFragment
 cloneContentsUnchecked self
@@ -179,6 +213,13 @@
 cloneRange_ self = liftDOM (void (self ^. jsf "cloneRange" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
+cloneRangeUnsafe :: (MonadDOM m, HasCallStack) => Range -> m Range
+cloneRangeUnsafe self
+  = liftDOM
+      (((self ^. jsf "cloneRange" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
 cloneRangeUnchecked :: (MonadDOM m) => Range -> m Range
 cloneRangeUnchecked self
   = liftDOM ((self ^. jsf "cloneRange" ()) >>= fromJSValUnchecked)
@@ -207,6 +248,14 @@
   = liftDOM (void (self ^. jsf "getClientRects" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
+getClientRectsUnsafe ::
+                     (MonadDOM m, HasCallStack) => Range -> m ClientRectList
+getClientRectsUnsafe self
+  = liftDOM
+      (((self ^. jsf "getClientRects" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
 getClientRectsUnchecked ::
                         (MonadDOM m) => Range -> m ClientRectList
 getClientRectsUnchecked self
@@ -225,6 +274,14 @@
   = liftDOM (void (self ^. jsf "getBoundingClientRect" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
+getBoundingClientRectUnsafe ::
+                            (MonadDOM m, HasCallStack) => Range -> m ClientRect
+getBoundingClientRectUnsafe self
+  = liftDOM
+      (((self ^. jsf "getBoundingClientRect" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
 getBoundingClientRectUnchecked ::
                                (MonadDOM m) => Range -> m ClientRect
 getBoundingClientRectUnchecked self
@@ -248,6 +305,16 @@
       (void (self ^. jsf "createContextualFragment" [toJSVal html]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
+createContextualFragmentUnsafe ::
+                               (MonadDOM m, ToJSString html, HasCallStack) =>
+                                 Range -> html -> m DocumentFragment
+createContextualFragmentUnsafe self html
+  = liftDOM
+      (((self ^. jsf "createContextualFragment" [toJSVal html]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
 createContextualFragmentUnchecked ::
                                   (MonadDOM m, ToJSString html) =>
                                     Range -> html -> m DocumentFragment
@@ -339,6 +406,14 @@
   = liftDOM ((self ^. js "startContainer") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startContainer Mozilla Range.startContainer documentation> 
+getStartContainerUnsafe ::
+                        (MonadDOM m, HasCallStack) => Range -> m Node
+getStartContainerUnsafe self
+  = liftDOM
+      (((self ^. js "startContainer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startContainer Mozilla Range.startContainer documentation> 
 getStartContainerUnchecked :: (MonadDOM m) => Range -> m Node
 getStartContainerUnchecked self
   = liftDOM ((self ^. js "startContainer") >>= fromJSValUnchecked)
@@ -354,6 +429,14 @@
   = liftDOM ((self ^. js "endContainer") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endContainer Mozilla Range.endContainer documentation> 
+getEndContainerUnsafe ::
+                      (MonadDOM m, HasCallStack) => Range -> m Node
+getEndContainerUnsafe self
+  = liftDOM
+      (((self ^. js "endContainer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endContainer Mozilla Range.endContainer documentation> 
 getEndContainerUnchecked :: (MonadDOM m) => Range -> m Node
 getEndContainerUnchecked self
   = liftDOM ((self ^. js "endContainer") >>= fromJSValUnchecked)
@@ -373,6 +456,14 @@
                            (MonadDOM m) => Range -> m (Maybe Node)
 getCommonAncestorContainer self
   = liftDOM ((self ^. js "commonAncestorContainer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.commonAncestorContainer Mozilla Range.commonAncestorContainer documentation> 
+getCommonAncestorContainerUnsafe ::
+                                 (MonadDOM m, HasCallStack) => Range -> m Node
+getCommonAncestorContainerUnsafe self
+  = liftDOM
+      (((self ^. js "commonAncestorContainer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.commonAncestorContainer Mozilla Range.commonAncestorContainer documentation> 
 getCommonAncestorContainerUnchecked ::
diff --git a/src/JSDOM/Generated/ReadableStream.hs b/src/JSDOM/Generated/ReadableStream.hs
--- a/src/JSDOM/Generated/ReadableStream.hs
+++ b/src/JSDOM/Generated/ReadableStream.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ReadableStream
-       (newReadableStream, read, read_, readUnchecked, cancel, cancel_,
-        cancelUnchecked, pipeTo, pipeTo_, pipeToUnchecked, pipeThrough,
-        pipeThrough_, pipeThroughUnchecked, getState, getClosed,
-        getClosedUnchecked, getReady, getReadyUnchecked, ReadableStream,
-        castToReadableStream, gTypeReadableStream)
+       (newReadableStream, read, read_, readUnsafe, readUnchecked, cancel,
+        cancel_, cancelUnsafe, cancelUnchecked, pipeTo, pipeTo_,
+        pipeToUnsafe, pipeToUnchecked, pipeThrough, pipeThrough_,
+        pipeThroughUnsafe, pipeThroughUnchecked, getState, getClosed,
+        getClosedUnsafe, getClosedUnchecked, getReady, getReadyUnsafe,
+        getReadyUnchecked, ReadableStream(..), gTypeReadableStream)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation> 
 newReadableStream :: (MonadDOM m) => JSVal -> m ReadableStream
@@ -35,6 +50,14 @@
 read_ self = liftDOM (void (self ^. jsf "read" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.read Mozilla ReadableStream.read documentation> 
+readUnsafe ::
+           (MonadDOM m, HasCallStack) => ReadableStream -> m GObject
+readUnsafe self
+  = liftDOM
+      (((self ^. jsf "read" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.read Mozilla ReadableStream.read documentation> 
 readUnchecked :: (MonadDOM m) => ReadableStream -> m GObject
 readUnchecked self
   = liftDOM ((self ^. jsf "read" ()) >>= fromJSValUnchecked)
@@ -53,6 +76,15 @@
   = liftDOM (void (self ^. jsf "cancel" [toJSVal reason]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
+cancelUnsafe ::
+             (MonadDOM m, ToJSString reason, HasCallStack) =>
+               ReadableStream -> reason -> m Promise
+cancelUnsafe self reason
+  = liftDOM
+      (((self ^. jsf "cancel" [toJSVal reason]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
 cancelUnchecked ::
                 (MonadDOM m, ToJSString reason) =>
                   ReadableStream -> reason -> m Promise
@@ -76,6 +108,16 @@
       (void (self ^. jsf "pipeTo" [toJSVal streams, toJSVal options]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
+pipeToUnsafe ::
+             (MonadDOM m, HasCallStack) =>
+               ReadableStream -> JSVal -> JSVal -> m Promise
+pipeToUnsafe self streams options
+  = liftDOM
+      (((self ^. jsf "pipeTo" [toJSVal streams, toJSVal options]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
 pipeToUnchecked ::
                 (MonadDOM m) => ReadableStream -> JSVal -> JSVal -> m Promise
 pipeToUnchecked self streams options
@@ -100,6 +142,16 @@
       (void (self ^. jsf "pipeThrough" [toJSVal dest, toJSVal options]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
+pipeThroughUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    ReadableStream -> JSVal -> JSVal -> m GObject
+pipeThroughUnsafe self dest options
+  = liftDOM
+      (((self ^. jsf "pipeThrough" [toJSVal dest, toJSVal options]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
 pipeThroughUnchecked ::
                      (MonadDOM m) => ReadableStream -> JSVal -> JSVal -> m GObject
 pipeThroughUnchecked self dest options
@@ -118,6 +170,14 @@
 getClosed self = liftDOM ((self ^. js "closed") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.closed Mozilla ReadableStream.closed documentation> 
+getClosedUnsafe ::
+                (MonadDOM m, HasCallStack) => ReadableStream -> m Promise
+getClosedUnsafe self
+  = liftDOM
+      (((self ^. js "closed") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.closed Mozilla ReadableStream.closed documentation> 
 getClosedUnchecked :: (MonadDOM m) => ReadableStream -> m Promise
 getClosedUnchecked self
   = liftDOM ((self ^. js "closed") >>= fromJSValUnchecked)
@@ -125,6 +185,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.ready Mozilla ReadableStream.ready documentation> 
 getReady :: (MonadDOM m) => ReadableStream -> m (Maybe Promise)
 getReady self = liftDOM ((self ^. js "ready") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.ready Mozilla ReadableStream.ready documentation> 
+getReadyUnsafe ::
+               (MonadDOM m, HasCallStack) => ReadableStream -> m Promise
+getReadyUnsafe self
+  = liftDOM
+      (((self ^. js "ready") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.ready Mozilla ReadableStream.ready documentation> 
 getReadyUnchecked :: (MonadDOM m) => ReadableStream -> m Promise
diff --git a/src/JSDOM/Generated/Rect.hs b/src/JSDOM/Generated/Rect.hs
--- a/src/JSDOM/Generated/Rect.hs
+++ b/src/JSDOM/Generated/Rect.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Rect
-       (getTop, getTopUnchecked, getRight, getRightUnchecked, getBottom,
-        getBottomUnchecked, getLeft, getLeftUnchecked, Rect, castToRect,
-        gTypeRect)
+       (getTop, getTopUnsafe, getTopUnchecked, getRight, getRightUnsafe,
+        getRightUnchecked, getBottom, getBottomUnsafe, getBottomUnchecked,
+        getLeft, getLeftUnsafe, getLeftUnchecked, Rect(..), gTypeRect)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,12 +20,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
 getTop :: (MonadDOM m) => Rect -> m (Maybe CSSPrimitiveValue)
 getTop self = liftDOM ((self ^. js "top") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
+getTopUnsafe ::
+             (MonadDOM m, HasCallStack) => Rect -> m CSSPrimitiveValue
+getTopUnsafe self
+  = liftDOM
+      (((self ^. js "top") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
 getTopUnchecked :: (MonadDOM m) => Rect -> m CSSPrimitiveValue
 getTopUnchecked self
   = liftDOM ((self ^. js "top") >>= fromJSValUnchecked)
@@ -31,6 +53,14 @@
 getRight self = liftDOM ((self ^. js "right") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.right Mozilla Rect.right documentation> 
+getRightUnsafe ::
+               (MonadDOM m, HasCallStack) => Rect -> m CSSPrimitiveValue
+getRightUnsafe self
+  = liftDOM
+      (((self ^. js "right") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.right Mozilla Rect.right documentation> 
 getRightUnchecked :: (MonadDOM m) => Rect -> m CSSPrimitiveValue
 getRightUnchecked self
   = liftDOM ((self ^. js "right") >>= fromJSValUnchecked)
@@ -40,6 +70,14 @@
 getBottom self = liftDOM ((self ^. js "bottom") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.bottom Mozilla Rect.bottom documentation> 
+getBottomUnsafe ::
+                (MonadDOM m, HasCallStack) => Rect -> m CSSPrimitiveValue
+getBottomUnsafe self
+  = liftDOM
+      (((self ^. js "bottom") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.bottom Mozilla Rect.bottom documentation> 
 getBottomUnchecked :: (MonadDOM m) => Rect -> m CSSPrimitiveValue
 getBottomUnchecked self
   = liftDOM ((self ^. js "bottom") >>= fromJSValUnchecked)
@@ -47,6 +85,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.left Mozilla Rect.left documentation> 
 getLeft :: (MonadDOM m) => Rect -> m (Maybe CSSPrimitiveValue)
 getLeft self = liftDOM ((self ^. js "left") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.left Mozilla Rect.left documentation> 
+getLeftUnsafe ::
+              (MonadDOM m, HasCallStack) => Rect -> m CSSPrimitiveValue
+getLeftUnsafe self
+  = liftDOM
+      (((self ^. js "left") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.left Mozilla Rect.left documentation> 
 getLeftUnchecked :: (MonadDOM m) => Rect -> m CSSPrimitiveValue
diff --git a/src/JSDOM/Generated/RequestAnimationFrameCallback.hs b/src/JSDOM/Generated/RequestAnimationFrameCallback.hs
--- a/src/JSDOM/Generated/RequestAnimationFrameCallback.hs
+++ b/src/JSDOM/Generated/RequestAnimationFrameCallback.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.RequestAnimationFrameCallback
        (newRequestAnimationFrameCallback,
@@ -7,6 +10,7 @@
         RequestAnimationFrameCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
 newRequestAnimationFrameCallback ::
diff --git a/src/JSDOM/Generated/SQLError.hs b/src/JSDOM/Generated/SQLError.hs
--- a/src/JSDOM/Generated/SQLError.hs
+++ b/src/JSDOM/Generated/SQLError.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.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, getCode, getMessage,
-        SQLError, castToSQLError, gTypeSQLError)
+        SQLError(..), gTypeSQLError)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern UNKNOWN_ERR = 0
 pattern DATABASE_ERR = 1
 pattern VERSION_ERR = 2
diff --git a/src/JSDOM/Generated/SQLResultSet.hs b/src/JSDOM/Generated/SQLResultSet.hs
--- a/src/JSDOM/Generated/SQLResultSet.hs
+++ b/src/JSDOM/Generated/SQLResultSet.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SQLResultSet
-       (getRows, getRowsUnchecked, getInsertId, getRowsAffected,
-        SQLResultSet, castToSQLResultSet, gTypeSQLResultSet)
+       (getRows, getRowsUnsafe, getRowsUnchecked, getInsertId,
+        getRowsAffected, SQLResultSet(..), gTypeSQLResultSet)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
 getRows ::
         (MonadDOM m) => SQLResultSet -> m (Maybe SQLResultSetRowList)
 getRows self = liftDOM ((self ^. js "rows") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
+getRowsUnsafe ::
+              (MonadDOM m, HasCallStack) => SQLResultSet -> m SQLResultSetRowList
+getRowsUnsafe self
+  = liftDOM
+      (((self ^. js "rows") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
 getRowsUnchecked ::
diff --git a/src/JSDOM/Generated/SQLResultSetRowList.hs b/src/JSDOM/Generated/SQLResultSetRowList.hs
--- a/src/JSDOM/Generated/SQLResultSetRowList.hs
+++ b/src/JSDOM/Generated/SQLResultSetRowList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SQLResultSetRowList
-       (item, item_, getLength, SQLResultSetRowList,
-        castToSQLResultSetRowList, gTypeSQLResultSetRowList)
+       (item, item_, getLength, SQLResultSetRowList(..),
+        gTypeSQLResultSetRowList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
 item :: (MonadDOM m) => SQLResultSetRowList -> Word -> m JSVal
diff --git a/src/JSDOM/Generated/SQLStatementCallback.hs b/src/JSDOM/Generated/SQLStatementCallback.hs
--- a/src/JSDOM/Generated/SQLStatementCallback.hs
+++ b/src/JSDOM/Generated/SQLStatementCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SQLStatementCallback
        (newSQLStatementCallback, newSQLStatementCallbackSync,
         newSQLStatementCallbackAsync, SQLStatementCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
 newSQLStatementCallback ::
diff --git a/src/JSDOM/Generated/SQLStatementErrorCallback.hs b/src/JSDOM/Generated/SQLStatementErrorCallback.hs
--- a/src/JSDOM/Generated/SQLStatementErrorCallback.hs
+++ b/src/JSDOM/Generated/SQLStatementErrorCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SQLStatementErrorCallback
        (newSQLStatementErrorCallback, newSQLStatementErrorCallbackSync,
         newSQLStatementErrorCallbackAsync, SQLStatementErrorCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
 newSQLStatementErrorCallback ::
diff --git a/src/JSDOM/Generated/SQLTransaction.hs b/src/JSDOM/Generated/SQLTransaction.hs
--- a/src/JSDOM/Generated/SQLTransaction.hs
+++ b/src/JSDOM/Generated/SQLTransaction.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SQLTransaction
-       (executeSql, SQLTransaction, castToSQLTransaction,
-        gTypeSQLTransaction)
-       where
+       (executeSql, SQLTransaction(..), gTypeSQLTransaction) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction.executeSql Mozilla SQLTransaction.executeSql documentation> 
 executeSql ::
diff --git a/src/JSDOM/Generated/SQLTransactionCallback.hs b/src/JSDOM/Generated/SQLTransactionCallback.hs
--- a/src/JSDOM/Generated/SQLTransactionCallback.hs
+++ b/src/JSDOM/Generated/SQLTransactionCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SQLTransactionCallback
        (newSQLTransactionCallback, newSQLTransactionCallbackSync,
         newSQLTransactionCallbackAsync, SQLTransactionCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
 newSQLTransactionCallback ::
diff --git a/src/JSDOM/Generated/SQLTransactionErrorCallback.hs b/src/JSDOM/Generated/SQLTransactionErrorCallback.hs
--- a/src/JSDOM/Generated/SQLTransactionErrorCallback.hs
+++ b/src/JSDOM/Generated/SQLTransactionErrorCallback.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SQLTransactionErrorCallback
        (newSQLTransactionErrorCallback,
@@ -6,6 +9,7 @@
         newSQLTransactionErrorCallbackAsync, SQLTransactionErrorCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
 newSQLTransactionErrorCallback ::
diff --git a/src/JSDOM/Generated/SVGAElement.hs b/src/JSDOM/Generated/SVGAElement.hs
--- a/src/JSDOM/Generated/SVGAElement.hs
+++ b/src/JSDOM/Generated/SVGAElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAElement
-       (getTarget, getTargetUnchecked, SVGAElement, castToSVGAElement,
+       (getTarget, getTargetUnsafe, getTargetUnchecked, SVGAElement(..),
         gTypeSVGAElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
 getTarget ::
           (MonadDOM m) => SVGAElement -> m (Maybe SVGAnimatedString)
 getTarget self = liftDOM ((self ^. js "target") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
+getTargetUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGAElement -> m SVGAnimatedString
+getTargetUnsafe self
+  = liftDOM
+      (((self ^. js "target") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
 getTargetUnchecked ::
diff --git a/src/JSDOM/Generated/SVGAltGlyphElement.hs b/src/JSDOM/Generated/SVGAltGlyphElement.hs
--- a/src/JSDOM/Generated/SVGAltGlyphElement.hs
+++ b/src/JSDOM/Generated/SVGAltGlyphElement.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAltGlyphElement
        (setGlyphRef, getGlyphRef, setFormat, getFormat,
-        SVGAltGlyphElement, castToSVGAltGlyphElement,
-        gTypeSVGAltGlyphElement)
+        SVGAltGlyphElement(..), gTypeSVGAltGlyphElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
 setGlyphRef ::
diff --git a/src/JSDOM/Generated/SVGAngle.hs b/src/JSDOM/Generated/SVGAngle.hs
--- a/src/JSDOM/Generated/SVGAngle.hs
+++ b/src/JSDOM/Generated/SVGAngle.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAngle
        (newValueSpecifiedUnits, convertToSpecifiedUnits,
@@ -6,10 +9,11 @@
         pattern SVG_ANGLETYPE_DEG, pattern SVG_ANGLETYPE_RAD,
         pattern SVG_ANGLETYPE_GRAD, getUnitType, setValue, getValue,
         setValueInSpecifiedUnits, getValueInSpecifiedUnits,
-        setValueAsString, getValueAsString, getValueAsStringUnchecked,
-        SVGAngle, castToSVGAngle, gTypeSVGAngle)
+        setValueAsString, getValueAsString, getValueAsStringUnsafe,
+        getValueAsStringUnchecked, SVGAngle(..), gTypeSVGAngle)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.newValueSpecifiedUnits Mozilla SVGAngle.newValueSpecifiedUnits documentation> 
 newValueSpecifiedUnits ::
@@ -79,6 +93,15 @@
                  (MonadDOM m, FromJSString result) => SVGAngle -> m (Maybe result)
 getValueAsString self
   = liftDOM ((self ^. js "valueAsString") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
+getValueAsStringUnsafe ::
+                       (MonadDOM m, HasCallStack, FromJSString result) =>
+                         SVGAngle -> m result
+getValueAsStringUnsafe self
+  = liftDOM
+      (((self ^. js "valueAsString") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
 getValueAsStringUnchecked ::
diff --git a/src/JSDOM/Generated/SVGAnimatedAngle.hs b/src/JSDOM/Generated/SVGAnimatedAngle.hs
--- a/src/JSDOM/Generated/SVGAnimatedAngle.hs
+++ b/src/JSDOM/Generated/SVGAnimatedAngle.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedAngle
-       (getBaseVal, getBaseValUnchecked, getAnimVal, getAnimValUnchecked,
-        SVGAnimatedAngle, castToSVGAnimatedAngle, gTypeSVGAnimatedAngle)
+       (getBaseVal, getBaseValUnsafe, getBaseValUnchecked, getAnimVal,
+        getAnimValUnsafe, getAnimValUnchecked, SVGAnimatedAngle(..),
+        gTypeSVGAnimatedAngle)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
 getBaseVal ::
@@ -22,6 +37,14 @@
 getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
+getBaseValUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGAnimatedAngle -> m SVGAngle
+getBaseValUnsafe self
+  = liftDOM
+      (((self ^. js "baseVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
 getBaseValUnchecked ::
                     (MonadDOM m) => SVGAnimatedAngle -> m SVGAngle
 getBaseValUnchecked self
@@ -31,6 +54,14 @@
 getAnimVal ::
            (MonadDOM m) => SVGAnimatedAngle -> m (Maybe SVGAngle)
 getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.animVal Mozilla SVGAnimatedAngle.animVal documentation> 
+getAnimValUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGAnimatedAngle -> m SVGAngle
+getAnimValUnsafe self
+  = liftDOM
+      (((self ^. js "animVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.animVal Mozilla SVGAnimatedAngle.animVal documentation> 
 getAnimValUnchecked ::
diff --git a/src/JSDOM/Generated/SVGAnimatedBoolean.hs b/src/JSDOM/Generated/SVGAnimatedBoolean.hs
--- a/src/JSDOM/Generated/SVGAnimatedBoolean.hs
+++ b/src/JSDOM/Generated/SVGAnimatedBoolean.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedBoolean
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedBoolean,
-        castToSVGAnimatedBoolean, gTypeSVGAnimatedBoolean)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedBoolean(..),
+        gTypeSVGAnimatedBoolean)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
 setBaseVal :: (MonadDOM m) => SVGAnimatedBoolean -> Bool -> m ()
diff --git a/src/JSDOM/Generated/SVGAnimatedEnumeration.hs b/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
--- a/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
+++ b/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedEnumeration
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedEnumeration,
-        castToSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedEnumeration(..),
+        gTypeSVGAnimatedEnumeration)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
 setBaseVal ::
diff --git a/src/JSDOM/Generated/SVGAnimatedInteger.hs b/src/JSDOM/Generated/SVGAnimatedInteger.hs
--- a/src/JSDOM/Generated/SVGAnimatedInteger.hs
+++ b/src/JSDOM/Generated/SVGAnimatedInteger.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedInteger
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedInteger,
-        castToSVGAnimatedInteger, gTypeSVGAnimatedInteger)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedInteger(..),
+        gTypeSVGAnimatedInteger)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
 setBaseVal :: (MonadDOM m) => SVGAnimatedInteger -> Int -> m ()
diff --git a/src/JSDOM/Generated/SVGAnimatedLength.hs b/src/JSDOM/Generated/SVGAnimatedLength.hs
--- a/src/JSDOM/Generated/SVGAnimatedLength.hs
+++ b/src/JSDOM/Generated/SVGAnimatedLength.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedLength
-       (getBaseVal, getBaseValUnchecked, getAnimVal, getAnimValUnchecked,
-        SVGAnimatedLength, castToSVGAnimatedLength, gTypeSVGAnimatedLength)
+       (getBaseVal, getBaseValUnsafe, getBaseValUnchecked, getAnimVal,
+        getAnimValUnsafe, getAnimValUnchecked, SVGAnimatedLength(..),
+        gTypeSVGAnimatedLength)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
 getBaseVal ::
@@ -22,6 +37,14 @@
 getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
+getBaseValUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGAnimatedLength -> m SVGLength
+getBaseValUnsafe self
+  = liftDOM
+      (((self ^. js "baseVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
 getBaseValUnchecked ::
                     (MonadDOM m) => SVGAnimatedLength -> m SVGLength
 getBaseValUnchecked self
@@ -31,6 +54,14 @@
 getAnimVal ::
            (MonadDOM m) => SVGAnimatedLength -> m (Maybe SVGLength)
 getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.animVal Mozilla SVGAnimatedLength.animVal documentation> 
+getAnimValUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGAnimatedLength -> m SVGLength
+getAnimValUnsafe self
+  = liftDOM
+      (((self ^. js "animVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.animVal Mozilla SVGAnimatedLength.animVal documentation> 
 getAnimValUnchecked ::
diff --git a/src/JSDOM/Generated/SVGAnimatedLengthList.hs b/src/JSDOM/Generated/SVGAnimatedLengthList.hs
--- a/src/JSDOM/Generated/SVGAnimatedLengthList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedLengthList.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedLengthList
-       (getBaseVal, getBaseValUnchecked, getAnimVal, getAnimValUnchecked,
-        SVGAnimatedLengthList, castToSVGAnimatedLengthList,
+       (getBaseVal, getBaseValUnsafe, getBaseValUnchecked, getAnimVal,
+        getAnimValUnsafe, getAnimValUnchecked, SVGAnimatedLengthList(..),
         gTypeSVGAnimatedLengthList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
 getBaseVal ::
@@ -23,6 +37,15 @@
 getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
+getBaseValUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGAnimatedLengthList -> m SVGLengthList
+getBaseValUnsafe self
+  = liftDOM
+      (((self ^. js "baseVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
 getBaseValUnchecked ::
                     (MonadDOM m) => SVGAnimatedLengthList -> m SVGLengthList
 getBaseValUnchecked self
@@ -32,6 +55,15 @@
 getAnimVal ::
            (MonadDOM m) => SVGAnimatedLengthList -> m (Maybe SVGLengthList)
 getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.animVal Mozilla SVGAnimatedLengthList.animVal documentation> 
+getAnimValUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGAnimatedLengthList -> m SVGLengthList
+getAnimValUnsafe self
+  = liftDOM
+      (((self ^. js "animVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.animVal Mozilla SVGAnimatedLengthList.animVal documentation> 
 getAnimValUnchecked ::
diff --git a/src/JSDOM/Generated/SVGAnimatedNumber.hs b/src/JSDOM/Generated/SVGAnimatedNumber.hs
--- a/src/JSDOM/Generated/SVGAnimatedNumber.hs
+++ b/src/JSDOM/Generated/SVGAnimatedNumber.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedNumber
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedNumber,
-        castToSVGAnimatedNumber, gTypeSVGAnimatedNumber)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedNumber(..),
+        gTypeSVGAnimatedNumber)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
 setBaseVal :: (MonadDOM m) => SVGAnimatedNumber -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGAnimatedNumberList.hs b/src/JSDOM/Generated/SVGAnimatedNumberList.hs
--- a/src/JSDOM/Generated/SVGAnimatedNumberList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedNumberList.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedNumberList
-       (getBaseVal, getBaseValUnchecked, getAnimVal, getAnimValUnchecked,
-        SVGAnimatedNumberList, castToSVGAnimatedNumberList,
+       (getBaseVal, getBaseValUnsafe, getBaseValUnchecked, getAnimVal,
+        getAnimValUnsafe, getAnimValUnchecked, SVGAnimatedNumberList(..),
         gTypeSVGAnimatedNumberList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
 getBaseVal ::
@@ -23,6 +37,15 @@
 getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
+getBaseValUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGAnimatedNumberList -> m SVGNumberList
+getBaseValUnsafe self
+  = liftDOM
+      (((self ^. js "baseVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
 getBaseValUnchecked ::
                     (MonadDOM m) => SVGAnimatedNumberList -> m SVGNumberList
 getBaseValUnchecked self
@@ -32,6 +55,15 @@
 getAnimVal ::
            (MonadDOM m) => SVGAnimatedNumberList -> m (Maybe SVGNumberList)
 getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.animVal Mozilla SVGAnimatedNumberList.animVal documentation> 
+getAnimValUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGAnimatedNumberList -> m SVGNumberList
+getAnimValUnsafe self
+  = liftDOM
+      (((self ^. js "animVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.animVal Mozilla SVGAnimatedNumberList.animVal documentation> 
 getAnimValUnchecked ::
diff --git a/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs b/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
--- a/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
+++ b/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedPreserveAspectRatio
-       (getBaseVal, getBaseValUnchecked, getAnimVal, getAnimValUnchecked,
-        SVGAnimatedPreserveAspectRatio,
-        castToSVGAnimatedPreserveAspectRatio,
+       (getBaseVal, getBaseValUnsafe, getBaseValUnchecked, getAnimVal,
+        getAnimValUnsafe, getAnimValUnchecked,
+        SVGAnimatedPreserveAspectRatio(..),
         gTypeSVGAnimatedPreserveAspectRatio)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
 getBaseVal ::
@@ -25,6 +39,15 @@
 getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
+getBaseValUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
+getBaseValUnsafe self
+  = liftDOM
+      (((self ^. js "baseVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
 getBaseValUnchecked ::
                     (MonadDOM m) =>
                       SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
@@ -36,6 +59,15 @@
            (MonadDOM m) =>
              SVGAnimatedPreserveAspectRatio -> m (Maybe SVGPreserveAspectRatio)
 getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.animVal Mozilla SVGAnimatedPreserveAspectRatio.animVal documentation> 
+getAnimValUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
+getAnimValUnsafe self
+  = liftDOM
+      (((self ^. js "animVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.animVal Mozilla SVGAnimatedPreserveAspectRatio.animVal documentation> 
 getAnimValUnchecked ::
diff --git a/src/JSDOM/Generated/SVGAnimatedRect.hs b/src/JSDOM/Generated/SVGAnimatedRect.hs
--- a/src/JSDOM/Generated/SVGAnimatedRect.hs
+++ b/src/JSDOM/Generated/SVGAnimatedRect.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedRect
-       (getBaseVal, getBaseValUnchecked, getAnimVal, getAnimValUnchecked,
-        SVGAnimatedRect, castToSVGAnimatedRect, gTypeSVGAnimatedRect)
+       (getBaseVal, getBaseValUnsafe, getBaseValUnchecked, getAnimVal,
+        getAnimValUnsafe, getAnimValUnchecked, SVGAnimatedRect(..),
+        gTypeSVGAnimatedRect)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,12 +20,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
 getBaseVal :: (MonadDOM m) => SVGAnimatedRect -> m (Maybe SVGRect)
 getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
+getBaseValUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGAnimatedRect -> m SVGRect
+getBaseValUnsafe self
+  = liftDOM
+      (((self ^. js "baseVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
 getBaseValUnchecked :: (MonadDOM m) => SVGAnimatedRect -> m SVGRect
 getBaseValUnchecked self
   = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
@@ -28,6 +51,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.animVal Mozilla SVGAnimatedRect.animVal documentation> 
 getAnimVal :: (MonadDOM m) => SVGAnimatedRect -> m (Maybe SVGRect)
 getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.animVal Mozilla SVGAnimatedRect.animVal documentation> 
+getAnimValUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGAnimatedRect -> m SVGRect
+getAnimValUnsafe self
+  = liftDOM
+      (((self ^. js "animVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.animVal Mozilla SVGAnimatedRect.animVal documentation> 
 getAnimValUnchecked :: (MonadDOM m) => SVGAnimatedRect -> m SVGRect
diff --git a/src/JSDOM/Generated/SVGAnimatedString.hs b/src/JSDOM/Generated/SVGAnimatedString.hs
--- a/src/JSDOM/Generated/SVGAnimatedString.hs
+++ b/src/JSDOM/Generated/SVGAnimatedString.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedString
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedString,
-        castToSVGAnimatedString, gTypeSVGAnimatedString)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedString(..),
+        gTypeSVGAnimatedString)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
 setBaseVal ::
diff --git a/src/JSDOM/Generated/SVGAnimatedTransformList.hs b/src/JSDOM/Generated/SVGAnimatedTransformList.hs
--- a/src/JSDOM/Generated/SVGAnimatedTransformList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedTransformList.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimatedTransformList
-       (getBaseVal, getBaseValUnchecked, getAnimVal, getAnimValUnchecked,
-        SVGAnimatedTransformList, castToSVGAnimatedTransformList,
-        gTypeSVGAnimatedTransformList)
+       (getBaseVal, getBaseValUnsafe, getBaseValUnchecked, getAnimVal,
+        getAnimValUnsafe, getAnimValUnchecked,
+        SVGAnimatedTransformList(..), gTypeSVGAnimatedTransformList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
 getBaseVal ::
@@ -24,6 +38,15 @@
 getBaseVal self = liftDOM ((self ^. js "baseVal") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
+getBaseValUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGAnimatedTransformList -> m SVGTransformList
+getBaseValUnsafe self
+  = liftDOM
+      (((self ^. js "baseVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
 getBaseValUnchecked ::
                     (MonadDOM m) => SVGAnimatedTransformList -> m SVGTransformList
 getBaseValUnchecked self
@@ -34,6 +57,15 @@
            (MonadDOM m) =>
              SVGAnimatedTransformList -> m (Maybe SVGTransformList)
 getAnimVal self = liftDOM ((self ^. js "animVal") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.animVal Mozilla SVGAnimatedTransformList.animVal documentation> 
+getAnimValUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGAnimatedTransformList -> m SVGTransformList
+getAnimValUnsafe self
+  = liftDOM
+      (((self ^. js "animVal") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.animVal Mozilla SVGAnimatedTransformList.animVal documentation> 
 getAnimValUnchecked ::
diff --git a/src/JSDOM/Generated/SVGAnimationElement.hs b/src/JSDOM/Generated/SVGAnimationElement.hs
--- a/src/JSDOM/Generated/SVGAnimationElement.hs
+++ b/src/JSDOM/Generated/SVGAnimationElement.hs
@@ -1,14 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGAnimationElement
        (getStartTime, getStartTime_, getCurrentTime, getCurrentTime_,
         getSimpleDuration, getSimpleDuration_, beginElement,
         beginElementAt, endElement, endElementAt, getTargetElement,
-        getTargetElementUnchecked, SVGAnimationElement,
-        castToSVGAnimationElement, gTypeSVGAnimationElement,
+        getTargetElementUnsafe, getTargetElementUnchecked,
+        SVGAnimationElement(..), gTypeSVGAnimationElement,
         IsSVGAnimationElement, toSVGAnimationElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
 getStartTime ::
@@ -108,6 +122,16 @@
   = liftDOM
       (((toSVGAnimationElement self) ^. js "targetElement") >>=
          fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.targetElement Mozilla SVGAnimationElement.targetElement documentation> 
+getTargetElementUnsafe ::
+                       (MonadDOM m, IsSVGAnimationElement self, HasCallStack) =>
+                         self -> m SVGElement
+getTargetElementUnsafe self
+  = liftDOM
+      ((((toSVGAnimationElement self) ^. js "targetElement") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.targetElement Mozilla SVGAnimationElement.targetElement documentation> 
 getTargetElementUnchecked ::
diff --git a/src/JSDOM/Generated/SVGCircleElement.hs b/src/JSDOM/Generated/SVGCircleElement.hs
--- a/src/JSDOM/Generated/SVGCircleElement.hs
+++ b/src/JSDOM/Generated/SVGCircleElement.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGCircleElement
-       (getCx, getCxUnchecked, getCy, getCyUnchecked, getR, getRUnchecked,
-        SVGCircleElement, castToSVGCircleElement, gTypeSVGCircleElement)
+       (getCx, getCxUnsafe, getCxUnchecked, getCy, getCyUnsafe,
+        getCyUnchecked, getR, getRUnsafe, getRUnchecked,
+        SVGCircleElement(..), gTypeSVGCircleElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
 getCx ::
@@ -22,6 +37,15 @@
 getCx self = liftDOM ((self ^. js "cx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
+getCxUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGCircleElement -> m SVGAnimatedLength
+getCxUnsafe self
+  = liftDOM
+      (((self ^. js "cx") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
 getCxUnchecked ::
                (MonadDOM m) => SVGCircleElement -> m SVGAnimatedLength
 getCxUnchecked self
@@ -33,6 +57,15 @@
 getCy self = liftDOM ((self ^. js "cy") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cy Mozilla SVGCircleElement.cy documentation> 
+getCyUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGCircleElement -> m SVGAnimatedLength
+getCyUnsafe self
+  = liftDOM
+      (((self ^. js "cy") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cy Mozilla SVGCircleElement.cy documentation> 
 getCyUnchecked ::
                (MonadDOM m) => SVGCircleElement -> m SVGAnimatedLength
 getCyUnchecked self
@@ -42,6 +75,15 @@
 getR ::
      (MonadDOM m) => SVGCircleElement -> m (Maybe SVGAnimatedLength)
 getR self = liftDOM ((self ^. js "r") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.r Mozilla SVGCircleElement.r documentation> 
+getRUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGCircleElement -> m SVGAnimatedLength
+getRUnsafe self
+  = liftDOM
+      (((self ^. js "r") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.r Mozilla SVGCircleElement.r documentation> 
 getRUnchecked ::
diff --git a/src/JSDOM/Generated/SVGClipPathElement.hs b/src/JSDOM/Generated/SVGClipPathElement.hs
--- a/src/JSDOM/Generated/SVGClipPathElement.hs
+++ b/src/JSDOM/Generated/SVGClipPathElement.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGClipPathElement
-       (getClipPathUnits, getClipPathUnitsUnchecked, SVGClipPathElement,
-        castToSVGClipPathElement, gTypeSVGClipPathElement)
+       (getClipPathUnits, getClipPathUnitsUnsafe,
+        getClipPathUnitsUnchecked, SVGClipPathElement(..),
+        gTypeSVGClipPathElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
 getClipPathUnits ::
@@ -22,6 +37,15 @@
                    SVGClipPathElement -> m (Maybe SVGAnimatedEnumeration)
 getClipPathUnits self
   = liftDOM ((self ^. js "clipPathUnits") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
+getClipPathUnitsUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGClipPathElement -> m SVGAnimatedEnumeration
+getClipPathUnitsUnsafe self
+  = liftDOM
+      (((self ^. js "clipPathUnits") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
 getClipPathUnitsUnchecked ::
diff --git a/src/JSDOM/Generated/SVGColor.hs b/src/JSDOM/Generated/SVGColor.hs
--- a/src/JSDOM/Generated/SVGColor.hs
+++ b/src/JSDOM/Generated/SVGColor.hs
@@ -1,14 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGColor
        (setRGBColor, setRGBColorICCColor, setColor,
         pattern SVG_COLORTYPE_UNKNOWN, pattern SVG_COLORTYPE_RGBCOLOR,
         pattern SVG_COLORTYPE_RGBCOLOR_ICCCOLOR,
         pattern SVG_COLORTYPE_CURRENTCOLOR, getColorType, getRgbColor,
-        getRgbColorUnchecked, SVGColor, castToSVGColor, gTypeSVGColor,
-        IsSVGColor, toSVGColor)
+        getRgbColorUnsafe, getRgbColorUnchecked, SVGColor(..),
+        gTypeSVGColor, IsSVGColor, toSVGColor)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.setRGBColor Mozilla SVGColor.setRGBColor documentation> 
 setRGBColor ::
@@ -65,6 +79,14 @@
             (MonadDOM m, IsSVGColor self) => self -> m (Maybe RGBColor)
 getRgbColor self
   = liftDOM (((toSVGColor self) ^. js "rgbColor") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.rgbColor Mozilla SVGColor.rgbColor documentation> 
+getRgbColorUnsafe ::
+                  (MonadDOM m, IsSVGColor self, HasCallStack) => self -> m RGBColor
+getRgbColorUnsafe self
+  = liftDOM
+      ((((toSVGColor self) ^. js "rgbColor") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor.rgbColor Mozilla SVGColor.rgbColor documentation> 
 getRgbColorUnchecked ::
diff --git a/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs b/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
--- a/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
+++ b/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGComponentTransferFunctionElement
        (pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN,
@@ -6,18 +9,20 @@
         pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE,
         pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE,
         pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR,
-        pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA, getType,
-        getTypeUnchecked, getTableValues, getTableValuesUnchecked,
-        getSlope, getSlopeUnchecked, getIntercept, getInterceptUnchecked,
-        getAmplitude, getAmplitudeUnchecked, getExponent,
-        getExponentUnchecked, getOffset, getOffsetUnchecked,
-        SVGComponentTransferFunctionElement,
-        castToSVGComponentTransferFunctionElement,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA, getType, getTypeUnsafe,
+        getTypeUnchecked, getTableValues, getTableValuesUnsafe,
+        getTableValuesUnchecked, getSlope, getSlopeUnsafe,
+        getSlopeUnchecked, getIntercept, getInterceptUnsafe,
+        getInterceptUnchecked, getAmplitude, getAmplitudeUnsafe,
+        getAmplitudeUnchecked, getExponent, getExponentUnsafe,
+        getExponentUnchecked, getOffset, getOffsetUnsafe,
+        getOffsetUnchecked, SVGComponentTransferFunctionElement(..),
         gTypeSVGComponentTransferFunctionElement,
         IsSVGComponentTransferFunctionElement,
         toSVGComponentTransferFunctionElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -28,6 +33,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0
 pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1
 pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2
@@ -45,6 +60,17 @@
          fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.type Mozilla SVGComponentTransferFunctionElement.type documentation> 
+getTypeUnsafe ::
+              (MonadDOM m, IsSVGComponentTransferFunctionElement self,
+               HasCallStack) =>
+                self -> m SVGAnimatedEnumeration
+getTypeUnsafe self
+  = liftDOM
+      ((((toSVGComponentTransferFunctionElement self) ^. js "type") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.type Mozilla SVGComponentTransferFunctionElement.type documentation> 
 getTypeUnchecked ::
                  (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
                    self -> m SVGAnimatedEnumeration
@@ -63,6 +89,18 @@
          >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.tableValues Mozilla SVGComponentTransferFunctionElement.tableValues documentation> 
+getTableValuesUnsafe ::
+                     (MonadDOM m, IsSVGComponentTransferFunctionElement self,
+                      HasCallStack) =>
+                       self -> m SVGAnimatedNumberList
+getTableValuesUnsafe self
+  = liftDOM
+      ((((toSVGComponentTransferFunctionElement self) ^.
+           js "tableValues")
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.tableValues Mozilla SVGComponentTransferFunctionElement.tableValues documentation> 
 getTableValuesUnchecked ::
                         (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
                           self -> m SVGAnimatedNumberList
@@ -81,6 +119,17 @@
          fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.slope Mozilla SVGComponentTransferFunctionElement.slope documentation> 
+getSlopeUnsafe ::
+               (MonadDOM m, IsSVGComponentTransferFunctionElement self,
+                HasCallStack) =>
+                 self -> m SVGAnimatedNumber
+getSlopeUnsafe self
+  = liftDOM
+      ((((toSVGComponentTransferFunctionElement self) ^. js "slope") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.slope Mozilla SVGComponentTransferFunctionElement.slope documentation> 
 getSlopeUnchecked ::
                   (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
                     self -> m SVGAnimatedNumber
@@ -99,6 +148,17 @@
          >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.intercept Mozilla SVGComponentTransferFunctionElement.intercept documentation> 
+getInterceptUnsafe ::
+                   (MonadDOM m, IsSVGComponentTransferFunctionElement self,
+                    HasCallStack) =>
+                     self -> m SVGAnimatedNumber
+getInterceptUnsafe self
+  = liftDOM
+      ((((toSVGComponentTransferFunctionElement self) ^. js "intercept")
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.intercept Mozilla SVGComponentTransferFunctionElement.intercept documentation> 
 getInterceptUnchecked ::
                       (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
                         self -> m SVGAnimatedNumber
@@ -117,6 +177,17 @@
          >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.amplitude Mozilla SVGComponentTransferFunctionElement.amplitude documentation> 
+getAmplitudeUnsafe ::
+                   (MonadDOM m, IsSVGComponentTransferFunctionElement self,
+                    HasCallStack) =>
+                     self -> m SVGAnimatedNumber
+getAmplitudeUnsafe self
+  = liftDOM
+      ((((toSVGComponentTransferFunctionElement self) ^. js "amplitude")
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.amplitude Mozilla SVGComponentTransferFunctionElement.amplitude documentation> 
 getAmplitudeUnchecked ::
                       (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
                         self -> m SVGAnimatedNumber
@@ -135,6 +206,17 @@
          >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.exponent Mozilla SVGComponentTransferFunctionElement.exponent documentation> 
+getExponentUnsafe ::
+                  (MonadDOM m, IsSVGComponentTransferFunctionElement self,
+                   HasCallStack) =>
+                    self -> m SVGAnimatedNumber
+getExponentUnsafe self
+  = liftDOM
+      ((((toSVGComponentTransferFunctionElement self) ^. js "exponent")
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.exponent Mozilla SVGComponentTransferFunctionElement.exponent documentation> 
 getExponentUnchecked ::
                      (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
                        self -> m SVGAnimatedNumber
@@ -151,6 +233,17 @@
   = liftDOM
       (((toSVGComponentTransferFunctionElement self) ^. js "offset") >>=
          fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.offset Mozilla SVGComponentTransferFunctionElement.offset documentation> 
+getOffsetUnsafe ::
+                (MonadDOM m, IsSVGComponentTransferFunctionElement self,
+                 HasCallStack) =>
+                  self -> m SVGAnimatedNumber
+getOffsetUnsafe self
+  = liftDOM
+      ((((toSVGComponentTransferFunctionElement self) ^. js "offset") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.offset Mozilla SVGComponentTransferFunctionElement.offset documentation> 
 getOffsetUnchecked ::
diff --git a/src/JSDOM/Generated/SVGCursorElement.hs b/src/JSDOM/Generated/SVGCursorElement.hs
--- a/src/JSDOM/Generated/SVGCursorElement.hs
+++ b/src/JSDOM/Generated/SVGCursorElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGCursorElement
-       (getX, getXUnchecked, getY, getYUnchecked, SVGCursorElement,
-        castToSVGCursorElement, gTypeSVGCursorElement)
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        SVGCursorElement(..), gTypeSVGCursorElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
 getX ::
@@ -22,6 +36,15 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGCursorElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGCursorElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -31,6 +54,15 @@
 getY ::
      (MonadDOM m) => SVGCursorElement -> m (Maybe SVGAnimatedLength)
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.y Mozilla SVGCursorElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGCursorElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.y Mozilla SVGCursorElement.y documentation> 
 getYUnchecked ::
diff --git a/src/JSDOM/Generated/SVGDocument.hs b/src/JSDOM/Generated/SVGDocument.hs
--- a/src/JSDOM/Generated/SVGDocument.hs
+++ b/src/JSDOM/Generated/SVGDocument.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGDocument
-       (createEvent, createEvent_, createEventUnchecked, getRootElement,
-        getRootElementUnchecked, SVGDocument, castToSVGDocument,
-        gTypeSVGDocument)
+       (createEvent, createEvent_, createEventUnsafe,
+        createEventUnchecked, getRootElement, getRootElementUnsafe,
+        getRootElementUnchecked, SVGDocument(..), gTypeSVGDocument)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.createEvent Mozilla SVGDocument.createEvent documentation> 
 createEvent ::
@@ -33,6 +47,15 @@
   = liftDOM (void (self ^. jsf "createEvent" [toJSVal eventType]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.createEvent Mozilla SVGDocument.createEvent documentation> 
+createEventUnsafe ::
+                  (MonadDOM m, ToJSString eventType, HasCallStack) =>
+                    SVGDocument -> eventType -> m Event
+createEventUnsafe self eventType
+  = liftDOM
+      (((self ^. jsf "createEvent" [toJSVal eventType]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.createEvent Mozilla SVGDocument.createEvent documentation> 
 createEventUnchecked ::
                      (MonadDOM m, ToJSString eventType) =>
                        SVGDocument -> eventType -> m Event
@@ -46,6 +69,14 @@
                (MonadDOM m) => SVGDocument -> m (Maybe SVGSVGElement)
 getRootElement self
   = liftDOM ((self ^. js "rootElement") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.rootElement Mozilla SVGDocument.rootElement documentation> 
+getRootElementUnsafe ::
+                     (MonadDOM m, HasCallStack) => SVGDocument -> m SVGSVGElement
+getRootElementUnsafe self
+  = liftDOM
+      (((self ^. js "rootElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument.rootElement Mozilla SVGDocument.rootElement documentation> 
 getRootElementUnchecked ::
diff --git a/src/JSDOM/Generated/SVGElement.hs b/src/JSDOM/Generated/SVGElement.hs
--- a/src/JSDOM/Generated/SVGElement.hs
+++ b/src/JSDOM/Generated/SVGElement.hs
@@ -1,16 +1,22 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGElement
        (getPresentationAttribute, getPresentationAttribute_,
-        getPresentationAttributeUnchecked, setXmlbase, getXmlbase,
-        getXmlbaseUnchecked, getOwnerSVGElement,
+        getPresentationAttributeUnsafe, getPresentationAttributeUnchecked,
+        setXmlbase, getXmlbase, getXmlbaseUnsafe, getXmlbaseUnchecked,
+        getOwnerSVGElement, getOwnerSVGElementUnsafe,
         getOwnerSVGElementUnchecked, getViewportElement,
-        getViewportElementUnchecked, setXmllang, getXmllang, setXmlspace,
-        getXmlspace, getClassName, getClassNameUnchecked, getStyle,
-        getStyleUnchecked, setTabIndex, getTabIndex, SVGElement,
-        castToSVGElement, gTypeSVGElement, IsSVGElement, toSVGElement)
+        getViewportElementUnsafe, getViewportElementUnchecked, setXmllang,
+        getXmllang, setXmlspace, getXmlspace, getClassName,
+        getClassNameUnsafe, getClassNameUnchecked, getStyle,
+        getStyleUnsafe, getStyleUnchecked, setTabIndex, getTabIndex,
+        SVGElement(..), gTypeSVGElement, IsSVGElement, toSVGElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
 getPresentationAttribute ::
@@ -43,6 +59,17 @@
             [toJSVal name]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
+getPresentationAttributeUnsafe ::
+                               (MonadDOM m, IsSVGElement self, ToJSString name, HasCallStack) =>
+                                 self -> name -> m CSSValue
+getPresentationAttributeUnsafe self name
+  = liftDOM
+      ((((toSVGElement self) ^. jsf "getPresentationAttribute"
+           [toJSVal name])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
 getPresentationAttributeUnchecked ::
                                   (MonadDOM m, IsSVGElement self, ToJSString name) =>
                                     self -> name -> m CSSValue
@@ -68,6 +95,16 @@
       (((toSVGElement self) ^. js "xmlbase") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlbase Mozilla SVGElement.xmlbase documentation> 
+getXmlbaseUnsafe ::
+                 (MonadDOM m, IsSVGElement self, HasCallStack,
+                  FromJSString result) =>
+                   self -> m result
+getXmlbaseUnsafe self
+  = liftDOM
+      ((((toSVGElement self) ^. js "xmlbase") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlbase Mozilla SVGElement.xmlbase documentation> 
 getXmlbaseUnchecked ::
                     (MonadDOM m, IsSVGElement self, FromJSString result) =>
                       self -> m result
@@ -83,6 +120,15 @@
       (((toSVGElement self) ^. js "ownerSVGElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.ownerSVGElement Mozilla SVGElement.ownerSVGElement documentation> 
+getOwnerSVGElementUnsafe ::
+                         (MonadDOM m, IsSVGElement self, HasCallStack) =>
+                           self -> m SVGSVGElement
+getOwnerSVGElementUnsafe self
+  = liftDOM
+      ((((toSVGElement self) ^. js "ownerSVGElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.ownerSVGElement Mozilla SVGElement.ownerSVGElement documentation> 
 getOwnerSVGElementUnchecked ::
                             (MonadDOM m, IsSVGElement self) => self -> m SVGSVGElement
 getOwnerSVGElementUnchecked self
@@ -98,6 +144,15 @@
       (((toSVGElement self) ^. js "viewportElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.viewportElement Mozilla SVGElement.viewportElement documentation> 
+getViewportElementUnsafe ::
+                         (MonadDOM m, IsSVGElement self, HasCallStack) =>
+                           self -> m SVGElement
+getViewportElementUnsafe self
+  = liftDOM
+      ((((toSVGElement self) ^. js "viewportElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.viewportElement Mozilla SVGElement.viewportElement documentation> 
 getViewportElementUnchecked ::
                             (MonadDOM m, IsSVGElement self) => self -> m SVGElement
 getViewportElementUnchecked self
@@ -143,6 +198,15 @@
   = liftDOM (((toSVGElement self) ^. js "className") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.className Mozilla SVGElement.className documentation> 
+getClassNameUnsafe ::
+                   (MonadDOM m, IsSVGElement self, HasCallStack) =>
+                     self -> m SVGAnimatedString
+getClassNameUnsafe self
+  = liftDOM
+      ((((toSVGElement self) ^. js "className") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.className Mozilla SVGElement.className documentation> 
 getClassNameUnchecked ::
                       (MonadDOM m, IsSVGElement self) => self -> m SVGAnimatedString
 getClassNameUnchecked self
@@ -155,6 +219,15 @@
            self -> m (Maybe CSSStyleDeclaration)
 getStyle self
   = liftDOM (((toSVGElement self) ^. js "style") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.style Mozilla SVGElement.style documentation> 
+getStyleUnsafe ::
+               (MonadDOM m, IsSVGElement self, HasCallStack) =>
+                 self -> m CSSStyleDeclaration
+getStyleUnsafe self
+  = liftDOM
+      ((((toSVGElement self) ^. js "style") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.style Mozilla SVGElement.style documentation> 
 getStyleUnchecked ::
diff --git a/src/JSDOM/Generated/SVGEllipseElement.hs b/src/JSDOM/Generated/SVGEllipseElement.hs
--- a/src/JSDOM/Generated/SVGEllipseElement.hs
+++ b/src/JSDOM/Generated/SVGEllipseElement.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGEllipseElement
-       (getCx, getCxUnchecked, getCy, getCyUnchecked, getRx,
-        getRxUnchecked, getRy, getRyUnchecked, SVGEllipseElement,
-        castToSVGEllipseElement, gTypeSVGEllipseElement)
+       (getCx, getCxUnsafe, getCxUnchecked, getCy, getCyUnsafe,
+        getCyUnchecked, getRx, getRxUnsafe, getRxUnchecked, getRy,
+        getRyUnsafe, getRyUnchecked, SVGEllipseElement(..),
+        gTypeSVGEllipseElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
 getCx ::
@@ -23,6 +38,15 @@
 getCx self = liftDOM ((self ^. js "cx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
+getCxUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGEllipseElement -> m SVGAnimatedLength
+getCxUnsafe self
+  = liftDOM
+      (((self ^. js "cx") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
 getCxUnchecked ::
                (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
 getCxUnchecked self
@@ -34,6 +58,15 @@
 getCy self = liftDOM ((self ^. js "cy") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cy Mozilla SVGEllipseElement.cy documentation> 
+getCyUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGEllipseElement -> m SVGAnimatedLength
+getCyUnsafe self
+  = liftDOM
+      (((self ^. js "cy") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cy Mozilla SVGEllipseElement.cy documentation> 
 getCyUnchecked ::
                (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
 getCyUnchecked self
@@ -45,6 +78,15 @@
 getRx self = liftDOM ((self ^. js "rx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.rx Mozilla SVGEllipseElement.rx documentation> 
+getRxUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGEllipseElement -> m SVGAnimatedLength
+getRxUnsafe self
+  = liftDOM
+      (((self ^. js "rx") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.rx Mozilla SVGEllipseElement.rx documentation> 
 getRxUnchecked ::
                (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
 getRxUnchecked self
@@ -54,6 +96,15 @@
 getRy ::
       (MonadDOM m) => SVGEllipseElement -> m (Maybe SVGAnimatedLength)
 getRy self = liftDOM ((self ^. js "ry") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.ry Mozilla SVGEllipseElement.ry documentation> 
+getRyUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGEllipseElement -> m SVGAnimatedLength
+getRyUnsafe self
+  = liftDOM
+      (((self ^. js "ry") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.ry Mozilla SVGEllipseElement.ry documentation> 
 getRyUnchecked ::
diff --git a/src/JSDOM/Generated/SVGExternalResourcesRequired.hs b/src/JSDOM/Generated/SVGExternalResourcesRequired.hs
--- a/src/JSDOM/Generated/SVGExternalResourcesRequired.hs
+++ b/src/JSDOM/Generated/SVGExternalResourcesRequired.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGExternalResourcesRequired
-       (getExternalResourcesRequired,
+       (getExternalResourcesRequired, getExternalResourcesRequiredUnsafe,
         getExternalResourcesRequiredUnchecked,
-        SVGExternalResourcesRequired, castToSVGExternalResourcesRequired,
+        SVGExternalResourcesRequired(..),
         gTypeSVGExternalResourcesRequired)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
 getExternalResourcesRequired ::
@@ -24,6 +38,15 @@
                                SVGExternalResourcesRequired -> m (Maybe SVGAnimatedBoolean)
 getExternalResourcesRequired self
   = liftDOM ((self ^. js "externalResourcesRequired") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
+getExternalResourcesRequiredUnsafe ::
+                                   (MonadDOM m, HasCallStack) =>
+                                     SVGExternalResourcesRequired -> m SVGAnimatedBoolean
+getExternalResourcesRequiredUnsafe self
+  = liftDOM
+      (((self ^. js "externalResourcesRequired") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
 getExternalResourcesRequiredUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEBlendElement.hs b/src/JSDOM/Generated/SVGFEBlendElement.hs
--- a/src/JSDOM/Generated/SVGFEBlendElement.hs
+++ b/src/JSDOM/Generated/SVGFEBlendElement.hs
@@ -1,14 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.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,
-        getIn1, getIn1Unchecked, getIn2, getIn2Unchecked, getMode,
-        getModeUnchecked, SVGFEBlendElement, castToSVGFEBlendElement,
-        gTypeSVGFEBlendElement)
+        getIn1, getIn1Unsafe, getIn1Unchecked, getIn2, getIn2Unsafe,
+        getIn2Unchecked, getMode, getModeUnsafe, getModeUnchecked,
+        SVGFEBlendElement(..), gTypeSVGFEBlendElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_FEBLEND_MODE_UNKNOWN = 0
 pattern SVG_FEBLEND_MODE_NORMAL = 1
 pattern SVG_FEBLEND_MODE_MULTIPLY = 2
@@ -32,6 +46,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in1 Mozilla SVGFEBlendElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEBlendElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in1 Mozilla SVGFEBlendElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -43,6 +66,15 @@
 getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in2 Mozilla SVGFEBlendElement.in2 documentation> 
+getIn2Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEBlendElement -> m SVGAnimatedString
+getIn2Unsafe self
+  = liftDOM
+      (((self ^. js "in2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in2 Mozilla SVGFEBlendElement.in2 documentation> 
 getIn2Unchecked ::
                 (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedString
 getIn2Unchecked self
@@ -53,6 +85,15 @@
         (MonadDOM m) =>
           SVGFEBlendElement -> m (Maybe SVGAnimatedEnumeration)
 getMode self = liftDOM ((self ^. js "mode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.mode Mozilla SVGFEBlendElement.mode documentation> 
+getModeUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGFEBlendElement -> m SVGAnimatedEnumeration
+getModeUnsafe self
+  = liftDOM
+      (((self ^. js "mode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.mode Mozilla SVGFEBlendElement.mode documentation> 
 getModeUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEColorMatrixElement.hs b/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
--- a/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
+++ b/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEColorMatrixElement
        (pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN,
@@ -6,11 +9,12 @@
         pattern SVG_FECOLORMATRIX_TYPE_SATURATE,
         pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE,
         pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA, getIn1,
-        getIn1Unchecked, getType, getTypeUnchecked, getValues,
-        getValuesUnchecked, SVGFEColorMatrixElement,
-        castToSVGFEColorMatrixElement, gTypeSVGFEColorMatrixElement)
+        getIn1Unsafe, getIn1Unchecked, getType, getTypeUnsafe,
+        getTypeUnchecked, getValues, getValuesUnsafe, getValuesUnchecked,
+        SVGFEColorMatrixElement(..), gTypeSVGFEColorMatrixElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0
 pattern SVG_FECOLORMATRIX_TYPE_MATRIX = 1
 pattern SVG_FECOLORMATRIX_TYPE_SATURATE = 2
@@ -34,6 +48,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.in1 Mozilla SVGFEColorMatrixElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEColorMatrixElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.in1 Mozilla SVGFEColorMatrixElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -46,6 +69,15 @@
 getType self = liftDOM ((self ^. js "type") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.type Mozilla SVGFEColorMatrixElement.type documentation> 
+getTypeUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGFEColorMatrixElement -> m SVGAnimatedEnumeration
+getTypeUnsafe self
+  = liftDOM
+      (((self ^. js "type") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.type Mozilla SVGFEColorMatrixElement.type documentation> 
 getTypeUnchecked ::
                  (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedEnumeration
 getTypeUnchecked self
@@ -56,6 +88,15 @@
           (MonadDOM m) =>
             SVGFEColorMatrixElement -> m (Maybe SVGAnimatedNumberList)
 getValues self = liftDOM ((self ^. js "values") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.values Mozilla SVGFEColorMatrixElement.values documentation> 
+getValuesUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGFEColorMatrixElement -> m SVGAnimatedNumberList
+getValuesUnsafe self
+  = liftDOM
+      (((self ^. js "values") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.values Mozilla SVGFEColorMatrixElement.values documentation> 
 getValuesUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEComponentTransferElement.hs b/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
--- a/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
+++ b/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEComponentTransferElement
-       (getIn1, getIn1Unchecked, SVGFEComponentTransferElement,
-        castToSVGFEComponentTransferElement,
+       (getIn1, getIn1Unsafe, getIn1Unchecked,
+        SVGFEComponentTransferElement(..),
         gTypeSVGFEComponentTransferElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,12 +20,31 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
 getIn1 ::
        (MonadDOM m) =>
          SVGFEComponentTransferElement -> m (Maybe SVGAnimatedString)
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEComponentTransferElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
 getIn1Unchecked ::
diff --git a/src/JSDOM/Generated/SVGFECompositeElement.hs b/src/JSDOM/Generated/SVGFECompositeElement.hs
--- a/src/JSDOM/Generated/SVGFECompositeElement.hs
+++ b/src/JSDOM/Generated/SVGFECompositeElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFECompositeElement
        (pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN,
@@ -7,14 +10,16 @@
         pattern SVG_FECOMPOSITE_OPERATOR_OUT,
         pattern SVG_FECOMPOSITE_OPERATOR_ATOP,
         pattern SVG_FECOMPOSITE_OPERATOR_XOR,
-        pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC, getIn1,
-        getIn1Unchecked, getIn2, getIn2Unchecked, getOperator,
-        getOperatorUnchecked, getK1, getK1Unchecked, getK2, getK2Unchecked,
-        getK3, getK3Unchecked, getK4, getK4Unchecked,
-        SVGFECompositeElement, castToSVGFECompositeElement,
+        pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC, getIn1, getIn1Unsafe,
+        getIn1Unchecked, getIn2, getIn2Unsafe, getIn2Unchecked,
+        getOperator, getOperatorUnsafe, getOperatorUnchecked, getK1,
+        getK1Unsafe, getK1Unchecked, getK2, getK2Unsafe, getK2Unchecked,
+        getK3, getK3Unsafe, getK3Unchecked, getK4, getK4Unsafe,
+        getK4Unchecked, SVGFECompositeElement(..),
         gTypeSVGFECompositeElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -25,6 +30,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0
 pattern SVG_FECOMPOSITE_OPERATOR_OVER = 1
 pattern SVG_FECOMPOSITE_OPERATOR_IN = 2
@@ -40,6 +55,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in1 Mozilla SVGFECompositeElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFECompositeElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in1 Mozilla SVGFECompositeElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -52,6 +76,15 @@
 getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in2 Mozilla SVGFECompositeElement.in2 documentation> 
+getIn2Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFECompositeElement -> m SVGAnimatedString
+getIn2Unsafe self
+  = liftDOM
+      (((self ^. js "in2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in2 Mozilla SVGFECompositeElement.in2 documentation> 
 getIn2Unchecked ::
                 (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedString
 getIn2Unchecked self
@@ -64,6 +97,15 @@
 getOperator self = liftDOM ((self ^. js "operator") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.operator Mozilla SVGFECompositeElement.operator documentation> 
+getOperatorUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    SVGFECompositeElement -> m SVGAnimatedEnumeration
+getOperatorUnsafe self
+  = liftDOM
+      (((self ^. js "operator") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.operator Mozilla SVGFECompositeElement.operator documentation> 
 getOperatorUnchecked ::
                      (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedEnumeration
 getOperatorUnchecked self
@@ -76,6 +118,15 @@
 getK1 self = liftDOM ((self ^. js "k1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k1 Mozilla SVGFECompositeElement.k1 documentation> 
+getK1Unsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGFECompositeElement -> m SVGAnimatedNumber
+getK1Unsafe self
+  = liftDOM
+      (((self ^. js "k1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k1 Mozilla SVGFECompositeElement.k1 documentation> 
 getK1Unchecked ::
                (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
 getK1Unchecked self
@@ -88,6 +139,15 @@
 getK2 self = liftDOM ((self ^. js "k2") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k2 Mozilla SVGFECompositeElement.k2 documentation> 
+getK2Unsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGFECompositeElement -> m SVGAnimatedNumber
+getK2Unsafe self
+  = liftDOM
+      (((self ^. js "k2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k2 Mozilla SVGFECompositeElement.k2 documentation> 
 getK2Unchecked ::
                (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
 getK2Unchecked self
@@ -100,6 +160,15 @@
 getK3 self = liftDOM ((self ^. js "k3") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k3 Mozilla SVGFECompositeElement.k3 documentation> 
+getK3Unsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGFECompositeElement -> m SVGAnimatedNumber
+getK3Unsafe self
+  = liftDOM
+      (((self ^. js "k3") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k3 Mozilla SVGFECompositeElement.k3 documentation> 
 getK3Unchecked ::
                (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
 getK3Unchecked self
@@ -110,6 +179,15 @@
       (MonadDOM m) =>
         SVGFECompositeElement -> m (Maybe SVGAnimatedNumber)
 getK4 self = liftDOM ((self ^. js "k4") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k4 Mozilla SVGFECompositeElement.k4 documentation> 
+getK4Unsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGFECompositeElement -> m SVGAnimatedNumber
+getK4Unsafe self
+  = liftDOM
+      (((self ^. js "k4") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k4 Mozilla SVGFECompositeElement.k4 documentation> 
 getK4Unchecked ::
diff --git a/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs b/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
--- a/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
+++ b/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
@@ -1,19 +1,27 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEConvolveMatrixElement
        (pattern SVG_EDGEMODE_UNKNOWN, pattern SVG_EDGEMODE_DUPLICATE,
         pattern SVG_EDGEMODE_WRAP, pattern SVG_EDGEMODE_NONE, getIn1,
-        getIn1Unchecked, getOrderX, getOrderXUnchecked, getOrderY,
-        getOrderYUnchecked, getKernelMatrix, getKernelMatrixUnchecked,
-        getDivisor, getDivisorUnchecked, getBias, getBiasUnchecked,
-        getTargetX, getTargetXUnchecked, getTargetY, getTargetYUnchecked,
-        getEdgeMode, getEdgeModeUnchecked, getKernelUnitLengthX,
-        getKernelUnitLengthXUnchecked, getKernelUnitLengthY,
+        getIn1Unsafe, getIn1Unchecked, getOrderX, getOrderXUnsafe,
+        getOrderXUnchecked, getOrderY, getOrderYUnsafe, getOrderYUnchecked,
+        getKernelMatrix, getKernelMatrixUnsafe, getKernelMatrixUnchecked,
+        getDivisor, getDivisorUnsafe, getDivisorUnchecked, getBias,
+        getBiasUnsafe, getBiasUnchecked, getTargetX, getTargetXUnsafe,
+        getTargetXUnchecked, getTargetY, getTargetYUnsafe,
+        getTargetYUnchecked, getEdgeMode, getEdgeModeUnsafe,
+        getEdgeModeUnchecked, getKernelUnitLengthX,
+        getKernelUnitLengthXUnsafe, getKernelUnitLengthXUnchecked,
+        getKernelUnitLengthY, getKernelUnitLengthYUnsafe,
         getKernelUnitLengthYUnchecked, getPreserveAlpha,
-        getPreserveAlphaUnchecked, SVGFEConvolveMatrixElement,
-        castToSVGFEConvolveMatrixElement, gTypeSVGFEConvolveMatrixElement)
+        getPreserveAlphaUnsafe, getPreserveAlphaUnchecked,
+        SVGFEConvolveMatrixElement(..), gTypeSVGFEConvolveMatrixElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -24,6 +32,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_EDGEMODE_UNKNOWN = 0
 pattern SVG_EDGEMODE_DUPLICATE = 1
 pattern SVG_EDGEMODE_WRAP = 2
@@ -36,6 +54,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.in1 Mozilla SVGFEConvolveMatrixElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEConvolveMatrixElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.in1 Mozilla SVGFEConvolveMatrixElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -48,6 +75,15 @@
 getOrderX self = liftDOM ((self ^. js "orderX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderX Mozilla SVGFEConvolveMatrixElement.orderX documentation> 
+getOrderXUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getOrderXUnsafe self
+  = liftDOM
+      (((self ^. js "orderX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderX Mozilla SVGFEConvolveMatrixElement.orderX documentation> 
 getOrderXUnchecked ::
                    (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
 getOrderXUnchecked self
@@ -60,6 +96,15 @@
 getOrderY self = liftDOM ((self ^. js "orderY") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderY Mozilla SVGFEConvolveMatrixElement.orderY documentation> 
+getOrderYUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getOrderYUnsafe self
+  = liftDOM
+      (((self ^. js "orderY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderY Mozilla SVGFEConvolveMatrixElement.orderY documentation> 
 getOrderYUnchecked ::
                    (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
 getOrderYUnchecked self
@@ -73,6 +118,15 @@
   = liftDOM ((self ^. js "kernelMatrix") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelMatrix Mozilla SVGFEConvolveMatrixElement.kernelMatrix documentation> 
+getKernelMatrixUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        SVGFEConvolveMatrixElement -> m SVGAnimatedNumberList
+getKernelMatrixUnsafe self
+  = liftDOM
+      (((self ^. js "kernelMatrix") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelMatrix Mozilla SVGFEConvolveMatrixElement.kernelMatrix documentation> 
 getKernelMatrixUnchecked ::
                          (MonadDOM m) =>
                            SVGFEConvolveMatrixElement -> m SVGAnimatedNumberList
@@ -86,6 +140,15 @@
 getDivisor self = liftDOM ((self ^. js "divisor") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.divisor Mozilla SVGFEConvolveMatrixElement.divisor documentation> 
+getDivisorUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getDivisorUnsafe self
+  = liftDOM
+      (((self ^. js "divisor") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.divisor Mozilla SVGFEConvolveMatrixElement.divisor documentation> 
 getDivisorUnchecked ::
                     (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
 getDivisorUnchecked self
@@ -98,6 +161,15 @@
 getBias self = liftDOM ((self ^. js "bias") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.bias Mozilla SVGFEConvolveMatrixElement.bias documentation> 
+getBiasUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getBiasUnsafe self
+  = liftDOM
+      (((self ^. js "bias") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.bias Mozilla SVGFEConvolveMatrixElement.bias documentation> 
 getBiasUnchecked ::
                  (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
 getBiasUnchecked self
@@ -110,6 +182,15 @@
 getTargetX self = liftDOM ((self ^. js "targetX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetX Mozilla SVGFEConvolveMatrixElement.targetX documentation> 
+getTargetXUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getTargetXUnsafe self
+  = liftDOM
+      (((self ^. js "targetX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetX Mozilla SVGFEConvolveMatrixElement.targetX documentation> 
 getTargetXUnchecked ::
                     (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
 getTargetXUnchecked self
@@ -122,6 +203,15 @@
 getTargetY self = liftDOM ((self ^. js "targetY") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetY Mozilla SVGFEConvolveMatrixElement.targetY documentation> 
+getTargetYUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getTargetYUnsafe self
+  = liftDOM
+      (((self ^. js "targetY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetY Mozilla SVGFEConvolveMatrixElement.targetY documentation> 
 getTargetYUnchecked ::
                     (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
 getTargetYUnchecked self
@@ -134,6 +224,15 @@
 getEdgeMode self = liftDOM ((self ^. js "edgeMode") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.edgeMode Mozilla SVGFEConvolveMatrixElement.edgeMode documentation> 
+getEdgeModeUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    SVGFEConvolveMatrixElement -> m SVGAnimatedEnumeration
+getEdgeModeUnsafe self
+  = liftDOM
+      (((self ^. js "edgeMode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.edgeMode Mozilla SVGFEConvolveMatrixElement.edgeMode documentation> 
 getEdgeModeUnchecked ::
                      (MonadDOM m) =>
                        SVGFEConvolveMatrixElement -> m SVGAnimatedEnumeration
@@ -148,6 +247,15 @@
   = liftDOM ((self ^. js "kernelUnitLengthX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthX Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthX documentation> 
+getKernelUnitLengthXUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getKernelUnitLengthXUnsafe self
+  = liftDOM
+      (((self ^. js "kernelUnitLengthX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthX Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthX documentation> 
 getKernelUnitLengthXUnchecked ::
                               (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
 getKernelUnitLengthXUnchecked self
@@ -161,6 +269,15 @@
   = liftDOM ((self ^. js "kernelUnitLengthY") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthY Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthY documentation> 
+getKernelUnitLengthYUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getKernelUnitLengthYUnsafe self
+  = liftDOM
+      (((self ^. js "kernelUnitLengthY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthY Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthY documentation> 
 getKernelUnitLengthYUnchecked ::
                               (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
 getKernelUnitLengthYUnchecked self
@@ -172,6 +289,15 @@
                    SVGFEConvolveMatrixElement -> m (Maybe SVGAnimatedBoolean)
 getPreserveAlpha self
   = liftDOM ((self ^. js "preserveAlpha") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.preserveAlpha Mozilla SVGFEConvolveMatrixElement.preserveAlpha documentation> 
+getPreserveAlphaUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGFEConvolveMatrixElement -> m SVGAnimatedBoolean
+getPreserveAlphaUnsafe self
+  = liftDOM
+      (((self ^. js "preserveAlpha") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.preserveAlpha Mozilla SVGFEConvolveMatrixElement.preserveAlpha documentation> 
 getPreserveAlphaUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs b/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
--- a/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
+++ b/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
@@ -1,15 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEDiffuseLightingElement
-       (getIn1, getIn1Unchecked, getSurfaceScale,
-        getSurfaceScaleUnchecked, getDiffuseConstant,
+       (getIn1, getIn1Unsafe, getIn1Unchecked, getSurfaceScale,
+        getSurfaceScaleUnsafe, getSurfaceScaleUnchecked,
+        getDiffuseConstant, getDiffuseConstantUnsafe,
         getDiffuseConstantUnchecked, getKernelUnitLengthX,
-        getKernelUnitLengthXUnchecked, getKernelUnitLengthY,
-        getKernelUnitLengthYUnchecked, SVGFEDiffuseLightingElement,
-        castToSVGFEDiffuseLightingElement,
+        getKernelUnitLengthXUnsafe, getKernelUnitLengthXUnchecked,
+        getKernelUnitLengthY, getKernelUnitLengthYUnsafe,
+        getKernelUnitLengthYUnchecked, SVGFEDiffuseLightingElement(..),
         gTypeSVGFEDiffuseLightingElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
 getIn1 ::
@@ -28,6 +43,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEDiffuseLightingElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -41,6 +65,15 @@
   = liftDOM ((self ^. js "surfaceScale") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.surfaceScale Mozilla SVGFEDiffuseLightingElement.surfaceScale documentation> 
+getSurfaceScaleUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getSurfaceScaleUnsafe self
+  = liftDOM
+      (((self ^. js "surfaceScale") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.surfaceScale Mozilla SVGFEDiffuseLightingElement.surfaceScale documentation> 
 getSurfaceScaleUnchecked ::
                          (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
 getSurfaceScaleUnchecked self
@@ -54,6 +87,15 @@
   = liftDOM ((self ^. js "diffuseConstant") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.diffuseConstant Mozilla SVGFEDiffuseLightingElement.diffuseConstant documentation> 
+getDiffuseConstantUnsafe ::
+                         (MonadDOM m, HasCallStack) =>
+                           SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getDiffuseConstantUnsafe self
+  = liftDOM
+      (((self ^. js "diffuseConstant") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.diffuseConstant Mozilla SVGFEDiffuseLightingElement.diffuseConstant documentation> 
 getDiffuseConstantUnchecked ::
                             (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
 getDiffuseConstantUnchecked self
@@ -67,6 +109,15 @@
   = liftDOM ((self ^. js "kernelUnitLengthX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthX Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthX documentation> 
+getKernelUnitLengthXUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthXUnsafe self
+  = liftDOM
+      (((self ^. js "kernelUnitLengthX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthX Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthX documentation> 
 getKernelUnitLengthXUnchecked ::
                               (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
 getKernelUnitLengthXUnchecked self
@@ -78,6 +129,15 @@
                        SVGFEDiffuseLightingElement -> m (Maybe SVGAnimatedNumber)
 getKernelUnitLengthY self
   = liftDOM ((self ^. js "kernelUnitLengthY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthY Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthY documentation> 
+getKernelUnitLengthYUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthYUnsafe self
+  = liftDOM
+      (((self ^. js "kernelUnitLengthY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthY Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthY documentation> 
 getKernelUnitLengthYUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs b/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
--- a/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
+++ b/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
@@ -1,16 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEDisplacementMapElement
        (pattern SVG_CHANNEL_UNKNOWN, pattern SVG_CHANNEL_R,
         pattern SVG_CHANNEL_G, pattern SVG_CHANNEL_B,
-        pattern SVG_CHANNEL_A, getIn1, getIn1Unchecked, getIn2,
-        getIn2Unchecked, getScale, getScaleUnchecked, getXChannelSelector,
+        pattern SVG_CHANNEL_A, getIn1, getIn1Unsafe, getIn1Unchecked,
+        getIn2, getIn2Unsafe, getIn2Unchecked, getScale, getScaleUnsafe,
+        getScaleUnchecked, getXChannelSelector, getXChannelSelectorUnsafe,
         getXChannelSelectorUnchecked, getYChannelSelector,
-        getYChannelSelectorUnchecked, SVGFEDisplacementMapElement,
-        castToSVGFEDisplacementMapElement,
-        gTypeSVGFEDisplacementMapElement)
+        getYChannelSelectorUnsafe, getYChannelSelectorUnchecked,
+        SVGFEDisplacementMapElement(..), gTypeSVGFEDisplacementMapElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_CHANNEL_UNKNOWN = 0
 pattern SVG_CHANNEL_R = 1
 pattern SVG_CHANNEL_G = 2
@@ -34,6 +48,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in1 Mozilla SVGFEDisplacementMapElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEDisplacementMapElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in1 Mozilla SVGFEDisplacementMapElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -46,6 +69,15 @@
 getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in2 Mozilla SVGFEDisplacementMapElement.in2 documentation> 
+getIn2Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEDisplacementMapElement -> m SVGAnimatedString
+getIn2Unsafe self
+  = liftDOM
+      (((self ^. js "in2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in2 Mozilla SVGFEDisplacementMapElement.in2 documentation> 
 getIn2Unchecked ::
                 (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
 getIn2Unchecked self
@@ -58,6 +90,15 @@
 getScale self = liftDOM ((self ^. js "scale") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.scale Mozilla SVGFEDisplacementMapElement.scale documentation> 
+getScaleUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 SVGFEDisplacementMapElement -> m SVGAnimatedNumber
+getScaleUnsafe self
+  = liftDOM
+      (((self ^. js "scale") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.scale Mozilla SVGFEDisplacementMapElement.scale documentation> 
 getScaleUnchecked ::
                   (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedNumber
 getScaleUnchecked self
@@ -71,6 +112,15 @@
   = liftDOM ((self ^. js "xChannelSelector") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.xChannelSelector Mozilla SVGFEDisplacementMapElement.xChannelSelector documentation> 
+getXChannelSelectorUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
+getXChannelSelectorUnsafe self
+  = liftDOM
+      (((self ^. js "xChannelSelector") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.xChannelSelector Mozilla SVGFEDisplacementMapElement.xChannelSelector documentation> 
 getXChannelSelectorUnchecked ::
                              (MonadDOM m) =>
                                SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
@@ -83,6 +133,15 @@
                       SVGFEDisplacementMapElement -> m (Maybe SVGAnimatedEnumeration)
 getYChannelSelector self
   = liftDOM ((self ^. js "yChannelSelector") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.yChannelSelector Mozilla SVGFEDisplacementMapElement.yChannelSelector documentation> 
+getYChannelSelectorUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
+getYChannelSelectorUnsafe self
+  = liftDOM
+      (((self ^. js "yChannelSelector") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.yChannelSelector Mozilla SVGFEDisplacementMapElement.yChannelSelector documentation> 
 getYChannelSelectorUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEDistantLightElement.hs b/src/JSDOM/Generated/SVGFEDistantLightElement.hs
--- a/src/JSDOM/Generated/SVGFEDistantLightElement.hs
+++ b/src/JSDOM/Generated/SVGFEDistantLightElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEDistantLightElement
-       (getAzimuth, getAzimuthUnchecked, getElevation,
-        getElevationUnchecked, SVGFEDistantLightElement,
-        castToSVGFEDistantLightElement, gTypeSVGFEDistantLightElement)
+       (getAzimuth, getAzimuthUnsafe, getAzimuthUnchecked, getElevation,
+        getElevationUnsafe, getElevationUnchecked,
+        SVGFEDistantLightElement(..), gTypeSVGFEDistantLightElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
 getAzimuth ::
@@ -24,6 +38,15 @@
 getAzimuth self = liftDOM ((self ^. js "azimuth") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
+getAzimuthUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGFEDistantLightElement -> m SVGAnimatedNumber
+getAzimuthUnsafe self
+  = liftDOM
+      (((self ^. js "azimuth") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
 getAzimuthUnchecked ::
                     (MonadDOM m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
 getAzimuthUnchecked self
@@ -35,6 +58,15 @@
                SVGFEDistantLightElement -> m (Maybe SVGAnimatedNumber)
 getElevation self
   = liftDOM ((self ^. js "elevation") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.elevation Mozilla SVGFEDistantLightElement.elevation documentation> 
+getElevationUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     SVGFEDistantLightElement -> m SVGAnimatedNumber
+getElevationUnsafe self
+  = liftDOM
+      (((self ^. js "elevation") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.elevation Mozilla SVGFEDistantLightElement.elevation documentation> 
 getElevationUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEDropShadowElement.hs b/src/JSDOM/Generated/SVGFEDropShadowElement.hs
--- a/src/JSDOM/Generated/SVGFEDropShadowElement.hs
+++ b/src/JSDOM/Generated/SVGFEDropShadowElement.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEDropShadowElement
-       (setStdDeviation, getIn1, getIn1Unchecked, getDx, getDxUnchecked,
-        getDy, getDyUnchecked, getStdDeviationX, getStdDeviationXUnchecked,
-        getStdDeviationY, getStdDeviationYUnchecked,
-        SVGFEDropShadowElement, castToSVGFEDropShadowElement,
-        gTypeSVGFEDropShadowElement)
+       (setStdDeviation, getIn1, getIn1Unsafe, getIn1Unchecked, getDx,
+        getDxUnsafe, getDxUnchecked, getDy, getDyUnsafe, getDyUnchecked,
+        getStdDeviationX, getStdDeviationXUnsafe,
+        getStdDeviationXUnchecked, getStdDeviationY,
+        getStdDeviationYUnsafe, getStdDeviationYUnchecked,
+        SVGFEDropShadowElement(..), gTypeSVGFEDropShadowElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.setStdDeviation Mozilla SVGFEDropShadowElement.setStdDeviation documentation> 
 setStdDeviation ::
@@ -35,6 +50,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.in1 Mozilla SVGFEDropShadowElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEDropShadowElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.in1 Mozilla SVGFEDropShadowElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -47,6 +71,15 @@
 getDx self = liftDOM ((self ^. js "dx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dx Mozilla SVGFEDropShadowElement.dx documentation> 
+getDxUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGFEDropShadowElement -> m SVGAnimatedNumber
+getDxUnsafe self
+  = liftDOM
+      (((self ^. js "dx") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dx Mozilla SVGFEDropShadowElement.dx documentation> 
 getDxUnchecked ::
                (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
 getDxUnchecked self
@@ -59,6 +92,15 @@
 getDy self = liftDOM ((self ^. js "dy") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dy Mozilla SVGFEDropShadowElement.dy documentation> 
+getDyUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGFEDropShadowElement -> m SVGAnimatedNumber
+getDyUnsafe self
+  = liftDOM
+      (((self ^. js "dy") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dy Mozilla SVGFEDropShadowElement.dy documentation> 
 getDyUnchecked ::
                (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
 getDyUnchecked self
@@ -72,6 +114,15 @@
   = liftDOM ((self ^. js "stdDeviationX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationX Mozilla SVGFEDropShadowElement.stdDeviationX documentation> 
+getStdDeviationXUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGFEDropShadowElement -> m SVGAnimatedNumber
+getStdDeviationXUnsafe self
+  = liftDOM
+      (((self ^. js "stdDeviationX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationX Mozilla SVGFEDropShadowElement.stdDeviationX documentation> 
 getStdDeviationXUnchecked ::
                           (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
 getStdDeviationXUnchecked self
@@ -83,6 +134,15 @@
                    SVGFEDropShadowElement -> m (Maybe SVGAnimatedNumber)
 getStdDeviationY self
   = liftDOM ((self ^. js "stdDeviationY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationY Mozilla SVGFEDropShadowElement.stdDeviationY documentation> 
+getStdDeviationYUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGFEDropShadowElement -> m SVGAnimatedNumber
+getStdDeviationYUnsafe self
+  = liftDOM
+      (((self ^. js "stdDeviationY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationY Mozilla SVGFEDropShadowElement.stdDeviationY documentation> 
 getStdDeviationYUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs b/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
--- a/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
+++ b/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
@@ -1,15 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEGaussianBlurElement
        (setStdDeviation, pattern SVG_EDGEMODE_UNKNOWN,
         pattern SVG_EDGEMODE_DUPLICATE, pattern SVG_EDGEMODE_WRAP,
-        pattern SVG_EDGEMODE_NONE, getIn1, getIn1Unchecked,
-        getStdDeviationX, getStdDeviationXUnchecked, getStdDeviationY,
-        getStdDeviationYUnchecked, getEdgeMode, getEdgeModeUnchecked,
-        SVGFEGaussianBlurElement, castToSVGFEGaussianBlurElement,
-        gTypeSVGFEGaussianBlurElement)
+        pattern SVG_EDGEMODE_NONE, getIn1, getIn1Unsafe, getIn1Unchecked,
+        getStdDeviationX, getStdDeviationXUnsafe,
+        getStdDeviationXUnchecked, getStdDeviationY,
+        getStdDeviationYUnsafe, getStdDeviationYUnchecked, getEdgeMode,
+        getEdgeModeUnsafe, getEdgeModeUnchecked,
+        SVGFEGaussianBlurElement(..), gTypeSVGFEGaussianBlurElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.setStdDeviation Mozilla SVGFEGaussianBlurElement.setStdDeviation documentation> 
 setStdDeviation ::
@@ -41,6 +56,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.in1 Mozilla SVGFEGaussianBlurElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEGaussianBlurElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.in1 Mozilla SVGFEGaussianBlurElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -54,6 +78,15 @@
   = liftDOM ((self ^. js "stdDeviationX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationX Mozilla SVGFEGaussianBlurElement.stdDeviationX documentation> 
+getStdDeviationXUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGFEGaussianBlurElement -> m SVGAnimatedNumber
+getStdDeviationXUnsafe self
+  = liftDOM
+      (((self ^. js "stdDeviationX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationX Mozilla SVGFEGaussianBlurElement.stdDeviationX documentation> 
 getStdDeviationXUnchecked ::
                           (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
 getStdDeviationXUnchecked self
@@ -67,6 +100,15 @@
   = liftDOM ((self ^. js "stdDeviationY") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationY Mozilla SVGFEGaussianBlurElement.stdDeviationY documentation> 
+getStdDeviationYUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGFEGaussianBlurElement -> m SVGAnimatedNumber
+getStdDeviationYUnsafe self
+  = liftDOM
+      (((self ^. js "stdDeviationY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationY Mozilla SVGFEGaussianBlurElement.stdDeviationY documentation> 
 getStdDeviationYUnchecked ::
                           (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
 getStdDeviationYUnchecked self
@@ -77,6 +119,15 @@
             (MonadDOM m) =>
               SVGFEGaussianBlurElement -> m (Maybe SVGAnimatedEnumeration)
 getEdgeMode self = liftDOM ((self ^. js "edgeMode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.edgeMode Mozilla SVGFEGaussianBlurElement.edgeMode documentation> 
+getEdgeModeUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    SVGFEGaussianBlurElement -> m SVGAnimatedEnumeration
+getEdgeModeUnsafe self
+  = liftDOM
+      (((self ^. js "edgeMode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.edgeMode Mozilla SVGFEGaussianBlurElement.edgeMode documentation> 
 getEdgeModeUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEImageElement.hs b/src/JSDOM/Generated/SVGFEImageElement.hs
--- a/src/JSDOM/Generated/SVGFEImageElement.hs
+++ b/src/JSDOM/Generated/SVGFEImageElement.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEImageElement
-       (getPreserveAspectRatio, getPreserveAspectRatioUnchecked,
-        SVGFEImageElement, castToSVGFEImageElement, gTypeSVGFEImageElement)
+       (getPreserveAspectRatio, getPreserveAspectRatioUnsafe,
+        getPreserveAspectRatioUnchecked, SVGFEImageElement(..),
+        gTypeSVGFEImageElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
 getPreserveAspectRatio ::
@@ -22,6 +37,15 @@
                          SVGFEImageElement -> m (Maybe SVGAnimatedPreserveAspectRatio)
 getPreserveAspectRatio self
   = liftDOM ((self ^. js "preserveAspectRatio") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
+getPreserveAspectRatioUnsafe ::
+                             (MonadDOM m, HasCallStack) =>
+                               SVGFEImageElement -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatioUnsafe self
+  = liftDOM
+      (((self ^. js "preserveAspectRatio") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
 getPreserveAspectRatioUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEMergeNodeElement.hs b/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
--- a/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
+++ b/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEMergeNodeElement
-       (getIn1, getIn1Unchecked, SVGFEMergeNodeElement,
-        castToSVGFEMergeNodeElement, gTypeSVGFEMergeNodeElement)
+       (getIn1, getIn1Unsafe, getIn1Unchecked, SVGFEMergeNodeElement(..),
+        gTypeSVGFEMergeNodeElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,12 +19,31 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
 getIn1 ::
        (MonadDOM m) =>
          SVGFEMergeNodeElement -> m (Maybe SVGAnimatedString)
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEMergeNodeElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
 getIn1Unchecked ::
diff --git a/src/JSDOM/Generated/SVGFEMorphologyElement.hs b/src/JSDOM/Generated/SVGFEMorphologyElement.hs
--- a/src/JSDOM/Generated/SVGFEMorphologyElement.hs
+++ b/src/JSDOM/Generated/SVGFEMorphologyElement.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEMorphologyElement
        (setRadius, pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN,
         pattern SVG_MORPHOLOGY_OPERATOR_ERODE,
-        pattern SVG_MORPHOLOGY_OPERATOR_DILATE, getIn1, getIn1Unchecked,
-        getOperator, getOperatorUnchecked, getRadiusX, getRadiusXUnchecked,
-        getRadiusY, getRadiusYUnchecked, SVGFEMorphologyElement,
-        castToSVGFEMorphologyElement, gTypeSVGFEMorphologyElement)
+        pattern SVG_MORPHOLOGY_OPERATOR_DILATE, getIn1, getIn1Unsafe,
+        getIn1Unchecked, getOperator, getOperatorUnsafe,
+        getOperatorUnchecked, getRadiusX, getRadiusXUnsafe,
+        getRadiusXUnchecked, getRadiusY, getRadiusYUnsafe,
+        getRadiusYUnchecked, SVGFEMorphologyElement(..),
+        gTypeSVGFEMorphologyElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.setRadius Mozilla SVGFEMorphologyElement.setRadius documentation> 
 setRadius ::
@@ -37,6 +53,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.in1 Mozilla SVGFEMorphologyElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEMorphologyElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.in1 Mozilla SVGFEMorphologyElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -49,6 +74,15 @@
 getOperator self = liftDOM ((self ^. js "operator") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.operator Mozilla SVGFEMorphologyElement.operator documentation> 
+getOperatorUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    SVGFEMorphologyElement -> m SVGAnimatedEnumeration
+getOperatorUnsafe self
+  = liftDOM
+      (((self ^. js "operator") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.operator Mozilla SVGFEMorphologyElement.operator documentation> 
 getOperatorUnchecked ::
                      (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedEnumeration
 getOperatorUnchecked self
@@ -61,6 +95,15 @@
 getRadiusX self = liftDOM ((self ^. js "radiusX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusX Mozilla SVGFEMorphologyElement.radiusX documentation> 
+getRadiusXUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGFEMorphologyElement -> m SVGAnimatedNumber
+getRadiusXUnsafe self
+  = liftDOM
+      (((self ^. js "radiusX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusX Mozilla SVGFEMorphologyElement.radiusX documentation> 
 getRadiusXUnchecked ::
                     (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
 getRadiusXUnchecked self
@@ -71,6 +114,15 @@
            (MonadDOM m) =>
              SVGFEMorphologyElement -> m (Maybe SVGAnimatedNumber)
 getRadiusY self = liftDOM ((self ^. js "radiusY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusY Mozilla SVGFEMorphologyElement.radiusY documentation> 
+getRadiusYUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGFEMorphologyElement -> m SVGAnimatedNumber
+getRadiusYUnsafe self
+  = liftDOM
+      (((self ^. js "radiusY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusY Mozilla SVGFEMorphologyElement.radiusY documentation> 
 getRadiusYUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEOffsetElement.hs b/src/JSDOM/Generated/SVGFEOffsetElement.hs
--- a/src/JSDOM/Generated/SVGFEOffsetElement.hs
+++ b/src/JSDOM/Generated/SVGFEOffsetElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEOffsetElement
-       (getIn1, getIn1Unchecked, getDx, getDxUnchecked, getDy,
-        getDyUnchecked, SVGFEOffsetElement, castToSVGFEOffsetElement,
-        gTypeSVGFEOffsetElement)
+       (getIn1, getIn1Unsafe, getIn1Unchecked, getDx, getDxUnsafe,
+        getDxUnchecked, getDy, getDyUnsafe, getDyUnchecked,
+        SVGFEOffsetElement(..), gTypeSVGFEOffsetElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
 getIn1 ::
@@ -23,6 +37,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFEOffsetElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFEOffsetElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -34,6 +57,15 @@
 getDx self = liftDOM ((self ^. js "dx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dx Mozilla SVGFEOffsetElement.dx documentation> 
+getDxUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGFEOffsetElement -> m SVGAnimatedNumber
+getDxUnsafe self
+  = liftDOM
+      (((self ^. js "dx") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dx Mozilla SVGFEOffsetElement.dx documentation> 
 getDxUnchecked ::
                (MonadDOM m) => SVGFEOffsetElement -> m SVGAnimatedNumber
 getDxUnchecked self
@@ -43,6 +75,15 @@
 getDy ::
       (MonadDOM m) => SVGFEOffsetElement -> m (Maybe SVGAnimatedNumber)
 getDy self = liftDOM ((self ^. js "dy") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dy Mozilla SVGFEOffsetElement.dy documentation> 
+getDyUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGFEOffsetElement -> m SVGAnimatedNumber
+getDyUnsafe self
+  = liftDOM
+      (((self ^. js "dy") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dy Mozilla SVGFEOffsetElement.dy documentation> 
 getDyUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFEPointLightElement.hs b/src/JSDOM/Generated/SVGFEPointLightElement.hs
--- a/src/JSDOM/Generated/SVGFEPointLightElement.hs
+++ b/src/JSDOM/Generated/SVGFEPointLightElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFEPointLightElement
-       (getX, getXUnchecked, getY, getYUnchecked, getZ, getZUnchecked,
-        SVGFEPointLightElement, castToSVGFEPointLightElement,
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getZ, getZUnsafe, getZUnchecked, SVGFEPointLightElement(..),
         gTypeSVGFEPointLightElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
 getX ::
@@ -24,6 +38,15 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFEPointLightElement -> m SVGAnimatedNumber
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
 getXUnchecked self
@@ -36,6 +59,15 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.y Mozilla SVGFEPointLightElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFEPointLightElement -> m SVGAnimatedNumber
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.y Mozilla SVGFEPointLightElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
 getYUnchecked self
@@ -46,6 +78,15 @@
      (MonadDOM m) =>
        SVGFEPointLightElement -> m (Maybe SVGAnimatedNumber)
 getZ self = liftDOM ((self ^. js "z") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.z Mozilla SVGFEPointLightElement.z documentation> 
+getZUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFEPointLightElement -> m SVGAnimatedNumber
+getZUnsafe self
+  = liftDOM
+      (((self ^. js "z") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.z Mozilla SVGFEPointLightElement.z documentation> 
 getZUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFESpecularLightingElement.hs b/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
--- a/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
+++ b/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
@@ -1,14 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFESpecularLightingElement
-       (getIn1, getIn1Unchecked, getSurfaceScale,
-        getSurfaceScaleUnchecked, getSpecularConstant,
+       (getIn1, getIn1Unsafe, getIn1Unchecked, getSurfaceScale,
+        getSurfaceScaleUnsafe, getSurfaceScaleUnchecked,
+        getSpecularConstant, getSpecularConstantUnsafe,
         getSpecularConstantUnchecked, getSpecularExponent,
-        getSpecularExponentUnchecked, SVGFESpecularLightingElement,
-        castToSVGFESpecularLightingElement,
+        getSpecularExponentUnsafe, getSpecularExponentUnchecked,
+        SVGFESpecularLightingElement(..),
         gTypeSVGFESpecularLightingElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
 getIn1 ::
@@ -27,6 +42,15 @@
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFESpecularLightingElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
 getIn1Unchecked ::
                 (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedString
 getIn1Unchecked self
@@ -40,6 +64,15 @@
   = liftDOM ((self ^. js "surfaceScale") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.surfaceScale Mozilla SVGFESpecularLightingElement.surfaceScale documentation> 
+getSurfaceScaleUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSurfaceScaleUnsafe self
+  = liftDOM
+      (((self ^. js "surfaceScale") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.surfaceScale Mozilla SVGFESpecularLightingElement.surfaceScale documentation> 
 getSurfaceScaleUnchecked ::
                          (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
 getSurfaceScaleUnchecked self
@@ -53,6 +86,15 @@
   = liftDOM ((self ^. js "specularConstant") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularConstant Mozilla SVGFESpecularLightingElement.specularConstant documentation> 
+getSpecularConstantUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSpecularConstantUnsafe self
+  = liftDOM
+      (((self ^. js "specularConstant") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularConstant Mozilla SVGFESpecularLightingElement.specularConstant documentation> 
 getSpecularConstantUnchecked ::
                              (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
 getSpecularConstantUnchecked self
@@ -64,6 +106,15 @@
                       SVGFESpecularLightingElement -> m (Maybe SVGAnimatedNumber)
 getSpecularExponent self
   = liftDOM ((self ^. js "specularExponent") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularExponent Mozilla SVGFESpecularLightingElement.specularExponent documentation> 
+getSpecularExponentUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSpecularExponentUnsafe self
+  = liftDOM
+      (((self ^. js "specularExponent") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularExponent Mozilla SVGFESpecularLightingElement.specularExponent documentation> 
 getSpecularExponentUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFESpotLightElement.hs b/src/JSDOM/Generated/SVGFESpotLightElement.hs
--- a/src/JSDOM/Generated/SVGFESpotLightElement.hs
+++ b/src/JSDOM/Generated/SVGFESpotLightElement.hs
@@ -1,15 +1,21 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFESpotLightElement
-       (getX, getXUnchecked, getY, getYUnchecked, getZ, getZUnchecked,
-        getPointsAtX, getPointsAtXUnchecked, getPointsAtY,
-        getPointsAtYUnchecked, getPointsAtZ, getPointsAtZUnchecked,
-        getSpecularExponent, getSpecularExponentUnchecked,
-        getLimitingConeAngle, getLimitingConeAngleUnchecked,
-        SVGFESpotLightElement, castToSVGFESpotLightElement,
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getZ, getZUnsafe, getZUnchecked, getPointsAtX, getPointsAtXUnsafe,
+        getPointsAtXUnchecked, getPointsAtY, getPointsAtYUnsafe,
+        getPointsAtYUnchecked, getPointsAtZ, getPointsAtZUnsafe,
+        getPointsAtZUnchecked, getSpecularExponent,
+        getSpecularExponentUnsafe, getSpecularExponentUnchecked,
+        getLimitingConeAngle, getLimitingConeAngleUnsafe,
+        getLimitingConeAngleUnchecked, SVGFESpotLightElement(..),
         gTypeSVGFESpotLightElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +26,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
 getX ::
@@ -28,6 +44,15 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFESpotLightElement -> m SVGAnimatedNumber
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
 getXUnchecked self
@@ -40,6 +65,15 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.y Mozilla SVGFESpotLightElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFESpotLightElement -> m SVGAnimatedNumber
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.y Mozilla SVGFESpotLightElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
 getYUnchecked self
@@ -52,6 +86,15 @@
 getZ self = liftDOM ((self ^. js "z") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.z Mozilla SVGFESpotLightElement.z documentation> 
+getZUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFESpotLightElement -> m SVGAnimatedNumber
+getZUnsafe self
+  = liftDOM
+      (((self ^. js "z") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.z Mozilla SVGFESpotLightElement.z documentation> 
 getZUnchecked ::
               (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
 getZUnchecked self
@@ -65,6 +108,15 @@
   = liftDOM ((self ^. js "pointsAtX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtX Mozilla SVGFESpotLightElement.pointsAtX documentation> 
+getPointsAtXUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtXUnsafe self
+  = liftDOM
+      (((self ^. js "pointsAtX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtX Mozilla SVGFESpotLightElement.pointsAtX documentation> 
 getPointsAtXUnchecked ::
                       (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
 getPointsAtXUnchecked self
@@ -78,6 +130,15 @@
   = liftDOM ((self ^. js "pointsAtY") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtY Mozilla SVGFESpotLightElement.pointsAtY documentation> 
+getPointsAtYUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtYUnsafe self
+  = liftDOM
+      (((self ^. js "pointsAtY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtY Mozilla SVGFESpotLightElement.pointsAtY documentation> 
 getPointsAtYUnchecked ::
                       (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
 getPointsAtYUnchecked self
@@ -91,6 +152,15 @@
   = liftDOM ((self ^. js "pointsAtZ") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtZ Mozilla SVGFESpotLightElement.pointsAtZ documentation> 
+getPointsAtZUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtZUnsafe self
+  = liftDOM
+      (((self ^. js "pointsAtZ") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtZ Mozilla SVGFESpotLightElement.pointsAtZ documentation> 
 getPointsAtZUnchecked ::
                       (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
 getPointsAtZUnchecked self
@@ -104,6 +174,15 @@
   = liftDOM ((self ^. js "specularExponent") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.specularExponent Mozilla SVGFESpotLightElement.specularExponent documentation> 
+getSpecularExponentUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            SVGFESpotLightElement -> m SVGAnimatedNumber
+getSpecularExponentUnsafe self
+  = liftDOM
+      (((self ^. js "specularExponent") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.specularExponent Mozilla SVGFESpotLightElement.specularExponent documentation> 
 getSpecularExponentUnchecked ::
                              (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
 getSpecularExponentUnchecked self
@@ -115,6 +194,15 @@
                        SVGFESpotLightElement -> m (Maybe SVGAnimatedNumber)
 getLimitingConeAngle self
   = liftDOM ((self ^. js "limitingConeAngle") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.limitingConeAngle Mozilla SVGFESpotLightElement.limitingConeAngle documentation> 
+getLimitingConeAngleUnsafe ::
+                           (MonadDOM m, HasCallStack) =>
+                             SVGFESpotLightElement -> m SVGAnimatedNumber
+getLimitingConeAngleUnsafe self
+  = liftDOM
+      (((self ^. js "limitingConeAngle") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.limitingConeAngle Mozilla SVGFESpotLightElement.limitingConeAngle documentation> 
 getLimitingConeAngleUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFETileElement.hs b/src/JSDOM/Generated/SVGFETileElement.hs
--- a/src/JSDOM/Generated/SVGFETileElement.hs
+++ b/src/JSDOM/Generated/SVGFETileElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFETileElement
-       (getIn1, getIn1Unchecked, SVGFETileElement, castToSVGFETileElement,
+       (getIn1, getIn1Unsafe, getIn1Unchecked, SVGFETileElement(..),
         gTypeSVGFETileElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
 getIn1 ::
        (MonadDOM m) => SVGFETileElement -> m (Maybe SVGAnimatedString)
 getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
+getIn1Unsafe ::
+             (MonadDOM m, HasCallStack) =>
+               SVGFETileElement -> m SVGAnimatedString
+getIn1Unsafe self
+  = liftDOM
+      (((self ^. js "in1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
 getIn1Unchecked ::
diff --git a/src/JSDOM/Generated/SVGFETurbulenceElement.hs b/src/JSDOM/Generated/SVGFETurbulenceElement.hs
--- a/src/JSDOM/Generated/SVGFETurbulenceElement.hs
+++ b/src/JSDOM/Generated/SVGFETurbulenceElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFETurbulenceElement
        (pattern SVG_TURBULENCE_TYPE_UNKNOWN,
@@ -6,13 +9,16 @@
         pattern SVG_TURBULENCE_TYPE_TURBULENCE,
         pattern SVG_STITCHTYPE_UNKNOWN, pattern SVG_STITCHTYPE_STITCH,
         pattern SVG_STITCHTYPE_NOSTITCH, getBaseFrequencyX,
-        getBaseFrequencyXUnchecked, getBaseFrequencyY,
-        getBaseFrequencyYUnchecked, getNumOctaves, getNumOctavesUnchecked,
-        getSeed, getSeedUnchecked, getStitchTiles, getStitchTilesUnchecked,
-        getType, getTypeUnchecked, SVGFETurbulenceElement,
-        castToSVGFETurbulenceElement, gTypeSVGFETurbulenceElement)
+        getBaseFrequencyXUnsafe, getBaseFrequencyXUnchecked,
+        getBaseFrequencyY, getBaseFrequencyYUnsafe,
+        getBaseFrequencyYUnchecked, getNumOctaves, getNumOctavesUnsafe,
+        getNumOctavesUnchecked, getSeed, getSeedUnsafe, getSeedUnchecked,
+        getStitchTiles, getStitchTilesUnsafe, getStitchTilesUnchecked,
+        getType, getTypeUnsafe, getTypeUnchecked,
+        SVGFETurbulenceElement(..), gTypeSVGFETurbulenceElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +29,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_TURBULENCE_TYPE_UNKNOWN = 0
 pattern SVG_TURBULENCE_TYPE_FRACTALNOISE = 1
 pattern SVG_TURBULENCE_TYPE_TURBULENCE = 2
@@ -38,6 +54,15 @@
   = liftDOM ((self ^. js "baseFrequencyX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyX Mozilla SVGFETurbulenceElement.baseFrequencyX documentation> 
+getBaseFrequencyXUnsafe ::
+                        (MonadDOM m, HasCallStack) =>
+                          SVGFETurbulenceElement -> m SVGAnimatedNumber
+getBaseFrequencyXUnsafe self
+  = liftDOM
+      (((self ^. js "baseFrequencyX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyX Mozilla SVGFETurbulenceElement.baseFrequencyX documentation> 
 getBaseFrequencyXUnchecked ::
                            (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
 getBaseFrequencyXUnchecked self
@@ -51,6 +76,15 @@
   = liftDOM ((self ^. js "baseFrequencyY") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyY Mozilla SVGFETurbulenceElement.baseFrequencyY documentation> 
+getBaseFrequencyYUnsafe ::
+                        (MonadDOM m, HasCallStack) =>
+                          SVGFETurbulenceElement -> m SVGAnimatedNumber
+getBaseFrequencyYUnsafe self
+  = liftDOM
+      (((self ^. js "baseFrequencyY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyY Mozilla SVGFETurbulenceElement.baseFrequencyY documentation> 
 getBaseFrequencyYUnchecked ::
                            (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
 getBaseFrequencyYUnchecked self
@@ -64,6 +98,15 @@
   = liftDOM ((self ^. js "numOctaves") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.numOctaves Mozilla SVGFETurbulenceElement.numOctaves documentation> 
+getNumOctavesUnsafe ::
+                    (MonadDOM m, HasCallStack) =>
+                      SVGFETurbulenceElement -> m SVGAnimatedInteger
+getNumOctavesUnsafe self
+  = liftDOM
+      (((self ^. js "numOctaves") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.numOctaves Mozilla SVGFETurbulenceElement.numOctaves documentation> 
 getNumOctavesUnchecked ::
                        (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedInteger
 getNumOctavesUnchecked self
@@ -76,6 +119,15 @@
 getSeed self = liftDOM ((self ^. js "seed") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.seed Mozilla SVGFETurbulenceElement.seed documentation> 
+getSeedUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGFETurbulenceElement -> m SVGAnimatedNumber
+getSeedUnsafe self
+  = liftDOM
+      (((self ^. js "seed") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.seed Mozilla SVGFETurbulenceElement.seed documentation> 
 getSeedUnchecked ::
                  (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
 getSeedUnchecked self
@@ -89,6 +141,15 @@
   = liftDOM ((self ^. js "stitchTiles") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.stitchTiles Mozilla SVGFETurbulenceElement.stitchTiles documentation> 
+getStitchTilesUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       SVGFETurbulenceElement -> m SVGAnimatedEnumeration
+getStitchTilesUnsafe self
+  = liftDOM
+      (((self ^. js "stitchTiles") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.stitchTiles Mozilla SVGFETurbulenceElement.stitchTiles documentation> 
 getStitchTilesUnchecked ::
                         (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
 getStitchTilesUnchecked self
@@ -99,6 +160,15 @@
         (MonadDOM m) =>
           SVGFETurbulenceElement -> m (Maybe SVGAnimatedEnumeration)
 getType self = liftDOM ((self ^. js "type") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.type Mozilla SVGFETurbulenceElement.type documentation> 
+getTypeUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGFETurbulenceElement -> m SVGAnimatedEnumeration
+getTypeUnsafe self
+  = liftDOM
+      (((self ^. js "type") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.type Mozilla SVGFETurbulenceElement.type documentation> 
 getTypeUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFilterElement.hs b/src/JSDOM/Generated/SVGFilterElement.hs
--- a/src/JSDOM/Generated/SVGFilterElement.hs
+++ b/src/JSDOM/Generated/SVGFilterElement.hs
@@ -1,14 +1,21 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFilterElement
-       (setFilterRes, getFilterUnits, getFilterUnitsUnchecked,
-        getPrimitiveUnits, getPrimitiveUnitsUnchecked, getX, getXUnchecked,
-        getY, getYUnchecked, getWidth, getWidthUnchecked, getHeight,
-        getHeightUnchecked, getFilterResX, getFilterResXUnchecked,
-        getFilterResY, getFilterResYUnchecked, SVGFilterElement,
-        castToSVGFilterElement, gTypeSVGFilterElement)
+       (setFilterRes, getFilterUnits, getFilterUnitsUnsafe,
+        getFilterUnitsUnchecked, getPrimitiveUnits,
+        getPrimitiveUnitsUnsafe, getPrimitiveUnitsUnchecked, getX,
+        getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getWidth, getWidthUnsafe, getWidthUnchecked, getHeight,
+        getHeightUnsafe, getHeightUnchecked, getFilterResX,
+        getFilterResXUnsafe, getFilterResXUnchecked, getFilterResY,
+        getFilterResYUnsafe, getFilterResYUnchecked, SVGFilterElement(..),
+        gTypeSVGFilterElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +26,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.setFilterRes Mozilla SVGFilterElement.setFilterRes documentation> 
 setFilterRes ::
@@ -37,6 +54,15 @@
   = liftDOM ((self ^. js "filterUnits") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterUnits Mozilla SVGFilterElement.filterUnits documentation> 
+getFilterUnitsUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       SVGFilterElement -> m SVGAnimatedEnumeration
+getFilterUnitsUnsafe self
+  = liftDOM
+      (((self ^. js "filterUnits") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterUnits Mozilla SVGFilterElement.filterUnits documentation> 
 getFilterUnitsUnchecked ::
                         (MonadDOM m) => SVGFilterElement -> m SVGAnimatedEnumeration
 getFilterUnitsUnchecked self
@@ -50,6 +76,15 @@
   = liftDOM ((self ^. js "primitiveUnits") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.primitiveUnits Mozilla SVGFilterElement.primitiveUnits documentation> 
+getPrimitiveUnitsUnsafe ::
+                        (MonadDOM m, HasCallStack) =>
+                          SVGFilterElement -> m SVGAnimatedEnumeration
+getPrimitiveUnitsUnsafe self
+  = liftDOM
+      (((self ^. js "primitiveUnits") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.primitiveUnits Mozilla SVGFilterElement.primitiveUnits documentation> 
 getPrimitiveUnitsUnchecked ::
                            (MonadDOM m) => SVGFilterElement -> m SVGAnimatedEnumeration
 getPrimitiveUnitsUnchecked self
@@ -61,6 +96,15 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.x Mozilla SVGFilterElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFilterElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.x Mozilla SVGFilterElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -72,6 +116,15 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.y Mozilla SVGFilterElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFilterElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.y Mozilla SVGFilterElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
 getYUnchecked self
@@ -83,6 +136,15 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.width Mozilla SVGFilterElement.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 SVGFilterElement -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.width Mozilla SVGFilterElement.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
 getWidthUnchecked self
@@ -94,6 +156,15 @@
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.height Mozilla SVGFilterElement.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGFilterElement -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.height Mozilla SVGFilterElement.height documentation> 
 getHeightUnchecked ::
                    (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
 getHeightUnchecked self
@@ -106,6 +177,15 @@
   = liftDOM ((self ^. js "filterResX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResX Mozilla SVGFilterElement.filterResX documentation> 
+getFilterResXUnsafe ::
+                    (MonadDOM m, HasCallStack) =>
+                      SVGFilterElement -> m SVGAnimatedInteger
+getFilterResXUnsafe self
+  = liftDOM
+      (((self ^. js "filterResX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResX Mozilla SVGFilterElement.filterResX documentation> 
 getFilterResXUnchecked ::
                        (MonadDOM m) => SVGFilterElement -> m SVGAnimatedInteger
 getFilterResXUnchecked self
@@ -116,6 +196,15 @@
               (MonadDOM m) => SVGFilterElement -> m (Maybe SVGAnimatedInteger)
 getFilterResY self
   = liftDOM ((self ^. js "filterResY") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResY Mozilla SVGFilterElement.filterResY documentation> 
+getFilterResYUnsafe ::
+                    (MonadDOM m, HasCallStack) =>
+                      SVGFilterElement -> m SVGAnimatedInteger
+getFilterResYUnsafe self
+  = liftDOM
+      (((self ^. js "filterResY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResY Mozilla SVGFilterElement.filterResY documentation> 
 getFilterResYUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs b/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
--- a/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
+++ b/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFilterPrimitiveStandardAttributes
-       (getX, getXUnchecked, getY, getYUnchecked, getWidth,
-        getWidthUnchecked, getHeight, getHeightUnchecked, getResult,
-        getResultUnchecked, SVGFilterPrimitiveStandardAttributes,
-        castToSVGFilterPrimitiveStandardAttributes,
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getWidth, getWidthUnsafe, getWidthUnchecked, getHeight,
+        getHeightUnsafe, getHeightUnchecked, getResult, getResultUnsafe,
+        getResultUnchecked, SVGFilterPrimitiveStandardAttributes(..),
         gTypeSVGFilterPrimitiveStandardAttributes)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
 getX ::
@@ -26,6 +40,15 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
 getXUnchecked ::
               (MonadDOM m) =>
                 SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedLength
@@ -39,6 +62,15 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.y Mozilla SVGFilterPrimitiveStandardAttributes.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.y Mozilla SVGFilterPrimitiveStandardAttributes.y documentation> 
 getYUnchecked ::
               (MonadDOM m) =>
                 SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedLength
@@ -52,6 +84,15 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.width Mozilla SVGFilterPrimitiveStandardAttributes.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.width Mozilla SVGFilterPrimitiveStandardAttributes.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) =>
                     SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedLength
@@ -65,6 +106,15 @@
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.height Mozilla SVGFilterPrimitiveStandardAttributes.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.height Mozilla SVGFilterPrimitiveStandardAttributes.height documentation> 
 getHeightUnchecked ::
                    (MonadDOM m) =>
                      SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedLength
@@ -76,6 +126,15 @@
           (MonadDOM m) =>
             SVGFilterPrimitiveStandardAttributes -> m (Maybe SVGAnimatedString)
 getResult self = liftDOM ((self ^. js "result") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.result Mozilla SVGFilterPrimitiveStandardAttributes.result documentation> 
+getResultUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGFilterPrimitiveStandardAttributes -> m SVGAnimatedString
+getResultUnsafe self
+  = liftDOM
+      (((self ^. js "result") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.result Mozilla SVGFilterPrimitiveStandardAttributes.result documentation> 
 getResultUnchecked ::
diff --git a/src/JSDOM/Generated/SVGFitToViewBox.hs b/src/JSDOM/Generated/SVGFitToViewBox.hs
--- a/src/JSDOM/Generated/SVGFitToViewBox.hs
+++ b/src/JSDOM/Generated/SVGFitToViewBox.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGFitToViewBox
-       (getViewBox, getViewBoxUnchecked, getPreserveAspectRatio,
-        getPreserveAspectRatioUnchecked, SVGFitToViewBox,
-        castToSVGFitToViewBox, gTypeSVGFitToViewBox)
+       (getViewBox, getViewBoxUnsafe, getViewBoxUnchecked,
+        getPreserveAspectRatio, getPreserveAspectRatioUnsafe,
+        getPreserveAspectRatioUnchecked, SVGFitToViewBox(..),
+        gTypeSVGFitToViewBox)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
 getViewBox ::
@@ -23,6 +38,14 @@
 getViewBox self = liftDOM ((self ^. js "viewBox") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
+getViewBoxUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGFitToViewBox -> m SVGAnimatedRect
+getViewBoxUnsafe self
+  = liftDOM
+      (((self ^. js "viewBox") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
 getViewBoxUnchecked ::
                     (MonadDOM m) => SVGFitToViewBox -> m SVGAnimatedRect
 getViewBoxUnchecked self
@@ -34,6 +57,15 @@
                          SVGFitToViewBox -> m (Maybe SVGAnimatedPreserveAspectRatio)
 getPreserveAspectRatio self
   = liftDOM ((self ^. js "preserveAspectRatio") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.preserveAspectRatio Mozilla SVGFitToViewBox.preserveAspectRatio documentation> 
+getPreserveAspectRatioUnsafe ::
+                             (MonadDOM m, HasCallStack) =>
+                               SVGFitToViewBox -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatioUnsafe self
+  = liftDOM
+      (((self ^. js "preserveAspectRatio") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.preserveAspectRatio Mozilla SVGFitToViewBox.preserveAspectRatio documentation> 
 getPreserveAspectRatioUnchecked ::
diff --git a/src/JSDOM/Generated/SVGForeignObjectElement.hs b/src/JSDOM/Generated/SVGForeignObjectElement.hs
--- a/src/JSDOM/Generated/SVGForeignObjectElement.hs
+++ b/src/JSDOM/Generated/SVGForeignObjectElement.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGForeignObjectElement
-       (getX, getXUnchecked, getY, getYUnchecked, getWidth,
-        getWidthUnchecked, getHeight, getHeightUnchecked,
-        SVGForeignObjectElement, castToSVGForeignObjectElement,
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getWidth, getWidthUnsafe, getWidthUnchecked, getHeight,
+        getHeightUnsafe, getHeightUnchecked, SVGForeignObjectElement(..),
         gTypeSVGForeignObjectElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
 getX ::
@@ -25,6 +39,15 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGForeignObjectElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -37,6 +60,15 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.y Mozilla SVGForeignObjectElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGForeignObjectElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.y Mozilla SVGForeignObjectElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
 getYUnchecked self
@@ -49,6 +81,15 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.width Mozilla SVGForeignObjectElement.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 SVGForeignObjectElement -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.width Mozilla SVGForeignObjectElement.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
 getWidthUnchecked self
@@ -59,6 +100,15 @@
           (MonadDOM m) =>
             SVGForeignObjectElement -> m (Maybe SVGAnimatedLength)
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.height Mozilla SVGForeignObjectElement.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGForeignObjectElement -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.height Mozilla SVGForeignObjectElement.height documentation> 
 getHeightUnchecked ::
diff --git a/src/JSDOM/Generated/SVGGlyphRefElement.hs b/src/JSDOM/Generated/SVGGlyphRefElement.hs
--- a/src/JSDOM/Generated/SVGGlyphRefElement.hs
+++ b/src/JSDOM/Generated/SVGGlyphRefElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGGlyphRefElement
        (setGlyphRef, getGlyphRef, setFormat, getFormat, setX, getX, setY,
-        getY, setDx, getDx, setDy, getDy, SVGGlyphRefElement,
-        castToSVGGlyphRefElement, gTypeSVGGlyphRefElement)
+        getY, setDx, getDx, setDy, getDy, SVGGlyphRefElement(..),
+        gTypeSVGGlyphRefElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
 setGlyphRef ::
diff --git a/src/JSDOM/Generated/SVGGradientElement.hs b/src/JSDOM/Generated/SVGGradientElement.hs
--- a/src/JSDOM/Generated/SVGGradientElement.hs
+++ b/src/JSDOM/Generated/SVGGradientElement.hs
@@ -1,15 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGGradientElement
        (pattern SVG_SPREADMETHOD_UNKNOWN, pattern SVG_SPREADMETHOD_PAD,
         pattern SVG_SPREADMETHOD_REFLECT, pattern SVG_SPREADMETHOD_REPEAT,
-        getGradientUnits, getGradientUnitsUnchecked, getGradientTransform,
-        getGradientTransformUnchecked, getSpreadMethod,
-        getSpreadMethodUnchecked, SVGGradientElement,
-        castToSVGGradientElement, gTypeSVGGradientElement,
+        getGradientUnits, getGradientUnitsUnsafe,
+        getGradientUnitsUnchecked, getGradientTransform,
+        getGradientTransformUnsafe, getGradientTransformUnchecked,
+        getSpreadMethod, getSpreadMethodUnsafe, getSpreadMethodUnchecked,
+        SVGGradientElement(..), gTypeSVGGradientElement,
         IsSVGGradientElement, toSVGGradientElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_SPREADMETHOD_UNKNOWN = 0
 pattern SVG_SPREADMETHOD_PAD = 1
 pattern SVG_SPREADMETHOD_REFLECT = 2
@@ -34,6 +49,16 @@
       (((toSVGGradientElement self) ^. js "gradientUnits") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientUnits Mozilla SVGGradientElement.gradientUnits documentation> 
+getGradientUnitsUnsafe ::
+                       (MonadDOM m, IsSVGGradientElement self, HasCallStack) =>
+                         self -> m SVGAnimatedEnumeration
+getGradientUnitsUnsafe self
+  = liftDOM
+      ((((toSVGGradientElement self) ^. js "gradientUnits") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientUnits Mozilla SVGGradientElement.gradientUnits documentation> 
 getGradientUnitsUnchecked ::
                           (MonadDOM m, IsSVGGradientElement self) =>
                             self -> m SVGAnimatedEnumeration
@@ -52,6 +77,16 @@
          fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientTransform Mozilla SVGGradientElement.gradientTransform documentation> 
+getGradientTransformUnsafe ::
+                           (MonadDOM m, IsSVGGradientElement self, HasCallStack) =>
+                             self -> m SVGAnimatedTransformList
+getGradientTransformUnsafe self
+  = liftDOM
+      ((((toSVGGradientElement self) ^. js "gradientTransform") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientTransform Mozilla SVGGradientElement.gradientTransform documentation> 
 getGradientTransformUnchecked ::
                               (MonadDOM m, IsSVGGradientElement self) =>
                                 self -> m SVGAnimatedTransformList
@@ -67,6 +102,15 @@
 getSpreadMethod self
   = liftDOM
       (((toSVGGradientElement self) ^. js "spreadMethod") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.spreadMethod Mozilla SVGGradientElement.spreadMethod documentation> 
+getSpreadMethodUnsafe ::
+                      (MonadDOM m, IsSVGGradientElement self, HasCallStack) =>
+                        self -> m SVGAnimatedEnumeration
+getSpreadMethodUnsafe self
+  = liftDOM
+      ((((toSVGGradientElement self) ^. js "spreadMethod") >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.spreadMethod Mozilla SVGGradientElement.spreadMethod documentation> 
 getSpreadMethodUnchecked ::
diff --git a/src/JSDOM/Generated/SVGGraphicsElement.hs b/src/JSDOM/Generated/SVGGraphicsElement.hs
--- a/src/JSDOM/Generated/SVGGraphicsElement.hs
+++ b/src/JSDOM/Generated/SVGGraphicsElement.hs
@@ -1,17 +1,24 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGGraphicsElement
-       (getBBox, getBBox_, getBBoxUnchecked, getCTM, getCTM_,
-        getCTMUnchecked, getScreenCTM, getScreenCTM_,
-        getScreenCTMUnchecked, getTransformToElement,
-        getTransformToElement_, getTransformToElementUnchecked,
-        getTransform, getTransformUnchecked, getNearestViewportElement,
+       (getBBox, getBBox_, getBBoxUnsafe, getBBoxUnchecked, getCTM,
+        getCTM_, getCTMUnsafe, getCTMUnchecked, getScreenCTM,
+        getScreenCTM_, getScreenCTMUnsafe, getScreenCTMUnchecked,
+        getTransformToElement, getTransformToElement_,
+        getTransformToElementUnsafe, getTransformToElementUnchecked,
+        getTransform, getTransformUnsafe, getTransformUnchecked,
+        getNearestViewportElement, getNearestViewportElementUnsafe,
         getNearestViewportElementUnchecked, getFarthestViewportElement,
-        getFarthestViewportElementUnchecked, SVGGraphicsElement,
-        castToSVGGraphicsElement, gTypeSVGGraphicsElement,
-        IsSVGGraphicsElement, toSVGGraphicsElement)
+        getFarthestViewportElementUnsafe,
+        getFarthestViewportElementUnchecked, SVGGraphicsElement(..),
+        gTypeSVGGraphicsElement, IsSVGGraphicsElement,
+        toSVGGraphicsElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +29,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
 getBBox ::
@@ -37,6 +54,15 @@
   = liftDOM (void ((toSVGGraphicsElement self) ^. jsf "getBBox" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
+getBBoxUnsafe ::
+              (MonadDOM m, IsSVGGraphicsElement self, HasCallStack) =>
+                self -> m SVGRect
+getBBoxUnsafe self
+  = liftDOM
+      ((((toSVGGraphicsElement self) ^. jsf "getBBox" ()) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
 getBBoxUnchecked ::
                  (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGRect
 getBBoxUnchecked self
@@ -58,6 +84,15 @@
   = liftDOM (void ((toSVGGraphicsElement self) ^. jsf "getCTM" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
+getCTMUnsafe ::
+             (MonadDOM m, IsSVGGraphicsElement self, HasCallStack) =>
+               self -> m SVGMatrix
+getCTMUnsafe self
+  = liftDOM
+      ((((toSVGGraphicsElement self) ^. jsf "getCTM" ()) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
 getCTMUnchecked ::
                 (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGMatrix
 getCTMUnchecked self
@@ -82,6 +117,16 @@
       (void ((toSVGGraphicsElement self) ^. jsf "getScreenCTM" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
+getScreenCTMUnsafe ::
+                   (MonadDOM m, IsSVGGraphicsElement self, HasCallStack) =>
+                     self -> m SVGMatrix
+getScreenCTMUnsafe self
+  = liftDOM
+      ((((toSVGGraphicsElement self) ^. jsf "getScreenCTM" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
 getScreenCTMUnchecked ::
                       (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGMatrix
 getScreenCTMUnchecked self
@@ -110,6 +155,18 @@
             [toJSVal element]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
+getTransformToElementUnsafe ::
+                            (MonadDOM m, IsSVGGraphicsElement self, IsSVGElement element,
+                             HasCallStack) =>
+                              self -> Maybe element -> m SVGMatrix
+getTransformToElementUnsafe self element
+  = liftDOM
+      ((((toSVGGraphicsElement self) ^. jsf "getTransformToElement"
+           [toJSVal element])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
 getTransformToElementUnchecked ::
                                (MonadDOM m, IsSVGGraphicsElement self, IsSVGElement element) =>
                                  self -> Maybe element -> m SVGMatrix
@@ -128,6 +185,15 @@
       (((toSVGGraphicsElement self) ^. js "transform") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.transform Mozilla SVGGraphicsElement.transform documentation> 
+getTransformUnsafe ::
+                   (MonadDOM m, IsSVGGraphicsElement self, HasCallStack) =>
+                     self -> m SVGAnimatedTransformList
+getTransformUnsafe self
+  = liftDOM
+      ((((toSVGGraphicsElement self) ^. js "transform") >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.transform Mozilla SVGGraphicsElement.transform documentation> 
 getTransformUnchecked ::
                       (MonadDOM m, IsSVGGraphicsElement self) =>
                         self -> m SVGAnimatedTransformList
@@ -146,6 +212,16 @@
          fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.nearestViewportElement Mozilla SVGGraphicsElement.nearestViewportElement documentation> 
+getNearestViewportElementUnsafe ::
+                                (MonadDOM m, IsSVGGraphicsElement self, HasCallStack) =>
+                                  self -> m SVGElement
+getNearestViewportElementUnsafe self
+  = liftDOM
+      ((((toSVGGraphicsElement self) ^. js "nearestViewportElement") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.nearestViewportElement Mozilla SVGGraphicsElement.nearestViewportElement documentation> 
 getNearestViewportElementUnchecked ::
                                    (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGElement
 getNearestViewportElementUnchecked self
@@ -161,6 +237,16 @@
   = liftDOM
       (((toSVGGraphicsElement self) ^. js "farthestViewportElement") >>=
          fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.farthestViewportElement Mozilla SVGGraphicsElement.farthestViewportElement documentation> 
+getFarthestViewportElementUnsafe ::
+                                 (MonadDOM m, IsSVGGraphicsElement self, HasCallStack) =>
+                                   self -> m SVGElement
+getFarthestViewportElementUnsafe self
+  = liftDOM
+      ((((toSVGGraphicsElement self) ^. js "farthestViewportElement") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.farthestViewportElement Mozilla SVGGraphicsElement.farthestViewportElement documentation> 
 getFarthestViewportElementUnchecked ::
diff --git a/src/JSDOM/Generated/SVGImageElement.hs b/src/JSDOM/Generated/SVGImageElement.hs
--- a/src/JSDOM/Generated/SVGImageElement.hs
+++ b/src/JSDOM/Generated/SVGImageElement.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGImageElement
-       (getX, getXUnchecked, getY, getYUnchecked, getWidth,
-        getWidthUnchecked, getHeight, getHeightUnchecked,
-        getPreserveAspectRatio, getPreserveAspectRatioUnchecked,
-        SVGImageElement, castToSVGImageElement, gTypeSVGImageElement)
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getWidth, getWidthUnsafe, getWidthUnchecked, getHeight,
+        getHeightUnsafe, getHeightUnchecked, getPreserveAspectRatio,
+        getPreserveAspectRatioUnsafe, getPreserveAspectRatioUnchecked,
+        SVGImageElement(..), gTypeSVGImageElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
 getX ::
@@ -24,6 +39,15 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGImageElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -35,6 +59,15 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.y Mozilla SVGImageElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGImageElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.y Mozilla SVGImageElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
 getYUnchecked self
@@ -46,6 +79,15 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.width Mozilla SVGImageElement.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 SVGImageElement -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.width Mozilla SVGImageElement.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
 getWidthUnchecked self
@@ -57,6 +99,15 @@
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.height Mozilla SVGImageElement.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGImageElement -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.height Mozilla SVGImageElement.height documentation> 
 getHeightUnchecked ::
                    (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
 getHeightUnchecked self
@@ -68,6 +119,15 @@
                          SVGImageElement -> m (Maybe SVGAnimatedPreserveAspectRatio)
 getPreserveAspectRatio self
   = liftDOM ((self ^. js "preserveAspectRatio") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.preserveAspectRatio Mozilla SVGImageElement.preserveAspectRatio documentation> 
+getPreserveAspectRatioUnsafe ::
+                             (MonadDOM m, HasCallStack) =>
+                               SVGImageElement -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatioUnsafe self
+  = liftDOM
+      (((self ^. js "preserveAspectRatio") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.preserveAspectRatio Mozilla SVGImageElement.preserveAspectRatio documentation> 
 getPreserveAspectRatioUnchecked ::
diff --git a/src/JSDOM/Generated/SVGLength.hs b/src/JSDOM/Generated/SVGLength.hs
--- a/src/JSDOM/Generated/SVGLength.hs
+++ b/src/JSDOM/Generated/SVGLength.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGLength
        (newValueSpecifiedUnits, convertToSpecifiedUnits,
@@ -9,10 +12,11 @@
         pattern SVG_LENGTHTYPE_IN, pattern SVG_LENGTHTYPE_PT,
         pattern SVG_LENGTHTYPE_PC, getUnitType, setValue, getValue,
         setValueInSpecifiedUnits, getValueInSpecifiedUnits,
-        setValueAsString, getValueAsString, getValueAsStringUnchecked,
-        SVGLength, castToSVGLength, gTypeSVGLength)
+        setValueAsString, getValueAsString, getValueAsStringUnsafe,
+        getValueAsStringUnchecked, SVGLength(..), gTypeSVGLength)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.newValueSpecifiedUnits Mozilla SVGLength.newValueSpecifiedUnits documentation> 
 newValueSpecifiedUnits ::
@@ -89,6 +103,15 @@
                  (MonadDOM m, FromJSString result) => SVGLength -> m (Maybe result)
 getValueAsString self
   = liftDOM ((self ^. js "valueAsString") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
+getValueAsStringUnsafe ::
+                       (MonadDOM m, HasCallStack, FromJSString result) =>
+                         SVGLength -> m result
+getValueAsStringUnsafe self
+  = liftDOM
+      (((self ^. js "valueAsString") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
 getValueAsStringUnchecked ::
diff --git a/src/JSDOM/Generated/SVGLengthList.hs b/src/JSDOM/Generated/SVGLengthList.hs
--- a/src/JSDOM/Generated/SVGLengthList.hs
+++ b/src/JSDOM/Generated/SVGLengthList.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGLengthList
-       (clear, initialize, initialize_, initializeUnchecked, getItem,
-        getItem_, getItemUnchecked, insertItemBefore, insertItemBefore_,
-        insertItemBeforeUnchecked, replaceItem, replaceItem_,
-        replaceItemUnchecked, removeItem, removeItem_, removeItemUnchecked,
-        appendItem, appendItem_, appendItemUnchecked, getNumberOfItems,
-        SVGLengthList, castToSVGLengthList, gTypeSVGLengthList)
+       (clear, initialize, initialize_, initializeUnsafe,
+        initializeUnchecked, getItem, getItem_, getItemUnsafe,
+        getItemUnchecked, insertItemBefore, insertItemBefore_,
+        insertItemBeforeUnsafe, insertItemBeforeUnchecked, replaceItem,
+        replaceItem_, replaceItemUnsafe, replaceItemUnchecked, removeItem,
+        removeItem_, removeItemUnsafe, removeItemUnchecked, appendItem,
+        appendItem_, appendItemUnsafe, appendItemUnchecked,
+        getNumberOfItems, SVGLengthList(..), gTypeSVGLengthList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.clear Mozilla SVGLengthList.clear documentation> 
 clear :: (MonadDOM m) => SVGLengthList -> m ()
@@ -38,6 +54,15 @@
   = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
+initializeUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGLengthList -> Maybe SVGLength -> m SVGLength
+initializeUnsafe self item
+  = liftDOM
+      (((self ^. jsf "initialize" [toJSVal item]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
 initializeUnchecked ::
                     (MonadDOM m) => SVGLengthList -> Maybe SVGLength -> m SVGLength
 initializeUnchecked self item
@@ -56,6 +81,14 @@
   = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
+getItemUnsafe ::
+              (MonadDOM m, HasCallStack) => SVGLengthList -> Word -> m SVGLength
+getItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
 getItemUnchecked ::
                  (MonadDOM m) => SVGLengthList -> Word -> m SVGLength
 getItemUnchecked self index
@@ -80,6 +113,16 @@
          (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
+insertItemBeforeUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGLengthList -> Maybe SVGLength -> Word -> m SVGLength
+insertItemBeforeUnsafe self item index
+  = liftDOM
+      (((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
 insertItemBeforeUnchecked ::
                           (MonadDOM m) =>
                             SVGLengthList -> Maybe SVGLength -> Word -> m SVGLength
@@ -105,6 +148,16 @@
       (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
+replaceItemUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    SVGLengthList -> Maybe SVGLength -> Word -> m SVGLength
+replaceItemUnsafe self item index
+  = liftDOM
+      (((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
 replaceItemUnchecked ::
                      (MonadDOM m) =>
                        SVGLengthList -> Maybe SVGLength -> Word -> m SVGLength
@@ -126,6 +179,14 @@
   = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
+removeItemUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGLengthList -> Word -> m SVGLength
+removeItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
 removeItemUnchecked ::
                     (MonadDOM m) => SVGLengthList -> Word -> m SVGLength
 removeItemUnchecked self index
@@ -144,6 +205,15 @@
             (MonadDOM m) => SVGLengthList -> Maybe SVGLength -> m ()
 appendItem_ self item
   = liftDOM (void (self ^. jsf "appendItem" [toJSVal item]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
+appendItemUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGLengthList -> Maybe SVGLength -> m SVGLength
+appendItemUnsafe self item
+  = liftDOM
+      (((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
 appendItemUnchecked ::
diff --git a/src/JSDOM/Generated/SVGLineElement.hs b/src/JSDOM/Generated/SVGLineElement.hs
--- a/src/JSDOM/Generated/SVGLineElement.hs
+++ b/src/JSDOM/Generated/SVGLineElement.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGLineElement
-       (getX1, getX1Unchecked, getY1, getY1Unchecked, getX2,
-        getX2Unchecked, getY2, getY2Unchecked, SVGLineElement,
-        castToSVGLineElement, gTypeSVGLineElement)
+       (getX1, getX1Unsafe, getX1Unchecked, getY1, getY1Unsafe,
+        getY1Unchecked, getX2, getX2Unsafe, getX2Unchecked, getY2,
+        getY2Unsafe, getY2Unchecked, SVGLineElement(..),
+        gTypeSVGLineElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
 getX1 ::
@@ -23,6 +38,14 @@
 getX1 self = liftDOM ((self ^. js "x1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
+getX1Unsafe ::
+            (MonadDOM m, HasCallStack) => SVGLineElement -> m SVGAnimatedLength
+getX1Unsafe self
+  = liftDOM
+      (((self ^. js "x1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
 getX1Unchecked ::
                (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
 getX1Unchecked self
@@ -34,6 +57,14 @@
 getY1 self = liftDOM ((self ^. js "y1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y1 Mozilla SVGLineElement.y1 documentation> 
+getY1Unsafe ::
+            (MonadDOM m, HasCallStack) => SVGLineElement -> m SVGAnimatedLength
+getY1Unsafe self
+  = liftDOM
+      (((self ^. js "y1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y1 Mozilla SVGLineElement.y1 documentation> 
 getY1Unchecked ::
                (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
 getY1Unchecked self
@@ -45,6 +76,14 @@
 getX2 self = liftDOM ((self ^. js "x2") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x2 Mozilla SVGLineElement.x2 documentation> 
+getX2Unsafe ::
+            (MonadDOM m, HasCallStack) => SVGLineElement -> m SVGAnimatedLength
+getX2Unsafe self
+  = liftDOM
+      (((self ^. js "x2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x2 Mozilla SVGLineElement.x2 documentation> 
 getX2Unchecked ::
                (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
 getX2Unchecked self
@@ -54,6 +93,14 @@
 getY2 ::
       (MonadDOM m) => SVGLineElement -> m (Maybe SVGAnimatedLength)
 getY2 self = liftDOM ((self ^. js "y2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y2 Mozilla SVGLineElement.y2 documentation> 
+getY2Unsafe ::
+            (MonadDOM m, HasCallStack) => SVGLineElement -> m SVGAnimatedLength
+getY2Unsafe self
+  = liftDOM
+      (((self ^. js "y2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y2 Mozilla SVGLineElement.y2 documentation> 
 getY2Unchecked ::
diff --git a/src/JSDOM/Generated/SVGLinearGradientElement.hs b/src/JSDOM/Generated/SVGLinearGradientElement.hs
--- a/src/JSDOM/Generated/SVGLinearGradientElement.hs
+++ b/src/JSDOM/Generated/SVGLinearGradientElement.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGLinearGradientElement
-       (getX1, getX1Unchecked, getY1, getY1Unchecked, getX2,
-        getX2Unchecked, getY2, getY2Unchecked, SVGLinearGradientElement,
-        castToSVGLinearGradientElement, gTypeSVGLinearGradientElement)
+       (getX1, getX1Unsafe, getX1Unchecked, getY1, getY1Unsafe,
+        getY1Unchecked, getX2, getX2Unsafe, getX2Unchecked, getY2,
+        getY2Unsafe, getY2Unchecked, SVGLinearGradientElement(..),
+        gTypeSVGLinearGradientElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
 getX1 ::
@@ -24,6 +39,15 @@
 getX1 self = liftDOM ((self ^. js "x1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
+getX1Unsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGLinearGradientElement -> m SVGAnimatedLength
+getX1Unsafe self
+  = liftDOM
+      (((self ^. js "x1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
 getX1Unchecked ::
                (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
 getX1Unchecked self
@@ -36,6 +60,15 @@
 getY1 self = liftDOM ((self ^. js "y1") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y1 Mozilla SVGLinearGradientElement.y1 documentation> 
+getY1Unsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGLinearGradientElement -> m SVGAnimatedLength
+getY1Unsafe self
+  = liftDOM
+      (((self ^. js "y1") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y1 Mozilla SVGLinearGradientElement.y1 documentation> 
 getY1Unchecked ::
                (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
 getY1Unchecked self
@@ -48,6 +81,15 @@
 getX2 self = liftDOM ((self ^. js "x2") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x2 Mozilla SVGLinearGradientElement.x2 documentation> 
+getX2Unsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGLinearGradientElement -> m SVGAnimatedLength
+getX2Unsafe self
+  = liftDOM
+      (((self ^. js "x2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x2 Mozilla SVGLinearGradientElement.x2 documentation> 
 getX2Unchecked ::
                (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
 getX2Unchecked self
@@ -58,6 +100,15 @@
       (MonadDOM m) =>
         SVGLinearGradientElement -> m (Maybe SVGAnimatedLength)
 getY2 self = liftDOM ((self ^. js "y2") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y2 Mozilla SVGLinearGradientElement.y2 documentation> 
+getY2Unsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGLinearGradientElement -> m SVGAnimatedLength
+getY2Unsafe self
+  = liftDOM
+      (((self ^. js "y2") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y2 Mozilla SVGLinearGradientElement.y2 documentation> 
 getY2Unchecked ::
diff --git a/src/JSDOM/Generated/SVGMarkerElement.hs b/src/JSDOM/Generated/SVGMarkerElement.hs
--- a/src/JSDOM/Generated/SVGMarkerElement.hs
+++ b/src/JSDOM/Generated/SVGMarkerElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGMarkerElement
        (setOrientToAuto, setOrientToAngle,
@@ -6,14 +9,17 @@
         pattern SVG_MARKERUNITS_USERSPACEONUSE,
         pattern SVG_MARKERUNITS_STROKEWIDTH,
         pattern SVG_MARKER_ORIENT_UNKNOWN, pattern SVG_MARKER_ORIENT_AUTO,
-        pattern SVG_MARKER_ORIENT_ANGLE, getRefX, getRefXUnchecked,
-        getRefY, getRefYUnchecked, getMarkerUnits, getMarkerUnitsUnchecked,
-        getMarkerWidth, getMarkerWidthUnchecked, getMarkerHeight,
-        getMarkerHeightUnchecked, getOrientType, getOrientTypeUnchecked,
-        getOrientAngle, getOrientAngleUnchecked, SVGMarkerElement,
-        castToSVGMarkerElement, gTypeSVGMarkerElement)
+        pattern SVG_MARKER_ORIENT_ANGLE, getRefX, getRefXUnsafe,
+        getRefXUnchecked, getRefY, getRefYUnsafe, getRefYUnchecked,
+        getMarkerUnits, getMarkerUnitsUnsafe, getMarkerUnitsUnchecked,
+        getMarkerWidth, getMarkerWidthUnsafe, getMarkerWidthUnchecked,
+        getMarkerHeight, getMarkerHeightUnsafe, getMarkerHeightUnchecked,
+        getOrientType, getOrientTypeUnsafe, getOrientTypeUnchecked,
+        getOrientAngle, getOrientAngleUnsafe, getOrientAngleUnchecked,
+        SVGMarkerElement(..), gTypeSVGMarkerElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -24,6 +30,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAuto Mozilla SVGMarkerElement.setOrientToAuto documentation> 
 setOrientToAuto :: (MonadDOM m) => SVGMarkerElement -> m ()
@@ -48,6 +64,15 @@
 getRefX self = liftDOM ((self ^. js "refX") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refX Mozilla SVGMarkerElement.refX documentation> 
+getRefXUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGMarkerElement -> m SVGAnimatedLength
+getRefXUnsafe self
+  = liftDOM
+      (((self ^. js "refX") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refX Mozilla SVGMarkerElement.refX documentation> 
 getRefXUnchecked ::
                  (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
 getRefXUnchecked self
@@ -59,6 +84,15 @@
 getRefY self = liftDOM ((self ^. js "refY") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refY Mozilla SVGMarkerElement.refY documentation> 
+getRefYUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGMarkerElement -> m SVGAnimatedLength
+getRefYUnsafe self
+  = liftDOM
+      (((self ^. js "refY") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refY Mozilla SVGMarkerElement.refY documentation> 
 getRefYUnchecked ::
                  (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
 getRefYUnchecked self
@@ -72,6 +106,15 @@
   = liftDOM ((self ^. js "markerUnits") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerUnits Mozilla SVGMarkerElement.markerUnits documentation> 
+getMarkerUnitsUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       SVGMarkerElement -> m SVGAnimatedEnumeration
+getMarkerUnitsUnsafe self
+  = liftDOM
+      (((self ^. js "markerUnits") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerUnits Mozilla SVGMarkerElement.markerUnits documentation> 
 getMarkerUnitsUnchecked ::
                         (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedEnumeration
 getMarkerUnitsUnchecked self
@@ -84,6 +127,15 @@
   = liftDOM ((self ^. js "markerWidth") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerWidth Mozilla SVGMarkerElement.markerWidth documentation> 
+getMarkerWidthUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       SVGMarkerElement -> m SVGAnimatedLength
+getMarkerWidthUnsafe self
+  = liftDOM
+      (((self ^. js "markerWidth") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerWidth Mozilla SVGMarkerElement.markerWidth documentation> 
 getMarkerWidthUnchecked ::
                         (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
 getMarkerWidthUnchecked self
@@ -96,6 +148,15 @@
   = liftDOM ((self ^. js "markerHeight") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerHeight Mozilla SVGMarkerElement.markerHeight documentation> 
+getMarkerHeightUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        SVGMarkerElement -> m SVGAnimatedLength
+getMarkerHeightUnsafe self
+  = liftDOM
+      (((self ^. js "markerHeight") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerHeight Mozilla SVGMarkerElement.markerHeight documentation> 
 getMarkerHeightUnchecked ::
                          (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
 getMarkerHeightUnchecked self
@@ -109,6 +170,15 @@
   = liftDOM ((self ^. js "orientType") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientType Mozilla SVGMarkerElement.orientType documentation> 
+getOrientTypeUnsafe ::
+                    (MonadDOM m, HasCallStack) =>
+                      SVGMarkerElement -> m SVGAnimatedEnumeration
+getOrientTypeUnsafe self
+  = liftDOM
+      (((self ^. js "orientType") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientType Mozilla SVGMarkerElement.orientType documentation> 
 getOrientTypeUnchecked ::
                        (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedEnumeration
 getOrientTypeUnchecked self
@@ -119,6 +189,15 @@
                (MonadDOM m) => SVGMarkerElement -> m (Maybe SVGAnimatedAngle)
 getOrientAngle self
   = liftDOM ((self ^. js "orientAngle") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientAngle Mozilla SVGMarkerElement.orientAngle documentation> 
+getOrientAngleUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       SVGMarkerElement -> m SVGAnimatedAngle
+getOrientAngleUnsafe self
+  = liftDOM
+      (((self ^. js "orientAngle") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientAngle Mozilla SVGMarkerElement.orientAngle documentation> 
 getOrientAngleUnchecked ::
diff --git a/src/JSDOM/Generated/SVGMaskElement.hs b/src/JSDOM/Generated/SVGMaskElement.hs
--- a/src/JSDOM/Generated/SVGMaskElement.hs
+++ b/src/JSDOM/Generated/SVGMaskElement.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGMaskElement
-       (getMaskUnits, getMaskUnitsUnchecked, getMaskContentUnits,
-        getMaskContentUnitsUnchecked, getX, getXUnchecked, getY,
-        getYUnchecked, getWidth, getWidthUnchecked, getHeight,
-        getHeightUnchecked, SVGMaskElement, castToSVGMaskElement,
-        gTypeSVGMaskElement)
+       (getMaskUnits, getMaskUnitsUnsafe, getMaskUnitsUnchecked,
+        getMaskContentUnits, getMaskContentUnitsUnsafe,
+        getMaskContentUnitsUnchecked, getX, getXUnsafe, getXUnchecked,
+        getY, getYUnsafe, getYUnchecked, getWidth, getWidthUnsafe,
+        getWidthUnchecked, getHeight, getHeightUnsafe, getHeightUnchecked,
+        SVGMaskElement(..), gTypeSVGMaskElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
 getMaskUnits ::
@@ -26,6 +41,15 @@
   = liftDOM ((self ^. js "maskUnits") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
+getMaskUnitsUnsafe ::
+                   (MonadDOM m, HasCallStack) =>
+                     SVGMaskElement -> m SVGAnimatedEnumeration
+getMaskUnitsUnsafe self
+  = liftDOM
+      (((self ^. js "maskUnits") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
 getMaskUnitsUnchecked ::
                       (MonadDOM m) => SVGMaskElement -> m SVGAnimatedEnumeration
 getMaskUnitsUnchecked self
@@ -38,6 +62,15 @@
   = liftDOM ((self ^. js "maskContentUnits") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskContentUnits Mozilla SVGMaskElement.maskContentUnits documentation> 
+getMaskContentUnitsUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            SVGMaskElement -> m SVGAnimatedEnumeration
+getMaskContentUnitsUnsafe self
+  = liftDOM
+      (((self ^. js "maskContentUnits") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskContentUnits Mozilla SVGMaskElement.maskContentUnits documentation> 
 getMaskContentUnitsUnchecked ::
                              (MonadDOM m) => SVGMaskElement -> m SVGAnimatedEnumeration
 getMaskContentUnitsUnchecked self
@@ -49,6 +82,14 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.x Mozilla SVGMaskElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) => SVGMaskElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.x Mozilla SVGMaskElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -60,6 +101,14 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.y Mozilla SVGMaskElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) => SVGMaskElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.y Mozilla SVGMaskElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
 getYUnchecked self
@@ -71,6 +120,14 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.width Mozilla SVGMaskElement.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) => SVGMaskElement -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.width Mozilla SVGMaskElement.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
 getWidthUnchecked self
@@ -80,6 +137,14 @@
 getHeight ::
           (MonadDOM m) => SVGMaskElement -> m (Maybe SVGAnimatedLength)
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.height Mozilla SVGMaskElement.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGMaskElement -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.height Mozilla SVGMaskElement.height documentation> 
 getHeightUnchecked ::
diff --git a/src/JSDOM/Generated/SVGMatrix.hs b/src/JSDOM/Generated/SVGMatrix.hs
--- a/src/JSDOM/Generated/SVGMatrix.hs
+++ b/src/JSDOM/Generated/SVGMatrix.hs
@@ -1,17 +1,24 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGMatrix
-       (multiply, multiply_, multiplyUnchecked, inverse, inverse_,
-        inverseUnchecked, translate, translate_, translateUnchecked, scale,
-        scale_, scaleUnchecked, scaleNonUniform, scaleNonUniform_,
-        scaleNonUniformUnchecked, rotate, rotate_, rotateUnchecked,
-        rotateFromVector, rotateFromVector_, rotateFromVectorUnchecked,
-        flipX, flipX_, flipXUnchecked, flipY, flipY_, flipYUnchecked,
-        skewX, skewX_, skewXUnchecked, skewY, skewY_, skewYUnchecked, setA,
-        getA, setB, getB, setC, getC, setD, getD, setE, getE, setF, getF,
-        SVGMatrix, castToSVGMatrix, gTypeSVGMatrix)
+       (multiply, multiply_, multiplyUnsafe, multiplyUnchecked, inverse,
+        inverse_, inverseUnsafe, inverseUnchecked, translate, translate_,
+        translateUnsafe, translateUnchecked, scale, scale_, scaleUnsafe,
+        scaleUnchecked, scaleNonUniform, scaleNonUniform_,
+        scaleNonUniformUnsafe, scaleNonUniformUnchecked, rotate, rotate_,
+        rotateUnsafe, rotateUnchecked, rotateFromVector, rotateFromVector_,
+        rotateFromVectorUnsafe, rotateFromVectorUnchecked, flipX, flipX_,
+        flipXUnsafe, flipXUnchecked, flipY, flipY_, flipYUnsafe,
+        flipYUnchecked, skewX, skewX_, skewXUnsafe, skewXUnchecked, skewY,
+        skewY_, skewYUnsafe, skewYUnchecked, setA, getA, setB, getB, setC,
+        getC, setD, getD, setE, getE, setF, getF, SVGMatrix(..),
+        gTypeSVGMatrix)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +29,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
 multiply ::
@@ -36,6 +53,15 @@
   = liftDOM (void (self ^. jsf "multiply" [toJSVal secondMatrix]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
+multiplyUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 SVGMatrix -> Maybe SVGMatrix -> m SVGMatrix
+multiplyUnsafe self secondMatrix
+  = liftDOM
+      (((self ^. jsf "multiply" [toJSVal secondMatrix]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
 multiplyUnchecked ::
                   (MonadDOM m) => SVGMatrix -> Maybe SVGMatrix -> m SVGMatrix
 multiplyUnchecked self secondMatrix
@@ -52,6 +78,14 @@
 inverse_ self = liftDOM (void (self ^. jsf "inverse" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
+inverseUnsafe ::
+              (MonadDOM m, HasCallStack) => SVGMatrix -> m SVGMatrix
+inverseUnsafe self
+  = liftDOM
+      (((self ^. jsf "inverse" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
 inverseUnchecked :: (MonadDOM m) => SVGMatrix -> m SVGMatrix
 inverseUnchecked self
   = liftDOM ((self ^. jsf "inverse" ()) >>= fromJSValUnchecked)
@@ -69,6 +103,15 @@
   = liftDOM (void (self ^. jsf "translate" [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
+translateUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGMatrix -> Float -> Float -> m SVGMatrix
+translateUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "translate" [toJSVal x, toJSVal y]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
 translateUnchecked ::
                    (MonadDOM m) => SVGMatrix -> Float -> Float -> m SVGMatrix
 translateUnchecked self x y
@@ -88,6 +131,14 @@
   = liftDOM (void (self ^. jsf "scale" [toJSVal scaleFactor]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
+scaleUnsafe ::
+            (MonadDOM m, HasCallStack) => SVGMatrix -> Float -> m SVGMatrix
+scaleUnsafe self scaleFactor
+  = liftDOM
+      (((self ^. jsf "scale" [toJSVal scaleFactor]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
 scaleUnchecked :: (MonadDOM m) => SVGMatrix -> Float -> m SVGMatrix
 scaleUnchecked self scaleFactor
   = liftDOM
@@ -113,6 +164,17 @@
             [toJSVal scaleFactorX, toJSVal scaleFactorY]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
+scaleNonUniformUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        SVGMatrix -> Float -> Float -> m SVGMatrix
+scaleNonUniformUnsafe self scaleFactorX scaleFactorY
+  = liftDOM
+      (((self ^. jsf "scaleNonUniform"
+           [toJSVal scaleFactorX, toJSVal scaleFactorY])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
 scaleNonUniformUnchecked ::
                          (MonadDOM m) => SVGMatrix -> Float -> Float -> m SVGMatrix
 scaleNonUniformUnchecked self scaleFactorX scaleFactorY
@@ -132,6 +194,14 @@
   = liftDOM (void (self ^. jsf "rotate" [toJSVal angle]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
+rotateUnsafe ::
+             (MonadDOM m, HasCallStack) => SVGMatrix -> Float -> m SVGMatrix
+rotateUnsafe self angle
+  = liftDOM
+      (((self ^. jsf "rotate" [toJSVal angle]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
 rotateUnchecked ::
                 (MonadDOM m) => SVGMatrix -> Float -> m SVGMatrix
 rotateUnchecked self angle
@@ -154,6 +224,16 @@
       (void (self ^. jsf "rotateFromVector" [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
+rotateFromVectorUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGMatrix -> Float -> Float -> m SVGMatrix
+rotateFromVectorUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "rotateFromVector" [toJSVal x, toJSVal y]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
 rotateFromVectorUnchecked ::
                           (MonadDOM m) => SVGMatrix -> Float -> Float -> m SVGMatrix
 rotateFromVectorUnchecked self x y
@@ -170,6 +250,14 @@
 flipX_ self = liftDOM (void (self ^. jsf "flipX" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
+flipXUnsafe ::
+            (MonadDOM m, HasCallStack) => SVGMatrix -> m SVGMatrix
+flipXUnsafe self
+  = liftDOM
+      (((self ^. jsf "flipX" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
 flipXUnchecked :: (MonadDOM m) => SVGMatrix -> m SVGMatrix
 flipXUnchecked self
   = liftDOM ((self ^. jsf "flipX" ()) >>= fromJSValUnchecked)
@@ -183,6 +271,14 @@
 flipY_ self = liftDOM (void (self ^. jsf "flipY" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
+flipYUnsafe ::
+            (MonadDOM m, HasCallStack) => SVGMatrix -> m SVGMatrix
+flipYUnsafe self
+  = liftDOM
+      (((self ^. jsf "flipY" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
 flipYUnchecked :: (MonadDOM m) => SVGMatrix -> m SVGMatrix
 flipYUnchecked self
   = liftDOM ((self ^. jsf "flipY" ()) >>= fromJSValUnchecked)
@@ -198,6 +294,14 @@
   = liftDOM (void (self ^. jsf "skewX" [toJSVal angle]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
+skewXUnsafe ::
+            (MonadDOM m, HasCallStack) => SVGMatrix -> Float -> m SVGMatrix
+skewXUnsafe self angle
+  = liftDOM
+      (((self ^. jsf "skewX" [toJSVal angle]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
 skewXUnchecked :: (MonadDOM m) => SVGMatrix -> Float -> m SVGMatrix
 skewXUnchecked self angle
   = liftDOM
@@ -212,6 +316,14 @@
 skewY_ :: (MonadDOM m) => SVGMatrix -> Float -> m ()
 skewY_ self angle
   = liftDOM (void (self ^. jsf "skewY" [toJSVal angle]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
+skewYUnsafe ::
+            (MonadDOM m, HasCallStack) => SVGMatrix -> Float -> m SVGMatrix
+skewYUnsafe self angle
+  = liftDOM
+      (((self ^. jsf "skewY" [toJSVal angle]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
 skewYUnchecked :: (MonadDOM m) => SVGMatrix -> Float -> m SVGMatrix
diff --git a/src/JSDOM/Generated/SVGNumber.hs b/src/JSDOM/Generated/SVGNumber.hs
--- a/src/JSDOM/Generated/SVGNumber.hs
+++ b/src/JSDOM/Generated/SVGNumber.hs
@@ -1,9 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGNumber
-       (setValue, getValue, SVGNumber, castToSVGNumber, gTypeSVGNumber)
-       where
+       (setValue, getValue, SVGNumber(..), gTypeSVGNumber) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -14,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
 setValue :: (MonadDOM m) => SVGNumber -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGNumberList.hs b/src/JSDOM/Generated/SVGNumberList.hs
--- a/src/JSDOM/Generated/SVGNumberList.hs
+++ b/src/JSDOM/Generated/SVGNumberList.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGNumberList
-       (clear, initialize, initialize_, initializeUnchecked, getItem,
-        getItem_, getItemUnchecked, insertItemBefore, insertItemBefore_,
-        insertItemBeforeUnchecked, replaceItem, replaceItem_,
-        replaceItemUnchecked, removeItem, removeItem_, removeItemUnchecked,
-        appendItem, appendItem_, appendItemUnchecked, getNumberOfItems,
-        SVGNumberList, castToSVGNumberList, gTypeSVGNumberList)
+       (clear, initialize, initialize_, initializeUnsafe,
+        initializeUnchecked, getItem, getItem_, getItemUnsafe,
+        getItemUnchecked, insertItemBefore, insertItemBefore_,
+        insertItemBeforeUnsafe, insertItemBeforeUnchecked, replaceItem,
+        replaceItem_, replaceItemUnsafe, replaceItemUnchecked, removeItem,
+        removeItem_, removeItemUnsafe, removeItemUnchecked, appendItem,
+        appendItem_, appendItemUnsafe, appendItemUnchecked,
+        getNumberOfItems, SVGNumberList(..), gTypeSVGNumberList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.clear Mozilla SVGNumberList.clear documentation> 
 clear :: (MonadDOM m) => SVGNumberList -> m ()
@@ -38,6 +54,15 @@
   = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
+initializeUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGNumberList -> Maybe SVGNumber -> m SVGNumber
+initializeUnsafe self item
+  = liftDOM
+      (((self ^. jsf "initialize" [toJSVal item]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
 initializeUnchecked ::
                     (MonadDOM m) => SVGNumberList -> Maybe SVGNumber -> m SVGNumber
 initializeUnchecked self item
@@ -56,6 +81,14 @@
   = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
+getItemUnsafe ::
+              (MonadDOM m, HasCallStack) => SVGNumberList -> Word -> m SVGNumber
+getItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
 getItemUnchecked ::
                  (MonadDOM m) => SVGNumberList -> Word -> m SVGNumber
 getItemUnchecked self index
@@ -80,6 +113,16 @@
          (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
+insertItemBeforeUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGNumberList -> Maybe SVGNumber -> Word -> m SVGNumber
+insertItemBeforeUnsafe self item index
+  = liftDOM
+      (((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
 insertItemBeforeUnchecked ::
                           (MonadDOM m) =>
                             SVGNumberList -> Maybe SVGNumber -> Word -> m SVGNumber
@@ -105,6 +148,16 @@
       (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
+replaceItemUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    SVGNumberList -> Maybe SVGNumber -> Word -> m SVGNumber
+replaceItemUnsafe self item index
+  = liftDOM
+      (((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
 replaceItemUnchecked ::
                      (MonadDOM m) =>
                        SVGNumberList -> Maybe SVGNumber -> Word -> m SVGNumber
@@ -126,6 +179,14 @@
   = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
+removeItemUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGNumberList -> Word -> m SVGNumber
+removeItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
 removeItemUnchecked ::
                     (MonadDOM m) => SVGNumberList -> Word -> m SVGNumber
 removeItemUnchecked self index
@@ -144,6 +205,15 @@
             (MonadDOM m) => SVGNumberList -> Maybe SVGNumber -> m ()
 appendItem_ self item
   = liftDOM (void (self ^. jsf "appendItem" [toJSVal item]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
+appendItemUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGNumberList -> Maybe SVGNumber -> m SVGNumber
+appendItemUnsafe self item
+  = liftDOM
+      (((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
 appendItemUnchecked ::
diff --git a/src/JSDOM/Generated/SVGPaint.hs b/src/JSDOM/Generated/SVGPaint.hs
--- a/src/JSDOM/Generated/SVGPaint.hs
+++ b/src/JSDOM/Generated/SVGPaint.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPaint
        (setUri, setPaint, pattern SVG_PAINTTYPE_UNKNOWN,
@@ -9,10 +12,11 @@
         pattern SVG_PAINTTYPE_URI_CURRENTCOLOR,
         pattern SVG_PAINTTYPE_URI_RGBCOLOR,
         pattern SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR,
-        pattern SVG_PAINTTYPE_URI, getPaintType, getUri, SVGPaint,
-        castToSVGPaint, gTypeSVGPaint)
+        pattern SVG_PAINTTYPE_URI, getPaintType, getUri, SVGPaint(..),
+        gTypeSVGPaint)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint.setUri Mozilla SVGPaint.setUri documentation> 
 setUri :: (MonadDOM m, ToJSString uri) => SVGPaint -> uri -> m ()
diff --git a/src/JSDOM/Generated/SVGPathElement.hs b/src/JSDOM/Generated/SVGPathElement.hs
--- a/src/JSDOM/Generated/SVGPathElement.hs
+++ b/src/JSDOM/Generated/SVGPathElement.hs
@@ -1,61 +1,85 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathElement
        (getTotalLength, getTotalLength_, getPointAtLength,
-        getPointAtLength_, getPointAtLengthUnchecked, getPathSegAtLength,
-        getPathSegAtLength_, createSVGPathSegClosePath,
-        createSVGPathSegClosePath_, createSVGPathSegClosePathUnchecked,
-        createSVGPathSegMovetoAbs, createSVGPathSegMovetoAbs_,
+        getPointAtLength_, getPointAtLengthUnsafe,
+        getPointAtLengthUnchecked, getPathSegAtLength, getPathSegAtLength_,
+        createSVGPathSegClosePath, createSVGPathSegClosePath_,
+        createSVGPathSegClosePathUnsafe,
+        createSVGPathSegClosePathUnchecked, createSVGPathSegMovetoAbs,
+        createSVGPathSegMovetoAbs_, createSVGPathSegMovetoAbsUnsafe,
         createSVGPathSegMovetoAbsUnchecked, createSVGPathSegMovetoRel,
-        createSVGPathSegMovetoRel_, createSVGPathSegMovetoRelUnchecked,
-        createSVGPathSegLinetoAbs, createSVGPathSegLinetoAbs_,
+        createSVGPathSegMovetoRel_, createSVGPathSegMovetoRelUnsafe,
+        createSVGPathSegMovetoRelUnchecked, createSVGPathSegLinetoAbs,
+        createSVGPathSegLinetoAbs_, createSVGPathSegLinetoAbsUnsafe,
         createSVGPathSegLinetoAbsUnchecked, createSVGPathSegLinetoRel,
-        createSVGPathSegLinetoRel_, createSVGPathSegLinetoRelUnchecked,
+        createSVGPathSegLinetoRel_, createSVGPathSegLinetoRelUnsafe,
+        createSVGPathSegLinetoRelUnchecked,
         createSVGPathSegCurvetoCubicAbs, createSVGPathSegCurvetoCubicAbs_,
+        createSVGPathSegCurvetoCubicAbsUnsafe,
         createSVGPathSegCurvetoCubicAbsUnchecked,
         createSVGPathSegCurvetoCubicRel, createSVGPathSegCurvetoCubicRel_,
+        createSVGPathSegCurvetoCubicRelUnsafe,
         createSVGPathSegCurvetoCubicRelUnchecked,
         createSVGPathSegCurvetoQuadraticAbs,
         createSVGPathSegCurvetoQuadraticAbs_,
+        createSVGPathSegCurvetoQuadraticAbsUnsafe,
         createSVGPathSegCurvetoQuadraticAbsUnchecked,
         createSVGPathSegCurvetoQuadraticRel,
         createSVGPathSegCurvetoQuadraticRel_,
+        createSVGPathSegCurvetoQuadraticRelUnsafe,
         createSVGPathSegCurvetoQuadraticRelUnchecked,
         createSVGPathSegArcAbs, createSVGPathSegArcAbs_,
-        createSVGPathSegArcAbsUnchecked, createSVGPathSegArcRel,
-        createSVGPathSegArcRel_, createSVGPathSegArcRelUnchecked,
+        createSVGPathSegArcAbsUnsafe, createSVGPathSegArcAbsUnchecked,
+        createSVGPathSegArcRel, createSVGPathSegArcRel_,
+        createSVGPathSegArcRelUnsafe, createSVGPathSegArcRelUnchecked,
         createSVGPathSegLinetoHorizontalAbs,
         createSVGPathSegLinetoHorizontalAbs_,
+        createSVGPathSegLinetoHorizontalAbsUnsafe,
         createSVGPathSegLinetoHorizontalAbsUnchecked,
         createSVGPathSegLinetoHorizontalRel,
         createSVGPathSegLinetoHorizontalRel_,
+        createSVGPathSegLinetoHorizontalRelUnsafe,
         createSVGPathSegLinetoHorizontalRelUnchecked,
         createSVGPathSegLinetoVerticalAbs,
         createSVGPathSegLinetoVerticalAbs_,
+        createSVGPathSegLinetoVerticalAbsUnsafe,
         createSVGPathSegLinetoVerticalAbsUnchecked,
         createSVGPathSegLinetoVerticalRel,
         createSVGPathSegLinetoVerticalRel_,
+        createSVGPathSegLinetoVerticalRelUnsafe,
         createSVGPathSegLinetoVerticalRelUnchecked,
         createSVGPathSegCurvetoCubicSmoothAbs,
         createSVGPathSegCurvetoCubicSmoothAbs_,
+        createSVGPathSegCurvetoCubicSmoothAbsUnsafe,
         createSVGPathSegCurvetoCubicSmoothAbsUnchecked,
         createSVGPathSegCurvetoCubicSmoothRel,
         createSVGPathSegCurvetoCubicSmoothRel_,
+        createSVGPathSegCurvetoCubicSmoothRelUnsafe,
         createSVGPathSegCurvetoCubicSmoothRelUnchecked,
         createSVGPathSegCurvetoQuadraticSmoothAbs,
         createSVGPathSegCurvetoQuadraticSmoothAbs_,
+        createSVGPathSegCurvetoQuadraticSmoothAbsUnsafe,
         createSVGPathSegCurvetoQuadraticSmoothAbsUnchecked,
         createSVGPathSegCurvetoQuadraticSmoothRel,
         createSVGPathSegCurvetoQuadraticSmoothRel_,
+        createSVGPathSegCurvetoQuadraticSmoothRelUnsafe,
         createSVGPathSegCurvetoQuadraticSmoothRelUnchecked, getPathLength,
-        getPathLengthUnchecked, getPathSegList, getPathSegListUnchecked,
-        getNormalizedPathSegList, getNormalizedPathSegListUnchecked,
-        getAnimatedPathSegList, getAnimatedPathSegListUnchecked,
+        getPathLengthUnsafe, getPathLengthUnchecked, getPathSegList,
+        getPathSegListUnsafe, getPathSegListUnchecked,
+        getNormalizedPathSegList, getNormalizedPathSegListUnsafe,
+        getNormalizedPathSegListUnchecked, getAnimatedPathSegList,
+        getAnimatedPathSegListUnsafe, getAnimatedPathSegListUnchecked,
         getAnimatedNormalizedPathSegList,
-        getAnimatedNormalizedPathSegListUnchecked, SVGPathElement,
-        castToSVGPathElement, gTypeSVGPathElement)
+        getAnimatedNormalizedPathSegListUnsafe,
+        getAnimatedNormalizedPathSegListUnchecked, SVGPathElement(..),
+        gTypeSVGPathElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -66,6 +90,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
 getTotalLength :: (MonadDOM m) => SVGPathElement -> m Float
@@ -94,6 +128,15 @@
       (void (self ^. jsf "getPointAtLength" [toJSVal distance]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
+getPointAtLengthUnsafe ::
+                       (MonadDOM m, HasCallStack) => SVGPathElement -> Float -> m SVGPoint
+getPointAtLengthUnsafe self distance
+  = liftDOM
+      (((self ^. jsf "getPointAtLength" [toJSVal distance]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
 getPointAtLengthUnchecked ::
                           (MonadDOM m) => SVGPathElement -> Float -> m SVGPoint
 getPointAtLengthUnchecked self distance
@@ -131,6 +174,15 @@
   = liftDOM (void (self ^. jsf "createSVGPathSegClosePath" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
+createSVGPathSegClosePathUnsafe ::
+                                (MonadDOM m, HasCallStack) =>
+                                  SVGPathElement -> m SVGPathSegClosePath
+createSVGPathSegClosePathUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegClosePath" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
 createSVGPathSegClosePathUnchecked ::
                                    (MonadDOM m) => SVGPathElement -> m SVGPathSegClosePath
 createSVGPathSegClosePathUnchecked self
@@ -156,6 +208,16 @@
          (self ^. jsf "createSVGPathSegMovetoAbs" [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
+createSVGPathSegMovetoAbsUnsafe ::
+                                (MonadDOM m, HasCallStack) =>
+                                  SVGPathElement -> Float -> Float -> m SVGPathSegMovetoAbs
+createSVGPathSegMovetoAbsUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegMovetoAbs" [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
 createSVGPathSegMovetoAbsUnchecked ::
                                    (MonadDOM m) =>
                                      SVGPathElement -> Float -> Float -> m SVGPathSegMovetoAbs
@@ -182,6 +244,16 @@
          (self ^. jsf "createSVGPathSegMovetoRel" [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
+createSVGPathSegMovetoRelUnsafe ::
+                                (MonadDOM m, HasCallStack) =>
+                                  SVGPathElement -> Float -> Float -> m SVGPathSegMovetoRel
+createSVGPathSegMovetoRelUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegMovetoRel" [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
 createSVGPathSegMovetoRelUnchecked ::
                                    (MonadDOM m) =>
                                      SVGPathElement -> Float -> Float -> m SVGPathSegMovetoRel
@@ -208,6 +280,16 @@
          (self ^. jsf "createSVGPathSegLinetoAbs" [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
+createSVGPathSegLinetoAbsUnsafe ::
+                                (MonadDOM m, HasCallStack) =>
+                                  SVGPathElement -> Float -> Float -> m SVGPathSegLinetoAbs
+createSVGPathSegLinetoAbsUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegLinetoAbs" [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
 createSVGPathSegLinetoAbsUnchecked ::
                                    (MonadDOM m) =>
                                      SVGPathElement -> Float -> Float -> m SVGPathSegLinetoAbs
@@ -234,6 +316,16 @@
          (self ^. jsf "createSVGPathSegLinetoRel" [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
+createSVGPathSegLinetoRelUnsafe ::
+                                (MonadDOM m, HasCallStack) =>
+                                  SVGPathElement -> Float -> Float -> m SVGPathSegLinetoRel
+createSVGPathSegLinetoRelUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegLinetoRel" [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
 createSVGPathSegLinetoRelUnchecked ::
                                    (MonadDOM m) =>
                                      SVGPathElement -> Float -> Float -> m SVGPathSegLinetoRel
@@ -271,6 +363,23 @@
              toJSVal y2]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
+createSVGPathSegCurvetoCubicAbsUnsafe ::
+                                      (MonadDOM m, HasCallStack) =>
+                                        SVGPathElement ->
+                                          Float ->
+                                            Float ->
+                                              Float ->
+                                                Float ->
+                                                  Float -> Float -> m SVGPathSegCurvetoCubicAbs
+createSVGPathSegCurvetoCubicAbsUnsafe self x y x1 y1 x2 y2
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegCurvetoCubicAbs"
+           [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1, toJSVal x2,
+            toJSVal y2])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
 createSVGPathSegCurvetoCubicAbsUnchecked ::
                                          (MonadDOM m) =>
                                            SVGPathElement ->
@@ -315,6 +424,23 @@
              toJSVal y2]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
+createSVGPathSegCurvetoCubicRelUnsafe ::
+                                      (MonadDOM m, HasCallStack) =>
+                                        SVGPathElement ->
+                                          Float ->
+                                            Float ->
+                                              Float ->
+                                                Float ->
+                                                  Float -> Float -> m SVGPathSegCurvetoCubicRel
+createSVGPathSegCurvetoCubicRelUnsafe self x y x1 y1 x2 y2
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegCurvetoCubicRel"
+           [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1, toJSVal x2,
+            toJSVal y2])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
 createSVGPathSegCurvetoCubicRelUnchecked ::
                                          (MonadDOM m) =>
                                            SVGPathElement ->
@@ -355,6 +481,20 @@
             [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
+createSVGPathSegCurvetoQuadraticAbsUnsafe ::
+                                          (MonadDOM m, HasCallStack) =>
+                                            SVGPathElement ->
+                                              Float ->
+                                                Float ->
+                                                  Float -> Float -> m SVGPathSegCurvetoQuadraticAbs
+createSVGPathSegCurvetoQuadraticAbsUnsafe self x y x1 y1
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegCurvetoQuadraticAbs"
+           [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
 createSVGPathSegCurvetoQuadraticAbsUnchecked ::
                                              (MonadDOM m) =>
                                                SVGPathElement ->
@@ -393,6 +533,20 @@
             [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
+createSVGPathSegCurvetoQuadraticRelUnsafe ::
+                                          (MonadDOM m, HasCallStack) =>
+                                            SVGPathElement ->
+                                              Float ->
+                                                Float ->
+                                                  Float -> Float -> m SVGPathSegCurvetoQuadraticRel
+createSVGPathSegCurvetoQuadraticRelUnsafe self x y x1 y1
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegCurvetoQuadraticRel"
+           [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
 createSVGPathSegCurvetoQuadraticRelUnchecked ::
                                              (MonadDOM m) =>
                                                SVGPathElement ->
@@ -434,6 +588,22 @@
              toJSVal largeArcFlag, toJSVal sweepFlag]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
+createSVGPathSegArcAbsUnsafe ::
+                             (MonadDOM m, HasCallStack) =>
+                               SVGPathElement ->
+                                 Float ->
+                                   Float ->
+                                     Float -> Float -> Float -> Bool -> Bool -> m SVGPathSegArcAbs
+createSVGPathSegArcAbsUnsafe self x y r1 r2 angle largeArcFlag
+  sweepFlag
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegArcAbs"
+           [toJSVal x, toJSVal y, toJSVal r1, toJSVal r2, toJSVal angle,
+            toJSVal largeArcFlag, toJSVal sweepFlag])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
 createSVGPathSegArcAbsUnchecked ::
                                 (MonadDOM m) =>
                                   SVGPathElement ->
@@ -477,6 +647,22 @@
              toJSVal largeArcFlag, toJSVal sweepFlag]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
+createSVGPathSegArcRelUnsafe ::
+                             (MonadDOM m, HasCallStack) =>
+                               SVGPathElement ->
+                                 Float ->
+                                   Float ->
+                                     Float -> Float -> Float -> Bool -> Bool -> m SVGPathSegArcRel
+createSVGPathSegArcRelUnsafe self x y r1 r2 angle largeArcFlag
+  sweepFlag
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegArcRel"
+           [toJSVal x, toJSVal y, toJSVal r1, toJSVal r2, toJSVal angle,
+            toJSVal largeArcFlag, toJSVal sweepFlag])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
 createSVGPathSegArcRelUnchecked ::
                                 (MonadDOM m) =>
                                   SVGPathElement ->
@@ -511,6 +697,17 @@
          (self ^. jsf "createSVGPathSegLinetoHorizontalAbs" [toJSVal x]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
+createSVGPathSegLinetoHorizontalAbsUnsafe ::
+                                          (MonadDOM m, HasCallStack) =>
+                                            SVGPathElement ->
+                                              Float -> m SVGPathSegLinetoHorizontalAbs
+createSVGPathSegLinetoHorizontalAbsUnsafe self x
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegLinetoHorizontalAbs" [toJSVal x])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
 createSVGPathSegLinetoHorizontalAbsUnchecked ::
                                              (MonadDOM m) =>
                                                SVGPathElement ->
@@ -539,6 +736,17 @@
          (self ^. jsf "createSVGPathSegLinetoHorizontalRel" [toJSVal x]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
+createSVGPathSegLinetoHorizontalRelUnsafe ::
+                                          (MonadDOM m, HasCallStack) =>
+                                            SVGPathElement ->
+                                              Float -> m SVGPathSegLinetoHorizontalRel
+createSVGPathSegLinetoHorizontalRelUnsafe self x
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegLinetoHorizontalRel" [toJSVal x])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
 createSVGPathSegLinetoHorizontalRelUnchecked ::
                                              (MonadDOM m) =>
                                                SVGPathElement ->
@@ -566,6 +774,16 @@
          (self ^. jsf "createSVGPathSegLinetoVerticalAbs" [toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
+createSVGPathSegLinetoVerticalAbsUnsafe ::
+                                        (MonadDOM m, HasCallStack) =>
+                                          SVGPathElement -> Float -> m SVGPathSegLinetoVerticalAbs
+createSVGPathSegLinetoVerticalAbsUnsafe self y
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegLinetoVerticalAbs" [toJSVal y]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
 createSVGPathSegLinetoVerticalAbsUnchecked ::
                                            (MonadDOM m) =>
                                              SVGPathElement ->
@@ -593,6 +811,16 @@
          (self ^. jsf "createSVGPathSegLinetoVerticalRel" [toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
+createSVGPathSegLinetoVerticalRelUnsafe ::
+                                        (MonadDOM m, HasCallStack) =>
+                                          SVGPathElement -> Float -> m SVGPathSegLinetoVerticalRel
+createSVGPathSegLinetoVerticalRelUnsafe self y
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegLinetoVerticalRel" [toJSVal y]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
 createSVGPathSegLinetoVerticalRelUnchecked ::
                                            (MonadDOM m) =>
                                              SVGPathElement ->
@@ -627,6 +855,21 @@
             [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
+createSVGPathSegCurvetoCubicSmoothAbsUnsafe ::
+                                            (MonadDOM m, HasCallStack) =>
+                                              SVGPathElement ->
+                                                Float ->
+                                                  Float ->
+                                                    Float ->
+                                                      Float -> m SVGPathSegCurvetoCubicSmoothAbs
+createSVGPathSegCurvetoCubicSmoothAbsUnsafe self x y x2 y2
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegCurvetoCubicSmoothAbs"
+           [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
 createSVGPathSegCurvetoCubicSmoothAbsUnchecked ::
                                                (MonadDOM m) =>
                                                  SVGPathElement ->
@@ -665,6 +908,21 @@
             [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
+createSVGPathSegCurvetoCubicSmoothRelUnsafe ::
+                                            (MonadDOM m, HasCallStack) =>
+                                              SVGPathElement ->
+                                                Float ->
+                                                  Float ->
+                                                    Float ->
+                                                      Float -> m SVGPathSegCurvetoCubicSmoothRel
+createSVGPathSegCurvetoCubicSmoothRelUnsafe self x y x2 y2
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegCurvetoCubicSmoothRel"
+           [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
 createSVGPathSegCurvetoCubicSmoothRelUnchecked ::
                                                (MonadDOM m) =>
                                                  SVGPathElement ->
@@ -701,6 +959,19 @@
             [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
+createSVGPathSegCurvetoQuadraticSmoothAbsUnsafe ::
+                                                (MonadDOM m, HasCallStack) =>
+                                                  SVGPathElement ->
+                                                    Float ->
+                                                      Float -> m SVGPathSegCurvetoQuadraticSmoothAbs
+createSVGPathSegCurvetoQuadraticSmoothAbsUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegCurvetoQuadraticSmoothAbs"
+           [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
 createSVGPathSegCurvetoQuadraticSmoothAbsUnchecked ::
                                                    (MonadDOM m) =>
                                                      SVGPathElement ->
@@ -736,6 +1007,19 @@
             [toJSVal x, toJSVal y]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
+createSVGPathSegCurvetoQuadraticSmoothRelUnsafe ::
+                                                (MonadDOM m, HasCallStack) =>
+                                                  SVGPathElement ->
+                                                    Float ->
+                                                      Float -> m SVGPathSegCurvetoQuadraticSmoothRel
+createSVGPathSegCurvetoQuadraticSmoothRelUnsafe self x y
+  = liftDOM
+      (((self ^. jsf "createSVGPathSegCurvetoQuadraticSmoothRel"
+           [toJSVal x, toJSVal y])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
 createSVGPathSegCurvetoQuadraticSmoothRelUnchecked ::
                                                    (MonadDOM m) =>
                                                      SVGPathElement ->
@@ -755,6 +1039,14 @@
   = liftDOM ((self ^. js "pathLength") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathLength Mozilla SVGPathElement.pathLength documentation> 
+getPathLengthUnsafe ::
+                    (MonadDOM m, HasCallStack) => SVGPathElement -> m SVGAnimatedNumber
+getPathLengthUnsafe self
+  = liftDOM
+      (((self ^. js "pathLength") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathLength Mozilla SVGPathElement.pathLength documentation> 
 getPathLengthUnchecked ::
                        (MonadDOM m) => SVGPathElement -> m SVGAnimatedNumber
 getPathLengthUnchecked self
@@ -767,6 +1059,14 @@
   = liftDOM ((self ^. js "pathSegList") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathSegList Mozilla SVGPathElement.pathSegList documentation> 
+getPathSegListUnsafe ::
+                     (MonadDOM m, HasCallStack) => SVGPathElement -> m SVGPathSegList
+getPathSegListUnsafe self
+  = liftDOM
+      (((self ^. js "pathSegList") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathSegList Mozilla SVGPathElement.pathSegList documentation> 
 getPathSegListUnchecked ::
                         (MonadDOM m) => SVGPathElement -> m SVGPathSegList
 getPathSegListUnchecked self
@@ -779,6 +1079,14 @@
   = liftDOM ((self ^. js "normalizedPathSegList") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.normalizedPathSegList Mozilla SVGPathElement.normalizedPathSegList documentation> 
+getNormalizedPathSegListUnsafe ::
+                               (MonadDOM m, HasCallStack) => SVGPathElement -> m SVGPathSegList
+getNormalizedPathSegListUnsafe self
+  = liftDOM
+      (((self ^. js "normalizedPathSegList") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.normalizedPathSegList Mozilla SVGPathElement.normalizedPathSegList documentation> 
 getNormalizedPathSegListUnchecked ::
                                   (MonadDOM m) => SVGPathElement -> m SVGPathSegList
 getNormalizedPathSegListUnchecked self
@@ -792,6 +1100,14 @@
   = liftDOM ((self ^. js "animatedPathSegList") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedPathSegList Mozilla SVGPathElement.animatedPathSegList documentation> 
+getAnimatedPathSegListUnsafe ::
+                             (MonadDOM m, HasCallStack) => SVGPathElement -> m SVGPathSegList
+getAnimatedPathSegListUnsafe self
+  = liftDOM
+      (((self ^. js "animatedPathSegList") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedPathSegList Mozilla SVGPathElement.animatedPathSegList documentation> 
 getAnimatedPathSegListUnchecked ::
                                 (MonadDOM m) => SVGPathElement -> m SVGPathSegList
 getAnimatedPathSegListUnchecked self
@@ -804,6 +1120,15 @@
 getAnimatedNormalizedPathSegList self
   = liftDOM
       ((self ^. js "animatedNormalizedPathSegList") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedNormalizedPathSegList Mozilla SVGPathElement.animatedNormalizedPathSegList documentation> 
+getAnimatedNormalizedPathSegListUnsafe ::
+                                       (MonadDOM m, HasCallStack) =>
+                                         SVGPathElement -> m SVGPathSegList
+getAnimatedNormalizedPathSegListUnsafe self
+  = liftDOM
+      (((self ^. js "animatedNormalizedPathSegList") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedNormalizedPathSegList Mozilla SVGPathElement.animatedNormalizedPathSegList documentation> 
 getAnimatedNormalizedPathSegListUnchecked ::
diff --git a/src/JSDOM/Generated/SVGPathSeg.hs b/src/JSDOM/Generated/SVGPathSeg.hs
--- a/src/JSDOM/Generated/SVGPathSeg.hs
+++ b/src/JSDOM/Generated/SVGPathSeg.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSeg
        (pattern PATHSEG_UNKNOWN, pattern PATHSEG_CLOSEPATH,
@@ -16,10 +19,11 @@
         pattern PATHSEG_CURVETO_CUBIC_SMOOTH_REL,
         pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,
         pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, getPathSegType,
-        getPathSegTypeAsLetter, SVGPathSeg, castToSVGPathSeg,
-        gTypeSVGPathSeg, IsSVGPathSeg, toSVGPathSeg)
+        getPathSegTypeAsLetter, SVGPathSeg(..), gTypeSVGPathSeg,
+        IsSVGPathSeg, toSVGPathSeg)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -30,6 +34,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern PATHSEG_UNKNOWN = 0
 pattern PATHSEG_CLOSEPATH = 1
 pattern PATHSEG_MOVETO_ABS = 2
diff --git a/src/JSDOM/Generated/SVGPathSegArcAbs.hs b/src/JSDOM/Generated/SVGPathSegArcAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegArcAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegArcAbs.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegArcAbs
        (setX, getX, setY, getY, setR1, getR1, setR2, getR2, setAngle,
         getAngle, setLargeArcFlag, getLargeArcFlag, setSweepFlag,
-        getSweepFlag, SVGPathSegArcAbs, castToSVGPathSegArcAbs,
-        gTypeSVGPathSegArcAbs)
+        getSweepFlag, SVGPathSegArcAbs(..), gTypeSVGPathSegArcAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
 setX :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGPathSegArcRel.hs b/src/JSDOM/Generated/SVGPathSegArcRel.hs
--- a/src/JSDOM/Generated/SVGPathSegArcRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegArcRel.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegArcRel
        (setX, getX, setY, getY, setR1, getR1, setR2, getR2, setAngle,
         getAngle, setLargeArcFlag, getLargeArcFlag, setSweepFlag,
-        getSweepFlag, SVGPathSegArcRel, castToSVGPathSegArcRel,
-        gTypeSVGPathSegArcRel)
+        getSweepFlag, SVGPathSegArcRel(..), gTypeSVGPathSegArcRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
 setX :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegCurvetoCubicAbs
        (setX, getX, setY, getY, setX1, getX1, setY1, getY1, setX2, getX2,
-        setY2, getY2, SVGPathSegCurvetoCubicAbs,
-        castToSVGPathSegCurvetoCubicAbs, gTypeSVGPathSegCurvetoCubicAbs)
+        setY2, getY2, SVGPathSegCurvetoCubicAbs(..),
+        gTypeSVGPathSegCurvetoCubicAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
 setX :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegCurvetoCubicRel
        (setX, getX, setY, getY, setX1, getX1, setY1, getY1, setX2, getX2,
-        setY2, getY2, SVGPathSegCurvetoCubicRel,
-        castToSVGPathSegCurvetoCubicRel, gTypeSVGPathSegCurvetoCubicRel)
+        setY2, getY2, SVGPathSegCurvetoCubicRel(..),
+        gTypeSVGPathSegCurvetoCubicRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
 setX :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegCurvetoCubicSmoothAbs
        (setX, getX, setY, getY, setX2, getX2, setY2, getY2,
-        SVGPathSegCurvetoCubicSmoothAbs,
-        castToSVGPathSegCurvetoCubicSmoothAbs,
+        SVGPathSegCurvetoCubicSmoothAbs(..),
         gTypeSVGPathSegCurvetoCubicSmoothAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
 setX ::
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegCurvetoCubicSmoothRel
        (setX, getX, setY, getY, setX2, getX2, setY2, getY2,
-        SVGPathSegCurvetoCubicSmoothRel,
-        castToSVGPathSegCurvetoCubicSmoothRel,
+        SVGPathSegCurvetoCubicSmoothRel(..),
         gTypeSVGPathSegCurvetoCubicSmoothRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
 setX ::
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegCurvetoQuadraticAbs
        (setX, getX, setY, getY, setX1, getX1, setY1, getY1,
-        SVGPathSegCurvetoQuadraticAbs, castToSVGPathSegCurvetoQuadraticAbs,
+        SVGPathSegCurvetoQuadraticAbs(..),
         gTypeSVGPathSegCurvetoQuadraticAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
 setX ::
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegCurvetoQuadraticRel
        (setX, getX, setY, getY, setX1, getX1, setY1, getY1,
-        SVGPathSegCurvetoQuadraticRel, castToSVGPathSegCurvetoQuadraticRel,
+        SVGPathSegCurvetoQuadraticRel(..),
         gTypeSVGPathSegCurvetoQuadraticRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
 setX ::
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
-       (setX, getX, setY, getY, SVGPathSegCurvetoQuadraticSmoothAbs,
-        castToSVGPathSegCurvetoQuadraticSmoothAbs,
+       (setX, getX, setY, getY, SVGPathSegCurvetoQuadraticSmoothAbs(..),
         gTypeSVGPathSegCurvetoQuadraticSmoothAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
 setX ::
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegCurvetoQuadraticSmoothRel
-       (setX, getX, setY, getY, SVGPathSegCurvetoQuadraticSmoothRel,
-        castToSVGPathSegCurvetoQuadraticSmoothRel,
+       (setX, getX, setY, getY, SVGPathSegCurvetoQuadraticSmoothRel(..),
         gTypeSVGPathSegCurvetoQuadraticSmoothRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
 setX ::
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegLinetoAbs
-       (setX, getX, setY, getY, SVGPathSegLinetoAbs,
-        castToSVGPathSegLinetoAbs, gTypeSVGPathSegLinetoAbs)
+       (setX, getX, setY, getY, SVGPathSegLinetoAbs(..),
+        gTypeSVGPathSegLinetoAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
 setX :: (MonadDOM m) => SVGPathSegLinetoAbs -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegLinetoHorizontalAbs
-       (setX, getX, SVGPathSegLinetoHorizontalAbs,
-        castToSVGPathSegLinetoHorizontalAbs,
+       (setX, getX, SVGPathSegLinetoHorizontalAbs(..),
         gTypeSVGPathSegLinetoHorizontalAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
 setX ::
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegLinetoHorizontalRel
-       (setX, getX, SVGPathSegLinetoHorizontalRel,
-        castToSVGPathSegLinetoHorizontalRel,
+       (setX, getX, SVGPathSegLinetoHorizontalRel(..),
         gTypeSVGPathSegLinetoHorizontalRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
 setX ::
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoRel.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoRel.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegLinetoRel
-       (setX, getX, setY, getY, SVGPathSegLinetoRel,
-        castToSVGPathSegLinetoRel, gTypeSVGPathSegLinetoRel)
+       (setX, getX, setY, getY, SVGPathSegLinetoRel(..),
+        gTypeSVGPathSegLinetoRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
 setX :: (MonadDOM m) => SVGPathSegLinetoRel -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegLinetoVerticalAbs
-       (setY, getY, SVGPathSegLinetoVerticalAbs,
-        castToSVGPathSegLinetoVerticalAbs,
+       (setY, getY, SVGPathSegLinetoVerticalAbs(..),
         gTypeSVGPathSegLinetoVerticalAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
 setY ::
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs
--- a/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegLinetoVerticalRel
-       (setY, getY, SVGPathSegLinetoVerticalRel,
-        castToSVGPathSegLinetoVerticalRel,
+       (setY, getY, SVGPathSegLinetoVerticalRel(..),
         gTypeSVGPathSegLinetoVerticalRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
 setY ::
diff --git a/src/JSDOM/Generated/SVGPathSegList.hs b/src/JSDOM/Generated/SVGPathSegList.hs
--- a/src/JSDOM/Generated/SVGPathSegList.hs
+++ b/src/JSDOM/Generated/SVGPathSegList.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegList
-       (clear, initialize, initialize_, initializeUnchecked, getItem,
-        getItem_, getItemUnchecked, insertItemBefore, insertItemBefore_,
-        insertItemBeforeUnchecked, replaceItem, replaceItem_,
-        replaceItemUnchecked, removeItem, removeItem_, removeItemUnchecked,
-        appendItem, appendItem_, appendItemUnchecked, getNumberOfItems,
-        SVGPathSegList, castToSVGPathSegList, gTypeSVGPathSegList)
+       (clear, initialize, initialize_, initializeUnsafe,
+        initializeUnchecked, getItem, getItem_, getItemUnsafe,
+        getItemUnchecked, insertItemBefore, insertItemBefore_,
+        insertItemBeforeUnsafe, insertItemBeforeUnchecked, replaceItem,
+        replaceItem_, replaceItemUnsafe, replaceItemUnchecked, removeItem,
+        removeItem_, removeItemUnsafe, removeItemUnchecked, appendItem,
+        appendItem_, appendItemUnsafe, appendItemUnchecked,
+        getNumberOfItems, SVGPathSegList(..), gTypeSVGPathSegList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.clear Mozilla SVGPathSegList.clear documentation> 
 clear :: (MonadDOM m) => SVGPathSegList -> m ()
@@ -40,6 +56,15 @@
   = liftDOM (void (self ^. jsf "initialize" [toJSVal newItem]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
+initializeUnsafe ::
+                 (MonadDOM m, IsSVGPathSeg newItem, HasCallStack) =>
+                   SVGPathSegList -> Maybe newItem -> m SVGPathSeg
+initializeUnsafe self newItem
+  = liftDOM
+      (((self ^. jsf "initialize" [toJSVal newItem]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
 initializeUnchecked ::
                     (MonadDOM m, IsSVGPathSeg newItem) =>
                       SVGPathSegList -> Maybe newItem -> m SVGPathSeg
@@ -60,6 +85,15 @@
   = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
+getItemUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGPathSegList -> Word -> m SVGPathSeg
+getItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
 getItemUnchecked ::
                  (MonadDOM m) => SVGPathSegList -> Word -> m SVGPathSeg
 getItemUnchecked self index
@@ -85,6 +119,16 @@
          (self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
+insertItemBeforeUnsafe ::
+                       (MonadDOM m, IsSVGPathSeg newItem, HasCallStack) =>
+                         SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
+insertItemBeforeUnsafe self newItem index
+  = liftDOM
+      (((self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
 insertItemBeforeUnchecked ::
                           (MonadDOM m, IsSVGPathSeg newItem) =>
                             SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
@@ -111,6 +155,16 @@
       (void (self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
+replaceItemUnsafe ::
+                  (MonadDOM m, IsSVGPathSeg newItem, HasCallStack) =>
+                    SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
+replaceItemUnsafe self newItem index
+  = liftDOM
+      (((self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
 replaceItemUnchecked ::
                      (MonadDOM m, IsSVGPathSeg newItem) =>
                        SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
@@ -132,6 +186,15 @@
   = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
+removeItemUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGPathSegList -> Word -> m SVGPathSeg
+removeItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
 removeItemUnchecked ::
                     (MonadDOM m) => SVGPathSegList -> Word -> m SVGPathSeg
 removeItemUnchecked self index
@@ -152,6 +215,15 @@
               SVGPathSegList -> Maybe newItem -> m ()
 appendItem_ self newItem
   = liftDOM (void (self ^. jsf "appendItem" [toJSVal newItem]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
+appendItemUnsafe ::
+                 (MonadDOM m, IsSVGPathSeg newItem, HasCallStack) =>
+                   SVGPathSegList -> Maybe newItem -> m SVGPathSeg
+appendItemUnsafe self newItem
+  = liftDOM
+      (((self ^. jsf "appendItem" [toJSVal newItem]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
 appendItemUnchecked ::
diff --git a/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs b/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs
--- a/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs
+++ b/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegMovetoAbs
-       (setX, getX, setY, getY, SVGPathSegMovetoAbs,
-        castToSVGPathSegMovetoAbs, gTypeSVGPathSegMovetoAbs)
+       (setX, getX, setY, getY, SVGPathSegMovetoAbs(..),
+        gTypeSVGPathSegMovetoAbs)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
 setX :: (MonadDOM m) => SVGPathSegMovetoAbs -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGPathSegMovetoRel.hs b/src/JSDOM/Generated/SVGPathSegMovetoRel.hs
--- a/src/JSDOM/Generated/SVGPathSegMovetoRel.hs
+++ b/src/JSDOM/Generated/SVGPathSegMovetoRel.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPathSegMovetoRel
-       (setX, getX, setY, getY, SVGPathSegMovetoRel,
-        castToSVGPathSegMovetoRel, gTypeSVGPathSegMovetoRel)
+       (setX, getX, setY, getY, SVGPathSegMovetoRel(..),
+        gTypeSVGPathSegMovetoRel)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
 setX :: (MonadDOM m) => SVGPathSegMovetoRel -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGPatternElement.hs b/src/JSDOM/Generated/SVGPatternElement.hs
--- a/src/JSDOM/Generated/SVGPatternElement.hs
+++ b/src/JSDOM/Generated/SVGPatternElement.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPatternElement
-       (getPatternUnits, getPatternUnitsUnchecked, getPatternContentUnits,
+       (getPatternUnits, getPatternUnitsUnsafe, getPatternUnitsUnchecked,
+        getPatternContentUnits, getPatternContentUnitsUnsafe,
         getPatternContentUnitsUnchecked, getPatternTransform,
-        getPatternTransformUnchecked, getX, getXUnchecked, getY,
-        getYUnchecked, getWidth, getWidthUnchecked, getHeight,
-        getHeightUnchecked, SVGPatternElement, castToSVGPatternElement,
+        getPatternTransformUnsafe, getPatternTransformUnchecked, getX,
+        getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getWidth, getWidthUnsafe, getWidthUnchecked, getHeight,
+        getHeightUnsafe, getHeightUnchecked, SVGPatternElement(..),
         gTypeSVGPatternElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
 getPatternUnits ::
@@ -28,6 +44,15 @@
   = liftDOM ((self ^. js "patternUnits") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
+getPatternUnitsUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        SVGPatternElement -> m SVGAnimatedEnumeration
+getPatternUnitsUnsafe self
+  = liftDOM
+      (((self ^. js "patternUnits") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
 getPatternUnitsUnchecked ::
                          (MonadDOM m) => SVGPatternElement -> m SVGAnimatedEnumeration
 getPatternUnitsUnchecked self
@@ -41,6 +66,15 @@
   = liftDOM ((self ^. js "patternContentUnits") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternContentUnits Mozilla SVGPatternElement.patternContentUnits documentation> 
+getPatternContentUnitsUnsafe ::
+                             (MonadDOM m, HasCallStack) =>
+                               SVGPatternElement -> m SVGAnimatedEnumeration
+getPatternContentUnitsUnsafe self
+  = liftDOM
+      (((self ^. js "patternContentUnits") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternContentUnits Mozilla SVGPatternElement.patternContentUnits documentation> 
 getPatternContentUnitsUnchecked ::
                                 (MonadDOM m) => SVGPatternElement -> m SVGAnimatedEnumeration
 getPatternContentUnitsUnchecked self
@@ -55,6 +89,15 @@
   = liftDOM ((self ^. js "patternTransform") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternTransform Mozilla SVGPatternElement.patternTransform documentation> 
+getPatternTransformUnsafe ::
+                          (MonadDOM m, HasCallStack) =>
+                            SVGPatternElement -> m SVGAnimatedTransformList
+getPatternTransformUnsafe self
+  = liftDOM
+      (((self ^. js "patternTransform") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternTransform Mozilla SVGPatternElement.patternTransform documentation> 
 getPatternTransformUnchecked ::
                              (MonadDOM m) => SVGPatternElement -> m SVGAnimatedTransformList
 getPatternTransformUnchecked self
@@ -66,6 +109,15 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.x Mozilla SVGPatternElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGPatternElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.x Mozilla SVGPatternElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -77,6 +129,15 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.y Mozilla SVGPatternElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGPatternElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.y Mozilla SVGPatternElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
 getYUnchecked self
@@ -88,6 +149,15 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.width Mozilla SVGPatternElement.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 SVGPatternElement -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.width Mozilla SVGPatternElement.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
 getWidthUnchecked self
@@ -97,6 +167,15 @@
 getHeight ::
           (MonadDOM m) => SVGPatternElement -> m (Maybe SVGAnimatedLength)
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.height Mozilla SVGPatternElement.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGPatternElement -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.height Mozilla SVGPatternElement.height documentation> 
 getHeightUnchecked ::
diff --git a/src/JSDOM/Generated/SVGPoint.hs b/src/JSDOM/Generated/SVGPoint.hs
--- a/src/JSDOM/Generated/SVGPoint.hs
+++ b/src/JSDOM/Generated/SVGPoint.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPoint
-       (matrixTransform, matrixTransform_, matrixTransformUnchecked, setX,
-        getX, setY, getY, SVGPoint, castToSVGPoint, gTypeSVGPoint)
+       (matrixTransform, matrixTransform_, matrixTransformUnsafe,
+        matrixTransformUnchecked, setX, getX, setY, getY, SVGPoint(..),
+        gTypeSVGPoint)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
 matrixTransform ::
@@ -28,6 +43,15 @@
                  (MonadDOM m) => SVGPoint -> Maybe SVGMatrix -> m ()
 matrixTransform_ self matrix
   = liftDOM (void (self ^. jsf "matrixTransform" [toJSVal matrix]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
+matrixTransformUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        SVGPoint -> Maybe SVGMatrix -> m SVGPoint
+matrixTransformUnsafe self matrix
+  = liftDOM
+      (((self ^. jsf "matrixTransform" [toJSVal matrix]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
 matrixTransformUnchecked ::
diff --git a/src/JSDOM/Generated/SVGPointList.hs b/src/JSDOM/Generated/SVGPointList.hs
--- a/src/JSDOM/Generated/SVGPointList.hs
+++ b/src/JSDOM/Generated/SVGPointList.hs
@@ -1,14 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPointList
-       (clear, initialize, initialize_, initializeUnchecked, getItem,
-        getItem_, getItemUnchecked, insertItemBefore, insertItemBefore_,
-        insertItemBeforeUnchecked, replaceItem, replaceItem_,
-        replaceItemUnchecked, removeItem, removeItem_, removeItemUnchecked,
-        appendItem, appendItem_, appendItemUnchecked, getNumberOfItems,
-        SVGPointList, castToSVGPointList, gTypeSVGPointList)
+       (clear, initialize, initialize_, initializeUnsafe,
+        initializeUnchecked, getItem, getItem_, getItemUnsafe,
+        getItemUnchecked, insertItemBefore, insertItemBefore_,
+        insertItemBeforeUnsafe, insertItemBeforeUnchecked, replaceItem,
+        replaceItem_, replaceItemUnsafe, replaceItemUnchecked, removeItem,
+        removeItem_, removeItemUnsafe, removeItemUnchecked, appendItem,
+        appendItem_, appendItemUnsafe, appendItemUnchecked,
+        getNumberOfItems, SVGPointList(..), gTypeSVGPointList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.clear Mozilla SVGPointList.clear documentation> 
 clear :: (MonadDOM m) => SVGPointList -> m ()
@@ -38,6 +54,15 @@
   = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
+initializeUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGPointList -> Maybe SVGPoint -> m SVGPoint
+initializeUnsafe self item
+  = liftDOM
+      (((self ^. jsf "initialize" [toJSVal item]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
 initializeUnchecked ::
                     (MonadDOM m) => SVGPointList -> Maybe SVGPoint -> m SVGPoint
 initializeUnchecked self item
@@ -56,6 +81,14 @@
   = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
+getItemUnsafe ::
+              (MonadDOM m, HasCallStack) => SVGPointList -> Word -> m SVGPoint
+getItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
 getItemUnchecked ::
                  (MonadDOM m) => SVGPointList -> Word -> m SVGPoint
 getItemUnchecked self index
@@ -80,6 +113,16 @@
          (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
+insertItemBeforeUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGPointList -> Maybe SVGPoint -> Word -> m SVGPoint
+insertItemBeforeUnsafe self item index
+  = liftDOM
+      (((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
 insertItemBeforeUnchecked ::
                           (MonadDOM m) =>
                             SVGPointList -> Maybe SVGPoint -> Word -> m SVGPoint
@@ -105,6 +148,16 @@
       (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
+replaceItemUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    SVGPointList -> Maybe SVGPoint -> Word -> m SVGPoint
+replaceItemUnsafe self item index
+  = liftDOM
+      (((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
 replaceItemUnchecked ::
                      (MonadDOM m) =>
                        SVGPointList -> Maybe SVGPoint -> Word -> m SVGPoint
@@ -126,6 +179,14 @@
   = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
+removeItemUnsafe ::
+                 (MonadDOM m, HasCallStack) => SVGPointList -> Word -> m SVGPoint
+removeItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
 removeItemUnchecked ::
                     (MonadDOM m) => SVGPointList -> Word -> m SVGPoint
 removeItemUnchecked self index
@@ -144,6 +205,15 @@
             (MonadDOM m) => SVGPointList -> Maybe SVGPoint -> m ()
 appendItem_ self item
   = liftDOM (void (self ^. jsf "appendItem" [toJSVal item]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
+appendItemUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGPointList -> Maybe SVGPoint -> m SVGPoint
+appendItemUnsafe self item
+  = liftDOM
+      (((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
 appendItemUnchecked ::
diff --git a/src/JSDOM/Generated/SVGPolygonElement.hs b/src/JSDOM/Generated/SVGPolygonElement.hs
--- a/src/JSDOM/Generated/SVGPolygonElement.hs
+++ b/src/JSDOM/Generated/SVGPolygonElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPolygonElement
-       (getPoints, getPointsUnchecked, getAnimatedPoints,
-        getAnimatedPointsUnchecked, SVGPolygonElement,
-        castToSVGPolygonElement, gTypeSVGPolygonElement)
+       (getPoints, getPointsUnsafe, getPointsUnchecked, getAnimatedPoints,
+        getAnimatedPointsUnsafe, getAnimatedPointsUnchecked,
+        SVGPolygonElement(..), gTypeSVGPolygonElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
 getPoints ::
@@ -23,6 +37,14 @@
 getPoints self = liftDOM ((self ^. js "points") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
+getPointsUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGPolygonElement -> m SVGPointList
+getPointsUnsafe self
+  = liftDOM
+      (((self ^. js "points") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
 getPointsUnchecked ::
                    (MonadDOM m) => SVGPolygonElement -> m SVGPointList
 getPointsUnchecked self
@@ -33,6 +55,14 @@
                   (MonadDOM m) => SVGPolygonElement -> m (Maybe SVGPointList)
 getAnimatedPoints self
   = liftDOM ((self ^. js "animatedPoints") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.animatedPoints Mozilla SVGPolygonElement.animatedPoints documentation> 
+getAnimatedPointsUnsafe ::
+                        (MonadDOM m, HasCallStack) => SVGPolygonElement -> m SVGPointList
+getAnimatedPointsUnsafe self
+  = liftDOM
+      (((self ^. js "animatedPoints") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.animatedPoints Mozilla SVGPolygonElement.animatedPoints documentation> 
 getAnimatedPointsUnchecked ::
diff --git a/src/JSDOM/Generated/SVGPolylineElement.hs b/src/JSDOM/Generated/SVGPolylineElement.hs
--- a/src/JSDOM/Generated/SVGPolylineElement.hs
+++ b/src/JSDOM/Generated/SVGPolylineElement.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPolylineElement
-       (getPoints, getPointsUnchecked, getAnimatedPoints,
-        getAnimatedPointsUnchecked, SVGPolylineElement,
-        castToSVGPolylineElement, gTypeSVGPolylineElement)
+       (getPoints, getPointsUnsafe, getPointsUnchecked, getAnimatedPoints,
+        getAnimatedPointsUnsafe, getAnimatedPointsUnchecked,
+        SVGPolylineElement(..), gTypeSVGPolylineElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
 getPoints ::
@@ -23,6 +37,14 @@
 getPoints self = liftDOM ((self ^. js "points") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
+getPointsUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGPolylineElement -> m SVGPointList
+getPointsUnsafe self
+  = liftDOM
+      (((self ^. js "points") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
 getPointsUnchecked ::
                    (MonadDOM m) => SVGPolylineElement -> m SVGPointList
 getPointsUnchecked self
@@ -33,6 +55,14 @@
                   (MonadDOM m) => SVGPolylineElement -> m (Maybe SVGPointList)
 getAnimatedPoints self
   = liftDOM ((self ^. js "animatedPoints") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.animatedPoints Mozilla SVGPolylineElement.animatedPoints documentation> 
+getAnimatedPointsUnsafe ::
+                        (MonadDOM m, HasCallStack) => SVGPolylineElement -> m SVGPointList
+getAnimatedPointsUnsafe self
+  = liftDOM
+      (((self ^. js "animatedPoints") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.animatedPoints Mozilla SVGPolylineElement.animatedPoints documentation> 
 getAnimatedPointsUnchecked ::
diff --git a/src/JSDOM/Generated/SVGPreserveAspectRatio.hs b/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
--- a/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
+++ b/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGPreserveAspectRatio
        (pattern SVG_PRESERVEASPECTRATIO_UNKNOWN,
@@ -14,10 +17,11 @@
         pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX,
         pattern SVG_MEETORSLICE_UNKNOWN, pattern SVG_MEETORSLICE_MEET,
         pattern SVG_MEETORSLICE_SLICE, setAlign, getAlign, setMeetOrSlice,
-        getMeetOrSlice, SVGPreserveAspectRatio,
-        castToSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio)
+        getMeetOrSlice, SVGPreserveAspectRatio(..),
+        gTypeSVGPreserveAspectRatio)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -28,6 +32,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_PRESERVEASPECTRATIO_UNKNOWN = 0
 pattern SVG_PRESERVEASPECTRATIO_NONE = 1
 pattern SVG_PRESERVEASPECTRATIO_XMINYMIN = 2
diff --git a/src/JSDOM/Generated/SVGRadialGradientElement.hs b/src/JSDOM/Generated/SVGRadialGradientElement.hs
--- a/src/JSDOM/Generated/SVGRadialGradientElement.hs
+++ b/src/JSDOM/Generated/SVGRadialGradientElement.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGRadialGradientElement
-       (getCx, getCxUnchecked, getCy, getCyUnchecked, getR, getRUnchecked,
-        getFx, getFxUnchecked, getFy, getFyUnchecked, getFr,
-        getFrUnchecked, SVGRadialGradientElement,
-        castToSVGRadialGradientElement, gTypeSVGRadialGradientElement)
+       (getCx, getCxUnsafe, getCxUnchecked, getCy, getCyUnsafe,
+        getCyUnchecked, getR, getRUnsafe, getRUnchecked, getFx,
+        getFxUnsafe, getFxUnchecked, getFy, getFyUnsafe, getFyUnchecked,
+        getFr, getFrUnsafe, getFrUnchecked, SVGRadialGradientElement(..),
+        gTypeSVGRadialGradientElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
 getCx ::
@@ -25,6 +40,15 @@
 getCx self = liftDOM ((self ^. js "cx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
+getCxUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGRadialGradientElement -> m SVGAnimatedLength
+getCxUnsafe self
+  = liftDOM
+      (((self ^. js "cx") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
 getCxUnchecked ::
                (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
 getCxUnchecked self
@@ -37,6 +61,15 @@
 getCy self = liftDOM ((self ^. js "cy") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cy Mozilla SVGRadialGradientElement.cy documentation> 
+getCyUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGRadialGradientElement -> m SVGAnimatedLength
+getCyUnsafe self
+  = liftDOM
+      (((self ^. js "cy") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cy Mozilla SVGRadialGradientElement.cy documentation> 
 getCyUnchecked ::
                (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
 getCyUnchecked self
@@ -49,6 +82,15 @@
 getR self = liftDOM ((self ^. js "r") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.r Mozilla SVGRadialGradientElement.r documentation> 
+getRUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SVGRadialGradientElement -> m SVGAnimatedLength
+getRUnsafe self
+  = liftDOM
+      (((self ^. js "r") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.r Mozilla SVGRadialGradientElement.r documentation> 
 getRUnchecked ::
               (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
 getRUnchecked self
@@ -61,6 +103,15 @@
 getFx self = liftDOM ((self ^. js "fx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fx Mozilla SVGRadialGradientElement.fx documentation> 
+getFxUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGRadialGradientElement -> m SVGAnimatedLength
+getFxUnsafe self
+  = liftDOM
+      (((self ^. js "fx") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fx Mozilla SVGRadialGradientElement.fx documentation> 
 getFxUnchecked ::
                (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
 getFxUnchecked self
@@ -73,6 +124,15 @@
 getFy self = liftDOM ((self ^. js "fy") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fy Mozilla SVGRadialGradientElement.fy documentation> 
+getFyUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGRadialGradientElement -> m SVGAnimatedLength
+getFyUnsafe self
+  = liftDOM
+      (((self ^. js "fy") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fy Mozilla SVGRadialGradientElement.fy documentation> 
 getFyUnchecked ::
                (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
 getFyUnchecked self
@@ -83,6 +143,15 @@
       (MonadDOM m) =>
         SVGRadialGradientElement -> m (Maybe SVGAnimatedLength)
 getFr self = liftDOM ((self ^. js "fr") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fr Mozilla SVGRadialGradientElement.fr documentation> 
+getFrUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              SVGRadialGradientElement -> m SVGAnimatedLength
+getFrUnsafe self
+  = liftDOM
+      (((self ^. js "fr") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fr Mozilla SVGRadialGradientElement.fr documentation> 
 getFrUnchecked ::
diff --git a/src/JSDOM/Generated/SVGRect.hs b/src/JSDOM/Generated/SVGRect.hs
--- a/src/JSDOM/Generated/SVGRect.hs
+++ b/src/JSDOM/Generated/SVGRect.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGRect
        (setX, getX, setY, getY, setWidth, getWidth, setHeight, getHeight,
-        SVGRect, castToSVGRect, gTypeSVGRect)
+        SVGRect(..), gTypeSVGRect)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
 setX :: (MonadDOM m) => SVGRect -> Float -> m ()
diff --git a/src/JSDOM/Generated/SVGRectElement.hs b/src/JSDOM/Generated/SVGRectElement.hs
--- a/src/JSDOM/Generated/SVGRectElement.hs
+++ b/src/JSDOM/Generated/SVGRectElement.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGRectElement
-       (getX, getXUnchecked, getY, getYUnchecked, getWidth,
-        getWidthUnchecked, getHeight, getHeightUnchecked, getRx,
-        getRxUnchecked, getRy, getRyUnchecked, SVGRectElement,
-        castToSVGRectElement, gTypeSVGRectElement)
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getWidth, getWidthUnsafe, getWidthUnchecked, getHeight,
+        getHeightUnsafe, getHeightUnchecked, getRx, getRxUnsafe,
+        getRxUnchecked, getRy, getRyUnsafe, getRyUnchecked,
+        SVGRectElement(..), gTypeSVGRectElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
 getX ::
@@ -24,6 +39,14 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) => SVGRectElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -35,6 +58,14 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.y Mozilla SVGRectElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) => SVGRectElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.y Mozilla SVGRectElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
 getYUnchecked self
@@ -46,6 +77,14 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.width Mozilla SVGRectElement.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) => SVGRectElement -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.width Mozilla SVGRectElement.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
 getWidthUnchecked self
@@ -57,6 +96,14 @@
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.height Mozilla SVGRectElement.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGRectElement -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.height Mozilla SVGRectElement.height documentation> 
 getHeightUnchecked ::
                    (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
 getHeightUnchecked self
@@ -68,6 +115,14 @@
 getRx self = liftDOM ((self ^. js "rx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.rx Mozilla SVGRectElement.rx documentation> 
+getRxUnsafe ::
+            (MonadDOM m, HasCallStack) => SVGRectElement -> m SVGAnimatedLength
+getRxUnsafe self
+  = liftDOM
+      (((self ^. js "rx") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.rx Mozilla SVGRectElement.rx documentation> 
 getRxUnchecked ::
                (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
 getRxUnchecked self
@@ -77,6 +132,14 @@
 getRy ::
       (MonadDOM m) => SVGRectElement -> m (Maybe SVGAnimatedLength)
 getRy self = liftDOM ((self ^. js "ry") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.ry Mozilla SVGRectElement.ry documentation> 
+getRyUnsafe ::
+            (MonadDOM m, HasCallStack) => SVGRectElement -> m SVGAnimatedLength
+getRyUnsafe self
+  = liftDOM
+      (((self ^. js "ry") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.ry Mozilla SVGRectElement.ry documentation> 
 getRyUnchecked ::
diff --git a/src/JSDOM/Generated/SVGRenderingIntent.hs b/src/JSDOM/Generated/SVGRenderingIntent.hs
--- a/src/JSDOM/Generated/SVGRenderingIntent.hs
+++ b/src/JSDOM/Generated/SVGRenderingIntent.hs
@@ -1,14 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.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)
+        pattern RENDERING_INTENT_ABSOLUTE_COLORIMETRIC,
+        SVGRenderingIntent(..), gTypeSVGRenderingIntent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern RENDERING_INTENT_UNKNOWN = 0
 pattern RENDERING_INTENT_AUTO = 1
 pattern RENDERING_INTENT_PERCEPTUAL = 2
diff --git a/src/JSDOM/Generated/SVGSVGElement.hs b/src/JSDOM/Generated/SVGSVGElement.hs
--- a/src/JSDOM/Generated/SVGSVGElement.hs
+++ b/src/JSDOM/Generated/SVGSVGElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGSVGElement
        (suspendRedraw, suspendRedraw_, unsuspendRedraw,
@@ -6,30 +9,38 @@
         unpauseAnimations, animationsPaused, animationsPaused_,
         getCurrentTime, getCurrentTime_, setCurrentTime,
         getIntersectionList, getIntersectionList_,
-        getIntersectionListUnchecked, getEnclosureList, getEnclosureList_,
+        getIntersectionListUnsafe, getIntersectionListUnchecked,
+        getEnclosureList, getEnclosureList_, getEnclosureListUnsafe,
         getEnclosureListUnchecked, checkIntersection, checkIntersection_,
         checkEnclosure, checkEnclosure_, deselectAll, createSVGNumber,
-        createSVGNumber_, createSVGNumberUnchecked, createSVGLength,
-        createSVGLength_, createSVGLengthUnchecked, createSVGAngle,
-        createSVGAngle_, createSVGAngleUnchecked, createSVGPoint,
-        createSVGPoint_, createSVGPointUnchecked, createSVGMatrix,
-        createSVGMatrix_, createSVGMatrixUnchecked, createSVGRect,
-        createSVGRect_, createSVGRectUnchecked, createSVGTransform,
-        createSVGTransform_, createSVGTransformUnchecked,
-        createSVGTransformFromMatrix, createSVGTransformFromMatrix_,
+        createSVGNumber_, createSVGNumberUnsafe, createSVGNumberUnchecked,
+        createSVGLength, createSVGLength_, createSVGLengthUnsafe,
+        createSVGLengthUnchecked, createSVGAngle, createSVGAngle_,
+        createSVGAngleUnsafe, createSVGAngleUnchecked, createSVGPoint,
+        createSVGPoint_, createSVGPointUnsafe, createSVGPointUnchecked,
+        createSVGMatrix, createSVGMatrix_, createSVGMatrixUnsafe,
+        createSVGMatrixUnchecked, createSVGRect, createSVGRect_,
+        createSVGRectUnsafe, createSVGRectUnchecked, createSVGTransform,
+        createSVGTransform_, createSVGTransformUnsafe,
+        createSVGTransformUnchecked, createSVGTransformFromMatrix,
+        createSVGTransformFromMatrix_, createSVGTransformFromMatrixUnsafe,
         createSVGTransformFromMatrixUnchecked, getElementById,
-        getElementById_, getElementByIdUnchecked, getX, getXUnchecked,
-        getY, getYUnchecked, getWidth, getWidthUnchecked, getHeight,
-        getHeightUnchecked, setContentScriptType, getContentScriptType,
-        setContentStyleType, getContentStyleType, getViewport,
-        getViewportUnchecked, getPixelUnitToMillimeterX,
-        getPixelUnitToMillimeterY, getScreenPixelToMillimeterX,
-        getScreenPixelToMillimeterY, getUseCurrentView, getCurrentView,
+        getElementById_, getElementByIdUnsafe, getElementByIdUnchecked,
+        getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getWidth, getWidthUnsafe, getWidthUnchecked, getHeight,
+        getHeightUnsafe, getHeightUnchecked, setContentScriptType,
+        getContentScriptType, setContentStyleType, getContentStyleType,
+        getViewport, getViewportUnsafe, getViewportUnchecked,
+        getPixelUnitToMillimeterX, getPixelUnitToMillimeterY,
+        getScreenPixelToMillimeterX, getScreenPixelToMillimeterY,
+        getUseCurrentView, getCurrentView, getCurrentViewUnsafe,
         getCurrentViewUnchecked, setCurrentScale, getCurrentScale,
-        getCurrentTranslate, getCurrentTranslateUnchecked, SVGSVGElement,
-        castToSVGSVGElement, gTypeSVGSVGElement)
+        getCurrentTranslate, getCurrentTranslateUnsafe,
+        getCurrentTranslateUnchecked, SVGSVGElement(..),
+        gTypeSVGSVGElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -40,6 +51,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
 suspendRedraw :: (MonadDOM m) => SVGSVGElement -> Word -> m Word
@@ -129,6 +150,18 @@
             [toJSVal rect, toJSVal referenceElement]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
+getIntersectionListUnsafe ::
+                          (MonadDOM m, IsSVGElement referenceElement, HasCallStack) =>
+                            SVGSVGElement ->
+                              Maybe SVGRect -> Maybe referenceElement -> m NodeList
+getIntersectionListUnsafe self rect referenceElement
+  = liftDOM
+      (((self ^. jsf "getIntersectionList"
+           [toJSVal rect, toJSVal referenceElement])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
 getIntersectionListUnchecked ::
                              (MonadDOM m, IsSVGElement referenceElement) =>
                                SVGSVGElement ->
@@ -161,6 +194,18 @@
             [toJSVal rect, toJSVal referenceElement]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
+getEnclosureListUnsafe ::
+                       (MonadDOM m, IsSVGElement referenceElement, HasCallStack) =>
+                         SVGSVGElement ->
+                           Maybe SVGRect -> Maybe referenceElement -> m NodeList
+getEnclosureListUnsafe self rect referenceElement
+  = liftDOM
+      (((self ^. jsf "getEnclosureList"
+           [toJSVal rect, toJSVal referenceElement])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
 getEnclosureListUnchecked ::
                           (MonadDOM m, IsSVGElement referenceElement) =>
                             SVGSVGElement ->
@@ -223,6 +268,14 @@
   = liftDOM (void (self ^. jsf "createSVGNumber" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
+createSVGNumberUnsafe ::
+                      (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGNumber
+createSVGNumberUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSVGNumber" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
 createSVGNumberUnchecked ::
                          (MonadDOM m) => SVGSVGElement -> m SVGNumber
 createSVGNumberUnchecked self
@@ -241,6 +294,14 @@
   = liftDOM (void (self ^. jsf "createSVGLength" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
+createSVGLengthUnsafe ::
+                      (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGLength
+createSVGLengthUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSVGLength" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
 createSVGLengthUnchecked ::
                          (MonadDOM m) => SVGSVGElement -> m SVGLength
 createSVGLengthUnchecked self
@@ -259,6 +320,14 @@
   = liftDOM (void (self ^. jsf "createSVGAngle" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
+createSVGAngleUnsafe ::
+                     (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGAngle
+createSVGAngleUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSVGAngle" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
 createSVGAngleUnchecked ::
                         (MonadDOM m) => SVGSVGElement -> m SVGAngle
 createSVGAngleUnchecked self
@@ -277,6 +346,14 @@
   = liftDOM (void (self ^. jsf "createSVGPoint" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
+createSVGPointUnsafe ::
+                     (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGPoint
+createSVGPointUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSVGPoint" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
 createSVGPointUnchecked ::
                         (MonadDOM m) => SVGSVGElement -> m SVGPoint
 createSVGPointUnchecked self
@@ -295,6 +372,14 @@
   = liftDOM (void (self ^. jsf "createSVGMatrix" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
+createSVGMatrixUnsafe ::
+                      (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGMatrix
+createSVGMatrixUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSVGMatrix" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
 createSVGMatrixUnchecked ::
                          (MonadDOM m) => SVGSVGElement -> m SVGMatrix
 createSVGMatrixUnchecked self
@@ -312,6 +397,14 @@
   = liftDOM (void (self ^. jsf "createSVGRect" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
+createSVGRectUnsafe ::
+                    (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGRect
+createSVGRectUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSVGRect" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
 createSVGRectUnchecked ::
                        (MonadDOM m) => SVGSVGElement -> m SVGRect
 createSVGRectUnchecked self
@@ -329,6 +422,14 @@
   = liftDOM (void (self ^. jsf "createSVGTransform" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
+createSVGTransformUnsafe ::
+                         (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGTransform
+createSVGTransformUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSVGTransform" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
 createSVGTransformUnchecked ::
                             (MonadDOM m) => SVGSVGElement -> m SVGTransform
 createSVGTransformUnchecked self
@@ -353,6 +454,16 @@
          (self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrixUnsafe ::
+                                   (MonadDOM m, HasCallStack) =>
+                                     SVGSVGElement -> Maybe SVGMatrix -> m SVGTransform
+createSVGTransformFromMatrixUnsafe self matrix
+  = liftDOM
+      (((self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
 createSVGTransformFromMatrixUnchecked ::
                                       (MonadDOM m) =>
                                         SVGSVGElement -> Maybe SVGMatrix -> m SVGTransform
@@ -377,6 +488,15 @@
   = liftDOM (void (self ^. jsf "getElementById" [toJSVal elementId]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
+getElementByIdUnsafe ::
+                     (MonadDOM m, ToJSString elementId, HasCallStack) =>
+                       SVGSVGElement -> elementId -> m Element
+getElementByIdUnsafe self elementId
+  = liftDOM
+      (((self ^. jsf "getElementById" [toJSVal elementId]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
 getElementByIdUnchecked ::
                         (MonadDOM m, ToJSString elementId) =>
                           SVGSVGElement -> elementId -> m Element
@@ -391,6 +511,14 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.x Mozilla SVGSVGElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.x Mozilla SVGSVGElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -402,6 +530,14 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.y Mozilla SVGSVGElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.y Mozilla SVGSVGElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
 getYUnchecked self
@@ -413,6 +549,14 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.width Mozilla SVGSVGElement.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.width Mozilla SVGSVGElement.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
 getWidthUnchecked self
@@ -424,6 +568,14 @@
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.height Mozilla SVGSVGElement.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.height Mozilla SVGSVGElement.height documentation> 
 getHeightUnchecked ::
                    (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
 getHeightUnchecked self
@@ -458,6 +610,14 @@
 getViewport self = liftDOM ((self ^. js "viewport") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.viewport Mozilla SVGSVGElement.viewport documentation> 
+getViewportUnsafe ::
+                  (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGRect
+getViewportUnsafe self
+  = liftDOM
+      (((self ^. js "viewport") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.viewport Mozilla SVGSVGElement.viewport documentation> 
 getViewportUnchecked :: (MonadDOM m) => SVGSVGElement -> m SVGRect
 getViewportUnchecked self
   = liftDOM ((self ^. js "viewport") >>= fromJSValUnchecked)
@@ -506,6 +666,14 @@
   = liftDOM ((self ^. js "currentView") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentView Mozilla SVGSVGElement.currentView documentation> 
+getCurrentViewUnsafe ::
+                     (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGViewSpec
+getCurrentViewUnsafe self
+  = liftDOM
+      (((self ^. js "currentView") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentView Mozilla SVGSVGElement.currentView documentation> 
 getCurrentViewUnchecked ::
                         (MonadDOM m) => SVGSVGElement -> m SVGViewSpec
 getCurrentViewUnchecked self
@@ -527,6 +695,14 @@
                     (MonadDOM m) => SVGSVGElement -> m (Maybe SVGPoint)
 getCurrentTranslate self
   = liftDOM ((self ^. js "currentTranslate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentTranslate Mozilla SVGSVGElement.currentTranslate documentation> 
+getCurrentTranslateUnsafe ::
+                          (MonadDOM m, HasCallStack) => SVGSVGElement -> m SVGPoint
+getCurrentTranslateUnsafe self
+  = liftDOM
+      (((self ^. js "currentTranslate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentTranslate Mozilla SVGSVGElement.currentTranslate documentation> 
 getCurrentTranslateUnchecked ::
diff --git a/src/JSDOM/Generated/SVGScriptElement.hs b/src/JSDOM/Generated/SVGScriptElement.hs
--- a/src/JSDOM/Generated/SVGScriptElement.hs
+++ b/src/JSDOM/Generated/SVGScriptElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGScriptElement
-       (setType, getType, getTypeUnchecked, SVGScriptElement,
-        castToSVGScriptElement, gTypeSVGScriptElement)
+       (setType, getType, getTypeUnsafe, getTypeUnchecked,
+        SVGScriptElement(..), gTypeSVGScriptElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
 setType ::
@@ -27,6 +41,15 @@
         (MonadDOM m, FromJSString result) =>
           SVGScriptElement -> m (Maybe result)
 getType self = liftDOM ((self ^. js "type") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
+getTypeUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                SVGScriptElement -> m result
+getTypeUnsafe self
+  = liftDOM
+      (((self ^. js "type") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
 getTypeUnchecked ::
diff --git a/src/JSDOM/Generated/SVGStopElement.hs b/src/JSDOM/Generated/SVGStopElement.hs
--- a/src/JSDOM/Generated/SVGStopElement.hs
+++ b/src/JSDOM/Generated/SVGStopElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGStopElement
-       (getOffset, getOffsetUnchecked, SVGStopElement,
-        castToSVGStopElement, gTypeSVGStopElement)
+       (getOffset, getOffsetUnsafe, getOffsetUnchecked,
+        SVGStopElement(..), gTypeSVGStopElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
 getOffset ::
           (MonadDOM m) => SVGStopElement -> m (Maybe SVGAnimatedNumber)
 getOffset self = liftDOM ((self ^. js "offset") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
+getOffsetUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGStopElement -> m SVGAnimatedNumber
+getOffsetUnsafe self
+  = liftDOM
+      (((self ^. js "offset") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
 getOffsetUnchecked ::
diff --git a/src/JSDOM/Generated/SVGStringList.hs b/src/JSDOM/Generated/SVGStringList.hs
--- a/src/JSDOM/Generated/SVGStringList.hs
+++ b/src/JSDOM/Generated/SVGStringList.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGStringList
        (clear, initialize, initialize_, getItem, getItem_,
         insertItemBefore, insertItemBefore_, replaceItem, replaceItem_,
         removeItem, removeItem_, appendItem, appendItem_, getNumberOfItems,
-        SVGStringList, castToSVGStringList, gTypeSVGStringList)
+        SVGStringList(..), gTypeSVGStringList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.clear Mozilla SVGStringList.clear documentation> 
 clear :: (MonadDOM m) => SVGStringList -> m ()
diff --git a/src/JSDOM/Generated/SVGStyleElement.hs b/src/JSDOM/Generated/SVGStyleElement.hs
--- a/src/JSDOM/Generated/SVGStyleElement.hs
+++ b/src/JSDOM/Generated/SVGStyleElement.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGStyleElement
        (setDisabled, getDisabled, setType, getType, setMedia, getMedia,
-        setTitle, getTitle, SVGStyleElement, castToSVGStyleElement,
-        gTypeSVGStyleElement)
+        setTitle, getTitle, SVGStyleElement(..), gTypeSVGStyleElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
 setDisabled :: (MonadDOM m) => SVGStyleElement -> Bool -> m ()
diff --git a/src/JSDOM/Generated/SVGTests.hs b/src/JSDOM/Generated/SVGTests.hs
--- a/src/JSDOM/Generated/SVGTests.hs
+++ b/src/JSDOM/Generated/SVGTests.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGTests
        (hasExtension, hasExtension_, getRequiredFeatures,
-        getRequiredFeaturesUnchecked, getRequiredExtensions,
+        getRequiredFeaturesUnsafe, getRequiredFeaturesUnchecked,
+        getRequiredExtensions, getRequiredExtensionsUnsafe,
         getRequiredExtensionsUnchecked, getSystemLanguage,
-        getSystemLanguageUnchecked, SVGTests, castToSVGTests,
+        getSystemLanguageUnsafe, getSystemLanguageUnchecked, SVGTests(..),
         gTypeSVGTests)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
 hasExtension ::
@@ -40,6 +55,14 @@
   = liftDOM ((self ^. js "requiredFeatures") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredFeatures Mozilla SVGTests.requiredFeatures documentation> 
+getRequiredFeaturesUnsafe ::
+                          (MonadDOM m, HasCallStack) => SVGTests -> m SVGStringList
+getRequiredFeaturesUnsafe self
+  = liftDOM
+      (((self ^. js "requiredFeatures") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredFeatures Mozilla SVGTests.requiredFeatures documentation> 
 getRequiredFeaturesUnchecked ::
                              (MonadDOM m) => SVGTests -> m SVGStringList
 getRequiredFeaturesUnchecked self
@@ -52,6 +75,14 @@
   = liftDOM ((self ^. js "requiredExtensions") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredExtensions Mozilla SVGTests.requiredExtensions documentation> 
+getRequiredExtensionsUnsafe ::
+                            (MonadDOM m, HasCallStack) => SVGTests -> m SVGStringList
+getRequiredExtensionsUnsafe self
+  = liftDOM
+      (((self ^. js "requiredExtensions") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredExtensions Mozilla SVGTests.requiredExtensions documentation> 
 getRequiredExtensionsUnchecked ::
                                (MonadDOM m) => SVGTests -> m SVGStringList
 getRequiredExtensionsUnchecked self
@@ -63,6 +94,14 @@
                   (MonadDOM m) => SVGTests -> m (Maybe SVGStringList)
 getSystemLanguage self
   = liftDOM ((self ^. js "systemLanguage") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.systemLanguage Mozilla SVGTests.systemLanguage documentation> 
+getSystemLanguageUnsafe ::
+                        (MonadDOM m, HasCallStack) => SVGTests -> m SVGStringList
+getSystemLanguageUnsafe self
+  = liftDOM
+      (((self ^. js "systemLanguage") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.systemLanguage Mozilla SVGTests.systemLanguage documentation> 
 getSystemLanguageUnchecked ::
diff --git a/src/JSDOM/Generated/SVGTextContentElement.hs b/src/JSDOM/Generated/SVGTextContentElement.hs
--- a/src/JSDOM/Generated/SVGTextContentElement.hs
+++ b/src/JSDOM/Generated/SVGTextContentElement.hs
@@ -1,22 +1,27 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGTextContentElement
        (getNumberOfChars, getNumberOfChars_, getComputedTextLength,
         getComputedTextLength_, getSubStringLength, getSubStringLength_,
         getStartPositionOfChar, getStartPositionOfChar_,
-        getStartPositionOfCharUnchecked, getEndPositionOfChar,
-        getEndPositionOfChar_, getEndPositionOfCharUnchecked,
-        getExtentOfChar, getExtentOfChar_, getExtentOfCharUnchecked,
-        getRotationOfChar, getRotationOfChar_, getCharNumAtPosition,
-        getCharNumAtPosition_, selectSubString,
+        getStartPositionOfCharUnsafe, getStartPositionOfCharUnchecked,
+        getEndPositionOfChar, getEndPositionOfChar_,
+        getEndPositionOfCharUnsafe, getEndPositionOfCharUnchecked,
+        getExtentOfChar, getExtentOfChar_, getExtentOfCharUnsafe,
+        getExtentOfCharUnchecked, getRotationOfChar, getRotationOfChar_,
+        getCharNumAtPosition, getCharNumAtPosition_, selectSubString,
         pattern LENGTHADJUST_UNKNOWN, pattern LENGTHADJUST_SPACING,
         pattern LENGTHADJUST_SPACINGANDGLYPHS, getTextLength,
-        getTextLengthUnchecked, getLengthAdjust, getLengthAdjustUnchecked,
-        SVGTextContentElement, castToSVGTextContentElement,
-        gTypeSVGTextContentElement, IsSVGTextContentElement,
-        toSVGTextContentElement)
+        getTextLengthUnsafe, getTextLengthUnchecked, getLengthAdjust,
+        getLengthAdjustUnsafe, getLengthAdjustUnchecked,
+        SVGTextContentElement(..), gTypeSVGTextContentElement,
+        IsSVGTextContentElement, toSVGTextContentElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -27,6 +32,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
 getNumberOfChars ::
@@ -103,6 +118,17 @@
             [toJSVal offset]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
+getStartPositionOfCharUnsafe ::
+                             (MonadDOM m, IsSVGTextContentElement self, HasCallStack) =>
+                               self -> Word -> m SVGPoint
+getStartPositionOfCharUnsafe self offset
+  = liftDOM
+      ((((toSVGTextContentElement self) ^. jsf "getStartPositionOfChar"
+           [toJSVal offset])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
 getStartPositionOfCharUnchecked ::
                                 (MonadDOM m, IsSVGTextContentElement self) =>
                                   self -> Word -> m SVGPoint
@@ -132,6 +158,17 @@
             [toJSVal offset]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
+getEndPositionOfCharUnsafe ::
+                           (MonadDOM m, IsSVGTextContentElement self, HasCallStack) =>
+                             self -> Word -> m SVGPoint
+getEndPositionOfCharUnsafe self offset
+  = liftDOM
+      ((((toSVGTextContentElement self) ^. jsf "getEndPositionOfChar"
+           [toJSVal offset])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
 getEndPositionOfCharUnchecked ::
                               (MonadDOM m, IsSVGTextContentElement self) =>
                                 self -> Word -> m SVGPoint
@@ -161,6 +198,17 @@
             [toJSVal offset]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
+getExtentOfCharUnsafe ::
+                      (MonadDOM m, IsSVGTextContentElement self, HasCallStack) =>
+                        self -> Word -> m SVGRect
+getExtentOfCharUnsafe self offset
+  = liftDOM
+      ((((toSVGTextContentElement self) ^. jsf "getExtentOfChar"
+           [toJSVal offset])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
 getExtentOfCharUnchecked ::
                          (MonadDOM m, IsSVGTextContentElement self) =>
                            self -> Word -> m SVGRect
@@ -233,6 +281,16 @@
       (((toSVGTextContentElement self) ^. js "textLength") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.textLength Mozilla SVGTextContentElement.textLength documentation> 
+getTextLengthUnsafe ::
+                    (MonadDOM m, IsSVGTextContentElement self, HasCallStack) =>
+                      self -> m SVGAnimatedLength
+getTextLengthUnsafe self
+  = liftDOM
+      ((((toSVGTextContentElement self) ^. js "textLength") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.textLength Mozilla SVGTextContentElement.textLength documentation> 
 getTextLengthUnchecked ::
                        (MonadDOM m, IsSVGTextContentElement self) =>
                          self -> m SVGAnimatedLength
@@ -249,6 +307,16 @@
   = liftDOM
       (((toSVGTextContentElement self) ^. js "lengthAdjust") >>=
          fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.lengthAdjust Mozilla SVGTextContentElement.lengthAdjust documentation> 
+getLengthAdjustUnsafe ::
+                      (MonadDOM m, IsSVGTextContentElement self, HasCallStack) =>
+                        self -> m SVGAnimatedEnumeration
+getLengthAdjustUnsafe self
+  = liftDOM
+      ((((toSVGTextContentElement self) ^. js "lengthAdjust") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.lengthAdjust Mozilla SVGTextContentElement.lengthAdjust documentation> 
 getLengthAdjustUnchecked ::
diff --git a/src/JSDOM/Generated/SVGTextPathElement.hs b/src/JSDOM/Generated/SVGTextPathElement.hs
--- a/src/JSDOM/Generated/SVGTextPathElement.hs
+++ b/src/JSDOM/Generated/SVGTextPathElement.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGTextPathElement
        (pattern TEXTPATH_METHODTYPE_UNKNOWN,
@@ -7,11 +10,13 @@
         pattern TEXTPATH_SPACINGTYPE_UNKNOWN,
         pattern TEXTPATH_SPACINGTYPE_AUTO,
         pattern TEXTPATH_SPACINGTYPE_EXACT, getStartOffset,
-        getStartOffsetUnchecked, getMethod, getMethodUnchecked, getSpacing,
-        getSpacingUnchecked, SVGTextPathElement, castToSVGTextPathElement,
+        getStartOffsetUnsafe, getStartOffsetUnchecked, getMethod,
+        getMethodUnsafe, getMethodUnchecked, getSpacing, getSpacingUnsafe,
+        getSpacingUnchecked, SVGTextPathElement(..),
         gTypeSVGTextPathElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern TEXTPATH_METHODTYPE_UNKNOWN = 0
 pattern TEXTPATH_METHODTYPE_ALIGN = 1
 pattern TEXTPATH_METHODTYPE_STRETCH = 2
@@ -36,6 +51,15 @@
   = liftDOM ((self ^. js "startOffset") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.startOffset Mozilla SVGTextPathElement.startOffset documentation> 
+getStartOffsetUnsafe ::
+                     (MonadDOM m, HasCallStack) =>
+                       SVGTextPathElement -> m SVGAnimatedLength
+getStartOffsetUnsafe self
+  = liftDOM
+      (((self ^. js "startOffset") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.startOffset Mozilla SVGTextPathElement.startOffset documentation> 
 getStartOffsetUnchecked ::
                         (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedLength
 getStartOffsetUnchecked self
@@ -48,6 +72,15 @@
 getMethod self = liftDOM ((self ^. js "method") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.method Mozilla SVGTextPathElement.method documentation> 
+getMethodUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  SVGTextPathElement -> m SVGAnimatedEnumeration
+getMethodUnsafe self
+  = liftDOM
+      (((self ^. js "method") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.method Mozilla SVGTextPathElement.method documentation> 
 getMethodUnchecked ::
                    (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
 getMethodUnchecked self
@@ -58,6 +91,15 @@
            (MonadDOM m) =>
              SVGTextPathElement -> m (Maybe SVGAnimatedEnumeration)
 getSpacing self = liftDOM ((self ^. js "spacing") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.spacing Mozilla SVGTextPathElement.spacing documentation> 
+getSpacingUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGTextPathElement -> m SVGAnimatedEnumeration
+getSpacingUnsafe self
+  = liftDOM
+      (((self ^. js "spacing") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.spacing Mozilla SVGTextPathElement.spacing documentation> 
 getSpacingUnchecked ::
diff --git a/src/JSDOM/Generated/SVGTextPositioningElement.hs b/src/JSDOM/Generated/SVGTextPositioningElement.hs
--- a/src/JSDOM/Generated/SVGTextPositioningElement.hs
+++ b/src/JSDOM/Generated/SVGTextPositioningElement.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGTextPositioningElement
-       (getX, getXUnchecked, getY, getYUnchecked, getDx, getDxUnchecked,
-        getDy, getDyUnchecked, getRotate, getRotateUnchecked,
-        SVGTextPositioningElement, castToSVGTextPositioningElement,
-        gTypeSVGTextPositioningElement, IsSVGTextPositioningElement,
-        toSVGTextPositioningElement)
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getDx, getDxUnsafe, getDxUnchecked, getDy, getDyUnsafe,
+        getDyUnchecked, getRotate, getRotateUnsafe, getRotateUnchecked,
+        SVGTextPositioningElement(..), gTypeSVGTextPositioningElement,
+        IsSVGTextPositioningElement, toSVGTextPositioningElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
 getX ::
@@ -28,6 +42,15 @@
       (((toSVGTextPositioningElement self) ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, IsSVGTextPositioningElement self, HasCallStack) =>
+             self -> m SVGAnimatedLengthList
+getXUnsafe self
+  = liftDOM
+      ((((toSVGTextPositioningElement self) ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m, IsSVGTextPositioningElement self) =>
                 self -> m SVGAnimatedLengthList
@@ -45,6 +68,15 @@
       (((toSVGTextPositioningElement self) ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.y Mozilla SVGTextPositioningElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, IsSVGTextPositioningElement self, HasCallStack) =>
+             self -> m SVGAnimatedLengthList
+getYUnsafe self
+  = liftDOM
+      ((((toSVGTextPositioningElement self) ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.y Mozilla SVGTextPositioningElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m, IsSVGTextPositioningElement self) =>
                 self -> m SVGAnimatedLengthList
@@ -62,6 +94,15 @@
       (((toSVGTextPositioningElement self) ^. js "dx") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dx Mozilla SVGTextPositioningElement.dx documentation> 
+getDxUnsafe ::
+            (MonadDOM m, IsSVGTextPositioningElement self, HasCallStack) =>
+              self -> m SVGAnimatedLengthList
+getDxUnsafe self
+  = liftDOM
+      ((((toSVGTextPositioningElement self) ^. js "dx") >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dx Mozilla SVGTextPositioningElement.dx documentation> 
 getDxUnchecked ::
                (MonadDOM m, IsSVGTextPositioningElement self) =>
                  self -> m SVGAnimatedLengthList
@@ -79,6 +120,15 @@
       (((toSVGTextPositioningElement self) ^. js "dy") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dy Mozilla SVGTextPositioningElement.dy documentation> 
+getDyUnsafe ::
+            (MonadDOM m, IsSVGTextPositioningElement self, HasCallStack) =>
+              self -> m SVGAnimatedLengthList
+getDyUnsafe self
+  = liftDOM
+      ((((toSVGTextPositioningElement self) ^. js "dy") >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dy Mozilla SVGTextPositioningElement.dy documentation> 
 getDyUnchecked ::
                (MonadDOM m, IsSVGTextPositioningElement self) =>
                  self -> m SVGAnimatedLengthList
@@ -94,6 +144,16 @@
 getRotate self
   = liftDOM
       (((toSVGTextPositioningElement self) ^. js "rotate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.rotate Mozilla SVGTextPositioningElement.rotate documentation> 
+getRotateUnsafe ::
+                (MonadDOM m, IsSVGTextPositioningElement self, HasCallStack) =>
+                  self -> m SVGAnimatedNumberList
+getRotateUnsafe self
+  = liftDOM
+      ((((toSVGTextPositioningElement self) ^. js "rotate") >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.rotate Mozilla SVGTextPositioningElement.rotate documentation> 
 getRotateUnchecked ::
diff --git a/src/JSDOM/Generated/SVGTransform.hs b/src/JSDOM/Generated/SVGTransform.hs
--- a/src/JSDOM/Generated/SVGTransform.hs
+++ b/src/JSDOM/Generated/SVGTransform.hs
@@ -1,15 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGTransform
        (setMatrix, setTranslate, setScale, setRotate, setSkewX, 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, getType, getMatrix,
-        getMatrixUnchecked, getAngle, SVGTransform, castToSVGTransform,
-        gTypeSVGTransform)
+        pattern SVG_TRANSFORM_SKEWY, getType, getMatrix, getMatrixUnsafe,
+        getMatrixUnchecked, getAngle, SVGTransform(..), gTypeSVGTransform)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setMatrix Mozilla SVGTransform.setMatrix documentation> 
 setMatrix ::
@@ -72,6 +85,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.matrix Mozilla SVGTransform.matrix documentation> 
 getMatrix :: (MonadDOM m) => SVGTransform -> m (Maybe SVGMatrix)
 getMatrix self = liftDOM ((self ^. js "matrix") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.matrix Mozilla SVGTransform.matrix documentation> 
+getMatrixUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGTransform -> m SVGMatrix
+getMatrixUnsafe self
+  = liftDOM
+      (((self ^. js "matrix") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.matrix Mozilla SVGTransform.matrix documentation> 
 getMatrixUnchecked :: (MonadDOM m) => SVGTransform -> m SVGMatrix
diff --git a/src/JSDOM/Generated/SVGTransformList.hs b/src/JSDOM/Generated/SVGTransformList.hs
--- a/src/JSDOM/Generated/SVGTransformList.hs
+++ b/src/JSDOM/Generated/SVGTransformList.hs
@@ -1,17 +1,24 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGTransformList
-       (clear, initialize, initialize_, initializeUnchecked, getItem,
-        getItem_, getItemUnchecked, insertItemBefore, insertItemBefore_,
-        insertItemBeforeUnchecked, replaceItem, replaceItem_,
-        replaceItemUnchecked, removeItem, removeItem_, removeItemUnchecked,
-        appendItem, appendItem_, appendItemUnchecked,
+       (clear, initialize, initialize_, initializeUnsafe,
+        initializeUnchecked, getItem, getItem_, getItemUnsafe,
+        getItemUnchecked, insertItemBefore, insertItemBefore_,
+        insertItemBeforeUnsafe, insertItemBeforeUnchecked, replaceItem,
+        replaceItem_, replaceItemUnsafe, replaceItemUnchecked, removeItem,
+        removeItem_, removeItemUnsafe, removeItemUnchecked, appendItem,
+        appendItem_, appendItemUnsafe, appendItemUnchecked,
         createSVGTransformFromMatrix, createSVGTransformFromMatrix_,
+        createSVGTransformFromMatrixUnsafe,
         createSVGTransformFromMatrixUnchecked, consolidate, consolidate_,
-        consolidateUnchecked, getNumberOfItems, SVGTransformList,
-        castToSVGTransformList, gTypeSVGTransformList)
+        consolidateUnsafe, consolidateUnchecked, getNumberOfItems,
+        SVGTransformList(..), gTypeSVGTransformList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -22,6 +29,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.clear Mozilla SVGTransformList.clear documentation> 
 clear :: (MonadDOM m) => SVGTransformList -> m ()
@@ -41,6 +58,15 @@
   = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
+initializeUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGTransformList -> Maybe SVGTransform -> m SVGTransform
+initializeUnsafe self item
+  = liftDOM
+      (((self ^. jsf "initialize" [toJSVal item]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
 initializeUnchecked ::
                     (MonadDOM m) =>
                       SVGTransformList -> Maybe SVGTransform -> m SVGTransform
@@ -60,6 +86,15 @@
   = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
+getItemUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGTransformList -> Word -> m SVGTransform
+getItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
 getItemUnchecked ::
                  (MonadDOM m) => SVGTransformList -> Word -> m SVGTransform
 getItemUnchecked self index
@@ -86,6 +121,16 @@
          (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
+insertItemBeforeUnsafe ::
+                       (MonadDOM m, HasCallStack) =>
+                         SVGTransformList -> Maybe SVGTransform -> Word -> m SVGTransform
+insertItemBeforeUnsafe self item index
+  = liftDOM
+      (((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
 insertItemBeforeUnchecked ::
                           (MonadDOM m) =>
                             SVGTransformList -> Maybe SVGTransform -> Word -> m SVGTransform
@@ -113,6 +158,16 @@
       (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
+replaceItemUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    SVGTransformList -> Maybe SVGTransform -> Word -> m SVGTransform
+replaceItemUnsafe self item index
+  = liftDOM
+      (((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
 replaceItemUnchecked ::
                      (MonadDOM m) =>
                        SVGTransformList -> Maybe SVGTransform -> Word -> m SVGTransform
@@ -134,6 +189,15 @@
   = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
+removeItemUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGTransformList -> Word -> m SVGTransform
+removeItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
 removeItemUnchecked ::
                     (MonadDOM m) => SVGTransformList -> Word -> m SVGTransform
 removeItemUnchecked self index
@@ -154,6 +218,15 @@
   = liftDOM (void (self ^. jsf "appendItem" [toJSVal item]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
+appendItemUnsafe ::
+                 (MonadDOM m, HasCallStack) =>
+                   SVGTransformList -> Maybe SVGTransform -> m SVGTransform
+appendItemUnsafe self item
+  = liftDOM
+      (((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
 appendItemUnchecked ::
                     (MonadDOM m) =>
                       SVGTransformList -> Maybe SVGTransform -> m SVGTransform
@@ -179,6 +252,16 @@
          (self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrixUnsafe ::
+                                   (MonadDOM m, HasCallStack) =>
+                                     SVGTransformList -> Maybe SVGMatrix -> m SVGTransform
+createSVGTransformFromMatrixUnsafe self matrix
+  = liftDOM
+      (((self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
 createSVGTransformFromMatrixUnchecked ::
                                       (MonadDOM m) =>
                                         SVGTransformList -> Maybe SVGMatrix -> m SVGTransform
@@ -196,6 +279,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
 consolidate_ :: (MonadDOM m) => SVGTransformList -> m ()
 consolidate_ self = liftDOM (void (self ^. jsf "consolidate" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
+consolidateUnsafe ::
+                  (MonadDOM m, HasCallStack) => SVGTransformList -> m SVGTransform
+consolidateUnsafe self
+  = liftDOM
+      (((self ^. jsf "consolidate" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
 consolidateUnchecked ::
diff --git a/src/JSDOM/Generated/SVGURIReference.hs b/src/JSDOM/Generated/SVGURIReference.hs
--- a/src/JSDOM/Generated/SVGURIReference.hs
+++ b/src/JSDOM/Generated/SVGURIReference.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGURIReference
-       (getHref, getHrefUnchecked, SVGURIReference, castToSVGURIReference,
+       (getHref, getHrefUnsafe, getHrefUnchecked, SVGURIReference(..),
         gTypeSVGURIReference)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
 getHref ::
         (MonadDOM m) => SVGURIReference -> m (Maybe SVGAnimatedString)
 getHref self = liftDOM ((self ^. js "href") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
+getHrefUnsafe ::
+              (MonadDOM m, HasCallStack) =>
+                SVGURIReference -> m SVGAnimatedString
+getHrefUnsafe self
+  = liftDOM
+      (((self ^. js "href") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
 getHrefUnchecked ::
diff --git a/src/JSDOM/Generated/SVGUnitTypes.hs b/src/JSDOM/Generated/SVGUnitTypes.hs
--- a/src/JSDOM/Generated/SVGUnitTypes.hs
+++ b/src/JSDOM/Generated/SVGUnitTypes.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGUnitTypes
        (pattern SVG_UNIT_TYPE_UNKNOWN,
         pattern SVG_UNIT_TYPE_USERSPACEONUSE,
-        pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX, SVGUnitTypes,
-        castToSVGUnitTypes, gTypeSVGUnitTypes)
+        pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX, SVGUnitTypes(..),
+        gTypeSVGUnitTypes)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_UNIT_TYPE_UNKNOWN = 0
 pattern SVG_UNIT_TYPE_USERSPACEONUSE = 1
 pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2
diff --git a/src/JSDOM/Generated/SVGUseElement.hs b/src/JSDOM/Generated/SVGUseElement.hs
--- a/src/JSDOM/Generated/SVGUseElement.hs
+++ b/src/JSDOM/Generated/SVGUseElement.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGUseElement
-       (getX, getXUnchecked, getY, getYUnchecked, getWidth,
-        getWidthUnchecked, getHeight, getHeightUnchecked, SVGUseElement,
-        castToSVGUseElement, gTypeSVGUseElement)
+       (getX, getXUnsafe, getXUnchecked, getY, getYUnsafe, getYUnchecked,
+        getWidth, getWidthUnsafe, getWidthUnchecked, getHeight,
+        getHeightUnsafe, getHeightUnchecked, SVGUseElement(..),
+        gTypeSVGUseElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
 getX ::
@@ -23,6 +38,14 @@
 getX self = liftDOM ((self ^. js "x") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
+getXUnsafe ::
+           (MonadDOM m, HasCallStack) => SVGUseElement -> m SVGAnimatedLength
+getXUnsafe self
+  = liftDOM
+      (((self ^. js "x") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
 getXUnchecked ::
               (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
 getXUnchecked self
@@ -34,6 +57,14 @@
 getY self = liftDOM ((self ^. js "y") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.y Mozilla SVGUseElement.y documentation> 
+getYUnsafe ::
+           (MonadDOM m, HasCallStack) => SVGUseElement -> m SVGAnimatedLength
+getYUnsafe self
+  = liftDOM
+      (((self ^. js "y") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.y Mozilla SVGUseElement.y documentation> 
 getYUnchecked ::
               (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
 getYUnchecked self
@@ -45,6 +76,14 @@
 getWidth self = liftDOM ((self ^. js "width") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.width Mozilla SVGUseElement.width documentation> 
+getWidthUnsafe ::
+               (MonadDOM m, HasCallStack) => SVGUseElement -> m SVGAnimatedLength
+getWidthUnsafe self
+  = liftDOM
+      (((self ^. js "width") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.width Mozilla SVGUseElement.width documentation> 
 getWidthUnchecked ::
                   (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
 getWidthUnchecked self
@@ -54,6 +93,14 @@
 getHeight ::
           (MonadDOM m) => SVGUseElement -> m (Maybe SVGAnimatedLength)
 getHeight self = liftDOM ((self ^. js "height") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.height Mozilla SVGUseElement.height documentation> 
+getHeightUnsafe ::
+                (MonadDOM m, HasCallStack) => SVGUseElement -> m SVGAnimatedLength
+getHeightUnsafe self
+  = liftDOM
+      (((self ^. js "height") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.height Mozilla SVGUseElement.height documentation> 
 getHeightUnchecked ::
diff --git a/src/JSDOM/Generated/SVGViewElement.hs b/src/JSDOM/Generated/SVGViewElement.hs
--- a/src/JSDOM/Generated/SVGViewElement.hs
+++ b/src/JSDOM/Generated/SVGViewElement.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGViewElement
-       (getViewTarget, getViewTargetUnchecked, SVGViewElement,
-        castToSVGViewElement, gTypeSVGViewElement)
+       (getViewTarget, getViewTargetUnsafe, getViewTargetUnchecked,
+        SVGViewElement(..), gTypeSVGViewElement)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,12 +19,30 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
 getViewTarget ::
               (MonadDOM m) => SVGViewElement -> m (Maybe SVGStringList)
 getViewTarget self
   = liftDOM ((self ^. js "viewTarget") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
+getViewTargetUnsafe ::
+                    (MonadDOM m, HasCallStack) => SVGViewElement -> m SVGStringList
+getViewTargetUnsafe self
+  = liftDOM
+      (((self ^. js "viewTarget") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
 getViewTargetUnchecked ::
diff --git a/src/JSDOM/Generated/SVGViewSpec.hs b/src/JSDOM/Generated/SVGViewSpec.hs
--- a/src/JSDOM/Generated/SVGViewSpec.hs
+++ b/src/JSDOM/Generated/SVGViewSpec.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGViewSpec
-       (getTransform, getTransformUnchecked, getViewTarget,
-        getViewTargetUnchecked, getViewBoxString,
-        getPreserveAspectRatioString, getTransformString,
-        getViewTargetString, setZoomAndPan, getZoomAndPan, SVGViewSpec,
-        castToSVGViewSpec, gTypeSVGViewSpec)
+       (getTransform, getTransformUnsafe, getTransformUnchecked,
+        getViewTarget, getViewTargetUnsafe, getViewTargetUnchecked,
+        getViewBoxString, getPreserveAspectRatioString, getTransformString,
+        getViewTargetString, setZoomAndPan, getZoomAndPan, SVGViewSpec(..),
+        gTypeSVGViewSpec)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
 getTransform ::
@@ -26,6 +40,14 @@
   = liftDOM ((self ^. js "transform") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
+getTransformUnsafe ::
+                   (MonadDOM m, HasCallStack) => SVGViewSpec -> m SVGTransformList
+getTransformUnsafe self
+  = liftDOM
+      (((self ^. js "transform") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
 getTransformUnchecked ::
                       (MonadDOM m) => SVGViewSpec -> m SVGTransformList
 getTransformUnchecked self
@@ -36,6 +58,14 @@
               (MonadDOM m) => SVGViewSpec -> m (Maybe SVGElement)
 getViewTarget self
   = liftDOM ((self ^. js "viewTarget") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
+getViewTargetUnsafe ::
+                    (MonadDOM m, HasCallStack) => SVGViewSpec -> m SVGElement
+getViewTargetUnsafe self
+  = liftDOM
+      (((self ^. js "viewTarget") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
 getViewTargetUnchecked ::
diff --git a/src/JSDOM/Generated/SVGZoomAndPan.hs b/src/JSDOM/Generated/SVGZoomAndPan.hs
--- a/src/JSDOM/Generated/SVGZoomAndPan.hs
+++ b/src/JSDOM/Generated/SVGZoomAndPan.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGZoomAndPan
        (pattern SVG_ZOOMANDPAN_UNKNOWN, pattern SVG_ZOOMANDPAN_DISABLE,
         pattern SVG_ZOOMANDPAN_MAGNIFY, setZoomAndPan, getZoomAndPan,
-        SVGZoomAndPan, castToSVGZoomAndPan, gTypeSVGZoomAndPan)
+        SVGZoomAndPan(..), gTypeSVGZoomAndPan)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern SVG_ZOOMANDPAN_UNKNOWN = 0
 pattern SVG_ZOOMANDPAN_DISABLE = 1
 pattern SVG_ZOOMANDPAN_MAGNIFY = 2
diff --git a/src/JSDOM/Generated/SVGZoomEvent.hs b/src/JSDOM/Generated/SVGZoomEvent.hs
--- a/src/JSDOM/Generated/SVGZoomEvent.hs
+++ b/src/JSDOM/Generated/SVGZoomEvent.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SVGZoomEvent
-       (getZoomRectScreen, getZoomRectScreenUnchecked, getPreviousScale,
-        getPreviousTranslate, getPreviousTranslateUnchecked, getNewScale,
-        getNewTranslate, getNewTranslateUnchecked, SVGZoomEvent,
-        castToSVGZoomEvent, gTypeSVGZoomEvent)
+       (getZoomRectScreen, getZoomRectScreenUnsafe,
+        getZoomRectScreenUnchecked, getPreviousScale, getPreviousTranslate,
+        getPreviousTranslateUnsafe, getPreviousTranslateUnchecked,
+        getNewScale, getNewTranslate, getNewTranslateUnsafe,
+        getNewTranslateUnchecked, SVGZoomEvent(..), gTypeSVGZoomEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
 getZoomRectScreen ::
@@ -25,6 +40,14 @@
   = liftDOM ((self ^. js "zoomRectScreen") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
+getZoomRectScreenUnsafe ::
+                        (MonadDOM m, HasCallStack) => SVGZoomEvent -> m SVGRect
+getZoomRectScreenUnsafe self
+  = liftDOM
+      (((self ^. js "zoomRectScreen") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
 getZoomRectScreenUnchecked ::
                            (MonadDOM m) => SVGZoomEvent -> m SVGRect
 getZoomRectScreenUnchecked self
@@ -43,6 +66,14 @@
   = liftDOM ((self ^. js "previousTranslate") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousTranslate Mozilla SVGZoomEvent.previousTranslate documentation> 
+getPreviousTranslateUnsafe ::
+                           (MonadDOM m, HasCallStack) => SVGZoomEvent -> m SVGPoint
+getPreviousTranslateUnsafe self
+  = liftDOM
+      (((self ^. js "previousTranslate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousTranslate Mozilla SVGZoomEvent.previousTranslate documentation> 
 getPreviousTranslateUnchecked ::
                               (MonadDOM m) => SVGZoomEvent -> m SVGPoint
 getPreviousTranslateUnchecked self
@@ -59,6 +90,14 @@
                 (MonadDOM m) => SVGZoomEvent -> m (Maybe SVGPoint)
 getNewTranslate self
   = liftDOM ((self ^. js "newTranslate") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newTranslate Mozilla SVGZoomEvent.newTranslate documentation> 
+getNewTranslateUnsafe ::
+                      (MonadDOM m, HasCallStack) => SVGZoomEvent -> m SVGPoint
+getNewTranslateUnsafe self
+  = liftDOM
+      (((self ^. js "newTranslate") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newTranslate Mozilla SVGZoomEvent.newTranslate documentation> 
 getNewTranslateUnchecked ::
diff --git a/src/JSDOM/Generated/Screen.hs b/src/JSDOM/Generated/Screen.hs
--- a/src/JSDOM/Generated/Screen.hs
+++ b/src/JSDOM/Generated/Screen.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Screen
        (getHeight, getWidth, getColorDepth, getPixelDepth, getAvailLeft,
-        getAvailTop, getAvailHeight, getAvailWidth, Screen, castToScreen,
+        getAvailTop, getAvailHeight, getAvailWidth, Screen(..),
         gTypeScreen)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.height Mozilla Screen.height documentation> 
 getHeight :: (MonadDOM m) => Screen -> m Word
diff --git a/src/JSDOM/Generated/ScriptProcessorNode.hs b/src/JSDOM/Generated/ScriptProcessorNode.hs
--- a/src/JSDOM/Generated/ScriptProcessorNode.hs
+++ b/src/JSDOM/Generated/ScriptProcessorNode.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ScriptProcessorNode
-       (audioProcess, getBufferSize, ScriptProcessorNode,
-        castToScriptProcessorNode, gTypeScriptProcessorNode)
+       (audioProcess, getBufferSize, ScriptProcessorNode(..),
+        gTypeScriptProcessorNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.onaudioprocess Mozilla ScriptProcessorNode.onaudioprocess documentation> 
 audioProcess :: EventName ScriptProcessorNode AudioProcessingEvent
diff --git a/src/JSDOM/Generated/ScriptProfile.hs b/src/JSDOM/Generated/ScriptProfile.hs
--- a/src/JSDOM/Generated/ScriptProfile.hs
+++ b/src/JSDOM/Generated/ScriptProfile.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ScriptProfile
-       (getTitle, getUid, getRootNode, getRootNodeUnchecked,
-        ScriptProfile, castToScriptProfile, gTypeScriptProfile)
+       (getTitle, getUid, getRootNode, getRootNodeUnsafe,
+        getRootNodeUnchecked, ScriptProfile(..), gTypeScriptProfile)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.title Mozilla ScriptProfile.title documentation> 
 getTitle ::
@@ -31,6 +45,14 @@
 getRootNode ::
             (MonadDOM m) => ScriptProfile -> m (Maybe ScriptProfileNode)
 getRootNode self = liftDOM ((self ^. js "rootNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.rootNode Mozilla ScriptProfile.rootNode documentation> 
+getRootNodeUnsafe ::
+                  (MonadDOM m, HasCallStack) => ScriptProfile -> m ScriptProfileNode
+getRootNodeUnsafe self
+  = liftDOM
+      (((self ^. js "rootNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile.rootNode Mozilla ScriptProfile.rootNode documentation> 
 getRootNodeUnchecked ::
diff --git a/src/JSDOM/Generated/ScriptProfileNode.hs b/src/JSDOM/Generated/ScriptProfileNode.hs
--- a/src/JSDOM/Generated/ScriptProfileNode.hs
+++ b/src/JSDOM/Generated/ScriptProfileNode.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ScriptProfileNode
        (children, children_, getId, getFunctionName, getUrl,
-        getLineNumber, getColumnNumber, ScriptProfileNode,
-        castToScriptProfileNode, gTypeScriptProfileNode)
+        getLineNumber, getColumnNumber, ScriptProfileNode(..),
+        gTypeScriptProfileNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode.children Mozilla ScriptProfileNode.children documentation> 
 children ::
diff --git a/src/JSDOM/Generated/SecurityPolicy.hs b/src/JSDOM/Generated/SecurityPolicy.hs
--- a/src/JSDOM/Generated/SecurityPolicy.hs
+++ b/src/JSDOM/Generated/SecurityPolicy.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SecurityPolicy
        (allowsConnectionTo, allowsConnectionTo_, allowsFontFrom,
@@ -9,10 +12,11 @@
         allowsPluginType_, allowsScriptFrom, allowsScriptFrom_,
         allowsStyleFrom, allowsStyleFrom_, getAllowsEval,
         getAllowsInlineScript, getAllowsInlineStyle, getIsActive,
-        getReportURIs, getReportURIsUnchecked, SecurityPolicy,
-        castToSecurityPolicy, gTypeSecurityPolicy)
+        getReportURIs, getReportURIsUnsafe, getReportURIsUnchecked,
+        SecurityPolicy(..), gTypeSecurityPolicy)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.allowsConnectionTo Mozilla SecurityPolicy.allowsConnectionTo documentation> 
 allowsConnectionTo ::
@@ -178,6 +192,14 @@
               (MonadDOM m) => SecurityPolicy -> m (Maybe DOMStringList)
 getReportURIs self
   = liftDOM ((self ^. js "reportURIs") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.reportURIs Mozilla SecurityPolicy.reportURIs documentation> 
+getReportURIsUnsafe ::
+                    (MonadDOM m, HasCallStack) => SecurityPolicy -> m DOMStringList
+getReportURIsUnsafe self
+  = liftDOM
+      (((self ^. js "reportURIs") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy.reportURIs Mozilla SecurityPolicy.reportURIs documentation> 
 getReportURIsUnchecked ::
diff --git a/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs b/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
--- a/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
+++ b/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
@@ -1,13 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SecurityPolicyViolationEvent
        (getDocumentURI, getReferrer, getBlockedURI, getViolatedDirective,
         getEffectiveDirective, getOriginalPolicy, getSourceFile,
-        getLineNumber, SecurityPolicyViolationEvent,
-        castToSecurityPolicyViolationEvent,
+        getLineNumber, SecurityPolicyViolationEvent(..),
         gTypeSecurityPolicyViolationEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.documentURI Mozilla SecurityPolicyViolationEvent.documentURI documentation> 
 getDocumentURI ::
diff --git a/src/JSDOM/Generated/Selection.hs b/src/JSDOM/Generated/Selection.hs
--- a/src/JSDOM/Generated/Selection.hs
+++ b/src/JSDOM/Generated/Selection.hs
@@ -1,18 +1,23 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Selection
        (collapse, collapseToEnd, collapseToStart, deleteFromDocument,
         containsNode, containsNode_, selectAllChildren, extend, getRangeAt,
-        getRangeAt_, getRangeAtUnchecked, removeAllRanges, addRange,
-        toString, toString_, modify, setBaseAndExtent, setPosition, empty,
-        getAnchorNode, getAnchorNodeUnchecked, getAnchorOffset,
-        getFocusNode, getFocusNodeUnchecked, getFocusOffset,
-        getIsCollapsed, getRangeCount, getBaseNode, getBaseNodeUnchecked,
-        getBaseOffset, getExtentNode, getExtentNodeUnchecked,
-        getExtentOffset, getType, Selection, castToSelection,
-        gTypeSelection)
+        getRangeAt_, getRangeAtUnsafe, getRangeAtUnchecked,
+        removeAllRanges, addRange, toString, toString_, modify,
+        setBaseAndExtent, setPosition, empty, getAnchorNode,
+        getAnchorNodeUnsafe, getAnchorNodeUnchecked, getAnchorOffset,
+        getFocusNode, getFocusNodeUnsafe, getFocusNodeUnchecked,
+        getFocusOffset, getIsCollapsed, getRangeCount, getBaseNode,
+        getBaseNodeUnsafe, getBaseNodeUnchecked, getBaseOffset,
+        getExtentNode, getExtentNodeUnsafe, getExtentNodeUnchecked,
+        getExtentOffset, getType, Selection(..), gTypeSelection)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +28,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapse Mozilla Selection.collapse documentation> 
 collapse ::
@@ -89,6 +104,14 @@
   = liftDOM (void (self ^. jsf "getRangeAt" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
+getRangeAtUnsafe ::
+                 (MonadDOM m, HasCallStack) => Selection -> Int -> m Range
+getRangeAtUnsafe self index
+  = liftDOM
+      (((self ^. jsf "getRangeAt" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
 getRangeAtUnchecked :: (MonadDOM m) => Selection -> Int -> m Range
 getRangeAtUnchecked self index
   = liftDOM
@@ -154,6 +177,14 @@
   = liftDOM ((self ^. js "anchorNode") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
+getAnchorNodeUnsafe ::
+                    (MonadDOM m, HasCallStack) => Selection -> m Node
+getAnchorNodeUnsafe self
+  = liftDOM
+      (((self ^. js "anchorNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
 getAnchorNodeUnchecked :: (MonadDOM m) => Selection -> m Node
 getAnchorNodeUnchecked self
   = liftDOM ((self ^. js "anchorNode") >>= fromJSValUnchecked)
@@ -169,6 +200,14 @@
   = liftDOM ((self ^. js "focusNode") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
+getFocusNodeUnsafe ::
+                   (MonadDOM m, HasCallStack) => Selection -> m Node
+getFocusNodeUnsafe self
+  = liftDOM
+      (((self ^. js "focusNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
 getFocusNodeUnchecked :: (MonadDOM m) => Selection -> m Node
 getFocusNodeUnchecked self
   = liftDOM ((self ^. js "focusNode") >>= fromJSValUnchecked)
@@ -193,6 +232,14 @@
 getBaseNode self = liftDOM ((self ^. js "baseNode") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
+getBaseNodeUnsafe ::
+                  (MonadDOM m, HasCallStack) => Selection -> m Node
+getBaseNodeUnsafe self
+  = liftDOM
+      (((self ^. js "baseNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
 getBaseNodeUnchecked :: (MonadDOM m) => Selection -> m Node
 getBaseNodeUnchecked self
   = liftDOM ((self ^. js "baseNode") >>= fromJSValUnchecked)
@@ -206,6 +253,14 @@
 getExtentNode :: (MonadDOM m) => Selection -> m (Maybe Node)
 getExtentNode self
   = liftDOM ((self ^. js "extentNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
+getExtentNodeUnsafe ::
+                    (MonadDOM m, HasCallStack) => Selection -> m Node
+getExtentNodeUnsafe self
+  = liftDOM
+      (((self ^. js "extentNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
 getExtentNodeUnchecked :: (MonadDOM m) => Selection -> m Node
diff --git a/src/JSDOM/Generated/SourceBuffer.hs b/src/JSDOM/Generated/SourceBuffer.hs
--- a/src/JSDOM/Generated/SourceBuffer.hs
+++ b/src/JSDOM/Generated/SourceBuffer.hs
@@ -1,15 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SourceBuffer
        (appendBuffer, appendBufferView, abort, remove, setMode, getMode,
-        getUpdating, getBuffered, getBufferedUnchecked, setTimestampOffset,
-        getTimestampOffset, getAudioTracks, getAudioTracksUnchecked,
-        getVideoTracks, getVideoTracksUnchecked, getTextTracks,
-        getTextTracksUnchecked, setAppendWindowStart, getAppendWindowStart,
-        setAppendWindowEnd, getAppendWindowEnd, SourceBuffer,
-        castToSourceBuffer, gTypeSourceBuffer)
+        getUpdating, getBuffered, getBufferedUnsafe, getBufferedUnchecked,
+        setTimestampOffset, getTimestampOffset, getAudioTracks,
+        getAudioTracksUnsafe, getAudioTracksUnchecked, getVideoTracks,
+        getVideoTracksUnsafe, getVideoTracksUnchecked, getTextTracks,
+        getTextTracksUnsafe, getTextTracksUnchecked, setAppendWindowStart,
+        getAppendWindowStart, setAppendWindowEnd, getAppendWindowEnd,
+        SourceBuffer(..), gTypeSourceBuffer)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
 appendBuffer ::
@@ -62,6 +77,14 @@
 getBuffered self = liftDOM ((self ^. js "buffered") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.buffered Mozilla SourceBuffer.buffered documentation> 
+getBufferedUnsafe ::
+                  (MonadDOM m, HasCallStack) => SourceBuffer -> m TimeRanges
+getBufferedUnsafe self
+  = liftDOM
+      (((self ^. js "buffered") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.buffered Mozilla SourceBuffer.buffered documentation> 
 getBufferedUnchecked ::
                      (MonadDOM m) => SourceBuffer -> m TimeRanges
 getBufferedUnchecked self
@@ -85,6 +108,14 @@
   = liftDOM ((self ^. js "audioTracks") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.audioTracks Mozilla SourceBuffer.audioTracks documentation> 
+getAudioTracksUnsafe ::
+                     (MonadDOM m, HasCallStack) => SourceBuffer -> m AudioTrackList
+getAudioTracksUnsafe self
+  = liftDOM
+      (((self ^. js "audioTracks") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.audioTracks Mozilla SourceBuffer.audioTracks documentation> 
 getAudioTracksUnchecked ::
                         (MonadDOM m) => SourceBuffer -> m AudioTrackList
 getAudioTracksUnchecked self
@@ -97,6 +128,14 @@
   = liftDOM ((self ^. js "videoTracks") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.videoTracks Mozilla SourceBuffer.videoTracks documentation> 
+getVideoTracksUnsafe ::
+                     (MonadDOM m, HasCallStack) => SourceBuffer -> m VideoTrackList
+getVideoTracksUnsafe self
+  = liftDOM
+      (((self ^. js "videoTracks") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.videoTracks Mozilla SourceBuffer.videoTracks documentation> 
 getVideoTracksUnchecked ::
                         (MonadDOM m) => SourceBuffer -> m VideoTrackList
 getVideoTracksUnchecked self
@@ -107,6 +146,14 @@
               (MonadDOM m) => SourceBuffer -> m (Maybe TextTrackList)
 getTextTracks self
   = liftDOM ((self ^. js "textTracks") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.textTracks Mozilla SourceBuffer.textTracks documentation> 
+getTextTracksUnsafe ::
+                    (MonadDOM m, HasCallStack) => SourceBuffer -> m TextTrackList
+getTextTracksUnsafe self
+  = liftDOM
+      (((self ^. js "textTracks") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.textTracks Mozilla SourceBuffer.textTracks documentation> 
 getTextTracksUnchecked ::
diff --git a/src/JSDOM/Generated/SourceBufferList.hs b/src/JSDOM/Generated/SourceBufferList.hs
--- a/src/JSDOM/Generated/SourceBufferList.hs
+++ b/src/JSDOM/Generated/SourceBufferList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SourceBufferList
-       (item, item_, itemUnchecked, getLength, SourceBufferList,
-        castToSourceBufferList, gTypeSourceBufferList)
+       (item, item_, itemUnsafe, itemUnchecked, getLength,
+        SourceBufferList(..), gTypeSourceBufferList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
 item ::
@@ -26,6 +40,15 @@
 item_ :: (MonadDOM m) => SourceBufferList -> Word -> m ()
 item_ self index
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             SourceBufferList -> Word -> m SourceBuffer
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
 itemUnchecked ::
diff --git a/src/JSDOM/Generated/SourceInfo.hs b/src/JSDOM/Generated/SourceInfo.hs
--- a/src/JSDOM/Generated/SourceInfo.hs
+++ b/src/JSDOM/Generated/SourceInfo.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SourceInfo
-       (getSourceId, getKind, getLabel, SourceInfo, castToSourceInfo,
-        gTypeSourceInfo)
+       (getSourceId, getKind, getLabel, SourceInfo(..), gTypeSourceInfo)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo.sourceId Mozilla SourceInfo.sourceId documentation> 
 getSourceId ::
diff --git a/src/JSDOM/Generated/SpeechSynthesis.hs b/src/JSDOM/Generated/SpeechSynthesis.hs
--- a/src/JSDOM/Generated/SpeechSynthesis.hs
+++ b/src/JSDOM/Generated/SpeechSynthesis.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SpeechSynthesis
        (speak, cancel, pause, resume, getVoices, getVoices_, getPending,
-        getSpeaking, getPaused, SpeechSynthesis, castToSpeechSynthesis,
-        gTypeSpeechSynthesis)
+        getSpeaking, getPaused, SpeechSynthesis(..), gTypeSpeechSynthesis)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speak Mozilla SpeechSynthesis.speak documentation> 
 speak ::
diff --git a/src/JSDOM/Generated/SpeechSynthesisEvent.hs b/src/JSDOM/Generated/SpeechSynthesisEvent.hs
--- a/src/JSDOM/Generated/SpeechSynthesisEvent.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SpeechSynthesisEvent
-       (getCharIndex, getElapsedTime, getName, SpeechSynthesisEvent,
-        castToSpeechSynthesisEvent, gTypeSpeechSynthesisEvent)
+       (getCharIndex, getElapsedTime, getName, SpeechSynthesisEvent(..),
+        gTypeSpeechSynthesisEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.charIndex Mozilla SpeechSynthesisEvent.charIndex documentation> 
 getCharIndex :: (MonadDOM m) => SpeechSynthesisEvent -> m Word
diff --git a/src/JSDOM/Generated/SpeechSynthesisUtterance.hs b/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
--- a/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SpeechSynthesisUtterance
        (newSpeechSynthesisUtterance, setText, getText, setLang, getLang,
-        setVoice, getVoice, getVoiceUnchecked, setVolume, getVolume,
-        setRate, getRate, setPitch, getPitch, start, end, error, pause,
-        resume, mark, boundary, SpeechSynthesisUtterance,
-        castToSpeechSynthesisUtterance, gTypeSpeechSynthesisUtterance)
+        setVoice, getVoice, getVoiceUnsafe, getVoiceUnchecked, setVolume,
+        getVolume, setRate, getRate, setPitch, getPitch, start, end, error,
+        pause, resume, mark, boundary, SpeechSynthesisUtterance(..),
+        gTypeSpeechSynthesisUtterance)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation> 
 newSpeechSynthesisUtterance ::
@@ -62,6 +76,15 @@
          (MonadDOM m) =>
            SpeechSynthesisUtterance -> m (Maybe SpeechSynthesisVoice)
 getVoice self = liftDOM ((self ^. js "voice") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
+getVoiceUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 SpeechSynthesisUtterance -> m SpeechSynthesisVoice
+getVoiceUnsafe self
+  = liftDOM
+      (((self ^. js "voice") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
 getVoiceUnchecked ::
diff --git a/src/JSDOM/Generated/SpeechSynthesisVoice.hs b/src/JSDOM/Generated/SpeechSynthesisVoice.hs
--- a/src/JSDOM/Generated/SpeechSynthesisVoice.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisVoice.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SpeechSynthesisVoice
        (getVoiceURI, getName, getLang, getLocalService, getDefault,
-        SpeechSynthesisVoice, castToSpeechSynthesisVoice,
-        gTypeSpeechSynthesisVoice)
+        SpeechSynthesisVoice(..), gTypeSpeechSynthesisVoice)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.voiceURI Mozilla SpeechSynthesisVoice.voiceURI documentation> 
 getVoiceURI ::
diff --git a/src/JSDOM/Generated/Storage.hs b/src/JSDOM/Generated/Storage.hs
--- a/src/JSDOM/Generated/Storage.hs
+++ b/src/JSDOM/Generated/Storage.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Storage
-       (key, key_, keyUnchecked, getItem, getItem_, getItemUnchecked,
-        setItem, removeItem, clear, getLength, Storage, castToStorage,
-        gTypeStorage)
+       (key, key_, keyUnsafe, keyUnchecked, getItem, getItem_,
+        getItemUnsafe, getItemUnchecked, setItem, removeItem, clear,
+        getLength, Storage(..), gTypeStorage)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
 key ::
@@ -31,6 +45,15 @@
   = liftDOM (void (self ^. jsf "key" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
+keyUnsafe ::
+          (MonadDOM m, HasCallStack, FromJSString result) =>
+            Storage -> Word -> m result
+keyUnsafe self index
+  = liftDOM
+      (((self ^. jsf "key" [toJSVal index]) >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
 keyUnchecked ::
              (MonadDOM m, FromJSString result) => Storage -> Word -> m result
 keyUnchecked self index
@@ -49,6 +72,15 @@
 getItem_ :: (MonadDOM m, ToJSString key) => Storage -> key -> m ()
 getItem_ self key
   = liftDOM (void (self ^. jsf "getItem" [toJSVal key]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
+getItemUnsafe ::
+              (MonadDOM m, ToJSString key, HasCallStack, FromJSString result) =>
+                Storage -> key -> m result
+getItemUnsafe self key
+  = liftDOM
+      (((self ^. jsf "getItem" [toJSVal key]) >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
 getItemUnchecked ::
diff --git a/src/JSDOM/Generated/StorageErrorCallback.hs b/src/JSDOM/Generated/StorageErrorCallback.hs
--- a/src/JSDOM/Generated/StorageErrorCallback.hs
+++ b/src/JSDOM/Generated/StorageErrorCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StorageErrorCallback
        (newStorageErrorCallback, newStorageErrorCallbackSync,
         newStorageErrorCallbackAsync, StorageErrorCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
 newStorageErrorCallback ::
diff --git a/src/JSDOM/Generated/StorageEvent.hs b/src/JSDOM/Generated/StorageEvent.hs
--- a/src/JSDOM/Generated/StorageEvent.hs
+++ b/src/JSDOM/Generated/StorageEvent.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StorageEvent
-       (initStorageEvent, getKey, getOldValue, getOldValueUnchecked,
-        getNewValue, getNewValueUnchecked, getUrl, getStorageArea,
-        getStorageAreaUnchecked, StorageEvent, castToStorageEvent,
-        gTypeStorageEvent)
+       (initStorageEvent, getKey, getOldValue, getOldValueUnsafe,
+        getOldValueUnchecked, getNewValue, getNewValueUnsafe,
+        getNewValueUnchecked, getUrl, getStorageArea, getStorageAreaUnsafe,
+        getStorageAreaUnchecked, StorageEvent(..), gTypeStorageEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.initStorageEvent Mozilla StorageEvent.initStorageEvent documentation> 
 initStorageEvent ::
@@ -52,6 +66,15 @@
   = liftDOM ((self ^. js "oldValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
+getOldValueUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    StorageEvent -> m result
+getOldValueUnsafe self
+  = liftDOM
+      (((self ^. js "oldValue") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
 getOldValueUnchecked ::
                      (MonadDOM m, FromJSString result) => StorageEvent -> m result
 getOldValueUnchecked self
@@ -65,6 +88,15 @@
   = liftDOM ((self ^. js "newValue") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
+getNewValueUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    StorageEvent -> m result
+getNewValueUnsafe self
+  = liftDOM
+      (((self ^. js "newValue") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
 getNewValueUnchecked ::
                      (MonadDOM m, FromJSString result) => StorageEvent -> m result
 getNewValueUnchecked self
@@ -79,6 +111,14 @@
 getStorageArea :: (MonadDOM m) => StorageEvent -> m (Maybe Storage)
 getStorageArea self
   = liftDOM ((self ^. js "storageArea") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
+getStorageAreaUnsafe ::
+                     (MonadDOM m, HasCallStack) => StorageEvent -> m Storage
+getStorageAreaUnsafe self
+  = liftDOM
+      (((self ^. js "storageArea") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
 getStorageAreaUnchecked ::
diff --git a/src/JSDOM/Generated/StorageInfo.hs b/src/JSDOM/Generated/StorageInfo.hs
--- a/src/JSDOM/Generated/StorageInfo.hs
+++ b/src/JSDOM/Generated/StorageInfo.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StorageInfo
        (queryUsageAndQuota, requestQuota, pattern TEMPORARY,
-        pattern PERSISTENT, StorageInfo, castToStorageInfo,
-        gTypeStorageInfo)
+        pattern PERSISTENT, StorageInfo(..), gTypeStorageInfo)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.queryUsageAndQuota Mozilla StorageInfo.queryUsageAndQuota documentation> 
 queryUsageAndQuota ::
diff --git a/src/JSDOM/Generated/StorageQuota.hs b/src/JSDOM/Generated/StorageQuota.hs
--- a/src/JSDOM/Generated/StorageQuota.hs
+++ b/src/JSDOM/Generated/StorageQuota.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StorageQuota
-       (queryUsageAndQuota, requestQuota, StorageQuota,
-        castToStorageQuota, gTypeStorageQuota)
+       (queryUsageAndQuota, requestQuota, StorageQuota(..),
+        gTypeStorageQuota)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.queryUsageAndQuota Mozilla StorageQuota.queryUsageAndQuota documentation> 
 queryUsageAndQuota ::
diff --git a/src/JSDOM/Generated/StorageQuotaCallback.hs b/src/JSDOM/Generated/StorageQuotaCallback.hs
--- a/src/JSDOM/Generated/StorageQuotaCallback.hs
+++ b/src/JSDOM/Generated/StorageQuotaCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StorageQuotaCallback
        (newStorageQuotaCallback, newStorageQuotaCallbackSync,
         newStorageQuotaCallbackAsync, StorageQuotaCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
 newStorageQuotaCallback ::
diff --git a/src/JSDOM/Generated/StorageUsageCallback.hs b/src/JSDOM/Generated/StorageUsageCallback.hs
--- a/src/JSDOM/Generated/StorageUsageCallback.hs
+++ b/src/JSDOM/Generated/StorageUsageCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StorageUsageCallback
        (newStorageUsageCallback, newStorageUsageCallbackSync,
         newStorageUsageCallbackAsync, StorageUsageCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
 newStorageUsageCallback ::
diff --git a/src/JSDOM/Generated/StringCallback.hs b/src/JSDOM/Generated/StringCallback.hs
--- a/src/JSDOM/Generated/StringCallback.hs
+++ b/src/JSDOM/Generated/StringCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StringCallback
        (newStringCallback, newStringCallbackSync, newStringCallbackAsync,
         StringCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
 newStringCallback ::
diff --git a/src/JSDOM/Generated/StyleMedia.hs b/src/JSDOM/Generated/StyleMedia.hs
--- a/src/JSDOM/Generated/StyleMedia.hs
+++ b/src/JSDOM/Generated/StyleMedia.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StyleMedia
-       (matchMedium, matchMedium_, getType, StyleMedia, castToStyleMedia,
+       (matchMedium, matchMedium_, getType, StyleMedia(..),
         gTypeStyleMedia)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
 matchMedium ::
diff --git a/src/JSDOM/Generated/StyleSheet.hs b/src/JSDOM/Generated/StyleSheet.hs
--- a/src/JSDOM/Generated/StyleSheet.hs
+++ b/src/JSDOM/Generated/StyleSheet.hs
@@ -1,13 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StyleSheet
-       (getType, getTypeUnchecked, setDisabled, getDisabled, getOwnerNode,
+       (getType, getTypeUnsafe, getTypeUnchecked, setDisabled,
+        getDisabled, getOwnerNode, getOwnerNodeUnsafe,
         getOwnerNodeUnchecked, getParentStyleSheet,
-        getParentStyleSheetUnchecked, getHref, getHrefUnchecked, getTitle,
-        getTitleUnchecked, getMedia, getMediaUnchecked, StyleSheet,
-        castToStyleSheet, gTypeStyleSheet, IsStyleSheet, toStyleSheet)
+        getParentStyleSheetUnsafe, getParentStyleSheetUnchecked, getHref,
+        getHrefUnsafe, getHrefUnchecked, getTitle, getTitleUnsafe,
+        getTitleUnchecked, getMedia, getMediaUnsafe, getMediaUnchecked,
+        StyleSheet(..), gTypeStyleSheet, IsStyleSheet, toStyleSheet)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
 getType ::
@@ -28,6 +44,16 @@
       (((toStyleSheet self) ^. js "type") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
+getTypeUnsafe ::
+              (MonadDOM m, IsStyleSheet self, HasCallStack,
+               FromJSString result) =>
+                self -> m result
+getTypeUnsafe self
+  = liftDOM
+      ((((toStyleSheet self) ^. js "type") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
 getTypeUnchecked ::
                  (MonadDOM m, IsStyleSheet self, FromJSString result) =>
                    self -> m result
@@ -53,6 +79,14 @@
   = liftDOM (((toStyleSheet self) ^. js "ownerNode") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.ownerNode Mozilla StyleSheet.ownerNode documentation> 
+getOwnerNodeUnsafe ::
+                   (MonadDOM m, IsStyleSheet self, HasCallStack) => self -> m Node
+getOwnerNodeUnsafe self
+  = liftDOM
+      ((((toStyleSheet self) ^. js "ownerNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.ownerNode Mozilla StyleSheet.ownerNode documentation> 
 getOwnerNodeUnchecked ::
                       (MonadDOM m, IsStyleSheet self) => self -> m Node
 getOwnerNodeUnchecked self
@@ -67,6 +101,15 @@
       (((toStyleSheet self) ^. js "parentStyleSheet") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.parentStyleSheet Mozilla StyleSheet.parentStyleSheet documentation> 
+getParentStyleSheetUnsafe ::
+                          (MonadDOM m, IsStyleSheet self, HasCallStack) =>
+                            self -> m StyleSheet
+getParentStyleSheetUnsafe self
+  = liftDOM
+      ((((toStyleSheet self) ^. js "parentStyleSheet") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.parentStyleSheet Mozilla StyleSheet.parentStyleSheet documentation> 
 getParentStyleSheetUnchecked ::
                              (MonadDOM m, IsStyleSheet self) => self -> m StyleSheet
 getParentStyleSheetUnchecked self
@@ -83,6 +126,16 @@
       (((toStyleSheet self) ^. js "href") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
+getHrefUnsafe ::
+              (MonadDOM m, IsStyleSheet self, HasCallStack,
+               FromJSString result) =>
+                self -> m result
+getHrefUnsafe self
+  = liftDOM
+      ((((toStyleSheet self) ^. js "href") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
 getHrefUnchecked ::
                  (MonadDOM m, IsStyleSheet self, FromJSString result) =>
                    self -> m result
@@ -99,6 +152,16 @@
       (((toStyleSheet self) ^. js "title") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
+getTitleUnsafe ::
+               (MonadDOM m, IsStyleSheet self, HasCallStack,
+                FromJSString result) =>
+                 self -> m result
+getTitleUnsafe self
+  = liftDOM
+      ((((toStyleSheet self) ^. js "title") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
 getTitleUnchecked ::
                   (MonadDOM m, IsStyleSheet self, FromJSString result) =>
                     self -> m result
@@ -111,6 +174,15 @@
          (MonadDOM m, IsStyleSheet self) => self -> m (Maybe MediaList)
 getMedia self
   = liftDOM (((toStyleSheet self) ^. js "media") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.media Mozilla StyleSheet.media documentation> 
+getMediaUnsafe ::
+               (MonadDOM m, IsStyleSheet self, HasCallStack) =>
+                 self -> m MediaList
+getMediaUnsafe self
+  = liftDOM
+      ((((toStyleSheet self) ^. js "media") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.media Mozilla StyleSheet.media documentation> 
 getMediaUnchecked ::
diff --git a/src/JSDOM/Generated/StyleSheetList.hs b/src/JSDOM/Generated/StyleSheetList.hs
--- a/src/JSDOM/Generated/StyleSheetList.hs
+++ b/src/JSDOM/Generated/StyleSheetList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.StyleSheetList
-       (item, item_, itemUnchecked, _get, _get_, _getUnchecked, getLength,
-        StyleSheetList, castToStyleSheetList, gTypeStyleSheetList)
+       (item, item_, itemUnsafe, itemUnchecked, _get, _get_, _getUnsafe,
+        _getUnchecked, getLength, StyleSheetList(..), gTypeStyleSheetList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
 item ::
@@ -28,6 +42,15 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             StyleSheetList -> Word -> m StyleSheet
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => StyleSheetList -> Word -> m StyleSheet
 itemUnchecked self index
@@ -46,6 +69,15 @@
       (MonadDOM m, ToJSString name) => StyleSheetList -> name -> m ()
 _get_ self name
   = liftDOM (void (self ^. jsf "_get" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList._get Mozilla StyleSheetList._get documentation> 
+_getUnsafe ::
+           (MonadDOM m, ToJSString name, HasCallStack) =>
+             StyleSheetList -> name -> m CSSStyleSheet
+_getUnsafe self name
+  = liftDOM
+      (((self ^. jsf "_get" [toJSVal name]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList._get Mozilla StyleSheetList._get documentation> 
 _getUnchecked ::
diff --git a/src/JSDOM/Generated/SubtleCrypto.hs b/src/JSDOM/Generated/SubtleCrypto.hs
--- a/src/JSDOM/Generated/SubtleCrypto.hs
+++ b/src/JSDOM/Generated/SubtleCrypto.hs
@@ -1,16 +1,22 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.SubtleCrypto
-       (encrypt, encrypt_, encryptUnchecked, decrypt, decrypt_,
-        decryptUnchecked, sign, sign_, signUnchecked, verify, verify_,
-        verifyUnchecked, digest, digest_, digestUnchecked, generateKey,
-        generateKey_, generateKeyUnchecked, importKey, importKey_,
-        importKeyUnchecked, exportKey, exportKey_, exportKeyUnchecked,
-        wrapKey, wrapKey_, wrapKeyUnchecked, unwrapKey, unwrapKey_,
-        unwrapKeyUnchecked, SubtleCrypto, castToSubtleCrypto,
+       (encrypt, encrypt_, encryptUnsafe, encryptUnchecked, decrypt,
+        decrypt_, decryptUnsafe, decryptUnchecked, sign, sign_, signUnsafe,
+        signUnchecked, verify, verify_, verifyUnsafe, verifyUnchecked,
+        digest, digest_, digestUnsafe, digestUnchecked, generateKey,
+        generateKey_, generateKeyUnsafe, generateKeyUnchecked, importKey,
+        importKey_, importKeyUnsafe, importKeyUnchecked, exportKey,
+        exportKey_, exportKeyUnsafe, exportKeyUnchecked, wrapKey, wrapKey_,
+        wrapKeyUnsafe, wrapKeyUnchecked, unwrapKey, unwrapKey_,
+        unwrapKeyUnsafe, unwrapKeyUnchecked, SubtleCrypto(..),
         gTypeSubtleCrypto)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
 encrypt ::
@@ -45,6 +61,19 @@
             [toJSVal algorithm, toJSVal key, toJSVal (array data')]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
+encryptUnsafe ::
+              (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data',
+               HasCallStack) =>
+                SubtleCrypto ->
+                  algorithm -> Maybe CryptoKey -> [Maybe data'] -> m Promise
+encryptUnsafe self algorithm key data'
+  = liftDOM
+      (((self ^. jsf "encrypt"
+           [toJSVal algorithm, toJSVal key, toJSVal (array data')])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
 encryptUnchecked ::
                  (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
                    SubtleCrypto ->
@@ -78,6 +107,19 @@
             [toJSVal algorithm, toJSVal key, toJSVal (array data')]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
+decryptUnsafe ::
+              (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data',
+               HasCallStack) =>
+                SubtleCrypto ->
+                  algorithm -> Maybe CryptoKey -> [Maybe data'] -> m Promise
+decryptUnsafe self algorithm key data'
+  = liftDOM
+      (((self ^. jsf "decrypt"
+           [toJSVal algorithm, toJSVal key, toJSVal (array data')])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
 decryptUnchecked ::
                  (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
                    SubtleCrypto ->
@@ -111,6 +153,19 @@
             [toJSVal algorithm, toJSVal key, toJSVal (array data')]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
+signUnsafe ::
+           (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data',
+            HasCallStack) =>
+             SubtleCrypto ->
+               algorithm -> Maybe CryptoKey -> [Maybe data'] -> m Promise
+signUnsafe self algorithm key data'
+  = liftDOM
+      (((self ^. jsf "sign"
+           [toJSVal algorithm, toJSVal key, toJSVal (array data')])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
 signUnchecked ::
               (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
                 SubtleCrypto ->
@@ -151,6 +206,21 @@
              toJSVal (array data')]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
+verifyUnsafe ::
+             (MonadDOM m, ToJSString algorithm, IsCryptoOperationData signature,
+              IsCryptoOperationData data', HasCallStack) =>
+               SubtleCrypto ->
+                 algorithm ->
+                   Maybe CryptoKey -> Maybe signature -> [Maybe data'] -> m Promise
+verifyUnsafe self algorithm key signature data'
+  = liftDOM
+      (((self ^. jsf "verify"
+           [toJSVal algorithm, toJSVal key, toJSVal signature,
+            toJSVal (array data')])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
 verifyUnchecked ::
                 (MonadDOM m, ToJSString algorithm, IsCryptoOperationData signature,
                  IsCryptoOperationData data') =>
@@ -183,6 +253,17 @@
          (self ^. jsf "digest" [toJSVal algorithm, toJSVal (array data')]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
+digestUnsafe ::
+             (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data',
+              HasCallStack) =>
+               SubtleCrypto -> algorithm -> [Maybe data'] -> m Promise
+digestUnsafe self algorithm data'
+  = liftDOM
+      (((self ^. jsf "digest" [toJSVal algorithm, toJSVal (array data')])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
 digestUnchecked ::
                 (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
                   SubtleCrypto -> algorithm -> [Maybe data'] -> m Promise
@@ -215,6 +296,18 @@
              toJSVal (array keyUsages)]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
+generateKeyUnsafe ::
+                  (MonadDOM m, ToJSString algorithm, HasCallStack) =>
+                    SubtleCrypto -> algorithm -> Bool -> [KeyUsage] -> m Promise
+generateKeyUnsafe self algorithm extractable keyUsages
+  = liftDOM
+      (((self ^. jsf "generateKey"
+           [toJSVal algorithm, toJSVal extractable,
+            toJSVal (array keyUsages)])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
 generateKeyUnchecked ::
                      (MonadDOM m, ToJSString algorithm) =>
                        SubtleCrypto -> algorithm -> Bool -> [KeyUsage] -> m Promise
@@ -254,6 +347,21 @@
              toJSVal extractable, toJSVal (array keyUsages)]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
+importKeyUnsafe ::
+                (MonadDOM m, ToJSString format, IsCryptoOperationData keyData,
+                 ToJSString algorithm, HasCallStack) =>
+                  SubtleCrypto ->
+                    format ->
+                      Maybe keyData -> algorithm -> Bool -> [KeyUsage] -> m Promise
+importKeyUnsafe self format keyData algorithm extractable keyUsages
+  = liftDOM
+      (((self ^. jsf "importKey"
+           [toJSVal format, toJSVal keyData, toJSVal algorithm,
+            toJSVal extractable, toJSVal (array keyUsages)])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
 importKeyUnchecked ::
                    (MonadDOM m, ToJSString format, IsCryptoOperationData keyData,
                     ToJSString algorithm) =>
@@ -286,6 +394,16 @@
       (void (self ^. jsf "exportKey" [toJSVal format, toJSVal key]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
+exportKeyUnsafe ::
+                (MonadDOM m, ToJSString format, HasCallStack) =>
+                  SubtleCrypto -> format -> Maybe CryptoKey -> m Promise
+exportKeyUnsafe self format key
+  = liftDOM
+      (((self ^. jsf "exportKey" [toJSVal format, toJSVal key]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
 exportKeyUnchecked ::
                    (MonadDOM m, ToJSString format) =>
                      SubtleCrypto -> format -> Maybe CryptoKey -> m Promise
@@ -322,6 +440,21 @@
              toJSVal wrapAlgorithm]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
+wrapKeyUnsafe ::
+              (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm,
+               HasCallStack) =>
+                SubtleCrypto ->
+                  format ->
+                    Maybe CryptoKey -> Maybe CryptoKey -> wrapAlgorithm -> m Promise
+wrapKeyUnsafe self format key wrappingKey wrapAlgorithm
+  = liftDOM
+      (((self ^. jsf "wrapKey"
+           [toJSVal format, toJSVal key, toJSVal wrappingKey,
+            toJSVal wrapAlgorithm])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
 wrapKeyUnchecked ::
                  (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
                    SubtleCrypto ->
@@ -371,6 +504,27 @@
             [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey,
              toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm,
              toJSVal extractable, toJSVal (array keyUsages)]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
+unwrapKeyUnsafe ::
+                (MonadDOM m, ToJSString format, IsCryptoOperationData wrappedKey,
+                 ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm,
+                 HasCallStack) =>
+                  SubtleCrypto ->
+                    format ->
+                      Maybe wrappedKey ->
+                        Maybe CryptoKey ->
+                          unwrapAlgorithm ->
+                            unwrappedKeyAlgorithm -> Bool -> [KeyUsage] -> m Promise
+unwrapKeyUnsafe self format wrappedKey unwrappingKey
+  unwrapAlgorithm unwrappedKeyAlgorithm extractable keyUsages
+  = liftDOM
+      (((self ^. jsf "unwrapKey"
+           [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey,
+            toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm,
+            toJSVal extractable, toJSVal (array keyUsages)])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
 unwrapKeyUnchecked ::
diff --git a/src/JSDOM/Generated/Text.hs b/src/JSDOM/Generated/Text.hs
--- a/src/JSDOM/Generated/Text.hs
+++ b/src/JSDOM/Generated/Text.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Text
-       (newText, splitText, splitText_, splitTextUnchecked,
-        replaceWholeText, replaceWholeText_, replaceWholeTextUnchecked,
-        getWholeText, Text, castToText, gTypeText, IsText, toText)
+       (newText, splitText, splitText_, splitTextUnsafe,
+        splitTextUnchecked, replaceWholeText, replaceWholeText_,
+        replaceWholeTextUnsafe, replaceWholeTextUnchecked, getWholeText,
+        Text(..), gTypeText, IsText, toText)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation> 
 newText :: (MonadDOM m, ToJSString data') => data' -> m Text
@@ -35,6 +50,15 @@
       (void ((toText self) ^. jsf "splitText" [toJSVal offset]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
+splitTextUnsafe ::
+                (MonadDOM m, IsText self, HasCallStack) => self -> Word -> m Text
+splitTextUnsafe self offset
+  = liftDOM
+      ((((toText self) ^. jsf "splitText" [toJSVal offset]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
 splitTextUnchecked ::
                    (MonadDOM m, IsText self) => self -> Word -> m Text
 splitTextUnchecked self offset
@@ -58,6 +82,16 @@
 replaceWholeText_ self content
   = liftDOM
       (void ((toText self) ^. jsf "replaceWholeText" [toJSVal content]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.replaceWholeText Mozilla Text.replaceWholeText documentation> 
+replaceWholeTextUnsafe ::
+                       (MonadDOM m, IsText self, ToJSString content, HasCallStack) =>
+                         self -> content -> m Text
+replaceWholeTextUnsafe self content
+  = liftDOM
+      ((((toText self) ^. jsf "replaceWholeText" [toJSVal content]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.replaceWholeText Mozilla Text.replaceWholeText documentation> 
 replaceWholeTextUnchecked ::
diff --git a/src/JSDOM/Generated/TextEvent.hs b/src/JSDOM/Generated/TextEvent.hs
--- a/src/JSDOM/Generated/TextEvent.hs
+++ b/src/JSDOM/Generated/TextEvent.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TextEvent
-       (initTextEvent, getData, TextEvent, castToTextEvent,
-        gTypeTextEvent)
-       where
+       (initTextEvent, getData, TextEvent(..), gTypeTextEvent) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.initTextEvent Mozilla TextEvent.initTextEvent documentation> 
 initTextEvent ::
diff --git a/src/JSDOM/Generated/TextMetrics.hs b/src/JSDOM/Generated/TextMetrics.hs
--- a/src/JSDOM/Generated/TextMetrics.hs
+++ b/src/JSDOM/Generated/TextMetrics.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TextMetrics
-       (getWidth, TextMetrics, castToTextMetrics, gTypeTextMetrics) where
+       (getWidth, TextMetrics(..), gTypeTextMetrics) where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -13,6 +17,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics.width Mozilla TextMetrics.width documentation> 
 getWidth :: (MonadDOM m) => TextMetrics -> m Float
diff --git a/src/JSDOM/Generated/TextTrack.hs b/src/JSDOM/Generated/TextTrack.hs
--- a/src/JSDOM/Generated/TextTrack.hs
+++ b/src/JSDOM/Generated/TextTrack.hs
@@ -1,15 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TextTrack
        (addCue, removeCue, addRegion, removeRegion, getId, setKind,
         getKind, getLabel, setLanguage, getLanguage,
         getInBandMetadataTrackDispatchType, setMode, getMode, getCues,
-        getCuesUnchecked, getActiveCues, getActiveCuesUnchecked, cueChange,
-        getRegions, getRegionsUnchecked, getSourceBuffer,
-        getSourceBufferUnchecked, TextTrack, castToTextTrack,
+        getCuesUnsafe, getCuesUnchecked, getActiveCues,
+        getActiveCuesUnsafe, getActiveCuesUnchecked, cueChange, getRegions,
+        getRegionsUnsafe, getRegionsUnchecked, getSourceBuffer,
+        getSourceBufferUnsafe, getSourceBufferUnchecked, TextTrack(..),
         gTypeTextTrack)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addCue Mozilla TextTrack.addCue documentation> 
 addCue ::
@@ -95,6 +110,14 @@
 getCues self = liftDOM ((self ^. js "cues") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
+getCuesUnsafe ::
+              (MonadDOM m, HasCallStack) => TextTrack -> m TextTrackCueList
+getCuesUnsafe self
+  = liftDOM
+      (((self ^. js "cues") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
 getCuesUnchecked :: (MonadDOM m) => TextTrack -> m TextTrackCueList
 getCuesUnchecked self
   = liftDOM ((self ^. js "cues") >>= fromJSValUnchecked)
@@ -106,6 +129,14 @@
   = liftDOM ((self ^. js "activeCues") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
+getActiveCuesUnsafe ::
+                    (MonadDOM m, HasCallStack) => TextTrack -> m TextTrackCueList
+getActiveCuesUnsafe self
+  = liftDOM
+      (((self ^. js "activeCues") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
 getActiveCuesUnchecked ::
                        (MonadDOM m) => TextTrack -> m TextTrackCueList
 getActiveCuesUnchecked self
@@ -120,6 +151,14 @@
 getRegions self = liftDOM ((self ^. js "regions") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.regions Mozilla TextTrack.regions documentation> 
+getRegionsUnsafe ::
+                 (MonadDOM m, HasCallStack) => TextTrack -> m VTTRegionList
+getRegionsUnsafe self
+  = liftDOM
+      (((self ^. js "regions") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.regions Mozilla TextTrack.regions documentation> 
 getRegionsUnchecked :: (MonadDOM m) => TextTrack -> m VTTRegionList
 getRegionsUnchecked self
   = liftDOM ((self ^. js "regions") >>= fromJSValUnchecked)
@@ -129,6 +168,14 @@
                 (MonadDOM m) => TextTrack -> m (Maybe SourceBuffer)
 getSourceBuffer self
   = liftDOM ((self ^. js "sourceBuffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.sourceBuffer Mozilla TextTrack.sourceBuffer documentation> 
+getSourceBufferUnsafe ::
+                      (MonadDOM m, HasCallStack) => TextTrack -> m SourceBuffer
+getSourceBufferUnsafe self
+  = liftDOM
+      (((self ^. js "sourceBuffer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.sourceBuffer Mozilla TextTrack.sourceBuffer documentation> 
 getSourceBufferUnchecked ::
diff --git a/src/JSDOM/Generated/TextTrackCue.hs b/src/JSDOM/Generated/TextTrackCue.hs
--- a/src/JSDOM/Generated/TextTrackCue.hs
+++ b/src/JSDOM/Generated/TextTrackCue.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TextTrackCue
-       (newTextTrackCue, getTrack, getTrackUnchecked, setId, getId,
-        setStartTime, getStartTime, setEndTime, getEndTime, setPauseOnExit,
-        getPauseOnExit, enter, exit, TextTrackCue, castToTextTrackCue,
+       (newTextTrackCue, getTrack, getTrackUnsafe, getTrackUnchecked,
+        setId, getId, setStartTime, getStartTime, setEndTime, getEndTime,
+        setPauseOnExit, getPauseOnExit, enter, exit, TextTrackCue(..),
         gTypeTextTrackCue, IsTextTrackCue, toTextTrackCue)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue Mozilla TextTrackCue documentation> 
 newTextTrackCue ::
@@ -33,6 +47,15 @@
          (MonadDOM m, IsTextTrackCue self) => self -> m (Maybe TextTrack)
 getTrack self
   = liftDOM (((toTextTrackCue self) ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.track Mozilla TextTrackCue.track documentation> 
+getTrackUnsafe ::
+               (MonadDOM m, IsTextTrackCue self, HasCallStack) =>
+                 self -> m TextTrack
+getTrackUnsafe self
+  = liftDOM
+      ((((toTextTrackCue self) ^. js "track") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.track Mozilla TextTrackCue.track documentation> 
 getTrackUnchecked ::
diff --git a/src/JSDOM/Generated/TextTrackCueList.hs b/src/JSDOM/Generated/TextTrackCueList.hs
--- a/src/JSDOM/Generated/TextTrackCueList.hs
+++ b/src/JSDOM/Generated/TextTrackCueList.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TextTrackCueList
-       (item, item_, itemUnchecked, getCueById, getCueById_,
-        getCueByIdUnchecked, getLength, TextTrackCueList,
-        castToTextTrackCueList, gTypeTextTrackCueList)
+       (item, item_, itemUnsafe, itemUnchecked, getCueById, getCueById_,
+        getCueByIdUnsafe, getCueByIdUnchecked, getLength,
+        TextTrackCueList(..), gTypeTextTrackCueList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
 item ::
@@ -29,6 +43,15 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             TextTrackCueList -> Word -> m TextTrackCue
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => TextTrackCueList -> Word -> m TextTrackCue
 itemUnchecked self index
@@ -47,6 +70,15 @@
             (MonadDOM m, ToJSString id) => TextTrackCueList -> id -> m ()
 getCueById_ self id
   = liftDOM (void (self ^. jsf "getCueById" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
+getCueByIdUnsafe ::
+                 (MonadDOM m, ToJSString id, HasCallStack) =>
+                   TextTrackCueList -> id -> m TextTrackCue
+getCueByIdUnsafe self id
+  = liftDOM
+      (((self ^. jsf "getCueById" [toJSVal id]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
 getCueByIdUnchecked ::
diff --git a/src/JSDOM/Generated/TextTrackList.hs b/src/JSDOM/Generated/TextTrackList.hs
--- a/src/JSDOM/Generated/TextTrackList.hs
+++ b/src/JSDOM/Generated/TextTrackList.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TextTrackList
-       (item, item_, itemUnchecked, getTrackById, getTrackById_,
-        getTrackByIdUnchecked, getLength, addTrack, change, removeTrack,
-        TextTrackList, castToTextTrackList, gTypeTextTrackList)
+       (item, item_, itemUnsafe, itemUnchecked, getTrackById,
+        getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked,
+        getLength, addTrack, change, removeTrack, TextTrackList(..),
+        gTypeTextTrackList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
 item ::
@@ -29,6 +44,14 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => TextTrackList -> Word -> m TextTrack
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => TextTrackList -> Word -> m TextTrack
 itemUnchecked self index
@@ -47,6 +70,15 @@
               (MonadDOM m, ToJSString id) => TextTrackList -> id -> m ()
 getTrackById_ self id
   = liftDOM (void (self ^. jsf "getTrackById" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
+getTrackByIdUnsafe ::
+                   (MonadDOM m, ToJSString id, HasCallStack) =>
+                     TextTrackList -> id -> m TextTrack
+getTrackByIdUnsafe self id
+  = liftDOM
+      (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
 getTrackByIdUnchecked ::
diff --git a/src/JSDOM/Generated/TimeRanges.hs b/src/JSDOM/Generated/TimeRanges.hs
--- a/src/JSDOM/Generated/TimeRanges.hs
+++ b/src/JSDOM/Generated/TimeRanges.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TimeRanges
-       (start, start_, end, end_, getLength, TimeRanges, castToTimeRanges,
+       (start, start_, end, end_, getLength, TimeRanges(..),
         gTypeTimeRanges)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
 start :: (MonadDOM m) => TimeRanges -> Word -> m Double
diff --git a/src/JSDOM/Generated/Touch.hs b/src/JSDOM/Generated/Touch.hs
--- a/src/JSDOM/Generated/Touch.hs
+++ b/src/JSDOM/Generated/Touch.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Touch
        (getClientX, getClientY, getScreenX, getScreenY, getPageX,
-        getPageY, getTarget, getTargetUnchecked, getIdentifier,
-        getWebkitRadiusX, getWebkitRadiusY, getWebkitRotationAngle,
-        getWebkitForce, Touch, castToTouch, gTypeTouch)
+        getPageY, getTarget, getTargetUnsafe, getTargetUnchecked,
+        getIdentifier, getWebkitRadiusX, getWebkitRadiusY,
+        getWebkitRotationAngle, getWebkitForce, Touch(..), gTypeTouch)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientX Mozilla Touch.clientX documentation> 
 getClientX :: (MonadDOM m) => Touch -> m Int
@@ -51,6 +65,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.target Mozilla Touch.target documentation> 
 getTarget :: (MonadDOM m) => Touch -> m (Maybe EventTarget)
 getTarget self = liftDOM ((self ^. js "target") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.target Mozilla Touch.target documentation> 
+getTargetUnsafe ::
+                (MonadDOM m, HasCallStack) => Touch -> m EventTarget
+getTargetUnsafe self
+  = liftDOM
+      (((self ^. js "target") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.target Mozilla Touch.target documentation> 
 getTargetUnchecked :: (MonadDOM m) => Touch -> m EventTarget
diff --git a/src/JSDOM/Generated/TouchEvent.hs b/src/JSDOM/Generated/TouchEvent.hs
--- a/src/JSDOM/Generated/TouchEvent.hs
+++ b/src/JSDOM/Generated/TouchEvent.hs
@@ -1,12 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TouchEvent
-       (initTouchEvent, getTouches, getTouchesUnchecked, getTargetTouches,
+       (initTouchEvent, getTouches, getTouchesUnsafe, getTouchesUnchecked,
+        getTargetTouches, getTargetTouchesUnsafe,
         getTargetTouchesUnchecked, getChangedTouches,
-        getChangedTouchesUnchecked, getCtrlKey, getShiftKey, getAltKey,
-        getMetaKey, TouchEvent, castToTouchEvent, gTypeTouchEvent)
+        getChangedTouchesUnsafe, getChangedTouchesUnchecked, getCtrlKey,
+        getShiftKey, getAltKey, getMetaKey, TouchEvent(..),
+        gTypeTouchEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.initTouchEvent Mozilla TouchEvent.initTouchEvent documentation> 
 initTouchEvent ::
@@ -43,6 +59,14 @@
 getTouches self = liftDOM ((self ^. js "touches") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.touches Mozilla TouchEvent.touches documentation> 
+getTouchesUnsafe ::
+                 (MonadDOM m, HasCallStack) => TouchEvent -> m TouchList
+getTouchesUnsafe self
+  = liftDOM
+      (((self ^. js "touches") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.touches Mozilla TouchEvent.touches documentation> 
 getTouchesUnchecked :: (MonadDOM m) => TouchEvent -> m TouchList
 getTouchesUnchecked self
   = liftDOM ((self ^. js "touches") >>= fromJSValUnchecked)
@@ -54,6 +78,14 @@
   = liftDOM ((self ^. js "targetTouches") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.targetTouches Mozilla TouchEvent.targetTouches documentation> 
+getTargetTouchesUnsafe ::
+                       (MonadDOM m, HasCallStack) => TouchEvent -> m TouchList
+getTargetTouchesUnsafe self
+  = liftDOM
+      (((self ^. js "targetTouches") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.targetTouches Mozilla TouchEvent.targetTouches documentation> 
 getTargetTouchesUnchecked ::
                           (MonadDOM m) => TouchEvent -> m TouchList
 getTargetTouchesUnchecked self
@@ -64,6 +96,14 @@
                   (MonadDOM m) => TouchEvent -> m (Maybe TouchList)
 getChangedTouches self
   = liftDOM ((self ^. js "changedTouches") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches Mozilla TouchEvent.changedTouches documentation> 
+getChangedTouchesUnsafe ::
+                        (MonadDOM m, HasCallStack) => TouchEvent -> m TouchList
+getChangedTouchesUnsafe self
+  = liftDOM
+      (((self ^. js "changedTouches") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches Mozilla TouchEvent.changedTouches documentation> 
 getChangedTouchesUnchecked ::
diff --git a/src/JSDOM/Generated/TouchList.hs b/src/JSDOM/Generated/TouchList.hs
--- a/src/JSDOM/Generated/TouchList.hs
+++ b/src/JSDOM/Generated/TouchList.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TouchList
-       (item, item_, itemUnchecked, getLength, TouchList, castToTouchList,
+       (item, item_, itemUnsafe, itemUnchecked, getLength, TouchList(..),
         gTypeTouchList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
 item :: (MonadDOM m) => TouchList -> Word -> m (Maybe Touch)
@@ -25,6 +39,14 @@
 item_ :: (MonadDOM m) => TouchList -> Word -> m ()
 item_ self index
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => TouchList -> Word -> m Touch
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
 itemUnchecked :: (MonadDOM m) => TouchList -> Word -> m Touch
diff --git a/src/JSDOM/Generated/TrackEvent.hs b/src/JSDOM/Generated/TrackEvent.hs
--- a/src/JSDOM/Generated/TrackEvent.hs
+++ b/src/JSDOM/Generated/TrackEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TrackEvent
-       (getTrack, getTrackUnchecked, TrackEvent, castToTrackEvent,
+       (getTrack, getTrackUnsafe, getTrackUnchecked, TrackEvent(..),
         gTypeTrackEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,10 +19,28 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
 getTrack :: (MonadDOM m) => TrackEvent -> m (Maybe GObject)
 getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
+getTrackUnsafe ::
+               (MonadDOM m, HasCallStack) => TrackEvent -> m GObject
+getTrackUnsafe self
+  = liftDOM
+      (((self ^. js "track") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
 getTrackUnchecked :: (MonadDOM m) => TrackEvent -> m GObject
diff --git a/src/JSDOM/Generated/TransitionEvent.hs b/src/JSDOM/Generated/TransitionEvent.hs
--- a/src/JSDOM/Generated/TransitionEvent.hs
+++ b/src/JSDOM/Generated/TransitionEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TransitionEvent
        (getPropertyName, getElapsedTime, getPseudoElement,
-        TransitionEvent, castToTransitionEvent, gTypeTransitionEvent)
+        TransitionEvent(..), gTypeTransitionEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.propertyName Mozilla TransitionEvent.propertyName documentation> 
 getPropertyName ::
diff --git a/src/JSDOM/Generated/TreeWalker.hs b/src/JSDOM/Generated/TreeWalker.hs
--- a/src/JSDOM/Generated/TreeWalker.hs
+++ b/src/JSDOM/Generated/TreeWalker.hs
@@ -1,18 +1,24 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TreeWalker
-       (parentNode, parentNode_, parentNodeUnchecked, firstChild,
-        firstChild_, firstChildUnchecked, lastChild, lastChild_,
-        lastChildUnchecked, previousSibling, previousSibling_,
+       (parentNode, parentNode_, parentNodeUnsafe, parentNodeUnchecked,
+        firstChild, firstChild_, firstChildUnsafe, firstChildUnchecked,
+        lastChild, lastChild_, lastChildUnsafe, lastChildUnchecked,
+        previousSibling, previousSibling_, previousSiblingUnsafe,
         previousSiblingUnchecked, nextSibling, nextSibling_,
-        nextSiblingUnchecked, previousNode, previousNode_,
-        previousNodeUnchecked, nextNode, nextNode_, nextNodeUnchecked,
-        getRoot, getRootUnchecked, getWhatToShow, getFilter,
-        getFilterUnchecked, getExpandEntityReferences, setCurrentNode,
-        getCurrentNode, getCurrentNodeUnchecked, TreeWalker,
-        castToTreeWalker, gTypeTreeWalker)
+        nextSiblingUnsafe, nextSiblingUnchecked, previousNode,
+        previousNode_, previousNodeUnsafe, previousNodeUnchecked, nextNode,
+        nextNode_, nextNodeUnsafe, nextNodeUnchecked, getRoot,
+        getRootUnsafe, getRootUnchecked, getWhatToShow, getFilter,
+        getFilterUnsafe, getFilterUnchecked, getExpandEntityReferences,
+        setCurrentNode, getCurrentNode, getCurrentNodeUnsafe,
+        getCurrentNodeUnchecked, TreeWalker(..), gTypeTreeWalker)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +29,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
 parentNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
@@ -34,6 +50,14 @@
 parentNode_ self = liftDOM (void (self ^. jsf "parentNode" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
+parentNodeUnsafe ::
+                 (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+parentNodeUnsafe self
+  = liftDOM
+      (((self ^. jsf "parentNode" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
 parentNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
 parentNodeUnchecked self
   = liftDOM ((self ^. jsf "parentNode" ()) >>= fromJSValUnchecked)
@@ -48,6 +72,14 @@
 firstChild_ self = liftDOM (void (self ^. jsf "firstChild" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
+firstChildUnsafe ::
+                 (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+firstChildUnsafe self
+  = liftDOM
+      (((self ^. jsf "firstChild" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
 firstChildUnchecked :: (MonadDOM m) => TreeWalker -> m Node
 firstChildUnchecked self
   = liftDOM ((self ^. jsf "firstChild" ()) >>= fromJSValUnchecked)
@@ -62,6 +94,14 @@
 lastChild_ self = liftDOM (void (self ^. jsf "lastChild" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
+lastChildUnsafe ::
+                (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+lastChildUnsafe self
+  = liftDOM
+      (((self ^. jsf "lastChild" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
 lastChildUnchecked :: (MonadDOM m) => TreeWalker -> m Node
 lastChildUnchecked self
   = liftDOM ((self ^. jsf "lastChild" ()) >>= fromJSValUnchecked)
@@ -77,6 +117,14 @@
   = liftDOM (void (self ^. jsf "previousSibling" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
+previousSiblingUnsafe ::
+                      (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+previousSiblingUnsafe self
+  = liftDOM
+      (((self ^. jsf "previousSibling" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
 previousSiblingUnchecked :: (MonadDOM m) => TreeWalker -> m Node
 previousSiblingUnchecked self
   = liftDOM
@@ -92,6 +140,14 @@
 nextSibling_ self = liftDOM (void (self ^. jsf "nextSibling" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
+nextSiblingUnsafe ::
+                  (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+nextSiblingUnsafe self
+  = liftDOM
+      (((self ^. jsf "nextSibling" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
 nextSiblingUnchecked :: (MonadDOM m) => TreeWalker -> m Node
 nextSiblingUnchecked self
   = liftDOM ((self ^. jsf "nextSibling" ()) >>= fromJSValUnchecked)
@@ -106,6 +162,14 @@
 previousNode_ self = liftDOM (void (self ^. jsf "previousNode" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
+previousNodeUnsafe ::
+                   (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+previousNodeUnsafe self
+  = liftDOM
+      (((self ^. jsf "previousNode" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
 previousNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
 previousNodeUnchecked self
   = liftDOM ((self ^. jsf "previousNode" ()) >>= fromJSValUnchecked)
@@ -119,6 +183,14 @@
 nextNode_ self = liftDOM (void (self ^. jsf "nextNode" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
+nextNodeUnsafe ::
+               (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+nextNodeUnsafe self
+  = liftDOM
+      (((self ^. jsf "nextNode" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
 nextNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
 nextNodeUnchecked self
   = liftDOM ((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked)
@@ -128,6 +200,13 @@
 getRoot self = liftDOM ((self ^. js "root") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.root Mozilla TreeWalker.root documentation> 
+getRootUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+getRootUnsafe self
+  = liftDOM
+      (((self ^. js "root") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.root Mozilla TreeWalker.root documentation> 
 getRootUnchecked :: (MonadDOM m) => TreeWalker -> m Node
 getRootUnchecked self
   = liftDOM ((self ^. js "root") >>= fromJSValUnchecked)
@@ -142,6 +221,14 @@
 getFilter self = liftDOM ((self ^. js "filter") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.filter Mozilla TreeWalker.filter documentation> 
+getFilterUnsafe ::
+                (MonadDOM m, HasCallStack) => TreeWalker -> m NodeFilter
+getFilterUnsafe self
+  = liftDOM
+      (((self ^. js "filter") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.filter Mozilla TreeWalker.filter documentation> 
 getFilterUnchecked :: (MonadDOM m) => TreeWalker -> m NodeFilter
 getFilterUnchecked self
   = liftDOM ((self ^. js "filter") >>= fromJSValUnchecked)
@@ -161,6 +248,14 @@
 getCurrentNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
 getCurrentNode self
   = liftDOM ((self ^. js "currentNode") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
+getCurrentNodeUnsafe ::
+                     (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+getCurrentNodeUnsafe self
+  = liftDOM
+      (((self ^. js "currentNode") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
 getCurrentNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
diff --git a/src/JSDOM/Generated/TypeConversions.hs b/src/JSDOM/Generated/TypeConversions.hs
--- a/src/JSDOM/Generated/TypeConversions.hs
+++ b/src/JSDOM/Generated/TypeConversions.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.TypeConversions
        (setTestLong, getTestLong, setTestEnforceRangeLong,
@@ -13,10 +16,11 @@
         setTestShort, getTestShort, setTestEnforceRangeShort,
         getTestEnforceRangeShort, setTestUnsignedShort,
         getTestUnsignedShort, setTestEnforceRangeUnsignedShort,
-        getTestEnforceRangeUnsignedShort, TypeConversions,
-        castToTypeConversions, gTypeTypeConversions)
+        getTestEnforceRangeUnsignedShort, TypeConversions(..),
+        gTypeTypeConversions)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -27,6 +31,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions.testLong Mozilla TypeConversions.testLong documentation> 
 setTestLong :: (MonadDOM m) => TypeConversions -> Int -> m ()
diff --git a/src/JSDOM/Generated/UIEvent.hs b/src/JSDOM/Generated/UIEvent.hs
--- a/src/JSDOM/Generated/UIEvent.hs
+++ b/src/JSDOM/Generated/UIEvent.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.UIEvent
-       (initUIEvent, getView, getViewUnchecked, getDetail, getKeyCode,
-        getCharCode, getLayerX, getLayerY, getPageX, getPageY, getWhich,
-        UIEvent, castToUIEvent, gTypeUIEvent, IsUIEvent, toUIEvent)
+       (initUIEvent, getView, getViewUnsafe, getViewUnchecked, getDetail,
+        getKeyCode, getCharCode, getLayerX, getLayerY, getPageX, getPageY,
+        getWhich, UIEvent(..), gTypeUIEvent, IsUIEvent, toUIEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.initUIEvent Mozilla UIEvent.initUIEvent documentation> 
 initUIEvent ::
@@ -31,6 +45,14 @@
 getView :: (MonadDOM m, IsUIEvent self) => self -> m (Maybe Window)
 getView self
   = liftDOM (((toUIEvent self) ^. js "view") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.view Mozilla UIEvent.view documentation> 
+getViewUnsafe ::
+              (MonadDOM m, IsUIEvent self, HasCallStack) => self -> m Window
+getViewUnsafe self
+  = liftDOM
+      ((((toUIEvent self) ^. js "view") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.view Mozilla UIEvent.view documentation> 
 getViewUnchecked ::
diff --git a/src/JSDOM/Generated/UIRequestEvent.hs b/src/JSDOM/Generated/UIRequestEvent.hs
--- a/src/JSDOM/Generated/UIRequestEvent.hs
+++ b/src/JSDOM/Generated/UIRequestEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.UIRequestEvent
-       (getReceiver, getReceiverUnchecked, UIRequestEvent,
-        castToUIRequestEvent, gTypeUIRequestEvent)
+       (getReceiver, getReceiverUnsafe, getReceiverUnchecked,
+        UIRequestEvent(..), gTypeUIRequestEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent.receiver Mozilla UIRequestEvent.receiver documentation> 
 getReceiver ::
             (MonadDOM m) => UIRequestEvent -> m (Maybe EventTarget)
 getReceiver self = liftDOM ((self ^. js "receiver") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent.receiver Mozilla UIRequestEvent.receiver documentation> 
+getReceiverUnsafe ::
+                  (MonadDOM m, HasCallStack) => UIRequestEvent -> m EventTarget
+getReceiverUnsafe self
+  = liftDOM
+      (((self ^. js "receiver") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent.receiver Mozilla UIRequestEvent.receiver documentation> 
 getReceiverUnchecked ::
diff --git a/src/JSDOM/Generated/URL.hs b/src/JSDOM/Generated/URL.hs
--- a/src/JSDOM/Generated/URL.hs
+++ b/src/JSDOM/Generated/URL.hs
@@ -1,13 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.URL
        (newURL, newURL', newURL'', createObjectURL, createObjectURL_,
-        createObjectURLUnchecked, revokeObjectURL, createObjectURLSource,
-        createObjectURLSource_, createObjectURLSourceUnchecked,
+        createObjectURLUnsafe, createObjectURLUnchecked, revokeObjectURL,
+        createObjectURLSource, createObjectURLSource_,
+        createObjectURLSourceUnsafe, createObjectURLSourceUnchecked,
         createObjectURLStream, createObjectURLStream_,
-        createObjectURLStreamUnchecked, URL, castToURL, gTypeURL)
+        createObjectURLStreamUnsafe, createObjectURLStreamUnchecked,
+        URL(..), gTypeURL)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
 newURL :: (MonadDOM m, ToJSString url) => url -> m URL
@@ -52,6 +68,16 @@
   = liftDOM (void (self ^. jsf "createObjectURL" [toJSVal blob]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLUnsafe ::
+                      (MonadDOM m, IsBlob blob, HasCallStack, FromJSString result) =>
+                        URL -> Maybe blob -> m result
+createObjectURLUnsafe self blob
+  = liftDOM
+      (((self ^. jsf "createObjectURL" [toJSVal blob]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
 createObjectURLUnchecked ::
                          (MonadDOM m, IsBlob blob, FromJSString result) =>
                            URL -> Maybe blob -> m result
@@ -82,6 +108,16 @@
   = liftDOM (void (self ^. jsf "createObjectURL" [toJSVal source]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLSourceUnsafe ::
+                            (MonadDOM m, HasCallStack, FromJSString result) =>
+                              URL -> Maybe MediaSource -> m result
+createObjectURLSourceUnsafe self source
+  = liftDOM
+      (((self ^. jsf "createObjectURL" [toJSVal source]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
 createObjectURLSourceUnchecked ::
                                (MonadDOM m, FromJSString result) =>
                                  URL -> Maybe MediaSource -> m result
@@ -104,6 +140,16 @@
                        (MonadDOM m) => URL -> Maybe MediaStream -> m ()
 createObjectURLStream_ self stream
   = liftDOM (void (self ^. jsf "createObjectURL" [toJSVal stream]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLStreamUnsafe ::
+                            (MonadDOM m, HasCallStack, FromJSString result) =>
+                              URL -> Maybe MediaStream -> m result
+createObjectURLStreamUnsafe self stream
+  = liftDOM
+      (((self ^. jsf "createObjectURL" [toJSVal stream]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
 createObjectURLStreamUnchecked ::
diff --git a/src/JSDOM/Generated/URLUtils.hs b/src/JSDOM/Generated/URLUtils.hs
--- a/src/JSDOM/Generated/URLUtils.hs
+++ b/src/JSDOM/Generated/URLUtils.hs
@@ -1,16 +1,22 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.URLUtils
        (toString, toString_, setHref, getHref, getOrigin, setProtocol,
-        getProtocol, getProtocolUnchecked, setUsername, getUsername,
-        getUsernameUnchecked, setPassword, getPassword,
-        getPasswordUnchecked, setHost, getHost, getHostUnchecked,
-        setHostname, getHostname, getHostnameUnchecked, setPort, getPort,
-        getPortUnchecked, setPathname, getPathname, getPathnameUnchecked,
-        setSearch, getSearch, getSearchUnchecked, setHash, getHash,
-        getHashUnchecked, URLUtils, castToURLUtils, gTypeURLUtils)
+        getProtocol, getProtocolUnsafe, getProtocolUnchecked, setUsername,
+        getUsername, getUsernameUnsafe, getUsernameUnchecked, setPassword,
+        getPassword, getPasswordUnsafe, getPasswordUnchecked, setHost,
+        getHost, getHostUnsafe, getHostUnchecked, setHostname, getHostname,
+        getHostnameUnsafe, getHostnameUnchecked, setPort, getPort,
+        getPortUnsafe, getPortUnchecked, setPathname, getPathname,
+        getPathnameUnsafe, getPathnameUnchecked, setSearch, getSearch,
+        getSearchUnsafe, getSearchUnchecked, setHash, getHash,
+        getHashUnsafe, getHashUnchecked, URLUtils(..), gTypeURLUtils)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.toString Mozilla URLUtils.toString documentation> 
 toString ::
@@ -60,6 +76,15 @@
   = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.protocol Mozilla URLUtils.protocol documentation> 
+getProtocolUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    URLUtils -> m result
+getProtocolUnsafe self
+  = liftDOM
+      (((self ^. js "protocol") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.protocol Mozilla URLUtils.protocol documentation> 
 getProtocolUnchecked ::
                      (MonadDOM m, FromJSString result) => URLUtils -> m result
 getProtocolUnchecked self
@@ -78,6 +103,15 @@
   = liftDOM ((self ^. js "username") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.username Mozilla URLUtils.username documentation> 
+getUsernameUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    URLUtils -> m result
+getUsernameUnsafe self
+  = liftDOM
+      (((self ^. js "username") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.username Mozilla URLUtils.username documentation> 
 getUsernameUnchecked ::
                      (MonadDOM m, FromJSString result) => URLUtils -> m result
 getUsernameUnchecked self
@@ -96,6 +130,15 @@
   = liftDOM ((self ^. js "password") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.password Mozilla URLUtils.password documentation> 
+getPasswordUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    URLUtils -> m result
+getPasswordUnsafe self
+  = liftDOM
+      (((self ^. js "password") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.password Mozilla URLUtils.password documentation> 
 getPasswordUnchecked ::
                      (MonadDOM m, FromJSString result) => URLUtils -> m result
 getPasswordUnchecked self
@@ -112,6 +155,15 @@
 getHost self = liftDOM ((self ^. js "host") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.host Mozilla URLUtils.host documentation> 
+getHostUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                URLUtils -> m result
+getHostUnsafe self
+  = liftDOM
+      (((self ^. js "host") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.host Mozilla URLUtils.host documentation> 
 getHostUnchecked ::
                  (MonadDOM m, FromJSString result) => URLUtils -> m result
 getHostUnchecked self
@@ -130,6 +182,15 @@
   = liftDOM ((self ^. js "hostname") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hostname Mozilla URLUtils.hostname documentation> 
+getHostnameUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    URLUtils -> m result
+getHostnameUnsafe self
+  = liftDOM
+      (((self ^. js "hostname") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hostname Mozilla URLUtils.hostname documentation> 
 getHostnameUnchecked ::
                      (MonadDOM m, FromJSString result) => URLUtils -> m result
 getHostnameUnchecked self
@@ -146,6 +207,15 @@
 getPort self = liftDOM ((self ^. js "port") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.port Mozilla URLUtils.port documentation> 
+getPortUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                URLUtils -> m result
+getPortUnsafe self
+  = liftDOM
+      (((self ^. js "port") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.port Mozilla URLUtils.port documentation> 
 getPortUnchecked ::
                  (MonadDOM m, FromJSString result) => URLUtils -> m result
 getPortUnchecked self
@@ -164,6 +234,15 @@
   = liftDOM ((self ^. js "pathname") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.pathname Mozilla URLUtils.pathname documentation> 
+getPathnameUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    URLUtils -> m result
+getPathnameUnsafe self
+  = liftDOM
+      (((self ^. js "pathname") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.pathname Mozilla URLUtils.pathname documentation> 
 getPathnameUnchecked ::
                      (MonadDOM m, FromJSString result) => URLUtils -> m result
 getPathnameUnchecked self
@@ -181,6 +260,15 @@
   = liftDOM ((self ^. js "search") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.search Mozilla URLUtils.search documentation> 
+getSearchUnsafe ::
+                (MonadDOM m, HasCallStack, FromJSString result) =>
+                  URLUtils -> m result
+getSearchUnsafe self
+  = liftDOM
+      (((self ^. js "search") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.search Mozilla URLUtils.search documentation> 
 getSearchUnchecked ::
                    (MonadDOM m, FromJSString result) => URLUtils -> m result
 getSearchUnchecked self
@@ -195,6 +283,15 @@
 getHash ::
         (MonadDOM m, FromJSString result) => URLUtils -> m (Maybe result)
 getHash self = liftDOM ((self ^. js "hash") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hash Mozilla URLUtils.hash documentation> 
+getHashUnsafe ::
+              (MonadDOM m, HasCallStack, FromJSString result) =>
+                URLUtils -> m result
+getHashUnsafe self
+  = liftDOM
+      (((self ^. js "hash") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils.hash Mozilla URLUtils.hash documentation> 
 getHashUnchecked ::
diff --git a/src/JSDOM/Generated/UserMessageHandler.hs b/src/JSDOM/Generated/UserMessageHandler.hs
--- a/src/JSDOM/Generated/UserMessageHandler.hs
+++ b/src/JSDOM/Generated/UserMessageHandler.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.UserMessageHandler
-       (postMessage, UserMessageHandler, castToUserMessageHandler,
-        gTypeUserMessageHandler)
+       (postMessage, UserMessageHandler(..), gTypeUserMessageHandler)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler.postMessage Mozilla UserMessageHandler.postMessage documentation> 
 postMessage ::
diff --git a/src/JSDOM/Generated/VTTCue.hs b/src/JSDOM/Generated/VTTCue.hs
--- a/src/JSDOM/Generated/VTTCue.hs
+++ b/src/JSDOM/Generated/VTTCue.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.VTTCue
-       (newVTTCue, getCueAsHTML, getCueAsHTML_, getCueAsHTMLUnchecked,
-        setVertical, getVertical, setSnapToLines, getSnapToLines, setLine,
-        getLine, setPosition, getPosition, setSize, getSize, setAlign,
-        getAlign, setText, getText, setRegionId, getRegionId, VTTCue,
-        castToVTTCue, gTypeVTTCue)
+       (newVTTCue, getCueAsHTML, getCueAsHTML_, getCueAsHTMLUnsafe,
+        getCueAsHTMLUnchecked, setVertical, getVertical, setSnapToLines,
+        getSnapToLines, setLine, getLine, setPosition, getPosition,
+        setSize, getSize, setAlign, getAlign, setText, getText,
+        setRegionId, getRegionId, VTTCue(..), gTypeVTTCue)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation> 
 newVTTCue ::
@@ -38,6 +52,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
 getCueAsHTML_ :: (MonadDOM m) => VTTCue -> m ()
 getCueAsHTML_ self = liftDOM (void (self ^. jsf "getCueAsHTML" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
+getCueAsHTMLUnsafe ::
+                   (MonadDOM m, HasCallStack) => VTTCue -> m DocumentFragment
+getCueAsHTMLUnsafe self
+  = liftDOM
+      (((self ^. jsf "getCueAsHTML" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
 getCueAsHTMLUnchecked ::
diff --git a/src/JSDOM/Generated/VTTRegion.hs b/src/JSDOM/Generated/VTTRegion.hs
--- a/src/JSDOM/Generated/VTTRegion.hs
+++ b/src/JSDOM/Generated/VTTRegion.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.VTTRegion
-       (newVTTRegion, getTrack, getTrackUnchecked, setId, getId, setWidth,
-        getWidth, setHeight, getHeight, setRegionAnchorX, getRegionAnchorX,
-        setRegionAnchorY, getRegionAnchorY, setViewportAnchorX,
-        getViewportAnchorX, setViewportAnchorY, getViewportAnchorY,
-        setScroll, getScroll, VTTRegion, castToVTTRegion, gTypeVTTRegion)
+       (newVTTRegion, getTrack, getTrackUnsafe, getTrackUnchecked, setId,
+        getId, setWidth, getWidth, setHeight, getHeight, setRegionAnchorX,
+        getRegionAnchorX, setRegionAnchorY, getRegionAnchorY,
+        setViewportAnchorX, getViewportAnchorX, setViewportAnchorY,
+        getViewportAnchorY, setScroll, getScroll, VTTRegion(..),
+        gTypeVTTRegion)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation> 
 newVTTRegion :: (MonadDOM m) => m VTTRegion
@@ -26,6 +41,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.track Mozilla VTTRegion.track documentation> 
 getTrack :: (MonadDOM m) => VTTRegion -> m (Maybe TextTrack)
 getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.track Mozilla VTTRegion.track documentation> 
+getTrackUnsafe ::
+               (MonadDOM m, HasCallStack) => VTTRegion -> m TextTrack
+getTrackUnsafe self
+  = liftDOM
+      (((self ^. js "track") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.track Mozilla VTTRegion.track documentation> 
 getTrackUnchecked :: (MonadDOM m) => VTTRegion -> m TextTrack
diff --git a/src/JSDOM/Generated/VTTRegionList.hs b/src/JSDOM/Generated/VTTRegionList.hs
--- a/src/JSDOM/Generated/VTTRegionList.hs
+++ b/src/JSDOM/Generated/VTTRegionList.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.VTTRegionList
-       (item, item_, itemUnchecked, getRegionById, getRegionById_,
-        getRegionByIdUnchecked, getLength, VTTRegionList,
-        castToVTTRegionList, gTypeVTTRegionList)
+       (item, item_, itemUnsafe, itemUnchecked, getRegionById,
+        getRegionById_, getRegionByIdUnsafe, getRegionByIdUnchecked,
+        getLength, VTTRegionList(..), gTypeVTTRegionList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
 item ::
@@ -29,6 +43,14 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) => VTTRegionList -> Word -> m VTTRegion
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => VTTRegionList -> Word -> m VTTRegion
 itemUnchecked self index
@@ -48,6 +70,15 @@
                (MonadDOM m, ToJSString id) => VTTRegionList -> id -> m ()
 getRegionById_ self id
   = liftDOM (void (self ^. jsf "getRegionById" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
+getRegionByIdUnsafe ::
+                    (MonadDOM m, ToJSString id, HasCallStack) =>
+                      VTTRegionList -> id -> m VTTRegion
+getRegionByIdUnsafe self id
+  = liftDOM
+      (((self ^. jsf "getRegionById" [toJSVal id]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
 getRegionByIdUnchecked ::
diff --git a/src/JSDOM/Generated/ValidityState.hs b/src/JSDOM/Generated/ValidityState.hs
--- a/src/JSDOM/Generated/ValidityState.hs
+++ b/src/JSDOM/Generated/ValidityState.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.ValidityState
        (getValueMissing, getTypeMismatch, getPatternMismatch, getTooLong,
         getRangeUnderflow, getRangeOverflow, getStepMismatch, getBadInput,
-        getCustomError, getValid, ValidityState, castToValidityState,
-        gTypeValidityState)
+        getCustomError, getValid, ValidityState(..), gTypeValidityState)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valueMissing Mozilla ValidityState.valueMissing documentation> 
 getValueMissing :: (MonadDOM m) => ValidityState -> m Bool
diff --git a/src/JSDOM/Generated/VideoPlaybackQuality.hs b/src/JSDOM/Generated/VideoPlaybackQuality.hs
--- a/src/JSDOM/Generated/VideoPlaybackQuality.hs
+++ b/src/JSDOM/Generated/VideoPlaybackQuality.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.VideoPlaybackQuality
        (getCreationTime, getTotalVideoFrames, getDroppedVideoFrames,
-        getCorruptedVideoFrames, getTotalFrameDelay, VideoPlaybackQuality,
-        castToVideoPlaybackQuality, gTypeVideoPlaybackQuality)
+        getCorruptedVideoFrames, getTotalFrameDelay,
+        VideoPlaybackQuality(..), gTypeVideoPlaybackQuality)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.creationTime Mozilla VideoPlaybackQuality.creationTime documentation> 
 getCreationTime :: (MonadDOM m) => VideoPlaybackQuality -> m Double
diff --git a/src/JSDOM/Generated/VideoStreamTrack.hs b/src/JSDOM/Generated/VideoStreamTrack.hs
--- a/src/JSDOM/Generated/VideoStreamTrack.hs
+++ b/src/JSDOM/Generated/VideoStreamTrack.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.VideoStreamTrack
-       (newVideoStreamTrack, VideoStreamTrack, castToVideoStreamTrack,
-        gTypeVideoStreamTrack)
+       (newVideoStreamTrack, VideoStreamTrack(..), gTypeVideoStreamTrack)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoStreamTrack Mozilla VideoStreamTrack documentation> 
 newVideoStreamTrack ::
diff --git a/src/JSDOM/Generated/VideoTrack.hs b/src/JSDOM/Generated/VideoTrack.hs
--- a/src/JSDOM/Generated/VideoTrack.hs
+++ b/src/JSDOM/Generated/VideoTrack.hs
@@ -1,12 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.VideoTrack
        (getId, setKind, getKind, getLabel, setLanguage, getLanguage,
-        setSelected, getSelected, getSourceBuffer,
-        getSourceBufferUnchecked, VideoTrack, castToVideoTrack,
-        gTypeVideoTrack)
+        setSelected, getSelected, getSourceBuffer, getSourceBufferUnsafe,
+        getSourceBufferUnchecked, VideoTrack(..), gTypeVideoTrack)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.id Mozilla VideoTrack.id documentation> 
 getId ::
@@ -65,6 +78,14 @@
                 (MonadDOM m) => VideoTrack -> m (Maybe SourceBuffer)
 getSourceBuffer self
   = liftDOM ((self ^. js "sourceBuffer") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.sourceBuffer Mozilla VideoTrack.sourceBuffer documentation> 
+getSourceBufferUnsafe ::
+                      (MonadDOM m, HasCallStack) => VideoTrack -> m SourceBuffer
+getSourceBufferUnsafe self
+  = liftDOM
+      (((self ^. js "sourceBuffer") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.sourceBuffer Mozilla VideoTrack.sourceBuffer documentation> 
 getSourceBufferUnchecked ::
diff --git a/src/JSDOM/Generated/VideoTrackList.hs b/src/JSDOM/Generated/VideoTrackList.hs
--- a/src/JSDOM/Generated/VideoTrackList.hs
+++ b/src/JSDOM/Generated/VideoTrackList.hs
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.VideoTrackList
-       (item, item_, itemUnchecked, getTrackById, getTrackById_,
-        getTrackByIdUnchecked, getLength, getSelectedIndex, change,
-        addTrack, removeTrack, VideoTrackList, castToVideoTrackList,
-        gTypeVideoTrackList)
+       (item, item_, itemUnsafe, itemUnchecked, getTrackById,
+        getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked,
+        getLength, getSelectedIndex, change, addTrack, removeTrack,
+        VideoTrackList(..), gTypeVideoTrackList)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
 item ::
@@ -30,6 +44,15 @@
   = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
+itemUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             VideoTrackList -> Word -> m VideoTrack
+itemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
 itemUnchecked ::
               (MonadDOM m) => VideoTrackList -> Word -> m VideoTrack
 itemUnchecked self index
@@ -48,6 +71,15 @@
               (MonadDOM m, ToJSString id) => VideoTrackList -> id -> m ()
 getTrackById_ self id
   = liftDOM (void (self ^. jsf "getTrackById" [toJSVal id]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
+getTrackByIdUnsafe ::
+                   (MonadDOM m, ToJSString id, HasCallStack) =>
+                     VideoTrackList -> id -> m VideoTrack
+getTrackByIdUnsafe self id
+  = liftDOM
+      (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
 getTrackByIdUnchecked ::
diff --git a/src/JSDOM/Generated/VoidCallback.hs b/src/JSDOM/Generated/VoidCallback.hs
--- a/src/JSDOM/Generated/VoidCallback.hs
+++ b/src/JSDOM/Generated/VoidCallback.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.VoidCallback
        (newVoidCallback, newVoidCallbackSync, newVoidCallbackAsync,
         VoidCallback)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
 newVoidCallback :: (MonadDOM m) => JSM () -> m VoidCallback
diff --git a/src/JSDOM/Generated/WaveShaperNode.hs b/src/JSDOM/Generated/WaveShaperNode.hs
--- a/src/JSDOM/Generated/WaveShaperNode.hs
+++ b/src/JSDOM/Generated/WaveShaperNode.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WaveShaperNode
-       (setCurve, getCurve, getCurveUnchecked, setOversample,
-        getOversample, WaveShaperNode, castToWaveShaperNode,
+       (setCurve, getCurve, getCurveUnsafe, getCurveUnchecked,
+        setOversample, getOversample, WaveShaperNode(..),
         gTypeWaveShaperNode)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
 setCurve ::
@@ -27,6 +41,14 @@
 getCurve ::
          (MonadDOM m) => WaveShaperNode -> m (Maybe Float32Array)
 getCurve self = liftDOM ((self ^. js "curve") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
+getCurveUnsafe ::
+               (MonadDOM m, HasCallStack) => WaveShaperNode -> m Float32Array
+getCurveUnsafe self
+  = liftDOM
+      (((self ^. js "curve") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
 getCurveUnchecked ::
diff --git a/src/JSDOM/Generated/WebGL2RenderingContext.hs b/src/JSDOM/Generated/WebGL2RenderingContext.hs
--- a/src/JSDOM/Generated/WebGL2RenderingContext.hs
+++ b/src/JSDOM/Generated/WebGL2RenderingContext.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGL2RenderingContext
        (copyBufferSubData, getBufferSubDataView, getBufferSubData,
@@ -19,36 +22,41 @@
         vertexAttribI4uiv, vertexAttribIPointer, vertexAttribDivisor,
         drawArraysInstanced, drawElementsInstanced, drawRangeElements,
         drawBuffers, clearBufferiv, clearBufferuiv, clearBufferfv,
-        clearBufferfi, createQuery, createQuery_, createQueryUnchecked,
-        deleteQuery, isQuery, isQuery_, beginQuery, endQuery, getQuery,
-        getQuery_, getQueryUnchecked, getQueryParameter,
-        getQueryParameter_, createSampler, createSampler_,
-        createSamplerUnchecked, deleteSampler, isSampler, isSampler_,
-        bindSampler, samplerParameteri, samplerParameterf,
-        getSamplerParameter, getSamplerParameter_, fenceSync, fenceSync_,
+        clearBufferfi, createQuery, createQuery_, createQueryUnsafe,
+        createQueryUnchecked, deleteQuery, isQuery, isQuery_, beginQuery,
+        endQuery, getQuery, getQuery_, getQueryUnsafe, getQueryUnchecked,
+        getQueryParameter, getQueryParameter_, createSampler,
+        createSampler_, createSamplerUnsafe, createSamplerUnchecked,
+        deleteSampler, isSampler, isSampler_, bindSampler,
+        samplerParameteri, samplerParameterf, getSamplerParameter,
+        getSamplerParameter_, fenceSync, fenceSync_, fenceSyncUnsafe,
         fenceSyncUnchecked, isSync, isSync_, deleteSync, clientWaitSync,
         clientWaitSync_, waitSync, getSyncParameter, getSyncParameter_,
         createTransformFeedback, createTransformFeedback_,
-        createTransformFeedbackUnchecked, deleteTransformFeedback,
-        isTransformFeedback, isTransformFeedback_, bindTransformFeedback,
-        beginTransformFeedback, endTransformFeedback,
-        transformFeedbackVaryings, getTransformFeedbackVarying,
-        getTransformFeedbackVarying_, getTransformFeedbackVaryingUnchecked,
-        pauseTransformFeedback, resumeTransformFeedback, bindBufferBase,
-        bindBufferRange, getIndexedParameter, getIndexedParameter_,
-        getUniformIndices, getUniformIndices_, getUniformIndicesUnchecked,
-        getActiveUniforms, getActiveUniforms_, getActiveUniformsUnchecked,
+        createTransformFeedbackUnsafe, createTransformFeedbackUnchecked,
+        deleteTransformFeedback, isTransformFeedback, isTransformFeedback_,
+        bindTransformFeedback, beginTransformFeedback,
+        endTransformFeedback, transformFeedbackVaryings,
+        getTransformFeedbackVarying, getTransformFeedbackVarying_,
+        getTransformFeedbackVaryingUnsafe,
+        getTransformFeedbackVaryingUnchecked, pauseTransformFeedback,
+        resumeTransformFeedback, bindBufferBase, bindBufferRange,
+        getIndexedParameter, getIndexedParameter_, getUniformIndices,
+        getUniformIndices_, getUniformIndicesUnsafe,
+        getUniformIndicesUnchecked, getActiveUniforms, getActiveUniforms_,
+        getActiveUniformsUnsafe, getActiveUniformsUnchecked,
         getUniformBlockIndex, getUniformBlockIndex_,
         getActiveUniformBlockParameter, getActiveUniformBlockParameter_,
         getActiveUniformBlockName, getActiveUniformBlockName_,
         uniformBlockBinding, createVertexArray, createVertexArray_,
-        createVertexArrayUnchecked, deleteVertexArray, isVertexArray,
-        isVertexArray_, 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,
+        createVertexArrayUnsafe, createVertexArrayUnchecked,
+        deleteVertexArray, isVertexArray, isVertexArray_, 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,
@@ -189,10 +197,11 @@
         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)
+        pattern TIMEOUT_IGNORED, WebGL2RenderingContext(..),
+        gTypeWebGL2RenderingContext)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -203,6 +212,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyBufferSubData Mozilla WebGL2RenderingContext.copyBufferSubData documentation> 
 copyBufferSubData ::
@@ -862,6 +881,15 @@
 createQuery_ self = liftDOM (void (self ^. jsf "createQuery" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
+createQueryUnsafe ::
+                  (MonadDOM m, HasCallStack) =>
+                    WebGL2RenderingContext -> m WebGLQuery
+createQueryUnsafe self
+  = liftDOM
+      (((self ^. jsf "createQuery" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
 createQueryUnchecked ::
                      (MonadDOM m) => WebGL2RenderingContext -> m WebGLQuery
 createQueryUnchecked self
@@ -918,6 +946,16 @@
       (void (self ^. jsf "getQuery" [toJSVal target, toJSVal pname]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
+getQueryUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 WebGL2RenderingContext -> GLenum -> GLenum -> m WebGLQuery
+getQueryUnsafe self target pname
+  = liftDOM
+      (((self ^. jsf "getQuery" [toJSVal target, toJSVal pname]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
 getQueryUnchecked ::
                   (MonadDOM m) =>
                     WebGL2RenderingContext -> GLenum -> GLenum -> m WebGLQuery
@@ -956,6 +994,15 @@
   = liftDOM (void (self ^. jsf "createSampler" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
+createSamplerUnsafe ::
+                    (MonadDOM m, HasCallStack) =>
+                      WebGL2RenderingContext -> m WebGLSampler
+createSamplerUnsafe self
+  = liftDOM
+      (((self ^. jsf "createSampler" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
 createSamplerUnchecked ::
                        (MonadDOM m) => WebGL2RenderingContext -> m WebGLSampler
 createSamplerUnchecked self
@@ -1053,6 +1100,16 @@
       (void (self ^. jsf "fenceSync" [toJSVal condition, toJSVal flags]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
+fenceSyncUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  WebGL2RenderingContext -> GLenum -> GLbitfield -> m WebGLSync
+fenceSyncUnsafe self condition flags
+  = liftDOM
+      (((self ^. jsf "fenceSync" [toJSVal condition, toJSVal flags]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
 fenceSyncUnchecked ::
                    (MonadDOM m) =>
                      WebGL2RenderingContext -> GLenum -> GLbitfield -> m WebGLSync
@@ -1147,6 +1204,15 @@
   = liftDOM (void (self ^. jsf "createTransformFeedback" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
+createTransformFeedbackUnsafe ::
+                              (MonadDOM m, HasCallStack) =>
+                                WebGL2RenderingContext -> m WebGLTransformFeedback
+createTransformFeedbackUnsafe self
+  = liftDOM
+      (((self ^. jsf "createTransformFeedback" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
 createTransformFeedbackUnchecked ::
                                  (MonadDOM m) => WebGL2RenderingContext -> m WebGLTransformFeedback
 createTransformFeedbackUnchecked self
@@ -1235,6 +1301,18 @@
             [toJSVal program, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
+getTransformFeedbackVaryingUnsafe ::
+                                  (MonadDOM m, HasCallStack) =>
+                                    WebGL2RenderingContext ->
+                                      Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
+getTransformFeedbackVaryingUnsafe self program index
+  = liftDOM
+      (((self ^. jsf "getTransformFeedbackVarying"
+           [toJSVal program, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
 getTransformFeedbackVaryingUnchecked ::
                                      (MonadDOM m) =>
                                        WebGL2RenderingContext ->
@@ -1323,6 +1401,18 @@
             [toJSVal program, toJSVal (array uniformNames)]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
+getUniformIndicesUnsafe ::
+                        (MonadDOM m, ToJSString uniformNames, HasCallStack) =>
+                          WebGL2RenderingContext ->
+                            Maybe WebGLProgram -> [uniformNames] -> m Uint32Array
+getUniformIndicesUnsafe self program uniformNames
+  = liftDOM
+      (((self ^. jsf "getUniformIndices"
+           [toJSVal program, toJSVal (array uniformNames)])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
 getUniformIndicesUnchecked ::
                            (MonadDOM m, ToJSString uniformNames) =>
                              WebGL2RenderingContext ->
@@ -1357,6 +1447,19 @@
             [toJSVal program, toJSVal uniformIndices, toJSVal pname]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
+getActiveUniformsUnsafe ::
+                        (MonadDOM m, IsUint32Array uniformIndices, HasCallStack) =>
+                          WebGL2RenderingContext ->
+                            Maybe WebGLProgram ->
+                              Maybe uniformIndices -> GLenum -> m Int32Array
+getActiveUniformsUnsafe self program uniformIndices pname
+  = liftDOM
+      (((self ^. jsf "getActiveUniforms"
+           [toJSVal program, toJSVal uniformIndices, toJSVal pname])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
 getActiveUniformsUnchecked ::
                            (MonadDOM m, IsUint32Array uniformIndices) =>
                              WebGL2RenderingContext ->
@@ -1458,6 +1561,15 @@
                    (MonadDOM m) => WebGL2RenderingContext -> m ()
 createVertexArray_ self
   = liftDOM (void (self ^. jsf "createVertexArray" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
+createVertexArrayUnsafe ::
+                        (MonadDOM m, HasCallStack) =>
+                          WebGL2RenderingContext -> m WebGLVertexArrayObject
+createVertexArrayUnsafe self
+  = liftDOM
+      (((self ^. jsf "createVertexArray" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
 createVertexArrayUnchecked ::
diff --git a/src/JSDOM/Generated/WebGLActiveInfo.hs b/src/JSDOM/Generated/WebGLActiveInfo.hs
--- a/src/JSDOM/Generated/WebGLActiveInfo.hs
+++ b/src/JSDOM/Generated/WebGLActiveInfo.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLActiveInfo
-       (getSize, getType, getName, WebGLActiveInfo, castToWebGLActiveInfo,
+       (getSize, getType, getName, WebGLActiveInfo(..),
         gTypeWebGLActiveInfo)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.size Mozilla WebGLActiveInfo.size documentation> 
 getSize :: (MonadDOM m) => WebGLActiveInfo -> m Int
diff --git a/src/JSDOM/Generated/WebGLCompressedTextureATC.hs b/src/JSDOM/Generated/WebGLCompressedTextureATC.hs
--- a/src/JSDOM/Generated/WebGLCompressedTextureATC.hs
+++ b/src/JSDOM/Generated/WebGLCompressedTextureATC.hs
@@ -1,13 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLCompressedTextureATC
        (pattern COMPRESSED_RGB_ATC_WEBGL,
         pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
         pattern COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL,
-        WebGLCompressedTextureATC, castToWebGLCompressedTextureATC,
-        gTypeWebGLCompressedTextureATC)
+        WebGLCompressedTextureATC(..), gTypeWebGLCompressedTextureATC)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 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/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs b/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs
--- a/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs
+++ b/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs
@@ -1,14 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.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)
+        WebGLCompressedTexturePVRTC(..), gTypeWebGLCompressedTexturePVRTC)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840
 pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841
 pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842
diff --git a/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs b/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs
--- a/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs
+++ b/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.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)
+        pattern COMPRESSED_RGBA_S3TC_DXT5_EXT,
+        WebGLCompressedTextureS3TC(..), gTypeWebGLCompressedTextureS3TC)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern COMPRESSED_RGB_S3TC_DXT1_EXT = 33776
 pattern COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777
 pattern COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778
diff --git a/src/JSDOM/Generated/WebGLContextAttributes.hs b/src/JSDOM/Generated/WebGLContextAttributes.hs
--- a/src/JSDOM/Generated/WebGLContextAttributes.hs
+++ b/src/JSDOM/Generated/WebGLContextAttributes.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLContextAttributes
        (setAlpha, getAlpha, setDepth, getDepth, setStencil, getStencil,
         setAntialias, getAntialias, setPremultipliedAlpha,
         getPremultipliedAlpha, setPreserveDrawingBuffer,
-        getPreserveDrawingBuffer, WebGLContextAttributes,
-        castToWebGLContextAttributes, gTypeWebGLContextAttributes)
+        getPreserveDrawingBuffer, WebGLContextAttributes(..),
+        gTypeWebGLContextAttributes)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes.alpha Mozilla WebGLContextAttributes.alpha documentation> 
 setAlpha :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
diff --git a/src/JSDOM/Generated/WebGLContextEvent.hs b/src/JSDOM/Generated/WebGLContextEvent.hs
--- a/src/JSDOM/Generated/WebGLContextEvent.hs
+++ b/src/JSDOM/Generated/WebGLContextEvent.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLContextEvent
-       (getStatusMessage, WebGLContextEvent, castToWebGLContextEvent,
-        gTypeWebGLContextEvent)
+       (getStatusMessage, WebGLContextEvent(..), gTypeWebGLContextEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent.statusMessage Mozilla WebGLContextEvent.statusMessage documentation> 
 getStatusMessage ::
diff --git a/src/JSDOM/Generated/WebGLDebugRendererInfo.hs b/src/JSDOM/Generated/WebGLDebugRendererInfo.hs
--- a/src/JSDOM/Generated/WebGLDebugRendererInfo.hs
+++ b/src/JSDOM/Generated/WebGLDebugRendererInfo.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLDebugRendererInfo
        (pattern UNMASKED_VENDOR_WEBGL, pattern UNMASKED_RENDERER_WEBGL,
-        WebGLDebugRendererInfo, castToWebGLDebugRendererInfo,
-        gTypeWebGLDebugRendererInfo)
+        WebGLDebugRendererInfo(..), gTypeWebGLDebugRendererInfo)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,5 +19,15 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern UNMASKED_VENDOR_WEBGL = 37445
 pattern UNMASKED_RENDERER_WEBGL = 37446
diff --git a/src/JSDOM/Generated/WebGLDebugShaders.hs b/src/JSDOM/Generated/WebGLDebugShaders.hs
--- a/src/JSDOM/Generated/WebGLDebugShaders.hs
+++ b/src/JSDOM/Generated/WebGLDebugShaders.hs
@@ -1,11 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLDebugShaders
        (getTranslatedShaderSource, getTranslatedShaderSource_,
-        getTranslatedShaderSourceUnchecked, WebGLDebugShaders,
-        castToWebGLDebugShaders, gTypeWebGLDebugShaders)
+        getTranslatedShaderSourceUnsafe,
+        getTranslatedShaderSourceUnchecked, WebGLDebugShaders(..),
+        gTypeWebGLDebugShaders)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +21,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
 getTranslatedShaderSource ::
@@ -32,6 +47,16 @@
 getTranslatedShaderSource_ self shader
   = liftDOM
       (void (self ^. jsf "getTranslatedShaderSource" [toJSVal shader]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
+getTranslatedShaderSourceUnsafe ::
+                                (MonadDOM m, HasCallStack, FromJSString result) =>
+                                  WebGLDebugShaders -> Maybe WebGLShader -> m result
+getTranslatedShaderSourceUnsafe self shader
+  = liftDOM
+      (((self ^. jsf "getTranslatedShaderSource" [toJSVal shader]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
 getTranslatedShaderSourceUnchecked ::
diff --git a/src/JSDOM/Generated/WebGLDepthTexture.hs b/src/JSDOM/Generated/WebGLDepthTexture.hs
--- a/src/JSDOM/Generated/WebGLDepthTexture.hs
+++ b/src/JSDOM/Generated/WebGLDepthTexture.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLDepthTexture
-       (pattern UNSIGNED_INT_24_8_WEBGL, WebGLDepthTexture,
-        castToWebGLDepthTexture, gTypeWebGLDepthTexture)
+       (pattern UNSIGNED_INT_24_8_WEBGL, WebGLDepthTexture(..),
+        gTypeWebGLDepthTexture)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,4 +19,14 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 pattern UNSIGNED_INT_24_8_WEBGL = 34042
diff --git a/src/JSDOM/Generated/WebGLDrawBuffers.hs b/src/JSDOM/Generated/WebGLDrawBuffers.hs
--- a/src/JSDOM/Generated/WebGLDrawBuffers.hs
+++ b/src/JSDOM/Generated/WebGLDrawBuffers.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLDrawBuffers
        (drawBuffersWEBGL, pattern COLOR_ATTACHMENT0_WEBGL,
@@ -18,10 +21,11 @@
         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)
+        pattern MAX_DRAW_BUFFERS_WEBGL, WebGLDrawBuffers(..),
+        gTypeWebGLDrawBuffers)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -32,6 +36,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers.drawBuffersWEBGL Mozilla WebGLDrawBuffers.drawBuffersWEBGL documentation> 
 drawBuffersWEBGL ::
diff --git a/src/JSDOM/Generated/WebGLLoseContext.hs b/src/JSDOM/Generated/WebGLLoseContext.hs
--- a/src/JSDOM/Generated/WebGLLoseContext.hs
+++ b/src/JSDOM/Generated/WebGLLoseContext.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLLoseContext
-       (loseContext, restoreContext, WebGLLoseContext,
-        castToWebGLLoseContext, gTypeWebGLLoseContext)
+       (loseContext, restoreContext, WebGLLoseContext(..),
+        gTypeWebGLLoseContext)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.loseContext Mozilla WebGLLoseContext.loseContext documentation> 
 loseContext :: (MonadDOM m) => WebGLLoseContext -> m ()
diff --git a/src/JSDOM/Generated/WebGLRenderingContextBase.hs b/src/JSDOM/Generated/WebGLRenderingContextBase.hs
--- a/src/JSDOM/Generated/WebGLRenderingContextBase.hs
+++ b/src/JSDOM/Generated/WebGLRenderingContextBase.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLRenderingContextBase
        (activeTexture, attachShader, bindAttribLocation, bindBuffer,
@@ -9,34 +12,41 @@
         clear, clearColor, clearDepth, clearStencil, colorMask,
         compileShader, compressedTexImage2D, compressedTexSubImage2D,
         copyTexImage2D, copyTexSubImage2D, createBuffer, createBuffer_,
-        createBufferUnchecked, createFramebuffer, createFramebuffer_,
+        createBufferUnsafe, createBufferUnchecked, createFramebuffer,
+        createFramebuffer_, createFramebufferUnsafe,
         createFramebufferUnchecked, createProgram, createProgram_,
-        createProgramUnchecked, createRenderbuffer, createRenderbuffer_,
+        createProgramUnsafe, createProgramUnchecked, createRenderbuffer,
+        createRenderbuffer_, createRenderbufferUnsafe,
         createRenderbufferUnchecked, createShader, createShader_,
-        createShaderUnchecked, createTexture, createTexture_,
-        createTextureUnchecked, cullFace, deleteBuffer, deleteFramebuffer,
-        deleteProgram, deleteRenderbuffer, deleteShader, deleteTexture,
-        depthFunc, depthMask, depthRange, detachShader, disable,
+        createShaderUnsafe, createShaderUnchecked, createTexture,
+        createTexture_, createTextureUnsafe, createTextureUnchecked,
+        cullFace, deleteBuffer, deleteFramebuffer, deleteProgram,
+        deleteRenderbuffer, deleteShader, deleteTexture, depthFunc,
+        depthMask, depthRange, detachShader, disable,
         disableVertexAttribArray, drawArrays, drawElements, enable,
         enableVertexAttribArray, finish, flush, framebufferRenderbuffer,
         framebufferTexture2D, frontFace, generateMipmap, getActiveAttrib,
-        getActiveAttrib_, getActiveAttribUnchecked, getActiveUniform,
-        getActiveUniform_, getActiveUniformUnchecked, getAttachedShaders,
-        getAttribLocation, getAttribLocation_, getBufferParameter,
-        getBufferParameter_, getContextAttributes, getContextAttributes_,
-        getContextAttributesUnchecked, getError, getError_, getExtension,
-        getExtension_, getFramebufferAttachmentParameter,
+        getActiveAttrib_, getActiveAttribUnsafe, getActiveAttribUnchecked,
+        getActiveUniform, getActiveUniform_, getActiveUniformUnsafe,
+        getActiveUniformUnchecked, getAttachedShaders, getAttribLocation,
+        getAttribLocation_, getBufferParameter, getBufferParameter_,
+        getContextAttributes, getContextAttributes_,
+        getContextAttributesUnsafe, getContextAttributesUnchecked,
+        getError, getError_, getExtension, getExtension_,
+        getFramebufferAttachmentParameter,
         getFramebufferAttachmentParameter_, getParameter, getParameter_,
         getProgramParameter, getProgramParameter_, getProgramInfoLog,
-        getProgramInfoLog_, getProgramInfoLogUnchecked,
-        getRenderbufferParameter, getRenderbufferParameter_,
-        getShaderParameter, getShaderParameter_, getShaderInfoLog,
-        getShaderInfoLog_, getShaderInfoLogUnchecked,
-        getShaderPrecisionFormat, getShaderPrecisionFormat_,
+        getProgramInfoLog_, getProgramInfoLogUnsafe,
+        getProgramInfoLogUnchecked, getRenderbufferParameter,
+        getRenderbufferParameter_, getShaderParameter, getShaderParameter_,
+        getShaderInfoLog, getShaderInfoLog_, getShaderInfoLogUnsafe,
+        getShaderInfoLogUnchecked, getShaderPrecisionFormat,
+        getShaderPrecisionFormat_, getShaderPrecisionFormatUnsafe,
         getShaderPrecisionFormatUnchecked, getShaderSource,
-        getShaderSource_, getShaderSourceUnchecked, getSupportedExtensions,
-        getSupportedExtensions_, getTexParameter, getTexParameter_,
-        getUniform, getUniform_, getUniformLocation, getUniformLocation_,
+        getShaderSource_, getShaderSourceUnsafe, getShaderSourceUnchecked,
+        getSupportedExtensions, getSupportedExtensions_, getTexParameter,
+        getTexParameter_, getUniform, getUniform_, getUniformLocation,
+        getUniformLocation_, getUniformLocationUnsafe,
         getUniformLocationUnchecked, getVertexAttrib, getVertexAttrib_,
         getVertexAttribOffset, getVertexAttribOffset_, hint, isBuffer,
         isBuffer_, isContextLost, isContextLost_, isEnabled, isEnabled_,
@@ -193,11 +203,12 @@
         pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL, pattern CONTEXT_LOST_WEBGL,
         pattern UNPACK_COLORSPACE_CONVERSION_WEBGL,
         pattern BROWSER_DEFAULT_WEBGL, getDrawingBufferWidth,
-        getDrawingBufferHeight, WebGLRenderingContextBase,
-        castToWebGLRenderingContextBase, gTypeWebGLRenderingContextBase,
-        IsWebGLRenderingContextBase, toWebGLRenderingContextBase)
+        getDrawingBufferHeight, WebGLRenderingContextBase(..),
+        gTypeWebGLRenderingContextBase, IsWebGLRenderingContextBase,
+        toWebGLRenderingContextBase)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -208,6 +219,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.activeTexture Mozilla WebGLRenderingContextBase.activeTexture documentation> 
 activeTexture ::
@@ -546,6 +567,16 @@
          ((toWebGLRenderingContextBase self) ^. jsf "createBuffer" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
+createBufferUnsafe ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                     self -> m WebGLBuffer
+createBufferUnsafe self
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "createBuffer" ()) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
 createBufferUnchecked ::
                       (MonadDOM m, IsWebGLRenderingContextBase self) =>
                         self -> m WebGLBuffer
@@ -572,6 +603,17 @@
          ((toWebGLRenderingContextBase self) ^. jsf "createFramebuffer" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
+createFramebufferUnsafe ::
+                        (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                          self -> m WebGLFramebuffer
+createFramebufferUnsafe self
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "createFramebuffer"
+           ())
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
 createFramebufferUnchecked ::
                            (MonadDOM m, IsWebGLRenderingContextBase self) =>
                              self -> m WebGLFramebuffer
@@ -598,6 +640,16 @@
          ((toWebGLRenderingContextBase self) ^. jsf "createProgram" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
+createProgramUnsafe ::
+                    (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                      self -> m WebGLProgram
+createProgramUnsafe self
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "createProgram" ())
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
 createProgramUnchecked ::
                        (MonadDOM m, IsWebGLRenderingContextBase self) =>
                          self -> m WebGLProgram
@@ -626,6 +678,17 @@
             ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
+createRenderbufferUnsafe ::
+                         (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                           self -> m WebGLRenderbuffer
+createRenderbufferUnsafe self
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "createRenderbuffer"
+           ())
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
 createRenderbufferUnchecked ::
                             (MonadDOM m, IsWebGLRenderingContextBase self) =>
                               self -> m WebGLRenderbuffer
@@ -656,6 +719,17 @@
             [toJSVal type']))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
+createShaderUnsafe ::
+                   (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                     self -> GLenum -> m WebGLShader
+createShaderUnsafe self type'
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "createShader"
+           [toJSVal type'])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
 createShaderUnchecked ::
                       (MonadDOM m, IsWebGLRenderingContextBase self) =>
                         self -> GLenum -> m WebGLShader
@@ -683,6 +757,16 @@
          ((toWebGLRenderingContextBase self) ^. jsf "createTexture" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
+createTextureUnsafe ::
+                    (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                      self -> m WebGLTexture
+createTextureUnsafe self
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "createTexture" ())
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
 createTextureUnchecked ::
                        (MonadDOM m, IsWebGLRenderingContextBase self) =>
                          self -> m WebGLTexture
@@ -943,6 +1027,17 @@
             [toJSVal program, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
+getActiveAttribUnsafe ::
+                      (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                        self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
+getActiveAttribUnsafe self program index
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "getActiveAttrib"
+           [toJSVal program, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
 getActiveAttribUnchecked ::
                          (MonadDOM m, IsWebGLRenderingContextBase self) =>
                            self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
@@ -973,6 +1068,17 @@
             [toJSVal program, toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
+getActiveUniformUnsafe ::
+                       (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                         self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
+getActiveUniformUnsafe self program index
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "getActiveUniform"
+           [toJSVal program, toJSVal index])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
 getActiveUniformUnchecked ::
                           (MonadDOM m, IsWebGLRenderingContextBase self) =>
                             self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
@@ -1052,6 +1158,17 @@
             ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
+getContextAttributesUnsafe ::
+                           (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                             self -> m WebGLContextAttributes
+getContextAttributesUnsafe self
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "getContextAttributes"
+           ())
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
 getContextAttributesUnchecked ::
                               (MonadDOM m, IsWebGLRenderingContextBase self) =>
                                 self -> m WebGLContextAttributes
@@ -1180,6 +1297,18 @@
             [toJSVal program]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
+getProgramInfoLogUnsafe ::
+                        (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack,
+                         FromJSString result) =>
+                          self -> Maybe WebGLProgram -> m result
+getProgramInfoLogUnsafe self program
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog"
+           [toJSVal program])
+          >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
 getProgramInfoLogUnchecked ::
                            (MonadDOM m, IsWebGLRenderingContextBase self,
                             FromJSString result) =>
@@ -1254,6 +1383,18 @@
             [toJSVal shader]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
+getShaderInfoLogUnsafe ::
+                       (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack,
+                        FromJSString result) =>
+                         self -> Maybe WebGLShader -> m result
+getShaderInfoLogUnsafe self shader
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog"
+           [toJSVal shader])
+          >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
 getShaderInfoLogUnchecked ::
                           (MonadDOM m, IsWebGLRenderingContextBase self,
                            FromJSString result) =>
@@ -1287,6 +1428,18 @@
             [toJSVal shadertype, toJSVal precisiontype]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
+getShaderPrecisionFormatUnsafe ::
+                               (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                                 self -> GLenum -> GLenum -> m WebGLShaderPrecisionFormat
+getShaderPrecisionFormatUnsafe self shadertype precisiontype
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^.
+           jsf "getShaderPrecisionFormat"
+           [toJSVal shadertype, toJSVal precisiontype])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
 getShaderPrecisionFormatUnchecked ::
                                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
                                     self -> GLenum -> GLenum -> m WebGLShaderPrecisionFormat
@@ -1319,6 +1472,18 @@
             [toJSVal shader]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
+getShaderSourceUnsafe ::
+                      (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack,
+                       FromJSString result) =>
+                        self -> Maybe WebGLShader -> m result
+getShaderSourceUnsafe self shader
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "getShaderSource"
+           [toJSVal shader])
+          >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
 getShaderSourceUnchecked ::
                          (MonadDOM m, IsWebGLRenderingContextBase self,
                           FromJSString result) =>
@@ -1410,6 +1575,18 @@
       (void
          ((toWebGLRenderingContextBase self) ^. jsf "getUniformLocation"
             [toJSVal program, toJSVal name]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
+getUniformLocationUnsafe ::
+                         (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name,
+                          HasCallStack) =>
+                           self -> Maybe WebGLProgram -> name -> m WebGLUniformLocation
+getUniformLocationUnsafe self program name
+  = liftDOM
+      ((((toWebGLRenderingContextBase self) ^. jsf "getUniformLocation"
+           [toJSVal program, toJSVal name])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
 getUniformLocationUnchecked ::
diff --git a/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs b/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
--- a/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
+++ b/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebGLShaderPrecisionFormat
        (getRangeMin, getRangeMax, getPrecision,
-        WebGLShaderPrecisionFormat, castToWebGLShaderPrecisionFormat,
-        gTypeWebGLShaderPrecisionFormat)
+        WebGLShaderPrecisionFormat(..), gTypeWebGLShaderPrecisionFormat)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMin Mozilla WebGLShaderPrecisionFormat.rangeMin documentation> 
 getRangeMin :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
diff --git a/src/JSDOM/Generated/WebKitAnimationEvent.hs b/src/JSDOM/Generated/WebKitAnimationEvent.hs
--- a/src/JSDOM/Generated/WebKitAnimationEvent.hs
+++ b/src/JSDOM/Generated/WebKitAnimationEvent.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitAnimationEvent
-       (getAnimationName, getElapsedTime, WebKitAnimationEvent,
-        castToWebKitAnimationEvent, gTypeWebKitAnimationEvent)
+       (getAnimationName, getElapsedTime, WebKitAnimationEvent(..),
+        gTypeWebKitAnimationEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.animationName Mozilla WebKitAnimationEvent.animationName documentation> 
 getAnimationName ::
diff --git a/src/JSDOM/Generated/WebKitCSSFilterValue.hs b/src/JSDOM/Generated/WebKitCSSFilterValue.hs
--- a/src/JSDOM/Generated/WebKitCSSFilterValue.hs
+++ b/src/JSDOM/Generated/WebKitCSSFilterValue.hs
@@ -1,16 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitCSSFilterValue
-       (_get, _get_, _getUnchecked, 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,
-        getOperationType, WebKitCSSFilterValue, castToWebKitCSSFilterValue,
-        gTypeWebKitCSSFilterValue)
+       (_get, _get_, _getUnsafe, _getUnchecked,
+        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, getOperationType,
+        WebKitCSSFilterValue(..), gTypeWebKitCSSFilterValue)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -21,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue._get Mozilla WebKitCSSFilterValue._get documentation> 
 _get ::
@@ -32,6 +46,15 @@
 _get_ :: (MonadDOM m) => WebKitCSSFilterValue -> Word -> m ()
 _get_ self index
   = liftDOM (void (self ^. jsf "_get" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue._get Mozilla WebKitCSSFilterValue._get documentation> 
+_getUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             WebKitCSSFilterValue -> Word -> m CSSValue
+_getUnsafe self index
+  = liftDOM
+      (((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue._get Mozilla WebKitCSSFilterValue._get documentation> 
 _getUnchecked ::
diff --git a/src/JSDOM/Generated/WebKitCSSMatrix.hs b/src/JSDOM/Generated/WebKitCSSMatrix.hs
--- a/src/JSDOM/Generated/WebKitCSSMatrix.hs
+++ b/src/JSDOM/Generated/WebKitCSSMatrix.hs
@@ -1,21 +1,27 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitCSSMatrix
        (newWebKitCSSMatrix, setMatrixValue, multiply, multiply_,
-        multiplyUnchecked, inverse, inverse_, inverseUnchecked, translate,
-        translate_, translateUnchecked, scale, scale_, scaleUnchecked,
-        rotate, rotate_, rotateUnchecked, rotateAxisAngle,
-        rotateAxisAngle_, rotateAxisAngleUnchecked, skewX, skewX_,
-        skewXUnchecked, skewY, skewY_, skewYUnchecked, toString, toString_,
-        setA, getA, setB, getB, setC, getC, setD, getD, setE, getE, setF,
-        getF, setM11, getM11, setM12, getM12, setM13, getM13, setM14,
-        getM14, setM21, getM21, setM22, getM22, setM23, getM23, setM24,
-        getM24, setM31, getM31, setM32, getM32, setM33, getM33, setM34,
-        getM34, setM41, getM41, setM42, getM42, setM43, getM43, setM44,
-        getM44, WebKitCSSMatrix, castToWebKitCSSMatrix,
+        multiplyUnsafe, multiplyUnchecked, inverse, inverse_,
+        inverseUnsafe, inverseUnchecked, translate, translate_,
+        translateUnsafe, translateUnchecked, scale, scale_, scaleUnsafe,
+        scaleUnchecked, rotate, rotate_, rotateUnsafe, rotateUnchecked,
+        rotateAxisAngle, rotateAxisAngle_, rotateAxisAngleUnsafe,
+        rotateAxisAngleUnchecked, skewX, skewX_, skewXUnsafe,
+        skewXUnchecked, skewY, skewY_, skewYUnsafe, skewYUnchecked,
+        toString, toString_, setA, getA, setB, getB, setC, getC, setD,
+        getD, setE, getE, setF, getF, setM11, getM11, setM12, getM12,
+        setM13, getM13, setM14, getM14, setM21, getM21, setM22, getM22,
+        setM23, getM23, setM24, getM24, setM31, getM31, setM32, getM32,
+        setM33, getM33, setM34, getM34, setM41, getM41, setM42, getM42,
+        setM43, getM43, setM44, getM44, WebKitCSSMatrix(..),
         gTypeWebKitCSSMatrix)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -26,6 +32,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation> 
 newWebKitCSSMatrix ::
@@ -58,6 +74,15 @@
   = liftDOM (void (self ^. jsf "multiply" [toJSVal secondMatrix]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
+multiplyUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 WebKitCSSMatrix -> Maybe WebKitCSSMatrix -> m WebKitCSSMatrix
+multiplyUnsafe self secondMatrix
+  = liftDOM
+      (((self ^. jsf "multiply" [toJSVal secondMatrix]) >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
 multiplyUnchecked ::
                   (MonadDOM m) =>
                     WebKitCSSMatrix -> Maybe WebKitCSSMatrix -> m WebKitCSSMatrix
@@ -76,6 +101,14 @@
 inverse_ self = liftDOM (void (self ^. jsf "inverse" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
+inverseUnsafe ::
+              (MonadDOM m, HasCallStack) => WebKitCSSMatrix -> m WebKitCSSMatrix
+inverseUnsafe self
+  = liftDOM
+      (((self ^. jsf "inverse" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
 inverseUnchecked ::
                  (MonadDOM m) => WebKitCSSMatrix -> m WebKitCSSMatrix
 inverseUnchecked self
@@ -100,6 +133,16 @@
       (void (self ^. jsf "translate" [toJSVal x, toJSVal y, toJSVal z]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
+translateUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  WebKitCSSMatrix -> Double -> Double -> Double -> m WebKitCSSMatrix
+translateUnsafe self x y z
+  = liftDOM
+      (((self ^. jsf "translate" [toJSVal x, toJSVal y, toJSVal z]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
 translateUnchecked ::
                    (MonadDOM m) =>
                      WebKitCSSMatrix -> Double -> Double -> Double -> m WebKitCSSMatrix
@@ -130,6 +173,17 @@
             [toJSVal scaleX, toJSVal scaleY, toJSVal scaleZ]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
+scaleUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              WebKitCSSMatrix -> Double -> Double -> Double -> m WebKitCSSMatrix
+scaleUnsafe self scaleX scaleY scaleZ
+  = liftDOM
+      (((self ^. jsf "scale"
+           [toJSVal scaleX, toJSVal scaleY, toJSVal scaleZ])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
 scaleUnchecked ::
                (MonadDOM m) =>
                  WebKitCSSMatrix -> Double -> Double -> Double -> m WebKitCSSMatrix
@@ -159,6 +213,16 @@
          (self ^. jsf "rotate" [toJSVal rotX, toJSVal rotY, toJSVal rotZ]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
+rotateUnsafe ::
+             (MonadDOM m, HasCallStack) =>
+               WebKitCSSMatrix -> Double -> Double -> Double -> m WebKitCSSMatrix
+rotateUnsafe self rotX rotY rotZ
+  = liftDOM
+      (((self ^. jsf "rotate" [toJSVal rotX, toJSVal rotY, toJSVal rotZ])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
 rotateUnchecked ::
                 (MonadDOM m) =>
                   WebKitCSSMatrix -> Double -> Double -> Double -> m WebKitCSSMatrix
@@ -189,6 +253,18 @@
             [toJSVal x, toJSVal y, toJSVal z, toJSVal angle]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
+rotateAxisAngleUnsafe ::
+                      (MonadDOM m, HasCallStack) =>
+                        WebKitCSSMatrix ->
+                          Double -> Double -> Double -> Double -> m WebKitCSSMatrix
+rotateAxisAngleUnsafe self x y z angle
+  = liftDOM
+      (((self ^. jsf "rotateAxisAngle"
+           [toJSVal x, toJSVal y, toJSVal z, toJSVal angle])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
 rotateAxisAngleUnchecked ::
                          (MonadDOM m) =>
                            WebKitCSSMatrix ->
@@ -212,6 +288,15 @@
   = liftDOM (void (self ^. jsf "skewX" [toJSVal angle]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
+skewXUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              WebKitCSSMatrix -> Double -> m WebKitCSSMatrix
+skewXUnsafe self angle
+  = liftDOM
+      (((self ^. jsf "skewX" [toJSVal angle]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
 skewXUnchecked ::
                (MonadDOM m) => WebKitCSSMatrix -> Double -> m WebKitCSSMatrix
 skewXUnchecked self angle
@@ -229,6 +314,15 @@
 skewY_ :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
 skewY_ self angle
   = liftDOM (void (self ^. jsf "skewY" [toJSVal angle]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
+skewYUnsafe ::
+            (MonadDOM m, HasCallStack) =>
+              WebKitCSSMatrix -> Double -> m WebKitCSSMatrix
+skewYUnsafe self angle
+  = liftDOM
+      (((self ^. jsf "skewY" [toJSVal angle]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
 skewYUnchecked ::
diff --git a/src/JSDOM/Generated/WebKitCSSRegionRule.hs b/src/JSDOM/Generated/WebKitCSSRegionRule.hs
--- a/src/JSDOM/Generated/WebKitCSSRegionRule.hs
+++ b/src/JSDOM/Generated/WebKitCSSRegionRule.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitCSSRegionRule
-       (getCssRules, getCssRulesUnchecked, WebKitCSSRegionRule,
-        castToWebKitCSSRegionRule, gTypeWebKitCSSRegionRule)
+       (getCssRules, getCssRulesUnsafe, getCssRulesUnchecked,
+        WebKitCSSRegionRule(..), gTypeWebKitCSSRegionRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,11 +19,29 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
 getCssRules ::
             (MonadDOM m) => WebKitCSSRegionRule -> m (Maybe CSSRuleList)
 getCssRules self = liftDOM ((self ^. js "cssRules") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
+getCssRulesUnsafe ::
+                  (MonadDOM m, HasCallStack) => WebKitCSSRegionRule -> m CSSRuleList
+getCssRulesUnsafe self
+  = liftDOM
+      (((self ^. js "cssRules") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
 getCssRulesUnchecked ::
diff --git a/src/JSDOM/Generated/WebKitCSSTransformValue.hs b/src/JSDOM/Generated/WebKitCSSTransformValue.hs
--- a/src/JSDOM/Generated/WebKitCSSTransformValue.hs
+++ b/src/JSDOM/Generated/WebKitCSSTransformValue.hs
@@ -1,7 +1,10 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitCSSTransformValue
-       (_get, _get_, _getUnchecked, pattern CSS_TRANSLATE,
+       (_get, _get_, _getUnsafe, _getUnchecked, 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,
@@ -9,10 +12,11 @@
         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,
-        getOperationType, WebKitCSSTransformValue,
-        castToWebKitCSSTransformValue, gTypeWebKitCSSTransformValue)
+        getOperationType, WebKitCSSTransformValue(..),
+        gTypeWebKitCSSTransformValue)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -23,6 +27,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue._get Mozilla WebKitCSSTransformValue._get documentation> 
 _get ::
@@ -35,6 +49,15 @@
 _get_ :: (MonadDOM m) => WebKitCSSTransformValue -> Word -> m ()
 _get_ self index
   = liftDOM (void (self ^. jsf "_get" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue._get Mozilla WebKitCSSTransformValue._get documentation> 
+_getUnsafe ::
+           (MonadDOM m, HasCallStack) =>
+             WebKitCSSTransformValue -> Word -> m CSSValue
+_getUnsafe self index
+  = liftDOM
+      (((self ^. jsf "_get" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue._get Mozilla WebKitCSSTransformValue._get documentation> 
 _getUnchecked ::
diff --git a/src/JSDOM/Generated/WebKitCSSViewportRule.hs b/src/JSDOM/Generated/WebKitCSSViewportRule.hs
--- a/src/JSDOM/Generated/WebKitCSSViewportRule.hs
+++ b/src/JSDOM/Generated/WebKitCSSViewportRule.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitCSSViewportRule
-       (getStyle, getStyleUnchecked, WebKitCSSViewportRule,
-        castToWebKitCSSViewportRule, gTypeWebKitCSSViewportRule)
+       (getStyle, getStyleUnsafe, getStyleUnchecked,
+        WebKitCSSViewportRule(..), gTypeWebKitCSSViewportRule)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,12 +19,31 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
 getStyle ::
          (MonadDOM m) =>
            WebKitCSSViewportRule -> m (Maybe CSSStyleDeclaration)
 getStyle self = liftDOM ((self ^. js "style") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
+getStyleUnsafe ::
+               (MonadDOM m, HasCallStack) =>
+                 WebKitCSSViewportRule -> m CSSStyleDeclaration
+getStyleUnsafe self
+  = liftDOM
+      (((self ^. js "style") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
 getStyleUnchecked ::
diff --git a/src/JSDOM/Generated/WebKitNamedFlow.hs b/src/JSDOM/Generated/WebKitNamedFlow.hs
--- a/src/JSDOM/Generated/WebKitNamedFlow.hs
+++ b/src/JSDOM/Generated/WebKitNamedFlow.hs
@@ -1,13 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitNamedFlow
        (getRegionsByContent, getRegionsByContent_,
-        getRegionsByContentUnchecked, getRegions, getRegions_,
-        getRegionsUnchecked, getContent, getContent_, getContentUnchecked,
-        getName, getOverset, getFirstEmptyRegionIndex, WebKitNamedFlow,
-        castToWebKitNamedFlow, gTypeWebKitNamedFlow)
+        getRegionsByContentUnsafe, getRegionsByContentUnchecked,
+        getRegions, getRegions_, getRegionsUnsafe, getRegionsUnchecked,
+        getContent, getContent_, getContentUnsafe, getContentUnchecked,
+        getName, getOverset, getFirstEmptyRegionIndex, WebKitNamedFlow(..),
+        gTypeWebKitNamedFlow)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
 getRegionsByContent ::
@@ -37,6 +52,16 @@
       (void (self ^. jsf "getRegionsByContent" [toJSVal contentNode]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
+getRegionsByContentUnsafe ::
+                          (MonadDOM m, IsNode contentNode, HasCallStack) =>
+                            WebKitNamedFlow -> Maybe contentNode -> m NodeList
+getRegionsByContentUnsafe self contentNode
+  = liftDOM
+      (((self ^. jsf "getRegionsByContent" [toJSVal contentNode]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
 getRegionsByContentUnchecked ::
                              (MonadDOM m, IsNode contentNode) =>
                                WebKitNamedFlow -> Maybe contentNode -> m NodeList
@@ -55,6 +80,14 @@
 getRegions_ self = liftDOM (void (self ^. jsf "getRegions" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
+getRegionsUnsafe ::
+                 (MonadDOM m, HasCallStack) => WebKitNamedFlow -> m NodeList
+getRegionsUnsafe self
+  = liftDOM
+      (((self ^. jsf "getRegions" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
 getRegionsUnchecked ::
                     (MonadDOM m) => WebKitNamedFlow -> m NodeList
 getRegionsUnchecked self
@@ -68,6 +101,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
 getContent_ :: (MonadDOM m) => WebKitNamedFlow -> m ()
 getContent_ self = liftDOM (void (self ^. jsf "getContent" ()))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
+getContentUnsafe ::
+                 (MonadDOM m, HasCallStack) => WebKitNamedFlow -> m NodeList
+getContentUnsafe self
+  = liftDOM
+      (((self ^. jsf "getContent" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
 getContentUnchecked ::
diff --git a/src/JSDOM/Generated/WebKitNamespace.hs b/src/JSDOM/Generated/WebKitNamespace.hs
--- a/src/JSDOM/Generated/WebKitNamespace.hs
+++ b/src/JSDOM/Generated/WebKitNamespace.hs
@@ -1,10 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitNamespace
-       (getMessageHandlers, getMessageHandlersUnchecked, WebKitNamespace,
-        castToWebKitNamespace, gTypeWebKitNamespace)
+       (getMessageHandlers, getMessageHandlersUnsafe,
+        getMessageHandlersUnchecked, WebKitNamespace(..),
+        gTypeWebKitNamespace)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
 getMessageHandlers ::
@@ -22,6 +37,15 @@
                      WebKitNamespace -> m (Maybe UserMessageHandlersNamespace)
 getMessageHandlers self
   = liftDOM ((self ^. js "messageHandlers") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
+getMessageHandlersUnsafe ::
+                         (MonadDOM m, HasCallStack) =>
+                           WebKitNamespace -> m UserMessageHandlersNamespace
+getMessageHandlersUnsafe self
+  = liftDOM
+      (((self ^. js "messageHandlers") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
 getMessageHandlersUnchecked ::
diff --git a/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs b/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
--- a/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
+++ b/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitPlaybackTargetAvailabilityEvent
-       (getAvailability, WebKitPlaybackTargetAvailabilityEvent,
-        castToWebKitPlaybackTargetAvailabilityEvent,
+       (getAvailability, WebKitPlaybackTargetAvailabilityEvent(..),
         gTypeWebKitPlaybackTargetAvailabilityEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent.availability Mozilla WebKitPlaybackTargetAvailabilityEvent.availability documentation> 
 getAvailability ::
diff --git a/src/JSDOM/Generated/WebKitPoint.hs b/src/JSDOM/Generated/WebKitPoint.hs
--- a/src/JSDOM/Generated/WebKitPoint.hs
+++ b/src/JSDOM/Generated/WebKitPoint.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitPoint
        (newWebKitPoint, newWebKitPoint', setX, getX, setY, getY,
-        WebKitPoint, castToWebKitPoint, gTypeWebKitPoint)
+        WebKitPoint(..), gTypeWebKitPoint)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
 newWebKitPoint :: (MonadDOM m) => m WebKitPoint
diff --git a/src/JSDOM/Generated/WebKitTransitionEvent.hs b/src/JSDOM/Generated/WebKitTransitionEvent.hs
--- a/src/JSDOM/Generated/WebKitTransitionEvent.hs
+++ b/src/JSDOM/Generated/WebKitTransitionEvent.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebKitTransitionEvent
        (getPropertyName, getElapsedTime, getPseudoElement,
-        WebKitTransitionEvent, castToWebKitTransitionEvent,
-        gTypeWebKitTransitionEvent)
+        WebKitTransitionEvent(..), gTypeWebKitTransitionEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.propertyName Mozilla WebKitTransitionEvent.propertyName documentation> 
 getPropertyName ::
diff --git a/src/JSDOM/Generated/WebSocket.hs b/src/JSDOM/Generated/WebSocket.hs
--- a/src/JSDOM/Generated/WebSocket.hs
+++ b/src/JSDOM/Generated/WebSocket.hs
@@ -1,14 +1,19 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WebSocket
        (newWebSocket, newWebSocket', send, sendView, sendBlob, sendString,
         close, pattern CONNECTING, pattern OPEN, pattern CLOSING,
         pattern CLOSED, getUrl, getReadyState, getBufferedAmount, open,
-        message, error, closeEvent, getProtocol, getProtocolUnchecked,
-        getExtensions, getExtensionsUnchecked, setBinaryType,
-        getBinaryType, WebSocket, castToWebSocket, gTypeWebSocket)
+        message, error, closeEvent, getProtocol, getProtocolUnsafe,
+        getProtocolUnchecked, getExtensions, getExtensionsUnsafe,
+        getExtensionsUnchecked, setBinaryType, getBinaryType,
+        WebSocket(..), gTypeWebSocket)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -19,6 +24,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
 newWebSocket ::
@@ -116,6 +131,15 @@
   = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
+getProtocolUnsafe ::
+                  (MonadDOM m, HasCallStack, FromJSString result) =>
+                    WebSocket -> m result
+getProtocolUnsafe self
+  = liftDOM
+      (((self ^. js "protocol") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
 getProtocolUnchecked ::
                      (MonadDOM m, FromJSString result) => WebSocket -> m result
 getProtocolUnchecked self
@@ -126,6 +150,15 @@
               (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)
 getExtensions self
   = liftDOM ((self ^. js "extensions") >>= fromMaybeJSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
+getExtensionsUnsafe ::
+                    (MonadDOM m, HasCallStack, FromJSString result) =>
+                      WebSocket -> m result
+getExtensionsUnsafe self
+  = liftDOM
+      (((self ^. js "extensions") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
 getExtensionsUnchecked ::
diff --git a/src/JSDOM/Generated/WheelEvent.hs b/src/JSDOM/Generated/WheelEvent.hs
--- a/src/JSDOM/Generated/WheelEvent.hs
+++ b/src/JSDOM/Generated/WheelEvent.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WheelEvent
        (initWebKitWheelEvent, pattern DOM_DELTA_PIXEL,
         pattern DOM_DELTA_LINE, pattern DOM_DELTA_PAGE, getDeltaX,
         getDeltaY, getDeltaZ, getDeltaMode, getWheelDeltaX, getWheelDeltaY,
-        getWheelDelta, getWebkitDirectionInvertedFromDevice, WheelEvent,
-        castToWheelEvent, gTypeWheelEvent)
+        getWheelDelta, getWebkitDirectionInvertedFromDevice,
+        WheelEvent(..), gTypeWheelEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -18,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.initWebKitWheelEvent Mozilla WheelEvent.initWebKitWheelEvent documentation> 
 initWebKitWheelEvent ::
diff --git a/src/JSDOM/Generated/Window.hs b/src/JSDOM/Generated/Window.hs
--- a/src/JSDOM/Generated/Window.hs
+++ b/src/JSDOM/Generated/Window.hs
@@ -1,71 +1,92 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Window
-       (openDatabase, openDatabase_, openDatabaseUnchecked, getSelection,
-        getSelection_, getSelectionUnchecked, focus, blur, close, print,
-        stop, open, open_, openUnchecked, showModalDialog,
-        showModalDialog_, alert, confirm, confirm_, prompt, prompt_,
-        promptUnchecked, find, find_, scrollBy, scrollTo, scroll, moveBy,
-        moveTo, resizeBy, resizeTo, matchMedia, matchMedia_,
-        matchMediaUnchecked, getComputedStyle, getComputedStyle_,
+       (openDatabase, openDatabase_, openDatabaseUnsafe,
+        openDatabaseUnchecked, getSelection, getSelection_,
+        getSelectionUnsafe, getSelectionUnchecked, focus, blur, close,
+        print, stop, open, open_, openUnsafe, openUnchecked,
+        showModalDialog, showModalDialog_, alert, confirm, confirm_,
+        prompt, prompt_, promptUnsafe, promptUnchecked, find, find_,
+        scrollBy, scrollTo, scroll, moveBy, moveTo, resizeBy, resizeTo,
+        matchMedia, matchMedia_, matchMediaUnsafe, matchMediaUnchecked,
+        getComputedStyle, getComputedStyle_, getComputedStyleUnsafe,
         getComputedStyleUnchecked, getMatchedCSSRules, getMatchedCSSRules_,
-        getMatchedCSSRulesUnchecked, webkitConvertPointFromPageToNode,
+        getMatchedCSSRulesUnsafe, getMatchedCSSRulesUnchecked,
+        webkitConvertPointFromPageToNode,
         webkitConvertPointFromPageToNode_,
+        webkitConvertPointFromPageToNodeUnsafe,
         webkitConvertPointFromPageToNodeUnchecked,
         webkitConvertPointFromNodeToPage,
         webkitConvertPointFromNodeToPage_,
+        webkitConvertPointFromNodeToPageUnsafe,
         webkitConvertPointFromNodeToPageUnchecked, postMessage,
         requestAnimationFrame, requestAnimationFrame_,
         cancelAnimationFrame, webkitRequestAnimationFrame,
         webkitRequestAnimationFrame_, webkitCancelAnimationFrame,
         webkitCancelRequestAnimationFrame, captureEvents, releaseEvents,
-        getWebkitIndexedDB, getWebkitIndexedDBUnchecked, getIndexedDB,
+        getWebkitIndexedDB, getWebkitIndexedDBUnsafe,
+        getWebkitIndexedDBUnchecked, getIndexedDB, getIndexedDBUnsafe,
         getIndexedDBUnchecked, getWebkitStorageInfo,
-        getWebkitStorageInfoUnchecked, getSpeechSynthesis,
-        getSpeechSynthesisUnchecked, getScreen, getScreenUnchecked,
-        getHistory, getHistoryUnchecked, getLocationbar,
-        getLocationbarUnchecked, getMenubar, getMenubarUnchecked,
-        getPersonalbar, getPersonalbarUnchecked, getScrollbars,
-        getScrollbarsUnchecked, getStatusbar, getStatusbarUnchecked,
-        getToolbar, getToolbarUnchecked, getNavigator,
+        getWebkitStorageInfoUnsafe, getWebkitStorageInfoUnchecked,
+        getSpeechSynthesis, getSpeechSynthesisUnsafe,
+        getSpeechSynthesisUnchecked, getScreen, getScreenUnsafe,
+        getScreenUnchecked, getHistory, getHistoryUnsafe,
+        getHistoryUnchecked, getLocationbar, getLocationbarUnsafe,
+        getLocationbarUnchecked, getMenubar, getMenubarUnsafe,
+        getMenubarUnchecked, getPersonalbar, getPersonalbarUnsafe,
+        getPersonalbarUnchecked, getScrollbars, getScrollbarsUnsafe,
+        getScrollbarsUnchecked, getStatusbar, getStatusbarUnsafe,
+        getStatusbarUnchecked, getToolbar, getToolbarUnsafe,
+        getToolbarUnchecked, getNavigator, getNavigatorUnsafe,
         getNavigatorUnchecked, getClientInformation,
-        getClientInformationUnchecked, getCrypto, getCryptoUnchecked,
-        setLocation, getLocation, getLocationUnchecked, getEvent,
-        getEventUnchecked, getFrameElement, getFrameElementUnchecked,
+        getClientInformationUnsafe, getClientInformationUnchecked,
+        getCrypto, getCryptoUnsafe, getCryptoUnchecked, setLocation,
+        getLocation, getLocationUnsafe, getLocationUnchecked, getEvent,
+        getEventUnsafe, getEventUnchecked, getFrameElement,
+        getFrameElementUnsafe, getFrameElementUnchecked,
         getOffscreenBuffering, getOuterHeight, getOuterWidth,
         getInnerHeight, getInnerWidth, getScreenX, getScreenY,
         getScreenLeft, getScreenTop, getScrollX, getScrollY,
         getPageXOffset, getPageYOffset, getClosed, getLength, setName,
         getName, setStatus, getStatus, setDefaultStatus, getDefaultStatus,
-        setDefaultstatus, getDefaultstatus, getSelf, getSelfUnchecked,
-        getWindow, getWindowUnchecked, getFrames, getFramesUnchecked,
-        getOpener, getOpenerUnchecked, getParent, getParentUnchecked,
-        getTop, getTopUnchecked, getDocument, getDocumentUnchecked,
-        getStyleMedia, getStyleMediaUnchecked, getDevicePixelRatio,
-        getApplicationCache, getApplicationCacheUnchecked,
-        getSessionStorage, getSessionStorageUnchecked, getLocalStorage,
+        setDefaultstatus, getDefaultstatus, getSelf, getSelfUnsafe,
+        getSelfUnchecked, getWindow, getWindowUnsafe, getWindowUnchecked,
+        getFrames, getFramesUnsafe, getFramesUnchecked, getOpener,
+        getOpenerUnsafe, getOpenerUnchecked, getParent, getParentUnsafe,
+        getParentUnchecked, getTop, getTopUnsafe, getTopUnchecked,
+        getDocument, getDocumentUnsafe, getDocumentUnchecked,
+        getStyleMedia, getStyleMediaUnsafe, getStyleMediaUnchecked,
+        getDevicePixelRatio, getApplicationCache,
+        getApplicationCacheUnsafe, getApplicationCacheUnchecked,
+        getSessionStorage, getSessionStorageUnsafe,
+        getSessionStorageUnchecked, getLocalStorage, getLocalStorageUnsafe,
         getLocalStorageUnchecked, getOrientation, getPerformance,
-        getPerformanceUnchecked, getCSS, getCSSUnchecked, 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,
+        getPerformanceUnsafe, getPerformanceUnchecked, getCSS,
+        getCSSUnsafe, getCSSUnchecked, 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,
+        webKitWillRevealRight, webKitWillRevealTop, Window(..),
         gTypeWindow)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -76,6 +97,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
 openDatabase ::
@@ -109,6 +140,23 @@
              toJSVal estimatedSize, toJSVal creationCallback]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
+openDatabaseUnsafe ::
+                   (MonadDOM m, ToJSString name, ToJSString version,
+                    ToJSString displayName, HasCallStack) =>
+                     Window ->
+                       name ->
+                         version ->
+                           displayName -> Word -> Maybe DatabaseCallback -> m Database
+openDatabaseUnsafe self name version displayName estimatedSize
+  creationCallback
+  = liftDOM
+      (((self ^. jsf "openDatabase"
+           [toJSVal name, toJSVal version, toJSVal displayName,
+            toJSVal estimatedSize, toJSVal creationCallback])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
 openDatabaseUnchecked ::
                       (MonadDOM m, ToJSString name, ToJSString version,
                        ToJSString displayName) =>
@@ -134,6 +182,14 @@
 getSelection_ self = liftDOM (void (self ^. jsf "getSelection" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
+getSelectionUnsafe ::
+                   (MonadDOM m, HasCallStack) => Window -> m Selection
+getSelectionUnsafe self
+  = liftDOM
+      (((self ^. jsf "getSelection" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
 getSelectionUnchecked :: (MonadDOM m) => Window -> m Selection
 getSelectionUnchecked self
   = liftDOM ((self ^. jsf "getSelection" ()) >>= fromJSValUnchecked)
@@ -179,6 +235,17 @@
          (self ^. jsf "open" [toJSVal url, toJSVal name, toJSVal options]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
+openUnsafe ::
+           (MonadDOM m, ToJSString url, ToJSString name, ToJSString options,
+            HasCallStack) =>
+             Window -> url -> name -> options -> m Window
+openUnsafe self url name options
+  = liftDOM
+      (((self ^. jsf "open" [toJSVal url, toJSVal name, toJSVal options])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
 openUnchecked ::
               (MonadDOM m, ToJSString url, ToJSString name,
                ToJSString options) =>
@@ -246,6 +313,17 @@
          (self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
+promptUnsafe ::
+             (MonadDOM m, ToJSString message, ToJSString defaultValue,
+              HasCallStack, FromJSString result) =>
+               Window -> message -> Maybe defaultValue -> m result
+promptUnsafe self message defaultValue
+  = liftDOM
+      (((self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue])
+          >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
 promptUnchecked ::
                 (MonadDOM m, ToJSString message, ToJSString defaultValue,
                  FromJSString result) =>
@@ -334,6 +412,15 @@
   = liftDOM (void (self ^. jsf "matchMedia" [toJSVal query]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
+matchMediaUnsafe ::
+                 (MonadDOM m, ToJSString query, HasCallStack) =>
+                   Window -> query -> m MediaQueryList
+matchMediaUnsafe self query
+  = liftDOM
+      (((self ^. jsf "matchMedia" [toJSVal query]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
 matchMediaUnchecked ::
                     (MonadDOM m, ToJSString query) =>
                       Window -> query -> m MediaQueryList
@@ -364,6 +451,19 @@
             [toJSVal element, toJSVal pseudoElement]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
+getComputedStyleUnsafe ::
+                       (MonadDOM m, IsElement element, ToJSString pseudoElement,
+                        HasCallStack) =>
+                         Window ->
+                           Maybe element -> Maybe pseudoElement -> m CSSStyleDeclaration
+getComputedStyleUnsafe self element pseudoElement
+  = liftDOM
+      (((self ^. jsf "getComputedStyle"
+           [toJSVal element, toJSVal pseudoElement])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
 getComputedStyleUnchecked ::
                           (MonadDOM m, IsElement element, ToJSString pseudoElement) =>
                             Window ->
@@ -396,6 +496,18 @@
             [toJSVal element, toJSVal pseudoElement]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
+getMatchedCSSRulesUnsafe ::
+                         (MonadDOM m, IsElement element, ToJSString pseudoElement,
+                          HasCallStack) =>
+                           Window -> Maybe element -> Maybe pseudoElement -> m CSSRuleList
+getMatchedCSSRulesUnsafe self element pseudoElement
+  = liftDOM
+      (((self ^. jsf "getMatchedCSSRules"
+           [toJSVal element, toJSVal pseudoElement])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
 getMatchedCSSRulesUnchecked ::
                             (MonadDOM m, IsElement element, ToJSString pseudoElement) =>
                               Window -> Maybe element -> Maybe pseudoElement -> m CSSRuleList
@@ -427,6 +539,17 @@
             [toJSVal node, toJSVal p]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
+webkitConvertPointFromPageToNodeUnsafe ::
+                                       (MonadDOM m, IsNode node, HasCallStack) =>
+                                         Window -> Maybe node -> Maybe WebKitPoint -> m WebKitPoint
+webkitConvertPointFromPageToNodeUnsafe self node p
+  = liftDOM
+      (((self ^. jsf "webkitConvertPointFromPageToNode"
+           [toJSVal node, toJSVal p])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
 webkitConvertPointFromPageToNodeUnchecked ::
                                           (MonadDOM m, IsNode node) =>
                                             Window ->
@@ -459,6 +582,17 @@
             [toJSVal node, toJSVal p]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
+webkitConvertPointFromNodeToPageUnsafe ::
+                                       (MonadDOM m, IsNode node, HasCallStack) =>
+                                         Window -> Maybe node -> Maybe WebKitPoint -> m WebKitPoint
+webkitConvertPointFromNodeToPageUnsafe self node p
+  = liftDOM
+      (((self ^. jsf "webkitConvertPointFromNodeToPage"
+           [toJSVal node, toJSVal p])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
 webkitConvertPointFromNodeToPageUnchecked ::
                                           (MonadDOM m, IsNode node) =>
                                             Window ->
@@ -554,6 +688,14 @@
   = liftDOM ((self ^. js "webkitIndexedDB") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitIndexedDB Mozilla Window.webkitIndexedDB documentation> 
+getWebkitIndexedDBUnsafe ::
+                         (MonadDOM m, HasCallStack) => Window -> m IDBFactory
+getWebkitIndexedDBUnsafe self
+  = liftDOM
+      (((self ^. js "webkitIndexedDB") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitIndexedDB Mozilla Window.webkitIndexedDB documentation> 
 getWebkitIndexedDBUnchecked ::
                             (MonadDOM m) => Window -> m IDBFactory
 getWebkitIndexedDBUnchecked self
@@ -565,6 +707,14 @@
   = liftDOM ((self ^. js "indexedDB") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.indexedDB Mozilla Window.indexedDB documentation> 
+getIndexedDBUnsafe ::
+                   (MonadDOM m, HasCallStack) => Window -> m IDBFactory
+getIndexedDBUnsafe self
+  = liftDOM
+      (((self ^. js "indexedDB") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.indexedDB Mozilla Window.indexedDB documentation> 
 getIndexedDBUnchecked :: (MonadDOM m) => Window -> m IDBFactory
 getIndexedDBUnchecked self
   = liftDOM ((self ^. js "indexedDB") >>= fromJSValUnchecked)
@@ -576,6 +726,14 @@
   = liftDOM ((self ^. js "webkitStorageInfo") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitStorageInfo Mozilla Window.webkitStorageInfo documentation> 
+getWebkitStorageInfoUnsafe ::
+                           (MonadDOM m, HasCallStack) => Window -> m StorageInfo
+getWebkitStorageInfoUnsafe self
+  = liftDOM
+      (((self ^. js "webkitStorageInfo") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitStorageInfo Mozilla Window.webkitStorageInfo documentation> 
 getWebkitStorageInfoUnchecked ::
                               (MonadDOM m) => Window -> m StorageInfo
 getWebkitStorageInfoUnchecked self
@@ -588,6 +746,14 @@
   = liftDOM ((self ^. js "speechSynthesis") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.speechSynthesis Mozilla Window.speechSynthesis documentation> 
+getSpeechSynthesisUnsafe ::
+                         (MonadDOM m, HasCallStack) => Window -> m SpeechSynthesis
+getSpeechSynthesisUnsafe self
+  = liftDOM
+      (((self ^. js "speechSynthesis") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.speechSynthesis Mozilla Window.speechSynthesis documentation> 
 getSpeechSynthesisUnchecked ::
                             (MonadDOM m) => Window -> m SpeechSynthesis
 getSpeechSynthesisUnchecked self
@@ -598,6 +764,13 @@
 getScreen self = liftDOM ((self ^. js "screen") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screen Mozilla Window.screen documentation> 
+getScreenUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Screen
+getScreenUnsafe self
+  = liftDOM
+      (((self ^. js "screen") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screen Mozilla Window.screen documentation> 
 getScreenUnchecked :: (MonadDOM m) => Window -> m Screen
 getScreenUnchecked self
   = liftDOM ((self ^. js "screen") >>= fromJSValUnchecked)
@@ -607,6 +780,14 @@
 getHistory self = liftDOM ((self ^. js "history") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.history Mozilla Window.history documentation> 
+getHistoryUnsafe ::
+                 (MonadDOM m, HasCallStack) => Window -> m History
+getHistoryUnsafe self
+  = liftDOM
+      (((self ^. js "history") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.history Mozilla Window.history documentation> 
 getHistoryUnchecked :: (MonadDOM m) => Window -> m History
 getHistoryUnchecked self
   = liftDOM ((self ^. js "history") >>= fromJSValUnchecked)
@@ -617,6 +798,14 @@
   = liftDOM ((self ^. js "locationbar") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.locationbar Mozilla Window.locationbar documentation> 
+getLocationbarUnsafe ::
+                     (MonadDOM m, HasCallStack) => Window -> m BarProp
+getLocationbarUnsafe self
+  = liftDOM
+      (((self ^. js "locationbar") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.locationbar Mozilla Window.locationbar documentation> 
 getLocationbarUnchecked :: (MonadDOM m) => Window -> m BarProp
 getLocationbarUnchecked self
   = liftDOM ((self ^. js "locationbar") >>= fromJSValUnchecked)
@@ -626,6 +815,14 @@
 getMenubar self = liftDOM ((self ^. js "menubar") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.menubar Mozilla Window.menubar documentation> 
+getMenubarUnsafe ::
+                 (MonadDOM m, HasCallStack) => Window -> m BarProp
+getMenubarUnsafe self
+  = liftDOM
+      (((self ^. js "menubar") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.menubar Mozilla Window.menubar documentation> 
 getMenubarUnchecked :: (MonadDOM m) => Window -> m BarProp
 getMenubarUnchecked self
   = liftDOM ((self ^. js "menubar") >>= fromJSValUnchecked)
@@ -636,6 +833,14 @@
   = liftDOM ((self ^. js "personalbar") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.personalbar Mozilla Window.personalbar documentation> 
+getPersonalbarUnsafe ::
+                     (MonadDOM m, HasCallStack) => Window -> m BarProp
+getPersonalbarUnsafe self
+  = liftDOM
+      (((self ^. js "personalbar") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.personalbar Mozilla Window.personalbar documentation> 
 getPersonalbarUnchecked :: (MonadDOM m) => Window -> m BarProp
 getPersonalbarUnchecked self
   = liftDOM ((self ^. js "personalbar") >>= fromJSValUnchecked)
@@ -646,6 +851,14 @@
   = liftDOM ((self ^. js "scrollbars") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollbars Mozilla Window.scrollbars documentation> 
+getScrollbarsUnsafe ::
+                    (MonadDOM m, HasCallStack) => Window -> m BarProp
+getScrollbarsUnsafe self
+  = liftDOM
+      (((self ^. js "scrollbars") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollbars Mozilla Window.scrollbars documentation> 
 getScrollbarsUnchecked :: (MonadDOM m) => Window -> m BarProp
 getScrollbarsUnchecked self
   = liftDOM ((self ^. js "scrollbars") >>= fromJSValUnchecked)
@@ -656,6 +869,14 @@
   = liftDOM ((self ^. js "statusbar") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.statusbar Mozilla Window.statusbar documentation> 
+getStatusbarUnsafe ::
+                   (MonadDOM m, HasCallStack) => Window -> m BarProp
+getStatusbarUnsafe self
+  = liftDOM
+      (((self ^. js "statusbar") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.statusbar Mozilla Window.statusbar documentation> 
 getStatusbarUnchecked :: (MonadDOM m) => Window -> m BarProp
 getStatusbarUnchecked self
   = liftDOM ((self ^. js "statusbar") >>= fromJSValUnchecked)
@@ -665,6 +886,14 @@
 getToolbar self = liftDOM ((self ^. js "toolbar") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.toolbar Mozilla Window.toolbar documentation> 
+getToolbarUnsafe ::
+                 (MonadDOM m, HasCallStack) => Window -> m BarProp
+getToolbarUnsafe self
+  = liftDOM
+      (((self ^. js "toolbar") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.toolbar Mozilla Window.toolbar documentation> 
 getToolbarUnchecked :: (MonadDOM m) => Window -> m BarProp
 getToolbarUnchecked self
   = liftDOM ((self ^. js "toolbar") >>= fromJSValUnchecked)
@@ -675,6 +904,14 @@
   = liftDOM ((self ^. js "navigator") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator Mozilla Window.navigator documentation> 
+getNavigatorUnsafe ::
+                   (MonadDOM m, HasCallStack) => Window -> m Navigator
+getNavigatorUnsafe self
+  = liftDOM
+      (((self ^. js "navigator") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator Mozilla Window.navigator documentation> 
 getNavigatorUnchecked :: (MonadDOM m) => Window -> m Navigator
 getNavigatorUnchecked self
   = liftDOM ((self ^. js "navigator") >>= fromJSValUnchecked)
@@ -686,6 +923,14 @@
   = liftDOM ((self ^. js "clientInformation") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.clientInformation Mozilla Window.clientInformation documentation> 
+getClientInformationUnsafe ::
+                           (MonadDOM m, HasCallStack) => Window -> m Navigator
+getClientInformationUnsafe self
+  = liftDOM
+      (((self ^. js "clientInformation") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.clientInformation Mozilla Window.clientInformation documentation> 
 getClientInformationUnchecked ::
                               (MonadDOM m) => Window -> m Navigator
 getClientInformationUnchecked self
@@ -696,6 +941,13 @@
 getCrypto self = liftDOM ((self ^. js "crypto") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.crypto Mozilla Window.crypto documentation> 
+getCryptoUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Crypto
+getCryptoUnsafe self
+  = liftDOM
+      (((self ^. js "crypto") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.crypto Mozilla Window.crypto documentation> 
 getCryptoUnchecked :: (MonadDOM m) => Window -> m Crypto
 getCryptoUnchecked self
   = liftDOM ((self ^. js "crypto") >>= fromJSValUnchecked)
@@ -710,6 +962,14 @@
 getLocation self = liftDOM ((self ^. js "location") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
+getLocationUnsafe ::
+                  (MonadDOM m, HasCallStack) => Window -> m Location
+getLocationUnsafe self
+  = liftDOM
+      (((self ^. js "location") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
 getLocationUnchecked :: (MonadDOM m) => Window -> m Location
 getLocationUnchecked self
   = liftDOM ((self ^. js "location") >>= fromJSValUnchecked)
@@ -719,6 +979,13 @@
 getEvent self = liftDOM ((self ^. js "event") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.event Mozilla Window.event documentation> 
+getEventUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Event
+getEventUnsafe self
+  = liftDOM
+      (((self ^. js "event") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.event Mozilla Window.event documentation> 
 getEventUnchecked :: (MonadDOM m) => Window -> m Event
 getEventUnchecked self
   = liftDOM ((self ^. js "event") >>= fromJSValUnchecked)
@@ -729,6 +996,14 @@
   = liftDOM ((self ^. js "frameElement") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
+getFrameElementUnsafe ::
+                      (MonadDOM m, HasCallStack) => Window -> m Element
+getFrameElementUnsafe self
+  = liftDOM
+      (((self ^. js "frameElement") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
 getFrameElementUnchecked :: (MonadDOM m) => Window -> m Element
 getFrameElementUnchecked self
   = liftDOM ((self ^. js "frameElement") >>= fromJSValUnchecked)
@@ -854,6 +1129,13 @@
 getSelf self = liftDOM ((self ^. js "self") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.self Mozilla Window.self documentation> 
+getSelfUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getSelfUnsafe self
+  = liftDOM
+      (((self ^. js "self") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.self Mozilla Window.self documentation> 
 getSelfUnchecked :: (MonadDOM m) => Window -> m Window
 getSelfUnchecked self
   = liftDOM ((self ^. js "self") >>= fromJSValUnchecked)
@@ -863,6 +1145,13 @@
 getWindow self = liftDOM ((self ^. js "window") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.window Mozilla Window.window documentation> 
+getWindowUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getWindowUnsafe self
+  = liftDOM
+      (((self ^. js "window") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.window Mozilla Window.window documentation> 
 getWindowUnchecked :: (MonadDOM m) => Window -> m Window
 getWindowUnchecked self
   = liftDOM ((self ^. js "window") >>= fromJSValUnchecked)
@@ -872,6 +1161,13 @@
 getFrames self = liftDOM ((self ^. js "frames") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frames Mozilla Window.frames documentation> 
+getFramesUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getFramesUnsafe self
+  = liftDOM
+      (((self ^. js "frames") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frames Mozilla Window.frames documentation> 
 getFramesUnchecked :: (MonadDOM m) => Window -> m Window
 getFramesUnchecked self
   = liftDOM ((self ^. js "frames") >>= fromJSValUnchecked)
@@ -881,6 +1177,13 @@
 getOpener self = liftDOM ((self ^. js "opener") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
+getOpenerUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getOpenerUnsafe self
+  = liftDOM
+      (((self ^. js "opener") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
 getOpenerUnchecked :: (MonadDOM m) => Window -> m Window
 getOpenerUnchecked self
   = liftDOM ((self ^. js "opener") >>= fromJSValUnchecked)
@@ -890,6 +1193,13 @@
 getParent self = liftDOM ((self ^. js "parent") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
+getParentUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getParentUnsafe self
+  = liftDOM
+      (((self ^. js "parent") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
 getParentUnchecked :: (MonadDOM m) => Window -> m Window
 getParentUnchecked self
   = liftDOM ((self ^. js "parent") >>= fromJSValUnchecked)
@@ -899,6 +1209,13 @@
 getTop self = liftDOM ((self ^. js "top") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
+getTopUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getTopUnsafe self
+  = liftDOM
+      (((self ^. js "top") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
 getTopUnchecked :: (MonadDOM m) => Window -> m Window
 getTopUnchecked self
   = liftDOM ((self ^. js "top") >>= fromJSValUnchecked)
@@ -908,6 +1225,14 @@
 getDocument self = liftDOM ((self ^. js "document") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.document Mozilla Window.document documentation> 
+getDocumentUnsafe ::
+                  (MonadDOM m, HasCallStack) => Window -> m Document
+getDocumentUnsafe self
+  = liftDOM
+      (((self ^. js "document") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.document Mozilla Window.document documentation> 
 getDocumentUnchecked :: (MonadDOM m) => Window -> m Document
 getDocumentUnchecked self
   = liftDOM ((self ^. js "document") >>= fromJSValUnchecked)
@@ -918,6 +1243,14 @@
   = liftDOM ((self ^. js "styleMedia") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.styleMedia Mozilla Window.styleMedia documentation> 
+getStyleMediaUnsafe ::
+                    (MonadDOM m, HasCallStack) => Window -> m StyleMedia
+getStyleMediaUnsafe self
+  = liftDOM
+      (((self ^. js "styleMedia") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.styleMedia Mozilla Window.styleMedia documentation> 
 getStyleMediaUnchecked :: (MonadDOM m) => Window -> m StyleMedia
 getStyleMediaUnchecked self
   = liftDOM ((self ^. js "styleMedia") >>= fromJSValUnchecked)
@@ -934,6 +1267,14 @@
   = liftDOM ((self ^. js "applicationCache") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.applicationCache Mozilla Window.applicationCache documentation> 
+getApplicationCacheUnsafe ::
+                          (MonadDOM m, HasCallStack) => Window -> m ApplicationCache
+getApplicationCacheUnsafe self
+  = liftDOM
+      (((self ^. js "applicationCache") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.applicationCache Mozilla Window.applicationCache documentation> 
 getApplicationCacheUnchecked ::
                              (MonadDOM m) => Window -> m ApplicationCache
 getApplicationCacheUnchecked self
@@ -945,6 +1286,14 @@
   = liftDOM ((self ^. js "sessionStorage") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.sessionStorage Mozilla Window.sessionStorage documentation> 
+getSessionStorageUnsafe ::
+                        (MonadDOM m, HasCallStack) => Window -> m Storage
+getSessionStorageUnsafe self
+  = liftDOM
+      (((self ^. js "sessionStorage") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.sessionStorage Mozilla Window.sessionStorage documentation> 
 getSessionStorageUnchecked :: (MonadDOM m) => Window -> m Storage
 getSessionStorageUnchecked self
   = liftDOM ((self ^. js "sessionStorage") >>= fromJSValUnchecked)
@@ -955,6 +1304,14 @@
   = liftDOM ((self ^. js "localStorage") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage Mozilla Window.localStorage documentation> 
+getLocalStorageUnsafe ::
+                      (MonadDOM m, HasCallStack) => Window -> m Storage
+getLocalStorageUnsafe self
+  = liftDOM
+      (((self ^. js "localStorage") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage Mozilla Window.localStorage documentation> 
 getLocalStorageUnchecked :: (MonadDOM m) => Window -> m Storage
 getLocalStorageUnchecked self
   = liftDOM ((self ^. js "localStorage") >>= fromJSValUnchecked)
@@ -970,6 +1327,14 @@
   = liftDOM ((self ^. js "performance") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.performance Mozilla Window.performance documentation> 
+getPerformanceUnsafe ::
+                     (MonadDOM m, HasCallStack) => Window -> m Performance
+getPerformanceUnsafe self
+  = liftDOM
+      (((self ^. js "performance") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.performance Mozilla Window.performance documentation> 
 getPerformanceUnchecked :: (MonadDOM m) => Window -> m Performance
 getPerformanceUnchecked self
   = liftDOM ((self ^. js "performance") >>= fromJSValUnchecked)
@@ -977,6 +1342,13 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.CSS Mozilla Window.CSS documentation> 
 getCSS :: (MonadDOM m) => Window -> m (Maybe CSS)
 getCSS self = liftDOM ((self ^. js "CSS") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.CSS Mozilla Window.CSS documentation> 
+getCSSUnsafe :: (MonadDOM m, HasCallStack) => Window -> m CSS
+getCSSUnsafe self
+  = liftDOM
+      (((self ^. js "CSS") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.CSS Mozilla Window.CSS documentation> 
 getCSSUnchecked :: (MonadDOM m) => Window -> m CSS
diff --git a/src/JSDOM/Generated/WindowBase64.hs b/src/JSDOM/Generated/WindowBase64.hs
--- a/src/JSDOM/Generated/WindowBase64.hs
+++ b/src/JSDOM/Generated/WindowBase64.hs
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WindowBase64
-       (atob, atob_, btoa, btoa_, WindowBase64, castToWindowBase64,
-        gTypeWindowBase64)
+       (atob, atob_, btoa, btoa_, WindowBase64(..), gTypeWindowBase64)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +18,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64.atob Mozilla WindowBase64.atob documentation> 
 atob ::
diff --git a/src/JSDOM/Generated/WindowTimers.hs b/src/JSDOM/Generated/WindowTimers.hs
--- a/src/JSDOM/Generated/WindowTimers.hs
+++ b/src/JSDOM/Generated/WindowTimers.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WindowTimers
        (setTimeout, setTimeout_, clearTimeout, setInterval, setInterval_,
-        clearInterval, WindowTimers, castToWindowTimers, gTypeWindowTimers)
+        clearInterval, WindowTimers(..), gTypeWindowTimers)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout Mozilla WindowTimers.setTimeout documentation> 
 setTimeout :: (MonadDOM m) => WindowTimers -> JSVal -> Int -> m Int
diff --git a/src/JSDOM/Generated/Worker.hs b/src/JSDOM/Generated/Worker.hs
--- a/src/JSDOM/Generated/Worker.hs
+++ b/src/JSDOM/Generated/Worker.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.Worker
-       (newWorker, postMessage, terminate, message, Worker, castToWorker,
+       (newWorker, postMessage, terminate, message, Worker(..),
         gTypeWorker)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation> 
 newWorker ::
diff --git a/src/JSDOM/Generated/WorkerGlobalScope.hs b/src/JSDOM/Generated/WorkerGlobalScope.hs
--- a/src/JSDOM/Generated/WorkerGlobalScope.hs
+++ b/src/JSDOM/Generated/WorkerGlobalScope.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WorkerGlobalScope
-       (close, importScripts, getSelf, getSelfUnchecked, getLocation,
-        getLocationUnchecked, error, offline, online, getNavigator,
-        getNavigatorUnchecked, WorkerGlobalScope, castToWorkerGlobalScope,
+       (close, importScripts, getSelf, getSelfUnsafe, getSelfUnchecked,
+        getLocation, getLocationUnsafe, getLocationUnchecked, error,
+        offline, online, getNavigator, getNavigatorUnsafe,
+        getNavigatorUnchecked, WorkerGlobalScope(..),
         gTypeWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.close Mozilla WorkerGlobalScope.close documentation> 
 close :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m ()
@@ -38,6 +53,15 @@
   = liftDOM (((toWorkerGlobalScope self) ^. js "self") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.self Mozilla WorkerGlobalScope.self documentation> 
+getSelfUnsafe ::
+              (MonadDOM m, IsWorkerGlobalScope self, HasCallStack) =>
+                self -> m WorkerGlobalScope
+getSelfUnsafe self
+  = liftDOM
+      ((((toWorkerGlobalScope self) ^. js "self") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.self Mozilla WorkerGlobalScope.self documentation> 
 getSelfUnchecked ::
                  (MonadDOM m, IsWorkerGlobalScope self) =>
                    self -> m WorkerGlobalScope
@@ -54,6 +78,15 @@
       (((toWorkerGlobalScope self) ^. js "location") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.location Mozilla WorkerGlobalScope.location documentation> 
+getLocationUnsafe ::
+                  (MonadDOM m, IsWorkerGlobalScope self, HasCallStack) =>
+                    self -> m WorkerLocation
+getLocationUnsafe self
+  = liftDOM
+      ((((toWorkerGlobalScope self) ^. js "location") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.location Mozilla WorkerGlobalScope.location documentation> 
 getLocationUnchecked ::
                      (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerLocation
 getLocationUnchecked self
@@ -86,6 +119,15 @@
 getNavigator self
   = liftDOM
       (((toWorkerGlobalScope self) ^. js "navigator") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.navigator Mozilla WorkerGlobalScope.navigator documentation> 
+getNavigatorUnsafe ::
+                   (MonadDOM m, IsWorkerGlobalScope self, HasCallStack) =>
+                     self -> m WorkerNavigator
+getNavigatorUnsafe self
+  = liftDOM
+      ((((toWorkerGlobalScope self) ^. js "navigator") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.navigator Mozilla WorkerGlobalScope.navigator documentation> 
 getNavigatorUnchecked ::
diff --git a/src/JSDOM/Generated/WorkerLocation.hs b/src/JSDOM/Generated/WorkerLocation.hs
--- a/src/JSDOM/Generated/WorkerLocation.hs
+++ b/src/JSDOM/Generated/WorkerLocation.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WorkerLocation
        (toString, toString_, getHref, getProtocol, getHost, getHostname,
-        getPort, getPathname, getSearch, getHash, WorkerLocation,
-        castToWorkerLocation, gTypeWorkerLocation)
+        getPort, getPathname, getSearch, getHash, WorkerLocation(..),
+        gTypeWorkerLocation)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.toString Mozilla WorkerLocation.toString documentation> 
 toString ::
diff --git a/src/JSDOM/Generated/WorkerNavigator.hs b/src/JSDOM/Generated/WorkerNavigator.hs
--- a/src/JSDOM/Generated/WorkerNavigator.hs
+++ b/src/JSDOM/Generated/WorkerNavigator.hs
@@ -1,12 +1,18 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.WorkerNavigator
-       (getWebkitTemporaryStorage, getWebkitTemporaryStorageUnchecked,
-        getWebkitPersistentStorage, getWebkitPersistentStorageUnchecked,
-        getAppName, getAppVersion, getPlatform, getUserAgent, getOnLine,
-        WorkerNavigator, castToWorkerNavigator, gTypeWorkerNavigator)
+       (getWebkitTemporaryStorage, getWebkitTemporaryStorageUnsafe,
+        getWebkitTemporaryStorageUnchecked, getWebkitPersistentStorage,
+        getWebkitPersistentStorageUnsafe,
+        getWebkitPersistentStorageUnchecked, getAppName, getAppVersion,
+        getPlatform, getUserAgent, getOnLine, WorkerNavigator(..),
+        gTypeWorkerNavigator)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +23,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
 getWebkitTemporaryStorage ::
@@ -25,6 +41,14 @@
   = liftDOM ((self ^. js "webkitTemporaryStorage") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
+getWebkitTemporaryStorageUnsafe ::
+                                (MonadDOM m, HasCallStack) => WorkerNavigator -> m StorageQuota
+getWebkitTemporaryStorageUnsafe self
+  = liftDOM
+      (((self ^. js "webkitTemporaryStorage") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
 getWebkitTemporaryStorageUnchecked ::
                                    (MonadDOM m) => WorkerNavigator -> m StorageQuota
 getWebkitTemporaryStorageUnchecked self
@@ -36,6 +60,14 @@
                            (MonadDOM m) => WorkerNavigator -> m (Maybe StorageQuota)
 getWebkitPersistentStorage self
   = liftDOM ((self ^. js "webkitPersistentStorage") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitPersistentStorage Mozilla WorkerNavigator.webkitPersistentStorage documentation> 
+getWebkitPersistentStorageUnsafe ::
+                                 (MonadDOM m, HasCallStack) => WorkerNavigator -> m StorageQuota
+getWebkitPersistentStorageUnsafe self
+  = liftDOM
+      (((self ^. js "webkitPersistentStorage") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitPersistentStorage Mozilla WorkerNavigator.webkitPersistentStorage documentation> 
 getWebkitPersistentStorageUnchecked ::
diff --git a/src/JSDOM/Generated/XMLHttpRequest.hs b/src/JSDOM/Generated/XMLHttpRequest.hs
--- a/src/JSDOM/Generated/XMLHttpRequest.hs
+++ b/src/JSDOM/Generated/XMLHttpRequest.hs
@@ -1,21 +1,27 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XMLHttpRequest
        (newXMLHttpRequest, open, setRequestHeader, send, abort,
         getAllResponseHeaders, getAllResponseHeaders_,
-        getAllResponseHeadersUnchecked, getResponseHeader,
-        getResponseHeader_, getResponseHeaderUnchecked, overrideMimeType,
-        pattern UNSENT, pattern OPENED, pattern HEADERS_RECEIVED,
-        pattern LOADING, pattern DONE, abortEvent, error, load, loadEnd,
-        loadStart, progress, timeout, readyStateChange, setTimeout,
-        getTimeout, getReadyState, setWithCredentials, getWithCredentials,
-        getUpload, getUploadUnchecked, getResponseText,
-        getResponseTextUnchecked, getResponseXML, getResponseXMLUnchecked,
-        setResponseType, getResponseType, getResponse,
+        getAllResponseHeadersUnsafe, getAllResponseHeadersUnchecked,
+        getResponseHeader, getResponseHeader_, getResponseHeaderUnsafe,
+        getResponseHeaderUnchecked, overrideMimeType, pattern UNSENT,
+        pattern OPENED, pattern HEADERS_RECEIVED, pattern LOADING,
+        pattern DONE, abortEvent, error, load, loadEnd, loadStart,
+        progress, timeout, readyStateChange, setTimeout, getTimeout,
+        getReadyState, setWithCredentials, getWithCredentials, getUpload,
+        getUploadUnsafe, getUploadUnchecked, getResponseText,
+        getResponseTextUnsafe, getResponseTextUnchecked, getResponseXML,
+        getResponseXMLUnsafe, getResponseXMLUnchecked, setResponseType,
+        getResponseType, getResponse, getResponseUnsafe,
         getResponseUnchecked, getStatus, getStatusText, getResponseURL,
-        XMLHttpRequest, castToXMLHttpRequest, gTypeXMLHttpRequest)
+        XMLHttpRequest(..), gTypeXMLHttpRequest)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -26,6 +32,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation> 
 newXMLHttpRequest :: (MonadDOM m) => m XMLHttpRequest
@@ -75,6 +91,15 @@
   = liftDOM (void (self ^. jsf "getAllResponseHeaders" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
+getAllResponseHeadersUnsafe ::
+                            (MonadDOM m, HasCallStack, FromJSString result) =>
+                              XMLHttpRequest -> m result
+getAllResponseHeadersUnsafe self
+  = liftDOM
+      (((self ^. jsf "getAllResponseHeaders" ()) >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
 getAllResponseHeadersUnchecked ::
                                (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
 getAllResponseHeadersUnchecked self
@@ -97,6 +122,17 @@
   = liftDOM (void (self ^. jsf "getResponseHeader" [toJSVal header]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
+getResponseHeaderUnsafe ::
+                        (MonadDOM m, ToJSString header, HasCallStack,
+                         FromJSString result) =>
+                          XMLHttpRequest -> header -> m result
+getResponseHeaderUnsafe self header
+  = liftDOM
+      (((self ^. jsf "getResponseHeader" [toJSVal header]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
 getResponseHeaderUnchecked ::
                            (MonadDOM m, ToJSString header, FromJSString result) =>
                              XMLHttpRequest -> header -> m result
@@ -181,6 +217,15 @@
 getUpload self = liftDOM ((self ^. js "upload") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.upload Mozilla XMLHttpRequest.upload documentation> 
+getUploadUnsafe ::
+                (MonadDOM m, HasCallStack) =>
+                  XMLHttpRequest -> m XMLHttpRequestUpload
+getUploadUnsafe self
+  = liftDOM
+      (((self ^. js "upload") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.upload Mozilla XMLHttpRequest.upload documentation> 
 getUploadUnchecked ::
                    (MonadDOM m) => XMLHttpRequest -> m XMLHttpRequestUpload
 getUploadUnchecked self
@@ -194,6 +239,15 @@
   = liftDOM ((self ^. js "responseText") >>= fromMaybeJSString)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
+getResponseTextUnsafe ::
+                      (MonadDOM m, HasCallStack, FromJSString result) =>
+                        XMLHttpRequest -> m result
+getResponseTextUnsafe self
+  = liftDOM
+      (((self ^. js "responseText") >>= fromMaybeJSString) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
 getResponseTextUnchecked ::
                          (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
 getResponseTextUnchecked self
@@ -206,6 +260,14 @@
   = liftDOM ((self ^. js "responseXML") >>= fromJSVal)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
+getResponseXMLUnsafe ::
+                     (MonadDOM m, HasCallStack) => XMLHttpRequest -> m Document
+getResponseXMLUnsafe self
+  = liftDOM
+      (((self ^. js "responseXML") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
 getResponseXMLUnchecked ::
                         (MonadDOM m) => XMLHttpRequest -> m Document
 getResponseXMLUnchecked self
@@ -227,6 +289,14 @@
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.response Mozilla XMLHttpRequest.response documentation> 
 getResponse :: (MonadDOM m) => XMLHttpRequest -> m (Maybe GObject)
 getResponse self = liftDOM ((self ^. js "response") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.response Mozilla XMLHttpRequest.response documentation> 
+getResponseUnsafe ::
+                  (MonadDOM m, HasCallStack) => XMLHttpRequest -> m GObject
+getResponseUnsafe self
+  = liftDOM
+      (((self ^. js "response") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.response Mozilla XMLHttpRequest.response documentation> 
 getResponseUnchecked :: (MonadDOM m) => XMLHttpRequest -> m GObject
diff --git a/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs b/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs
--- a/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs
+++ b/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XMLHttpRequestProgressEvent
-       (getPosition, getTotalSize, XMLHttpRequestProgressEvent,
-        castToXMLHttpRequestProgressEvent,
+       (getPosition, getTotalSize, XMLHttpRequestProgressEvent(..),
         gTypeXMLHttpRequestProgressEvent)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.position Mozilla XMLHttpRequestProgressEvent.position documentation> 
 getPosition ::
diff --git a/src/JSDOM/Generated/XMLHttpRequestUpload.hs b/src/JSDOM/Generated/XMLHttpRequestUpload.hs
--- a/src/JSDOM/Generated/XMLHttpRequestUpload.hs
+++ b/src/JSDOM/Generated/XMLHttpRequestUpload.hs
@@ -1,11 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XMLHttpRequestUpload
        (abort, error, load, loadEnd, loadStart, progress,
-        XMLHttpRequestUpload, castToXMLHttpRequestUpload,
-        gTypeXMLHttpRequestUpload)
+        XMLHttpRequestUpload(..), gTypeXMLHttpRequestUpload)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload.onabort Mozilla XMLHttpRequestUpload.onabort documentation> 
 abort :: EventName XMLHttpRequestUpload XMLHttpRequestProgressEvent
diff --git a/src/JSDOM/Generated/XMLSerializer.hs b/src/JSDOM/Generated/XMLSerializer.hs
--- a/src/JSDOM/Generated/XMLSerializer.hs
+++ b/src/JSDOM/Generated/XMLSerializer.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XMLSerializer
        (newXMLSerializer, serializeToString, serializeToString_,
-        XMLSerializer, castToXMLSerializer, gTypeXMLSerializer)
+        XMLSerializer(..), gTypeXMLSerializer)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation> 
 newXMLSerializer :: (MonadDOM m) => m XMLSerializer
diff --git a/src/JSDOM/Generated/XPathEvaluator.hs b/src/JSDOM/Generated/XPathEvaluator.hs
--- a/src/JSDOM/Generated/XPathEvaluator.hs
+++ b/src/JSDOM/Generated/XPathEvaluator.hs
@@ -1,12 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XPathEvaluator
        (newXPathEvaluator, createExpression, createExpression_,
-        createExpressionUnchecked, createNSResolver, createNSResolver_,
-        createNSResolverUnchecked, evaluate, evaluate_, evaluateUnchecked,
-        XPathEvaluator, castToXPathEvaluator, gTypeXPathEvaluator)
+        createExpressionUnsafe, createExpressionUnchecked,
+        createNSResolver, createNSResolver_, createNSResolverUnsafe,
+        createNSResolverUnchecked, evaluate, evaluate_, evaluateUnsafe,
+        evaluateUnchecked, XPathEvaluator(..), gTypeXPathEvaluator)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -17,6 +22,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation> 
 newXPathEvaluator :: (MonadDOM m) => m XPathEvaluator
@@ -45,6 +60,18 @@
             [toJSVal expression, toJSVal resolver]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
+createExpressionUnsafe ::
+                       (MonadDOM m, ToJSString expression, HasCallStack) =>
+                         XPathEvaluator ->
+                           expression -> Maybe XPathNSResolver -> m XPathExpression
+createExpressionUnsafe self expression resolver
+  = liftDOM
+      (((self ^. jsf "createExpression"
+           [toJSVal expression, toJSVal resolver])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
 createExpressionUnchecked ::
                           (MonadDOM m, ToJSString expression) =>
                             XPathEvaluator ->
@@ -73,6 +100,16 @@
       (void (self ^. jsf "createNSResolver" [toJSVal nodeResolver]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
+createNSResolverUnsafe ::
+                       (MonadDOM m, IsNode nodeResolver, HasCallStack) =>
+                         XPathEvaluator -> Maybe nodeResolver -> m XPathNSResolver
+createNSResolverUnsafe self nodeResolver
+  = liftDOM
+      (((self ^. jsf "createNSResolver" [toJSVal nodeResolver]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
 createNSResolverUnchecked ::
                           (MonadDOM m, IsNode nodeResolver) =>
                             XPathEvaluator -> Maybe nodeResolver -> m XPathNSResolver
@@ -109,6 +146,22 @@
          (self ^. jsf "evaluate"
             [toJSVal expression, toJSVal contextNode, toJSVal resolver,
              toJSVal type', toJSVal inResult]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
+evaluateUnsafe ::
+               (MonadDOM m, ToJSString expression, IsNode contextNode,
+                HasCallStack) =>
+                 XPathEvaluator ->
+                   expression ->
+                     Maybe contextNode ->
+                       Maybe XPathNSResolver -> Word -> Maybe XPathResult -> m XPathResult
+evaluateUnsafe self expression contextNode resolver type' inResult
+  = liftDOM
+      (((self ^. jsf "evaluate"
+           [toJSVal expression, toJSVal contextNode, toJSVal resolver,
+            toJSVal type', toJSVal inResult])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
 evaluateUnchecked ::
diff --git a/src/JSDOM/Generated/XPathExpression.hs b/src/JSDOM/Generated/XPathExpression.hs
--- a/src/JSDOM/Generated/XPathExpression.hs
+++ b/src/JSDOM/Generated/XPathExpression.hs
@@ -1,10 +1,14 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XPathExpression
-       (evaluate, evaluate_, evaluateUnchecked, XPathExpression,
-        castToXPathExpression, gTypeXPathExpression)
+       (evaluate, evaluate_, evaluateUnsafe, evaluateUnchecked,
+        XPathExpression(..), gTypeXPathExpression)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -15,6 +19,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
 evaluate ::
@@ -38,6 +52,18 @@
       (void
          (self ^. jsf "evaluate"
             [toJSVal contextNode, toJSVal type', toJSVal inResult]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
+evaluateUnsafe ::
+               (MonadDOM m, IsNode contextNode, HasCallStack) =>
+                 XPathExpression ->
+                   Maybe contextNode -> Word -> Maybe XPathResult -> m XPathResult
+evaluateUnsafe self contextNode type' inResult
+  = liftDOM
+      (((self ^. jsf "evaluate"
+           [toJSVal contextNode, toJSVal type', toJSVal inResult])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
 evaluateUnchecked ::
diff --git a/src/JSDOM/Generated/XPathNSResolver.hs b/src/JSDOM/Generated/XPathNSResolver.hs
--- a/src/JSDOM/Generated/XPathNSResolver.hs
+++ b/src/JSDOM/Generated/XPathNSResolver.hs
@@ -1,11 +1,15 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XPathNSResolver
-       (lookupNamespaceURI, lookupNamespaceURI_,
-        lookupNamespaceURIUnchecked, XPathNSResolver,
-        castToXPathNSResolver, gTypeXPathNSResolver)
+       (lookupNamespaceURI, lookupNamespaceURI_, lookupNamespaceURIUnsafe,
+        lookupNamespaceURIUnchecked, XPathNSResolver(..),
+        gTypeXPathNSResolver)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -16,6 +20,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
 lookupNamespaceURI ::
@@ -33,6 +47,17 @@
 lookupNamespaceURI_ self prefix
   = liftDOM
       (void (self ^. jsf "lookupNamespaceURI" [toJSVal prefix]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
+lookupNamespaceURIUnsafe ::
+                         (MonadDOM m, ToJSString prefix, HasCallStack,
+                          FromJSString result) =>
+                           XPathNSResolver -> prefix -> m result
+lookupNamespaceURIUnsafe self prefix
+  = liftDOM
+      (((self ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
+          fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
 lookupNamespaceURIUnchecked ::
diff --git a/src/JSDOM/Generated/XPathResult.hs b/src/JSDOM/Generated/XPathResult.hs
--- a/src/JSDOM/Generated/XPathResult.hs
+++ b/src/JSDOM/Generated/XPathResult.hs
@@ -1,8 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XPathResult
-       (iterateNext, iterateNext_, iterateNextUnchecked, snapshotItem,
-        snapshotItem_, snapshotItemUnchecked, pattern ANY_TYPE,
+       (iterateNext, iterateNext_, iterateNextUnsafe,
+        iterateNextUnchecked, snapshotItem, snapshotItem_,
+        snapshotItemUnsafe, snapshotItemUnchecked, pattern ANY_TYPE,
         pattern NUMBER_TYPE, pattern STRING_TYPE, pattern BOOLEAN_TYPE,
         pattern UNORDERED_NODE_ITERATOR_TYPE,
         pattern ORDERED_NODE_ITERATOR_TYPE,
@@ -10,11 +14,12 @@
         pattern ORDERED_NODE_SNAPSHOT_TYPE,
         pattern ANY_UNORDERED_NODE_TYPE, pattern FIRST_ORDERED_NODE_TYPE,
         getResultType, getNumberValue, getStringValue, getBooleanValue,
-        getSingleNodeValue, getSingleNodeValueUnchecked,
-        getInvalidIteratorState, getSnapshotLength, XPathResult,
-        castToXPathResult, gTypeXPathResult)
+        getSingleNodeValue, getSingleNodeValueUnsafe,
+        getSingleNodeValueUnchecked, getInvalidIteratorState,
+        getSnapshotLength, XPathResult(..), gTypeXPathResult)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -25,6 +30,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
 iterateNext :: (MonadDOM m) => XPathResult -> m (Maybe Node)
@@ -36,6 +51,14 @@
 iterateNext_ self = liftDOM (void (self ^. jsf "iterateNext" ()))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
+iterateNextUnsafe ::
+                  (MonadDOM m, HasCallStack) => XPathResult -> m Node
+iterateNextUnsafe self
+  = liftDOM
+      (((self ^. jsf "iterateNext" ()) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
 iterateNextUnchecked :: (MonadDOM m) => XPathResult -> m Node
 iterateNextUnchecked self
   = liftDOM ((self ^. jsf "iterateNext" ()) >>= fromJSValUnchecked)
@@ -53,6 +76,14 @@
   = liftDOM (void (self ^. jsf "snapshotItem" [toJSVal index]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
+snapshotItemUnsafe ::
+                   (MonadDOM m, HasCallStack) => XPathResult -> Word -> m Node
+snapshotItemUnsafe self index
+  = liftDOM
+      (((self ^. jsf "snapshotItem" [toJSVal index]) >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
 snapshotItemUnchecked ::
                       (MonadDOM m) => XPathResult -> Word -> m Node
 snapshotItemUnchecked self index
@@ -95,6 +126,14 @@
 getSingleNodeValue :: (MonadDOM m) => XPathResult -> m (Maybe Node)
 getSingleNodeValue self
   = liftDOM ((self ^. js "singleNodeValue") >>= fromJSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.singleNodeValue Mozilla XPathResult.singleNodeValue documentation> 
+getSingleNodeValueUnsafe ::
+                         (MonadDOM m, HasCallStack) => XPathResult -> m Node
+getSingleNodeValueUnsafe self
+  = liftDOM
+      (((self ^. js "singleNodeValue") >>= fromJSVal) >>=
+         maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.singleNodeValue Mozilla XPathResult.singleNodeValue documentation> 
 getSingleNodeValueUnchecked ::
diff --git a/src/JSDOM/Generated/XSLTProcessor.hs b/src/JSDOM/Generated/XSLTProcessor.hs
--- a/src/JSDOM/Generated/XSLTProcessor.hs
+++ b/src/JSDOM/Generated/XSLTProcessor.hs
@@ -1,15 +1,20 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE PatternSynonyms #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 module JSDOM.Generated.XSLTProcessor
        (newXSLTProcessor, importStylesheet, transformToFragment,
-        transformToFragment_, transformToFragmentUnchecked,
-        transformToDocument, transformToDocument_,
+        transformToFragment_, transformToFragmentUnsafe,
+        transformToFragmentUnchecked, transformToDocument,
+        transformToDocument_, transformToDocumentUnsafe,
         transformToDocumentUnchecked, setParameter, getParameter,
-        getParameter_, getParameterUnchecked, removeParameter,
-        clearParameters, reset, XSLTProcessor, castToXSLTProcessor,
+        getParameter_, getParameterUnsafe, getParameterUnchecked,
+        removeParameter, clearParameters, reset, XSLTProcessor(..),
         gTypeXSLTProcessor)
        where
 import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
+import qualified Prelude (error)
 import Data.Typeable (Typeable)
 import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array)
 import Data.Int (Int64)
@@ -20,6 +25,16 @@
 import Control.Lens.Operators ((^.))
 import JSDOM.EventTargetClosures (EventName, unsafeEventName)
 import JSDOM.Enums
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation> 
 newXSLTProcessor :: (MonadDOM m) => m XSLTProcessor
@@ -56,6 +71,17 @@
             [toJSVal source, toJSVal docVal]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
+transformToFragmentUnsafe ::
+                          (MonadDOM m, IsNode source, IsDocument docVal, HasCallStack) =>
+                            XSLTProcessor -> Maybe source -> Maybe docVal -> m DocumentFragment
+transformToFragmentUnsafe self source docVal
+  = liftDOM
+      (((self ^. jsf "transformToFragment"
+           [toJSVal source, toJSVal docVal])
+          >>= fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
 transformToFragmentUnchecked ::
                              (MonadDOM m, IsNode source, IsDocument docVal) =>
                                XSLTProcessor -> Maybe source -> Maybe docVal -> m DocumentFragment
@@ -83,6 +109,16 @@
       (void (self ^. jsf "transformToDocument" [toJSVal source]))
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
+transformToDocumentUnsafe ::
+                          (MonadDOM m, IsNode source, HasCallStack) =>
+                            XSLTProcessor -> Maybe source -> m Document
+transformToDocumentUnsafe self source
+  = liftDOM
+      (((self ^. jsf "transformToDocument" [toJSVal source]) >>=
+          fromJSVal)
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
 transformToDocumentUnchecked ::
                              (MonadDOM m, IsNode source) =>
                                XSLTProcessor -> Maybe source -> m Document
@@ -122,6 +158,18 @@
       (void
          (self ^. jsf "getParameter"
             [toJSVal namespaceURI, toJSVal localName]))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
+getParameterUnsafe ::
+                   (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
+                    HasCallStack, FromJSString result) =>
+                     XSLTProcessor -> namespaceURI -> localName -> m result
+getParameterUnsafe self namespaceURI localName
+  = liftDOM
+      (((self ^. jsf "getParameter"
+           [toJSVal namespaceURI, toJSVal localName])
+          >>= fromMaybeJSString)
+         >>= maybe (Prelude.error "Nothing to return") return)
 
 -- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
 getParameterUnchecked ::
diff --git a/src/JSDOM/Types.hs b/src/JSDOM/Types.hs
--- a/src/JSDOM/Types.hs
+++ b/src/JSDOM/Types.hs
@@ -1,26870 +1,24012 @@
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE ConstraintKinds #-}
-{-# LANGUAGE LambdaCase #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Types (
-  -- * JavaScript Context and Monad
-    JSContextRef(..), JSM, askJSM, runJSM, MonadJSM(..), liftJSM
-
-  -- * DOM Context and Monad
-  , DOMContext(..), DOM, askDOM, runDOM, MonadDOM(..), liftDOM
-
-  -- * JavaScript Value
-  , JSVal(..), ToJSVal(..), FromJSVal(..)
-
-  -- * JavaScript String
-  , JSString(..), ToJSString(..), FromJSString(..)
-  , toMaybeJSString, fromMaybeJSString
-
-  -- * JavaScript Array
-  , fromJSArray, fromJSArrayUnchecked
-
-  -- * JavaScript Object
-  , Object(..)
-
-  -- * Nullable
-  , Nullable(..), nullableToMaybe, maybeToNullable
-
-  -- * DOM String
-  , DOMString(..), ToDOMString(..), FromDOMString(..), IsDOMString
-
-  -- * Object
-  , maybeNullOrUndefined, maybeNullOrUndefined', GType(..)
-  , GObject(..), IsGObject, toGObject, castToGObject, gTypeGObject, unsafeCastGObject, isA, objectToString
-
-  -- * Callbacks
-  , Callback(..)
-  , withCallback
-  , AudioBufferCallback(..)
-  , DatabaseCallback(..)
-  , MediaQueryListListener(..)
-  , MediaStreamTrackSourcesCallback(..)
-  , NavigatorUserMediaErrorCallback(..)
-  , NavigatorUserMediaSuccessCallback(..)
-  , NotificationPermissionCallback(..)
-  , PositionCallback(..)
-  , PositionErrorCallback(..)
-  , RequestAnimationFrameCallback(..)
-  , RTCPeerConnectionErrorCallback(..)
-  , RTCSessionDescriptionCallback(..)
-  , RTCStatsCallback(..)
-  , SQLStatementCallback(..)
-  , SQLStatementErrorCallback(..)
-  , SQLTransactionCallback(..)
-  , SQLTransactionErrorCallback(..)
-  , StorageErrorCallback(..)
-  , StorageQuotaCallback(..)
-  , StorageUsageCallback(..)
-  , StringCallback(..)
-  , VoidCallback(..)
-
-  -- * Dictionaries
-  , Dictionary(Dictionary), unDictionary, IsDictionary, toDictionary
-  , BlobPropertyBag(BlobPropertyBag), unBlobPropertyBag, IsBlobPropertyBag, toBlobPropertyBag
-
-  -- * Mutation Callback
-  , MutationCallback(MutationCallback), unMutationCallback, IsMutationCallback, toMutationCallback
-
-  -- * Promise
-  , Promise(Promise), unPromise, IsPromise, toPromise, castToPromise, gTypePromise
-
-  -- * Date
-  , Date(Date), unDate, IsDate, toDate, castToDate, gTypeDate
-
-  -- * Arrays
-  , Array(Array), unArray, IsArray, toArray, castToArray, gTypeArray
-  , ObjectArray(ObjectArray), unObjectArray, IsObjectArray, toObjectArray
-  , ArrayBuffer(ArrayBuffer), unArrayBuffer, IsArrayBuffer, toArrayBuffer, castToArrayBuffer, gTypeArrayBuffer
-  , ArrayBufferView(ArrayBufferView), unArrayBufferView, IsArrayBufferView, toArrayBufferView
-  , Float32Array(Float32Array), unFloat32Array, IsFloat32Array, toFloat32Array, castToFloat32Array, gTypeFloat32Array
-  , Float64Array(Float64Array), unFloat64Array, IsFloat64Array, toFloat64Array, castToFloat64Array, gTypeFloat64Array
-  , Uint8Array(Uint8Array), unUint8Array, IsUint8Array, toUint8Array, castToUint8Array, gTypeUint8Array
-  , Uint8ClampedArray(Uint8ClampedArray), unUint8ClampedArray, IsUint8ClampedArray, toUint8ClampedArray, castToUint8ClampedArray, gTypeUint8ClampedArray
-  , Uint16Array(Uint16Array), unUint16Array, IsUint16Array, toUint16Array, castToUint16Array, gTypeUint16Array
-  , Uint32Array(Uint32Array), unUint32Array, IsUint32Array, toUint32Array, castToUint32Array, gTypeUint32Array
-  , Int8Array(Int8Array), unInt8Array, IsInt8Array, toInt8Array, castToInt8Array, gTypeInt8Array
-  , Int16Array(Int16Array), unInt16Array, IsInt16Array, toInt16Array, castToInt16Array, gTypeInt16Array
-  , Int32Array(Int32Array), unInt32Array, IsInt32Array, toInt32Array, castToInt32Array, gTypeInt32Array
-
-  -- * Geolocation
-  , SerializedScriptValue(SerializedScriptValue), unSerializedScriptValue, IsSerializedScriptValue, toSerializedScriptValue
-  , PositionOptions(PositionOptions), unPositionOptions, IsPositionOptions, toPositionOptions
-  , Acceleration(Acceleration), unAcceleration, IsAcceleration, toAcceleration
-  , RotationRate(RotationRate), unRotationRate, IsRotationRate, toRotationRate
-
-  -- * Crypto
-  , Algorithm(Algorithm), unAlgorithm, IsAlgorithm, toAlgorithm
-  , CryptoOperationData(CryptoOperationData), unCryptoOperationData, IsCryptoOperationData, toCryptoOperationData
-
-  -- * CanvasStyle (fill & stroke style)
-  , CanvasStyle(CanvasStyle), unCanvasStyle, IsCanvasStyle, toCanvasStyle
-
-  , DOMException(DOMException), unDOMException, IsDOMException, toDOMException
-
-  -- * WebGL typedefs
-  , GLenum(..), GLboolean(..), GLbitfield(..), GLbyte(..), GLshort(..), GLint(..), GLsizei(..)
-  , GLintptr(..), GLsizeiptr(..), GLubyte(..), GLushort(..), GLuint(..), GLfloat(..), GLclampf(..)
-  , GLint64, GLuint64
-
-  -- * Interface types from IDL files
-
--- AUTO GENERATION STARTS HERE
-  , ANGLEInstancedArrays(ANGLEInstancedArrays), unANGLEInstancedArrays, castToANGLEInstancedArrays, gTypeANGLEInstancedArrays
-  , AbstractView(AbstractView), unAbstractView, castToAbstractView, gTypeAbstractView
-  , AbstractWorker(AbstractWorker), unAbstractWorker, castToAbstractWorker, gTypeAbstractWorker
-  , AllAudioCapabilities(AllAudioCapabilities), unAllAudioCapabilities, castToAllAudioCapabilities, gTypeAllAudioCapabilities
-  , AllVideoCapabilities(AllVideoCapabilities), unAllVideoCapabilities, castToAllVideoCapabilities, gTypeAllVideoCapabilities
-  , AnalyserNode(AnalyserNode), unAnalyserNode, castToAnalyserNode, gTypeAnalyserNode
-  , AnimationEvent(AnimationEvent), unAnimationEvent, castToAnimationEvent, gTypeAnimationEvent
-  , ApplicationCache(ApplicationCache), unApplicationCache, castToApplicationCache, gTypeApplicationCache
-  , Attr(Attr), unAttr, castToAttr, gTypeAttr
-  , AudioBuffer(AudioBuffer), unAudioBuffer, castToAudioBuffer, gTypeAudioBuffer
-  , AudioBufferSourceNode(AudioBufferSourceNode), unAudioBufferSourceNode, castToAudioBufferSourceNode, gTypeAudioBufferSourceNode
-  , AudioContext(AudioContext), unAudioContext, IsAudioContext, toAudioContext, castToAudioContext, gTypeAudioContext
-  , AudioDestinationNode(AudioDestinationNode), unAudioDestinationNode, castToAudioDestinationNode, gTypeAudioDestinationNode
-  , AudioListener(AudioListener), unAudioListener, castToAudioListener, gTypeAudioListener
-  , AudioNode(AudioNode), unAudioNode, IsAudioNode, toAudioNode, castToAudioNode, gTypeAudioNode
-  , AudioParam(AudioParam), unAudioParam, castToAudioParam, gTypeAudioParam
-  , AudioProcessingEvent(AudioProcessingEvent), unAudioProcessingEvent, castToAudioProcessingEvent, gTypeAudioProcessingEvent
-  , AudioStreamTrack(AudioStreamTrack), unAudioStreamTrack, castToAudioStreamTrack, gTypeAudioStreamTrack
-  , AudioTrack(AudioTrack), unAudioTrack, castToAudioTrack, gTypeAudioTrack
-  , AudioTrackList(AudioTrackList), unAudioTrackList, castToAudioTrackList, gTypeAudioTrackList
-  , AutocompleteErrorEvent(AutocompleteErrorEvent), unAutocompleteErrorEvent, castToAutocompleteErrorEvent, gTypeAutocompleteErrorEvent
-  , BarProp(BarProp), unBarProp, castToBarProp, gTypeBarProp
-  , BatteryManager(BatteryManager), unBatteryManager, castToBatteryManager, gTypeBatteryManager
-  , BeforeLoadEvent(BeforeLoadEvent), unBeforeLoadEvent, castToBeforeLoadEvent, gTypeBeforeLoadEvent
-  , BeforeUnloadEvent(BeforeUnloadEvent), unBeforeUnloadEvent, castToBeforeUnloadEvent, gTypeBeforeUnloadEvent
-  , BiquadFilterNode(BiquadFilterNode), unBiquadFilterNode, castToBiquadFilterNode, gTypeBiquadFilterNode
-  , Blob(Blob), unBlob, IsBlob, toBlob, castToBlob, gTypeBlob
-  , CDATASection(CDATASection), unCDATASection, castToCDATASection, gTypeCDATASection
-  , CSS(CSS), unCSS, castToCSS, gTypeCSS
-  , CSSCharsetRule(CSSCharsetRule), unCSSCharsetRule, castToCSSCharsetRule, gTypeCSSCharsetRule
-  , CSSFontFaceLoadEvent(CSSFontFaceLoadEvent), unCSSFontFaceLoadEvent, castToCSSFontFaceLoadEvent, gTypeCSSFontFaceLoadEvent
-  , CSSFontFaceRule(CSSFontFaceRule), unCSSFontFaceRule, castToCSSFontFaceRule, gTypeCSSFontFaceRule
-  , CSSImportRule(CSSImportRule), unCSSImportRule, castToCSSImportRule, gTypeCSSImportRule
-  , CSSKeyframeRule(CSSKeyframeRule), unCSSKeyframeRule, castToCSSKeyframeRule, gTypeCSSKeyframeRule
-  , CSSKeyframesRule(CSSKeyframesRule), unCSSKeyframesRule, castToCSSKeyframesRule, gTypeCSSKeyframesRule
-  , CSSMediaRule(CSSMediaRule), unCSSMediaRule, castToCSSMediaRule, gTypeCSSMediaRule
-  , CSSPageRule(CSSPageRule), unCSSPageRule, castToCSSPageRule, gTypeCSSPageRule
-  , CSSPrimitiveValue(CSSPrimitiveValue), unCSSPrimitiveValue, castToCSSPrimitiveValue, gTypeCSSPrimitiveValue
-  , CSSRule(CSSRule), unCSSRule, IsCSSRule, toCSSRule, castToCSSRule, gTypeCSSRule
-  , CSSRuleList(CSSRuleList), unCSSRuleList, castToCSSRuleList, gTypeCSSRuleList
-  , CSSStyleDeclaration(CSSStyleDeclaration), unCSSStyleDeclaration, castToCSSStyleDeclaration, gTypeCSSStyleDeclaration
-  , CSSStyleRule(CSSStyleRule), unCSSStyleRule, castToCSSStyleRule, gTypeCSSStyleRule
-  , CSSStyleSheet(CSSStyleSheet), unCSSStyleSheet, castToCSSStyleSheet, gTypeCSSStyleSheet
-  , CSSSupportsRule(CSSSupportsRule), unCSSSupportsRule, castToCSSSupportsRule, gTypeCSSSupportsRule
-  , CSSUnknownRule(CSSUnknownRule), unCSSUnknownRule, castToCSSUnknownRule, gTypeCSSUnknownRule
-  , CSSValue(CSSValue), unCSSValue, IsCSSValue, toCSSValue, castToCSSValue, gTypeCSSValue
-  , CSSValueList(CSSValueList), unCSSValueList, IsCSSValueList, toCSSValueList, castToCSSValueList, gTypeCSSValueList
-  , CanvasGradient(CanvasGradient), unCanvasGradient, castToCanvasGradient, gTypeCanvasGradient
-  , CanvasPattern(CanvasPattern), unCanvasPattern, castToCanvasPattern, gTypeCanvasPattern
-  , CanvasProxy(CanvasProxy), unCanvasProxy, castToCanvasProxy, gTypeCanvasProxy
-  , CanvasRenderingContext(CanvasRenderingContext), unCanvasRenderingContext, IsCanvasRenderingContext, toCanvasRenderingContext, castToCanvasRenderingContext, gTypeCanvasRenderingContext
-  , CanvasRenderingContext2D(CanvasRenderingContext2D), unCanvasRenderingContext2D, castToCanvasRenderingContext2D, gTypeCanvasRenderingContext2D
-  , CapabilityRange(CapabilityRange), unCapabilityRange, castToCapabilityRange, gTypeCapabilityRange
-  , ChannelMergerNode(ChannelMergerNode), unChannelMergerNode, castToChannelMergerNode, gTypeChannelMergerNode
-  , ChannelSplitterNode(ChannelSplitterNode), unChannelSplitterNode, castToChannelSplitterNode, gTypeChannelSplitterNode
-  , CharacterData(CharacterData), unCharacterData, IsCharacterData, toCharacterData, castToCharacterData, gTypeCharacterData
-  , ChildNode(ChildNode), unChildNode, castToChildNode, gTypeChildNode
-  , ClientRect(ClientRect), unClientRect, castToClientRect, gTypeClientRect
-  , ClientRectList(ClientRectList), unClientRectList, castToClientRectList, gTypeClientRectList
-  , CloseEvent(CloseEvent), unCloseEvent, castToCloseEvent, gTypeCloseEvent
-  , CommandLineAPIHost(CommandLineAPIHost), unCommandLineAPIHost, castToCommandLineAPIHost, gTypeCommandLineAPIHost
-  , Comment(Comment), unComment, castToComment, gTypeComment
-  , CompositionEvent(CompositionEvent), unCompositionEvent, castToCompositionEvent, gTypeCompositionEvent
-  , ConvolverNode(ConvolverNode), unConvolverNode, castToConvolverNode, gTypeConvolverNode
-  , Coordinates(Coordinates), unCoordinates, castToCoordinates, gTypeCoordinates
-  , Counter(Counter), unCounter, castToCounter, gTypeCounter
-  , Crypto(Crypto), unCrypto, castToCrypto, gTypeCrypto
-  , CryptoKey(CryptoKey), unCryptoKey, castToCryptoKey, gTypeCryptoKey
-  , CryptoKeyPair(CryptoKeyPair), unCryptoKeyPair, castToCryptoKeyPair, gTypeCryptoKeyPair
-  , CustomEvent(CustomEvent), unCustomEvent, castToCustomEvent, gTypeCustomEvent
-  , DOMError(DOMError), unDOMError, IsDOMError, toDOMError, castToDOMError, gTypeDOMError
-  , DOMImplementation(DOMImplementation), unDOMImplementation, castToDOMImplementation, gTypeDOMImplementation
-  , DOMNamedFlowCollection(DOMNamedFlowCollection), unDOMNamedFlowCollection, castToDOMNamedFlowCollection, gTypeDOMNamedFlowCollection
-  , DOMParser(DOMParser), unDOMParser, castToDOMParser, gTypeDOMParser
-  , DOMSettableTokenList(DOMSettableTokenList), unDOMSettableTokenList, castToDOMSettableTokenList, gTypeDOMSettableTokenList
-  , DOMStringList(DOMStringList), unDOMStringList, castToDOMStringList, gTypeDOMStringList
-  , DOMStringMap(DOMStringMap), unDOMStringMap, castToDOMStringMap, gTypeDOMStringMap
-  , DOMTokenList(DOMTokenList), unDOMTokenList, IsDOMTokenList, toDOMTokenList, castToDOMTokenList, gTypeDOMTokenList
-  , DataCue(DataCue), unDataCue, castToDataCue, gTypeDataCue
-  , DataTransfer(DataTransfer), unDataTransfer, castToDataTransfer, gTypeDataTransfer
-  , DataTransferItem(DataTransferItem), unDataTransferItem, castToDataTransferItem, gTypeDataTransferItem
-  , DataTransferItemList(DataTransferItemList), unDataTransferItemList, castToDataTransferItemList, gTypeDataTransferItemList
-  , Database(Database), unDatabase, castToDatabase, gTypeDatabase
-  , DedicatedWorkerGlobalScope(DedicatedWorkerGlobalScope), unDedicatedWorkerGlobalScope, castToDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope
-  , DelayNode(DelayNode), unDelayNode, castToDelayNode, gTypeDelayNode
-  , DeviceMotionEvent(DeviceMotionEvent), unDeviceMotionEvent, castToDeviceMotionEvent, gTypeDeviceMotionEvent
-  , DeviceOrientationEvent(DeviceOrientationEvent), unDeviceOrientationEvent, castToDeviceOrientationEvent, gTypeDeviceOrientationEvent
-  , DeviceProximityEvent(DeviceProximityEvent), unDeviceProximityEvent, castToDeviceProximityEvent, gTypeDeviceProximityEvent
-  , Document(Document), unDocument, IsDocument, toDocument, castToDocument, gTypeDocument
-  , DocumentFragment(DocumentFragment), unDocumentFragment, castToDocumentFragment, gTypeDocumentFragment
-  , DocumentType(DocumentType), unDocumentType, castToDocumentType, gTypeDocumentType
-  , DynamicsCompressorNode(DynamicsCompressorNode), unDynamicsCompressorNode, castToDynamicsCompressorNode, gTypeDynamicsCompressorNode
-  , EXTBlendMinMax(EXTBlendMinMax), unEXTBlendMinMax, castToEXTBlendMinMax, gTypeEXTBlendMinMax
-  , EXTFragDepth(EXTFragDepth), unEXTFragDepth, castToEXTFragDepth, gTypeEXTFragDepth
-  , EXTShaderTextureLOD(EXTShaderTextureLOD), unEXTShaderTextureLOD, castToEXTShaderTextureLOD, gTypeEXTShaderTextureLOD
-  , EXTTextureFilterAnisotropic(EXTTextureFilterAnisotropic), unEXTTextureFilterAnisotropic, castToEXTTextureFilterAnisotropic, gTypeEXTTextureFilterAnisotropic
-  , EXTsRGB(EXTsRGB), unEXTsRGB, castToEXTsRGB, gTypeEXTsRGB
-  , Element(Element), unElement, IsElement, toElement, castToElement, gTypeElement
-  , Entity(Entity), unEntity, castToEntity, gTypeEntity
-  , EntityReference(EntityReference), unEntityReference, castToEntityReference, gTypeEntityReference
-  , ErrorEvent(ErrorEvent), unErrorEvent, castToErrorEvent, gTypeErrorEvent
-  , Event(Event), unEvent, IsEvent, toEvent, castToEvent, gTypeEvent
-  , EventListener(EventListener), unEventListener, castToEventListener, gTypeEventListener
-  , EventSource(EventSource), unEventSource, castToEventSource, gTypeEventSource
-  , EventTarget(EventTarget), unEventTarget, IsEventTarget, toEventTarget, castToEventTarget, gTypeEventTarget
-  , File(File), unFile, castToFile, gTypeFile
-  , FileError(FileError), unFileError, castToFileError, gTypeFileError
-  , FileList(FileList), unFileList, castToFileList, gTypeFileList
-  , FileReader(FileReader), unFileReader, castToFileReader, gTypeFileReader
-  , FileReaderSync(FileReaderSync), unFileReaderSync, castToFileReaderSync, gTypeFileReaderSync
-  , FocusEvent(FocusEvent), unFocusEvent, castToFocusEvent, gTypeFocusEvent
-  , FontLoader(FontLoader), unFontLoader, castToFontLoader, gTypeFontLoader
-  , FormData(FormData), unFormData, castToFormData, gTypeFormData
-  , GainNode(GainNode), unGainNode, castToGainNode, gTypeGainNode
-  , Gamepad(Gamepad), unGamepad, castToGamepad, gTypeGamepad
-  , GamepadButton(GamepadButton), unGamepadButton, castToGamepadButton, gTypeGamepadButton
-  , GamepadEvent(GamepadEvent), unGamepadEvent, castToGamepadEvent, gTypeGamepadEvent
-  , Geolocation(Geolocation), unGeolocation, castToGeolocation, gTypeGeolocation
-  , Geoposition(Geoposition), unGeoposition, castToGeoposition, gTypeGeoposition
-  , HTMLAllCollection(HTMLAllCollection), unHTMLAllCollection, castToHTMLAllCollection, gTypeHTMLAllCollection
-  , HTMLAnchorElement(HTMLAnchorElement), unHTMLAnchorElement, castToHTMLAnchorElement, gTypeHTMLAnchorElement
-  , HTMLAppletElement(HTMLAppletElement), unHTMLAppletElement, castToHTMLAppletElement, gTypeHTMLAppletElement
-  , HTMLAreaElement(HTMLAreaElement), unHTMLAreaElement, castToHTMLAreaElement, gTypeHTMLAreaElement
-  , HTMLAudioElement(HTMLAudioElement), unHTMLAudioElement, castToHTMLAudioElement, gTypeHTMLAudioElement
-  , HTMLBRElement(HTMLBRElement), unHTMLBRElement, castToHTMLBRElement, gTypeHTMLBRElement
-  , HTMLBaseElement(HTMLBaseElement), unHTMLBaseElement, castToHTMLBaseElement, gTypeHTMLBaseElement
-  , HTMLBaseFontElement(HTMLBaseFontElement), unHTMLBaseFontElement, castToHTMLBaseFontElement, gTypeHTMLBaseFontElement
-  , HTMLBodyElement(HTMLBodyElement), unHTMLBodyElement, castToHTMLBodyElement, gTypeHTMLBodyElement
-  , HTMLButtonElement(HTMLButtonElement), unHTMLButtonElement, castToHTMLButtonElement, gTypeHTMLButtonElement
-  , HTMLCanvasElement(HTMLCanvasElement), unHTMLCanvasElement, castToHTMLCanvasElement, gTypeHTMLCanvasElement
-  , HTMLCollection(HTMLCollection), unHTMLCollection, IsHTMLCollection, toHTMLCollection, castToHTMLCollection, gTypeHTMLCollection
-  , HTMLDListElement(HTMLDListElement), unHTMLDListElement, castToHTMLDListElement, gTypeHTMLDListElement
-  , HTMLDataListElement(HTMLDataListElement), unHTMLDataListElement, castToHTMLDataListElement, gTypeHTMLDataListElement
-  , HTMLDetailsElement(HTMLDetailsElement), unHTMLDetailsElement, castToHTMLDetailsElement, gTypeHTMLDetailsElement
-  , HTMLDirectoryElement(HTMLDirectoryElement), unHTMLDirectoryElement, castToHTMLDirectoryElement, gTypeHTMLDirectoryElement
-  , HTMLDivElement(HTMLDivElement), unHTMLDivElement, castToHTMLDivElement, gTypeHTMLDivElement
-  , HTMLDocument(HTMLDocument), unHTMLDocument, castToHTMLDocument, gTypeHTMLDocument
-  , HTMLElement(HTMLElement), unHTMLElement, IsHTMLElement, toHTMLElement, castToHTMLElement, gTypeHTMLElement
-  , HTMLEmbedElement(HTMLEmbedElement), unHTMLEmbedElement, castToHTMLEmbedElement, gTypeHTMLEmbedElement
-  , HTMLFieldSetElement(HTMLFieldSetElement), unHTMLFieldSetElement, castToHTMLFieldSetElement, gTypeHTMLFieldSetElement
-  , HTMLFontElement(HTMLFontElement), unHTMLFontElement, castToHTMLFontElement, gTypeHTMLFontElement
-  , HTMLFormControlsCollection(HTMLFormControlsCollection), unHTMLFormControlsCollection, castToHTMLFormControlsCollection, gTypeHTMLFormControlsCollection
-  , HTMLFormElement(HTMLFormElement), unHTMLFormElement, castToHTMLFormElement, gTypeHTMLFormElement
-  , HTMLFrameElement(HTMLFrameElement), unHTMLFrameElement, castToHTMLFrameElement, gTypeHTMLFrameElement
-  , HTMLFrameSetElement(HTMLFrameSetElement), unHTMLFrameSetElement, castToHTMLFrameSetElement, gTypeHTMLFrameSetElement
-  , HTMLHRElement(HTMLHRElement), unHTMLHRElement, castToHTMLHRElement, gTypeHTMLHRElement
-  , HTMLHeadElement(HTMLHeadElement), unHTMLHeadElement, castToHTMLHeadElement, gTypeHTMLHeadElement
-  , HTMLHeadingElement(HTMLHeadingElement), unHTMLHeadingElement, castToHTMLHeadingElement, gTypeHTMLHeadingElement
-  , HTMLHtmlElement(HTMLHtmlElement), unHTMLHtmlElement, castToHTMLHtmlElement, gTypeHTMLHtmlElement
-  , HTMLIFrameElement(HTMLIFrameElement), unHTMLIFrameElement, castToHTMLIFrameElement, gTypeHTMLIFrameElement
-  , HTMLImageElement(HTMLImageElement), unHTMLImageElement, castToHTMLImageElement, gTypeHTMLImageElement
-  , HTMLInputElement(HTMLInputElement), unHTMLInputElement, castToHTMLInputElement, gTypeHTMLInputElement
-  , HTMLKeygenElement(HTMLKeygenElement), unHTMLKeygenElement, castToHTMLKeygenElement, gTypeHTMLKeygenElement
-  , HTMLLIElement(HTMLLIElement), unHTMLLIElement, castToHTMLLIElement, gTypeHTMLLIElement
-  , HTMLLabelElement(HTMLLabelElement), unHTMLLabelElement, castToHTMLLabelElement, gTypeHTMLLabelElement
-  , HTMLLegendElement(HTMLLegendElement), unHTMLLegendElement, castToHTMLLegendElement, gTypeHTMLLegendElement
-  , HTMLLinkElement(HTMLLinkElement), unHTMLLinkElement, castToHTMLLinkElement, gTypeHTMLLinkElement
-  , HTMLMapElement(HTMLMapElement), unHTMLMapElement, castToHTMLMapElement, gTypeHTMLMapElement
-  , HTMLMarqueeElement(HTMLMarqueeElement), unHTMLMarqueeElement, castToHTMLMarqueeElement, gTypeHTMLMarqueeElement
-  , HTMLMediaElement(HTMLMediaElement), unHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement, castToHTMLMediaElement, gTypeHTMLMediaElement
-  , HTMLMenuElement(HTMLMenuElement), unHTMLMenuElement, castToHTMLMenuElement, gTypeHTMLMenuElement
-  , HTMLMetaElement(HTMLMetaElement), unHTMLMetaElement, castToHTMLMetaElement, gTypeHTMLMetaElement
-  , HTMLMeterElement(HTMLMeterElement), unHTMLMeterElement, castToHTMLMeterElement, gTypeHTMLMeterElement
-  , HTMLModElement(HTMLModElement), unHTMLModElement, castToHTMLModElement, gTypeHTMLModElement
-  , HTMLOListElement(HTMLOListElement), unHTMLOListElement, castToHTMLOListElement, gTypeHTMLOListElement
-  , HTMLObjectElement(HTMLObjectElement), unHTMLObjectElement, castToHTMLObjectElement, gTypeHTMLObjectElement
-  , HTMLOptGroupElement(HTMLOptGroupElement), unHTMLOptGroupElement, castToHTMLOptGroupElement, gTypeHTMLOptGroupElement
-  , HTMLOptionElement(HTMLOptionElement), unHTMLOptionElement, castToHTMLOptionElement, gTypeHTMLOptionElement
-  , HTMLOptionsCollection(HTMLOptionsCollection), unHTMLOptionsCollection, castToHTMLOptionsCollection, gTypeHTMLOptionsCollection
-  , HTMLOutputElement(HTMLOutputElement), unHTMLOutputElement, castToHTMLOutputElement, gTypeHTMLOutputElement
-  , HTMLParagraphElement(HTMLParagraphElement), unHTMLParagraphElement, castToHTMLParagraphElement, gTypeHTMLParagraphElement
-  , HTMLParamElement(HTMLParamElement), unHTMLParamElement, castToHTMLParamElement, gTypeHTMLParamElement
-  , HTMLPreElement(HTMLPreElement), unHTMLPreElement, castToHTMLPreElement, gTypeHTMLPreElement
-  , HTMLProgressElement(HTMLProgressElement), unHTMLProgressElement, castToHTMLProgressElement, gTypeHTMLProgressElement
-  , HTMLQuoteElement(HTMLQuoteElement), unHTMLQuoteElement, castToHTMLQuoteElement, gTypeHTMLQuoteElement
-  , HTMLScriptElement(HTMLScriptElement), unHTMLScriptElement, castToHTMLScriptElement, gTypeHTMLScriptElement
-  , HTMLSelectElement(HTMLSelectElement), unHTMLSelectElement, castToHTMLSelectElement, gTypeHTMLSelectElement
-  , HTMLSourceElement(HTMLSourceElement), unHTMLSourceElement, castToHTMLSourceElement, gTypeHTMLSourceElement
-  , HTMLSpanElement(HTMLSpanElement), unHTMLSpanElement, castToHTMLSpanElement, gTypeHTMLSpanElement
-  , HTMLStyleElement(HTMLStyleElement), unHTMLStyleElement, castToHTMLStyleElement, gTypeHTMLStyleElement
-  , HTMLTableCaptionElement(HTMLTableCaptionElement), unHTMLTableCaptionElement, castToHTMLTableCaptionElement, gTypeHTMLTableCaptionElement
-  , HTMLTableCellElement(HTMLTableCellElement), unHTMLTableCellElement, castToHTMLTableCellElement, gTypeHTMLTableCellElement
-  , HTMLTableColElement(HTMLTableColElement), unHTMLTableColElement, castToHTMLTableColElement, gTypeHTMLTableColElement
-  , HTMLTableElement(HTMLTableElement), unHTMLTableElement, castToHTMLTableElement, gTypeHTMLTableElement
-  , HTMLTableRowElement(HTMLTableRowElement), unHTMLTableRowElement, castToHTMLTableRowElement, gTypeHTMLTableRowElement
-  , HTMLTableSectionElement(HTMLTableSectionElement), unHTMLTableSectionElement, castToHTMLTableSectionElement, gTypeHTMLTableSectionElement
-  , HTMLTemplateElement(HTMLTemplateElement), unHTMLTemplateElement, castToHTMLTemplateElement, gTypeHTMLTemplateElement
-  , HTMLTextAreaElement(HTMLTextAreaElement), unHTMLTextAreaElement, castToHTMLTextAreaElement, gTypeHTMLTextAreaElement
-  , HTMLTitleElement(HTMLTitleElement), unHTMLTitleElement, castToHTMLTitleElement, gTypeHTMLTitleElement
-  , HTMLTrackElement(HTMLTrackElement), unHTMLTrackElement, castToHTMLTrackElement, gTypeHTMLTrackElement
-  , HTMLUListElement(HTMLUListElement), unHTMLUListElement, castToHTMLUListElement, gTypeHTMLUListElement
-  , HTMLUnknownElement(HTMLUnknownElement), unHTMLUnknownElement, castToHTMLUnknownElement, gTypeHTMLUnknownElement
-  , HTMLVideoElement(HTMLVideoElement), unHTMLVideoElement, castToHTMLVideoElement, gTypeHTMLVideoElement
-  , HashChangeEvent(HashChangeEvent), unHashChangeEvent, castToHashChangeEvent, gTypeHashChangeEvent
-  , History(History), unHistory, castToHistory, gTypeHistory
-  , IDBAny(IDBAny), unIDBAny, castToIDBAny, gTypeIDBAny
-  , IDBCursor(IDBCursor), unIDBCursor, IsIDBCursor, toIDBCursor, castToIDBCursor, gTypeIDBCursor
-  , IDBCursorWithValue(IDBCursorWithValue), unIDBCursorWithValue, castToIDBCursorWithValue, gTypeIDBCursorWithValue
-  , IDBDatabase(IDBDatabase), unIDBDatabase, castToIDBDatabase, gTypeIDBDatabase
-  , IDBFactory(IDBFactory), unIDBFactory, castToIDBFactory, gTypeIDBFactory
-  , IDBIndex(IDBIndex), unIDBIndex, castToIDBIndex, gTypeIDBIndex
-  , IDBKeyRange(IDBKeyRange), unIDBKeyRange, castToIDBKeyRange, gTypeIDBKeyRange
-  , IDBObjectStore(IDBObjectStore), unIDBObjectStore, castToIDBObjectStore, gTypeIDBObjectStore
-  , IDBOpenDBRequest(IDBOpenDBRequest), unIDBOpenDBRequest, castToIDBOpenDBRequest, gTypeIDBOpenDBRequest
-  , IDBRequest(IDBRequest), unIDBRequest, IsIDBRequest, toIDBRequest, castToIDBRequest, gTypeIDBRequest
-  , IDBTransaction(IDBTransaction), unIDBTransaction, castToIDBTransaction, gTypeIDBTransaction
-  , IDBVersionChangeEvent(IDBVersionChangeEvent), unIDBVersionChangeEvent, castToIDBVersionChangeEvent, gTypeIDBVersionChangeEvent
-  , ImageData(ImageData), unImageData, castToImageData, gTypeImageData
-  , InspectorFrontendHost(InspectorFrontendHost), unInspectorFrontendHost, castToInspectorFrontendHost, gTypeInspectorFrontendHost
-  , InternalSettings(InternalSettings), unInternalSettings, castToInternalSettings, gTypeInternalSettings
-  , Internals(Internals), unInternals, castToInternals, gTypeInternals
-  , KeyboardEvent(KeyboardEvent), unKeyboardEvent, castToKeyboardEvent, gTypeKeyboardEvent
-  , Location(Location), unLocation, castToLocation, gTypeLocation
-  , MallocStatistics(MallocStatistics), unMallocStatistics, castToMallocStatistics, gTypeMallocStatistics
-  , MediaController(MediaController), unMediaController, castToMediaController, gTypeMediaController
-  , MediaControlsHost(MediaControlsHost), unMediaControlsHost, castToMediaControlsHost, gTypeMediaControlsHost
-  , MediaElementAudioSourceNode(MediaElementAudioSourceNode), unMediaElementAudioSourceNode, castToMediaElementAudioSourceNode, gTypeMediaElementAudioSourceNode
-  , MediaError(MediaError), unMediaError, castToMediaError, gTypeMediaError
-  , MediaKeyError(MediaKeyError), unMediaKeyError, castToMediaKeyError, gTypeMediaKeyError
-  , MediaKeyEvent(MediaKeyEvent), unMediaKeyEvent, castToMediaKeyEvent, gTypeMediaKeyEvent
-  , MediaKeyMessageEvent(MediaKeyMessageEvent), unMediaKeyMessageEvent, castToMediaKeyMessageEvent, gTypeMediaKeyMessageEvent
-  , MediaKeyNeededEvent(MediaKeyNeededEvent), unMediaKeyNeededEvent, castToMediaKeyNeededEvent, gTypeMediaKeyNeededEvent
-  , MediaKeySession(MediaKeySession), unMediaKeySession, castToMediaKeySession, gTypeMediaKeySession
-  , MediaKeys(MediaKeys), unMediaKeys, castToMediaKeys, gTypeMediaKeys
-  , MediaList(MediaList), unMediaList, castToMediaList, gTypeMediaList
-  , MediaQueryList(MediaQueryList), unMediaQueryList, castToMediaQueryList, gTypeMediaQueryList
-  , MediaSource(MediaSource), unMediaSource, castToMediaSource, gTypeMediaSource
-  , MediaSourceStates(MediaSourceStates), unMediaSourceStates, castToMediaSourceStates, gTypeMediaSourceStates
-  , MediaStream(MediaStream), unMediaStream, castToMediaStream, gTypeMediaStream
-  , MediaStreamAudioDestinationNode(MediaStreamAudioDestinationNode), unMediaStreamAudioDestinationNode, castToMediaStreamAudioDestinationNode, gTypeMediaStreamAudioDestinationNode
-  , MediaStreamAudioSourceNode(MediaStreamAudioSourceNode), unMediaStreamAudioSourceNode, castToMediaStreamAudioSourceNode, gTypeMediaStreamAudioSourceNode
-  , MediaStreamCapabilities(MediaStreamCapabilities), unMediaStreamCapabilities, IsMediaStreamCapabilities, toMediaStreamCapabilities, castToMediaStreamCapabilities, gTypeMediaStreamCapabilities
-  , MediaStreamEvent(MediaStreamEvent), unMediaStreamEvent, castToMediaStreamEvent, gTypeMediaStreamEvent
-  , MediaStreamTrack(MediaStreamTrack), unMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack, castToMediaStreamTrack, gTypeMediaStreamTrack
-  , MediaStreamTrackEvent(MediaStreamTrackEvent), unMediaStreamTrackEvent, castToMediaStreamTrackEvent, gTypeMediaStreamTrackEvent
-  , MediaTrackConstraint(MediaTrackConstraint), unMediaTrackConstraint, castToMediaTrackConstraint, gTypeMediaTrackConstraint
-  , MediaTrackConstraintSet(MediaTrackConstraintSet), unMediaTrackConstraintSet, castToMediaTrackConstraintSet, gTypeMediaTrackConstraintSet
-  , MediaTrackConstraints(MediaTrackConstraints), unMediaTrackConstraints, castToMediaTrackConstraints, gTypeMediaTrackConstraints
-  , MemoryInfo(MemoryInfo), unMemoryInfo, castToMemoryInfo, gTypeMemoryInfo
-  , MessageChannel(MessageChannel), unMessageChannel, castToMessageChannel, gTypeMessageChannel
-  , MessageEvent(MessageEvent), unMessageEvent, castToMessageEvent, gTypeMessageEvent
-  , MessagePort(MessagePort), unMessagePort, castToMessagePort, gTypeMessagePort
-  , MimeType(MimeType), unMimeType, castToMimeType, gTypeMimeType
-  , MimeTypeArray(MimeTypeArray), unMimeTypeArray, castToMimeTypeArray, gTypeMimeTypeArray
-  , MouseEvent(MouseEvent), unMouseEvent, IsMouseEvent, toMouseEvent, castToMouseEvent, gTypeMouseEvent
-  , MutationEvent(MutationEvent), unMutationEvent, castToMutationEvent, gTypeMutationEvent
-  , MutationObserver(MutationObserver), unMutationObserver, castToMutationObserver, gTypeMutationObserver
-  , MutationRecord(MutationRecord), unMutationRecord, castToMutationRecord, gTypeMutationRecord
-  , NamedNodeMap(NamedNodeMap), unNamedNodeMap, castToNamedNodeMap, gTypeNamedNodeMap
-  , Navigator(Navigator), unNavigator, castToNavigator, gTypeNavigator
-  , NavigatorUserMediaError(NavigatorUserMediaError), unNavigatorUserMediaError, castToNavigatorUserMediaError, gTypeNavigatorUserMediaError
-  , Node(Node), unNode, IsNode, toNode, castToNode, gTypeNode
-  , NodeFilter(NodeFilter), unNodeFilter, castToNodeFilter, gTypeNodeFilter
-  , NodeIterator(NodeIterator), unNodeIterator, castToNodeIterator, gTypeNodeIterator
-  , NodeList(NodeList), unNodeList, IsNodeList, toNodeList, castToNodeList, gTypeNodeList
-  , Notification(Notification), unNotification, castToNotification, gTypeNotification
-  , NotificationCenter(NotificationCenter), unNotificationCenter, castToNotificationCenter, gTypeNotificationCenter
-  , OESElementIndexUint(OESElementIndexUint), unOESElementIndexUint, castToOESElementIndexUint, gTypeOESElementIndexUint
-  , OESStandardDerivatives(OESStandardDerivatives), unOESStandardDerivatives, castToOESStandardDerivatives, gTypeOESStandardDerivatives
-  , OESTextureFloat(OESTextureFloat), unOESTextureFloat, castToOESTextureFloat, gTypeOESTextureFloat
-  , OESTextureFloatLinear(OESTextureFloatLinear), unOESTextureFloatLinear, castToOESTextureFloatLinear, gTypeOESTextureFloatLinear
-  , OESTextureHalfFloat(OESTextureHalfFloat), unOESTextureHalfFloat, castToOESTextureHalfFloat, gTypeOESTextureHalfFloat
-  , OESTextureHalfFloatLinear(OESTextureHalfFloatLinear), unOESTextureHalfFloatLinear, castToOESTextureHalfFloatLinear, gTypeOESTextureHalfFloatLinear
-  , OESVertexArrayObject(OESVertexArrayObject), unOESVertexArrayObject, castToOESVertexArrayObject, gTypeOESVertexArrayObject
-  , OfflineAudioCompletionEvent(OfflineAudioCompletionEvent), unOfflineAudioCompletionEvent, castToOfflineAudioCompletionEvent, gTypeOfflineAudioCompletionEvent
-  , OfflineAudioContext(OfflineAudioContext), unOfflineAudioContext, castToOfflineAudioContext, gTypeOfflineAudioContext
-  , OscillatorNode(OscillatorNode), unOscillatorNode, castToOscillatorNode, gTypeOscillatorNode
-  , OverflowEvent(OverflowEvent), unOverflowEvent, castToOverflowEvent, gTypeOverflowEvent
-  , PageTransitionEvent(PageTransitionEvent), unPageTransitionEvent, castToPageTransitionEvent, gTypePageTransitionEvent
-  , PannerNode(PannerNode), unPannerNode, castToPannerNode, gTypePannerNode
-  , Path2D(Path2D), unPath2D, castToPath2D, gTypePath2D
-  , Performance(Performance), unPerformance, castToPerformance, gTypePerformance
-  , PerformanceEntry(PerformanceEntry), unPerformanceEntry, IsPerformanceEntry, toPerformanceEntry, castToPerformanceEntry, gTypePerformanceEntry
-  , PerformanceEntryList(PerformanceEntryList), unPerformanceEntryList, castToPerformanceEntryList, gTypePerformanceEntryList
-  , PerformanceMark(PerformanceMark), unPerformanceMark, castToPerformanceMark, gTypePerformanceMark
-  , PerformanceMeasure(PerformanceMeasure), unPerformanceMeasure, castToPerformanceMeasure, gTypePerformanceMeasure
-  , PerformanceNavigation(PerformanceNavigation), unPerformanceNavigation, castToPerformanceNavigation, gTypePerformanceNavigation
-  , PerformanceResourceTiming(PerformanceResourceTiming), unPerformanceResourceTiming, castToPerformanceResourceTiming, gTypePerformanceResourceTiming
-  , PerformanceTiming(PerformanceTiming), unPerformanceTiming, castToPerformanceTiming, gTypePerformanceTiming
-  , PeriodicWave(PeriodicWave), unPeriodicWave, castToPeriodicWave, gTypePeriodicWave
-  , Plugin(Plugin), unPlugin, castToPlugin, gTypePlugin
-  , PluginArray(PluginArray), unPluginArray, castToPluginArray, gTypePluginArray
-  , PopStateEvent(PopStateEvent), unPopStateEvent, castToPopStateEvent, gTypePopStateEvent
-  , PositionError(PositionError), unPositionError, castToPositionError, gTypePositionError
-  , ProcessingInstruction(ProcessingInstruction), unProcessingInstruction, castToProcessingInstruction, gTypeProcessingInstruction
-  , ProgressEvent(ProgressEvent), unProgressEvent, IsProgressEvent, toProgressEvent, castToProgressEvent, gTypeProgressEvent
-  , QuickTimePluginReplacement(QuickTimePluginReplacement), unQuickTimePluginReplacement, castToQuickTimePluginReplacement, gTypeQuickTimePluginReplacement
-  , RGBColor(RGBColor), unRGBColor, castToRGBColor, gTypeRGBColor
-  , RTCConfiguration(RTCConfiguration), unRTCConfiguration, castToRTCConfiguration, gTypeRTCConfiguration
-  , RTCDTMFSender(RTCDTMFSender), unRTCDTMFSender, castToRTCDTMFSender, gTypeRTCDTMFSender
-  , RTCDTMFToneChangeEvent(RTCDTMFToneChangeEvent), unRTCDTMFToneChangeEvent, castToRTCDTMFToneChangeEvent, gTypeRTCDTMFToneChangeEvent
-  , RTCDataChannel(RTCDataChannel), unRTCDataChannel, castToRTCDataChannel, gTypeRTCDataChannel
-  , RTCDataChannelEvent(RTCDataChannelEvent), unRTCDataChannelEvent, castToRTCDataChannelEvent, gTypeRTCDataChannelEvent
-  , RTCIceCandidate(RTCIceCandidate), unRTCIceCandidate, castToRTCIceCandidate, gTypeRTCIceCandidate
-  , RTCIceCandidateEvent(RTCIceCandidateEvent), unRTCIceCandidateEvent, castToRTCIceCandidateEvent, gTypeRTCIceCandidateEvent
-  , RTCIceServer(RTCIceServer), unRTCIceServer, castToRTCIceServer, gTypeRTCIceServer
-  , RTCPeerConnection(RTCPeerConnection), unRTCPeerConnection, castToRTCPeerConnection, gTypeRTCPeerConnection
-  , RTCSessionDescription(RTCSessionDescription), unRTCSessionDescription, castToRTCSessionDescription, gTypeRTCSessionDescription
-  , RTCStatsReport(RTCStatsReport), unRTCStatsReport, castToRTCStatsReport, gTypeRTCStatsReport
-  , RTCStatsResponse(RTCStatsResponse), unRTCStatsResponse, castToRTCStatsResponse, gTypeRTCStatsResponse
-  , RadioNodeList(RadioNodeList), unRadioNodeList, castToRadioNodeList, gTypeRadioNodeList
-  , Range(Range), unRange, castToRange, gTypeRange
-  , ReadableStream(ReadableStream), unReadableStream, castToReadableStream, gTypeReadableStream
-  , Rect(Rect), unRect, castToRect, gTypeRect
-  , SQLError(SQLError), unSQLError, castToSQLError, gTypeSQLError
-  , SQLResultSet(SQLResultSet), unSQLResultSet, castToSQLResultSet, gTypeSQLResultSet
-  , SQLResultSetRowList(SQLResultSetRowList), unSQLResultSetRowList, castToSQLResultSetRowList, gTypeSQLResultSetRowList
-  , SQLTransaction(SQLTransaction), unSQLTransaction, castToSQLTransaction, gTypeSQLTransaction
-  , SVGAElement(SVGAElement), unSVGAElement, castToSVGAElement, gTypeSVGAElement
-  , SVGAltGlyphDefElement(SVGAltGlyphDefElement), unSVGAltGlyphDefElement, castToSVGAltGlyphDefElement, gTypeSVGAltGlyphDefElement
-  , SVGAltGlyphElement(SVGAltGlyphElement), unSVGAltGlyphElement, castToSVGAltGlyphElement, gTypeSVGAltGlyphElement
-  , SVGAltGlyphItemElement(SVGAltGlyphItemElement), unSVGAltGlyphItemElement, castToSVGAltGlyphItemElement, gTypeSVGAltGlyphItemElement
-  , SVGAngle(SVGAngle), unSVGAngle, castToSVGAngle, gTypeSVGAngle
-  , SVGAnimateColorElement(SVGAnimateColorElement), unSVGAnimateColorElement, castToSVGAnimateColorElement, gTypeSVGAnimateColorElement
-  , SVGAnimateElement(SVGAnimateElement), unSVGAnimateElement, castToSVGAnimateElement, gTypeSVGAnimateElement
-  , SVGAnimateMotionElement(SVGAnimateMotionElement), unSVGAnimateMotionElement, castToSVGAnimateMotionElement, gTypeSVGAnimateMotionElement
-  , SVGAnimateTransformElement(SVGAnimateTransformElement), unSVGAnimateTransformElement, castToSVGAnimateTransformElement, gTypeSVGAnimateTransformElement
-  , SVGAnimatedAngle(SVGAnimatedAngle), unSVGAnimatedAngle, castToSVGAnimatedAngle, gTypeSVGAnimatedAngle
-  , SVGAnimatedBoolean(SVGAnimatedBoolean), unSVGAnimatedBoolean, castToSVGAnimatedBoolean, gTypeSVGAnimatedBoolean
-  , SVGAnimatedEnumeration(SVGAnimatedEnumeration), unSVGAnimatedEnumeration, castToSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration
-  , SVGAnimatedInteger(SVGAnimatedInteger), unSVGAnimatedInteger, castToSVGAnimatedInteger, gTypeSVGAnimatedInteger
-  , SVGAnimatedLength(SVGAnimatedLength), unSVGAnimatedLength, castToSVGAnimatedLength, gTypeSVGAnimatedLength
-  , SVGAnimatedLengthList(SVGAnimatedLengthList), unSVGAnimatedLengthList, castToSVGAnimatedLengthList, gTypeSVGAnimatedLengthList
-  , SVGAnimatedNumber(SVGAnimatedNumber), unSVGAnimatedNumber, castToSVGAnimatedNumber, gTypeSVGAnimatedNumber
-  , SVGAnimatedNumberList(SVGAnimatedNumberList), unSVGAnimatedNumberList, castToSVGAnimatedNumberList, gTypeSVGAnimatedNumberList
-  , SVGAnimatedPreserveAspectRatio(SVGAnimatedPreserveAspectRatio), unSVGAnimatedPreserveAspectRatio, castToSVGAnimatedPreserveAspectRatio, gTypeSVGAnimatedPreserveAspectRatio
-  , SVGAnimatedRect(SVGAnimatedRect), unSVGAnimatedRect, castToSVGAnimatedRect, gTypeSVGAnimatedRect
-  , SVGAnimatedString(SVGAnimatedString), unSVGAnimatedString, castToSVGAnimatedString, gTypeSVGAnimatedString
-  , SVGAnimatedTransformList(SVGAnimatedTransformList), unSVGAnimatedTransformList, castToSVGAnimatedTransformList, gTypeSVGAnimatedTransformList
-  , SVGAnimationElement(SVGAnimationElement), unSVGAnimationElement, IsSVGAnimationElement, toSVGAnimationElement, castToSVGAnimationElement, gTypeSVGAnimationElement
-  , SVGCircleElement(SVGCircleElement), unSVGCircleElement, castToSVGCircleElement, gTypeSVGCircleElement
-  , SVGClipPathElement(SVGClipPathElement), unSVGClipPathElement, castToSVGClipPathElement, gTypeSVGClipPathElement
-  , SVGColor(SVGColor), unSVGColor, IsSVGColor, toSVGColor, castToSVGColor, gTypeSVGColor
-  , SVGComponentTransferFunctionElement(SVGComponentTransferFunctionElement), unSVGComponentTransferFunctionElement, IsSVGComponentTransferFunctionElement, toSVGComponentTransferFunctionElement, castToSVGComponentTransferFunctionElement, gTypeSVGComponentTransferFunctionElement
-  , SVGCursorElement(SVGCursorElement), unSVGCursorElement, castToSVGCursorElement, gTypeSVGCursorElement
-  , SVGDefsElement(SVGDefsElement), unSVGDefsElement, castToSVGDefsElement, gTypeSVGDefsElement
-  , SVGDescElement(SVGDescElement), unSVGDescElement, castToSVGDescElement, gTypeSVGDescElement
-  , SVGDocument(SVGDocument), unSVGDocument, castToSVGDocument, gTypeSVGDocument
-  , SVGElement(SVGElement), unSVGElement, IsSVGElement, toSVGElement, castToSVGElement, gTypeSVGElement
-  , SVGEllipseElement(SVGEllipseElement), unSVGEllipseElement, castToSVGEllipseElement, gTypeSVGEllipseElement
-  , SVGExternalResourcesRequired(SVGExternalResourcesRequired), unSVGExternalResourcesRequired, castToSVGExternalResourcesRequired, gTypeSVGExternalResourcesRequired
-  , SVGFEBlendElement(SVGFEBlendElement), unSVGFEBlendElement, castToSVGFEBlendElement, gTypeSVGFEBlendElement
-  , SVGFEColorMatrixElement(SVGFEColorMatrixElement), unSVGFEColorMatrixElement, castToSVGFEColorMatrixElement, gTypeSVGFEColorMatrixElement
-  , SVGFEComponentTransferElement(SVGFEComponentTransferElement), unSVGFEComponentTransferElement, castToSVGFEComponentTransferElement, gTypeSVGFEComponentTransferElement
-  , SVGFECompositeElement(SVGFECompositeElement), unSVGFECompositeElement, castToSVGFECompositeElement, gTypeSVGFECompositeElement
-  , SVGFEConvolveMatrixElement(SVGFEConvolveMatrixElement), unSVGFEConvolveMatrixElement, castToSVGFEConvolveMatrixElement, gTypeSVGFEConvolveMatrixElement
-  , SVGFEDiffuseLightingElement(SVGFEDiffuseLightingElement), unSVGFEDiffuseLightingElement, castToSVGFEDiffuseLightingElement, gTypeSVGFEDiffuseLightingElement
-  , SVGFEDisplacementMapElement(SVGFEDisplacementMapElement), unSVGFEDisplacementMapElement, castToSVGFEDisplacementMapElement, gTypeSVGFEDisplacementMapElement
-  , SVGFEDistantLightElement(SVGFEDistantLightElement), unSVGFEDistantLightElement, castToSVGFEDistantLightElement, gTypeSVGFEDistantLightElement
-  , SVGFEDropShadowElement(SVGFEDropShadowElement), unSVGFEDropShadowElement, castToSVGFEDropShadowElement, gTypeSVGFEDropShadowElement
-  , SVGFEFloodElement(SVGFEFloodElement), unSVGFEFloodElement, castToSVGFEFloodElement, gTypeSVGFEFloodElement
-  , SVGFEFuncAElement(SVGFEFuncAElement), unSVGFEFuncAElement, castToSVGFEFuncAElement, gTypeSVGFEFuncAElement
-  , SVGFEFuncBElement(SVGFEFuncBElement), unSVGFEFuncBElement, castToSVGFEFuncBElement, gTypeSVGFEFuncBElement
-  , SVGFEFuncGElement(SVGFEFuncGElement), unSVGFEFuncGElement, castToSVGFEFuncGElement, gTypeSVGFEFuncGElement
-  , SVGFEFuncRElement(SVGFEFuncRElement), unSVGFEFuncRElement, castToSVGFEFuncRElement, gTypeSVGFEFuncRElement
-  , SVGFEGaussianBlurElement(SVGFEGaussianBlurElement), unSVGFEGaussianBlurElement, castToSVGFEGaussianBlurElement, gTypeSVGFEGaussianBlurElement
-  , SVGFEImageElement(SVGFEImageElement), unSVGFEImageElement, castToSVGFEImageElement, gTypeSVGFEImageElement
-  , SVGFEMergeElement(SVGFEMergeElement), unSVGFEMergeElement, castToSVGFEMergeElement, gTypeSVGFEMergeElement
-  , SVGFEMergeNodeElement(SVGFEMergeNodeElement), unSVGFEMergeNodeElement, castToSVGFEMergeNodeElement, gTypeSVGFEMergeNodeElement
-  , SVGFEMorphologyElement(SVGFEMorphologyElement), unSVGFEMorphologyElement, castToSVGFEMorphologyElement, gTypeSVGFEMorphologyElement
-  , SVGFEOffsetElement(SVGFEOffsetElement), unSVGFEOffsetElement, castToSVGFEOffsetElement, gTypeSVGFEOffsetElement
-  , SVGFEPointLightElement(SVGFEPointLightElement), unSVGFEPointLightElement, castToSVGFEPointLightElement, gTypeSVGFEPointLightElement
-  , SVGFESpecularLightingElement(SVGFESpecularLightingElement), unSVGFESpecularLightingElement, castToSVGFESpecularLightingElement, gTypeSVGFESpecularLightingElement
-  , SVGFESpotLightElement(SVGFESpotLightElement), unSVGFESpotLightElement, castToSVGFESpotLightElement, gTypeSVGFESpotLightElement
-  , SVGFETileElement(SVGFETileElement), unSVGFETileElement, castToSVGFETileElement, gTypeSVGFETileElement
-  , SVGFETurbulenceElement(SVGFETurbulenceElement), unSVGFETurbulenceElement, castToSVGFETurbulenceElement, gTypeSVGFETurbulenceElement
-  , SVGFilterElement(SVGFilterElement), unSVGFilterElement, castToSVGFilterElement, gTypeSVGFilterElement
-  , SVGFilterPrimitiveStandardAttributes(SVGFilterPrimitiveStandardAttributes), unSVGFilterPrimitiveStandardAttributes, castToSVGFilterPrimitiveStandardAttributes, gTypeSVGFilterPrimitiveStandardAttributes
-  , SVGFitToViewBox(SVGFitToViewBox), unSVGFitToViewBox, castToSVGFitToViewBox, gTypeSVGFitToViewBox
-  , SVGFontElement(SVGFontElement), unSVGFontElement, castToSVGFontElement, gTypeSVGFontElement
-  , SVGFontFaceElement(SVGFontFaceElement), unSVGFontFaceElement, castToSVGFontFaceElement, gTypeSVGFontFaceElement
-  , SVGFontFaceFormatElement(SVGFontFaceFormatElement), unSVGFontFaceFormatElement, castToSVGFontFaceFormatElement, gTypeSVGFontFaceFormatElement
-  , SVGFontFaceNameElement(SVGFontFaceNameElement), unSVGFontFaceNameElement, castToSVGFontFaceNameElement, gTypeSVGFontFaceNameElement
-  , SVGFontFaceSrcElement(SVGFontFaceSrcElement), unSVGFontFaceSrcElement, castToSVGFontFaceSrcElement, gTypeSVGFontFaceSrcElement
-  , SVGFontFaceUriElement(SVGFontFaceUriElement), unSVGFontFaceUriElement, castToSVGFontFaceUriElement, gTypeSVGFontFaceUriElement
-  , SVGForeignObjectElement(SVGForeignObjectElement), unSVGForeignObjectElement, castToSVGForeignObjectElement, gTypeSVGForeignObjectElement
-  , SVGGElement(SVGGElement), unSVGGElement, castToSVGGElement, gTypeSVGGElement
-  , SVGGlyphElement(SVGGlyphElement), unSVGGlyphElement, castToSVGGlyphElement, gTypeSVGGlyphElement
-  , SVGGlyphRefElement(SVGGlyphRefElement), unSVGGlyphRefElement, castToSVGGlyphRefElement, gTypeSVGGlyphRefElement
-  , SVGGradientElement(SVGGradientElement), unSVGGradientElement, IsSVGGradientElement, toSVGGradientElement, castToSVGGradientElement, gTypeSVGGradientElement
-  , SVGGraphicsElement(SVGGraphicsElement), unSVGGraphicsElement, IsSVGGraphicsElement, toSVGGraphicsElement, castToSVGGraphicsElement, gTypeSVGGraphicsElement
-  , SVGHKernElement(SVGHKernElement), unSVGHKernElement, castToSVGHKernElement, gTypeSVGHKernElement
-  , SVGImageElement(SVGImageElement), unSVGImageElement, castToSVGImageElement, gTypeSVGImageElement
-  , SVGLength(SVGLength), unSVGLength, castToSVGLength, gTypeSVGLength
-  , SVGLengthList(SVGLengthList), unSVGLengthList, castToSVGLengthList, gTypeSVGLengthList
-  , SVGLineElement(SVGLineElement), unSVGLineElement, castToSVGLineElement, gTypeSVGLineElement
-  , SVGLinearGradientElement(SVGLinearGradientElement), unSVGLinearGradientElement, castToSVGLinearGradientElement, gTypeSVGLinearGradientElement
-  , SVGMPathElement(SVGMPathElement), unSVGMPathElement, castToSVGMPathElement, gTypeSVGMPathElement
-  , SVGMarkerElement(SVGMarkerElement), unSVGMarkerElement, castToSVGMarkerElement, gTypeSVGMarkerElement
-  , SVGMaskElement(SVGMaskElement), unSVGMaskElement, castToSVGMaskElement, gTypeSVGMaskElement
-  , SVGMatrix(SVGMatrix), unSVGMatrix, castToSVGMatrix, gTypeSVGMatrix
-  , SVGMetadataElement(SVGMetadataElement), unSVGMetadataElement, castToSVGMetadataElement, gTypeSVGMetadataElement
-  , SVGMissingGlyphElement(SVGMissingGlyphElement), unSVGMissingGlyphElement, castToSVGMissingGlyphElement, gTypeSVGMissingGlyphElement
-  , SVGNumber(SVGNumber), unSVGNumber, castToSVGNumber, gTypeSVGNumber
-  , SVGNumberList(SVGNumberList), unSVGNumberList, castToSVGNumberList, gTypeSVGNumberList
-  , SVGPaint(SVGPaint), unSVGPaint, castToSVGPaint, gTypeSVGPaint
-  , SVGPathElement(SVGPathElement), unSVGPathElement, castToSVGPathElement, gTypeSVGPathElement
-  , SVGPathSeg(SVGPathSeg), unSVGPathSeg, IsSVGPathSeg, toSVGPathSeg, castToSVGPathSeg, gTypeSVGPathSeg
-  , SVGPathSegArcAbs(SVGPathSegArcAbs), unSVGPathSegArcAbs, castToSVGPathSegArcAbs, gTypeSVGPathSegArcAbs
-  , SVGPathSegArcRel(SVGPathSegArcRel), unSVGPathSegArcRel, castToSVGPathSegArcRel, gTypeSVGPathSegArcRel
-  , SVGPathSegClosePath(SVGPathSegClosePath), unSVGPathSegClosePath, castToSVGPathSegClosePath, gTypeSVGPathSegClosePath
-  , SVGPathSegCurvetoCubicAbs(SVGPathSegCurvetoCubicAbs), unSVGPathSegCurvetoCubicAbs, castToSVGPathSegCurvetoCubicAbs, gTypeSVGPathSegCurvetoCubicAbs
-  , SVGPathSegCurvetoCubicRel(SVGPathSegCurvetoCubicRel), unSVGPathSegCurvetoCubicRel, castToSVGPathSegCurvetoCubicRel, gTypeSVGPathSegCurvetoCubicRel
-  , SVGPathSegCurvetoCubicSmoothAbs(SVGPathSegCurvetoCubicSmoothAbs), unSVGPathSegCurvetoCubicSmoothAbs, castToSVGPathSegCurvetoCubicSmoothAbs, gTypeSVGPathSegCurvetoCubicSmoothAbs
-  , SVGPathSegCurvetoCubicSmoothRel(SVGPathSegCurvetoCubicSmoothRel), unSVGPathSegCurvetoCubicSmoothRel, castToSVGPathSegCurvetoCubicSmoothRel, gTypeSVGPathSegCurvetoCubicSmoothRel
-  , SVGPathSegCurvetoQuadraticAbs(SVGPathSegCurvetoQuadraticAbs), unSVGPathSegCurvetoQuadraticAbs, castToSVGPathSegCurvetoQuadraticAbs, gTypeSVGPathSegCurvetoQuadraticAbs
-  , SVGPathSegCurvetoQuadraticRel(SVGPathSegCurvetoQuadraticRel), unSVGPathSegCurvetoQuadraticRel, castToSVGPathSegCurvetoQuadraticRel, gTypeSVGPathSegCurvetoQuadraticRel
-  , SVGPathSegCurvetoQuadraticSmoothAbs(SVGPathSegCurvetoQuadraticSmoothAbs), unSVGPathSegCurvetoQuadraticSmoothAbs, castToSVGPathSegCurvetoQuadraticSmoothAbs, gTypeSVGPathSegCurvetoQuadraticSmoothAbs
-  , SVGPathSegCurvetoQuadraticSmoothRel(SVGPathSegCurvetoQuadraticSmoothRel), unSVGPathSegCurvetoQuadraticSmoothRel, castToSVGPathSegCurvetoQuadraticSmoothRel, gTypeSVGPathSegCurvetoQuadraticSmoothRel
-  , SVGPathSegLinetoAbs(SVGPathSegLinetoAbs), unSVGPathSegLinetoAbs, castToSVGPathSegLinetoAbs, gTypeSVGPathSegLinetoAbs
-  , SVGPathSegLinetoHorizontalAbs(SVGPathSegLinetoHorizontalAbs), unSVGPathSegLinetoHorizontalAbs, castToSVGPathSegLinetoHorizontalAbs, gTypeSVGPathSegLinetoHorizontalAbs
-  , SVGPathSegLinetoHorizontalRel(SVGPathSegLinetoHorizontalRel), unSVGPathSegLinetoHorizontalRel, castToSVGPathSegLinetoHorizontalRel, gTypeSVGPathSegLinetoHorizontalRel
-  , SVGPathSegLinetoRel(SVGPathSegLinetoRel), unSVGPathSegLinetoRel, castToSVGPathSegLinetoRel, gTypeSVGPathSegLinetoRel
-  , SVGPathSegLinetoVerticalAbs(SVGPathSegLinetoVerticalAbs), unSVGPathSegLinetoVerticalAbs, castToSVGPathSegLinetoVerticalAbs, gTypeSVGPathSegLinetoVerticalAbs
-  , SVGPathSegLinetoVerticalRel(SVGPathSegLinetoVerticalRel), unSVGPathSegLinetoVerticalRel, castToSVGPathSegLinetoVerticalRel, gTypeSVGPathSegLinetoVerticalRel
-  , SVGPathSegList(SVGPathSegList), unSVGPathSegList, castToSVGPathSegList, gTypeSVGPathSegList
-  , SVGPathSegMovetoAbs(SVGPathSegMovetoAbs), unSVGPathSegMovetoAbs, castToSVGPathSegMovetoAbs, gTypeSVGPathSegMovetoAbs
-  , SVGPathSegMovetoRel(SVGPathSegMovetoRel), unSVGPathSegMovetoRel, castToSVGPathSegMovetoRel, gTypeSVGPathSegMovetoRel
-  , SVGPatternElement(SVGPatternElement), unSVGPatternElement, castToSVGPatternElement, gTypeSVGPatternElement
-  , SVGPoint(SVGPoint), unSVGPoint, castToSVGPoint, gTypeSVGPoint
-  , SVGPointList(SVGPointList), unSVGPointList, castToSVGPointList, gTypeSVGPointList
-  , SVGPolygonElement(SVGPolygonElement), unSVGPolygonElement, castToSVGPolygonElement, gTypeSVGPolygonElement
-  , SVGPolylineElement(SVGPolylineElement), unSVGPolylineElement, castToSVGPolylineElement, gTypeSVGPolylineElement
-  , SVGPreserveAspectRatio(SVGPreserveAspectRatio), unSVGPreserveAspectRatio, castToSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio
-  , SVGRadialGradientElement(SVGRadialGradientElement), unSVGRadialGradientElement, castToSVGRadialGradientElement, gTypeSVGRadialGradientElement
-  , SVGRect(SVGRect), unSVGRect, castToSVGRect, gTypeSVGRect
-  , SVGRectElement(SVGRectElement), unSVGRectElement, castToSVGRectElement, gTypeSVGRectElement
-  , SVGRenderingIntent(SVGRenderingIntent), unSVGRenderingIntent, castToSVGRenderingIntent, gTypeSVGRenderingIntent
-  , SVGSVGElement(SVGSVGElement), unSVGSVGElement, castToSVGSVGElement, gTypeSVGSVGElement
-  , SVGScriptElement(SVGScriptElement), unSVGScriptElement, castToSVGScriptElement, gTypeSVGScriptElement
-  , SVGSetElement(SVGSetElement), unSVGSetElement, castToSVGSetElement, gTypeSVGSetElement
-  , SVGStopElement(SVGStopElement), unSVGStopElement, castToSVGStopElement, gTypeSVGStopElement
-  , SVGStringList(SVGStringList), unSVGStringList, castToSVGStringList, gTypeSVGStringList
-  , SVGStyleElement(SVGStyleElement), unSVGStyleElement, castToSVGStyleElement, gTypeSVGStyleElement
-  , SVGSwitchElement(SVGSwitchElement), unSVGSwitchElement, castToSVGSwitchElement, gTypeSVGSwitchElement
-  , SVGSymbolElement(SVGSymbolElement), unSVGSymbolElement, castToSVGSymbolElement, gTypeSVGSymbolElement
-  , SVGTRefElement(SVGTRefElement), unSVGTRefElement, castToSVGTRefElement, gTypeSVGTRefElement
-  , SVGTSpanElement(SVGTSpanElement), unSVGTSpanElement, castToSVGTSpanElement, gTypeSVGTSpanElement
-  , SVGTests(SVGTests), unSVGTests, castToSVGTests, gTypeSVGTests
-  , SVGTextContentElement(SVGTextContentElement), unSVGTextContentElement, IsSVGTextContentElement, toSVGTextContentElement, castToSVGTextContentElement, gTypeSVGTextContentElement
-  , SVGTextElement(SVGTextElement), unSVGTextElement, castToSVGTextElement, gTypeSVGTextElement
-  , SVGTextPathElement(SVGTextPathElement), unSVGTextPathElement, castToSVGTextPathElement, gTypeSVGTextPathElement
-  , SVGTextPositioningElement(SVGTextPositioningElement), unSVGTextPositioningElement, IsSVGTextPositioningElement, toSVGTextPositioningElement, castToSVGTextPositioningElement, gTypeSVGTextPositioningElement
-  , SVGTitleElement(SVGTitleElement), unSVGTitleElement, castToSVGTitleElement, gTypeSVGTitleElement
-  , SVGTransform(SVGTransform), unSVGTransform, castToSVGTransform, gTypeSVGTransform
-  , SVGTransformList(SVGTransformList), unSVGTransformList, castToSVGTransformList, gTypeSVGTransformList
-  , SVGURIReference(SVGURIReference), unSVGURIReference, castToSVGURIReference, gTypeSVGURIReference
-  , SVGUnitTypes(SVGUnitTypes), unSVGUnitTypes, castToSVGUnitTypes, gTypeSVGUnitTypes
-  , SVGUseElement(SVGUseElement), unSVGUseElement, castToSVGUseElement, gTypeSVGUseElement
-  , SVGVKernElement(SVGVKernElement), unSVGVKernElement, castToSVGVKernElement, gTypeSVGVKernElement
-  , SVGViewElement(SVGViewElement), unSVGViewElement, castToSVGViewElement, gTypeSVGViewElement
-  , SVGViewSpec(SVGViewSpec), unSVGViewSpec, castToSVGViewSpec, gTypeSVGViewSpec
-  , SVGZoomAndPan(SVGZoomAndPan), unSVGZoomAndPan, castToSVGZoomAndPan, gTypeSVGZoomAndPan
-  , SVGZoomEvent(SVGZoomEvent), unSVGZoomEvent, castToSVGZoomEvent, gTypeSVGZoomEvent
-  , Screen(Screen), unScreen, castToScreen, gTypeScreen
-  , ScriptProcessorNode(ScriptProcessorNode), unScriptProcessorNode, castToScriptProcessorNode, gTypeScriptProcessorNode
-  , ScriptProfile(ScriptProfile), unScriptProfile, castToScriptProfile, gTypeScriptProfile
-  , ScriptProfileNode(ScriptProfileNode), unScriptProfileNode, castToScriptProfileNode, gTypeScriptProfileNode
-  , SecurityPolicy(SecurityPolicy), unSecurityPolicy, castToSecurityPolicy, gTypeSecurityPolicy
-  , SecurityPolicyViolationEvent(SecurityPolicyViolationEvent), unSecurityPolicyViolationEvent, castToSecurityPolicyViolationEvent, gTypeSecurityPolicyViolationEvent
-  , Selection(Selection), unSelection, castToSelection, gTypeSelection
-  , SourceBuffer(SourceBuffer), unSourceBuffer, castToSourceBuffer, gTypeSourceBuffer
-  , SourceBufferList(SourceBufferList), unSourceBufferList, castToSourceBufferList, gTypeSourceBufferList
-  , SourceInfo(SourceInfo), unSourceInfo, castToSourceInfo, gTypeSourceInfo
-  , SpeechSynthesis(SpeechSynthesis), unSpeechSynthesis, castToSpeechSynthesis, gTypeSpeechSynthesis
-  , SpeechSynthesisEvent(SpeechSynthesisEvent), unSpeechSynthesisEvent, castToSpeechSynthesisEvent, gTypeSpeechSynthesisEvent
-  , SpeechSynthesisUtterance(SpeechSynthesisUtterance), unSpeechSynthesisUtterance, castToSpeechSynthesisUtterance, gTypeSpeechSynthesisUtterance
-  , SpeechSynthesisVoice(SpeechSynthesisVoice), unSpeechSynthesisVoice, castToSpeechSynthesisVoice, gTypeSpeechSynthesisVoice
-  , Storage(Storage), unStorage, castToStorage, gTypeStorage
-  , StorageEvent(StorageEvent), unStorageEvent, castToStorageEvent, gTypeStorageEvent
-  , StorageInfo(StorageInfo), unStorageInfo, castToStorageInfo, gTypeStorageInfo
-  , StorageQuota(StorageQuota), unStorageQuota, castToStorageQuota, gTypeStorageQuota
-  , StyleMedia(StyleMedia), unStyleMedia, castToStyleMedia, gTypeStyleMedia
-  , StyleSheet(StyleSheet), unStyleSheet, IsStyleSheet, toStyleSheet, castToStyleSheet, gTypeStyleSheet
-  , StyleSheetList(StyleSheetList), unStyleSheetList, castToStyleSheetList, gTypeStyleSheetList
-  , SubtleCrypto(SubtleCrypto), unSubtleCrypto, castToSubtleCrypto, gTypeSubtleCrypto
-  , Text(Text), unText, IsText, toText, castToText, gTypeText
-  , TextEvent(TextEvent), unTextEvent, castToTextEvent, gTypeTextEvent
-  , TextMetrics(TextMetrics), unTextMetrics, castToTextMetrics, gTypeTextMetrics
-  , TextTrack(TextTrack), unTextTrack, castToTextTrack, gTypeTextTrack
-  , TextTrackCue(TextTrackCue), unTextTrackCue, IsTextTrackCue, toTextTrackCue, castToTextTrackCue, gTypeTextTrackCue
-  , TextTrackCueList(TextTrackCueList), unTextTrackCueList, castToTextTrackCueList, gTypeTextTrackCueList
-  , TextTrackList(TextTrackList), unTextTrackList, castToTextTrackList, gTypeTextTrackList
-  , TimeRanges(TimeRanges), unTimeRanges, castToTimeRanges, gTypeTimeRanges
-  , Touch(Touch), unTouch, castToTouch, gTypeTouch
-  , TouchEvent(TouchEvent), unTouchEvent, castToTouchEvent, gTypeTouchEvent
-  , TouchList(TouchList), unTouchList, castToTouchList, gTypeTouchList
-  , TrackEvent(TrackEvent), unTrackEvent, castToTrackEvent, gTypeTrackEvent
-  , TransitionEvent(TransitionEvent), unTransitionEvent, castToTransitionEvent, gTypeTransitionEvent
-  , TreeWalker(TreeWalker), unTreeWalker, castToTreeWalker, gTypeTreeWalker
-  , TypeConversions(TypeConversions), unTypeConversions, castToTypeConversions, gTypeTypeConversions
-  , UIEvent(UIEvent), unUIEvent, IsUIEvent, toUIEvent, castToUIEvent, gTypeUIEvent
-  , UIRequestEvent(UIRequestEvent), unUIRequestEvent, castToUIRequestEvent, gTypeUIRequestEvent
-  , URL(URL), unURL, castToURL, gTypeURL
-  , URLUtils(URLUtils), unURLUtils, castToURLUtils, gTypeURLUtils
-  , UserMessageHandler(UserMessageHandler), unUserMessageHandler, castToUserMessageHandler, gTypeUserMessageHandler
-  , UserMessageHandlersNamespace(UserMessageHandlersNamespace), unUserMessageHandlersNamespace, castToUserMessageHandlersNamespace, gTypeUserMessageHandlersNamespace
-  , VTTCue(VTTCue), unVTTCue, castToVTTCue, gTypeVTTCue
-  , VTTRegion(VTTRegion), unVTTRegion, castToVTTRegion, gTypeVTTRegion
-  , VTTRegionList(VTTRegionList), unVTTRegionList, castToVTTRegionList, gTypeVTTRegionList
-  , ValidityState(ValidityState), unValidityState, castToValidityState, gTypeValidityState
-  , VideoPlaybackQuality(VideoPlaybackQuality), unVideoPlaybackQuality, castToVideoPlaybackQuality, gTypeVideoPlaybackQuality
-  , VideoStreamTrack(VideoStreamTrack), unVideoStreamTrack, castToVideoStreamTrack, gTypeVideoStreamTrack
-  , VideoTrack(VideoTrack), unVideoTrack, castToVideoTrack, gTypeVideoTrack
-  , VideoTrackList(VideoTrackList), unVideoTrackList, castToVideoTrackList, gTypeVideoTrackList
-  , WaveShaperNode(WaveShaperNode), unWaveShaperNode, castToWaveShaperNode, gTypeWaveShaperNode
-  , WebGL2RenderingContext(WebGL2RenderingContext), unWebGL2RenderingContext, castToWebGL2RenderingContext, gTypeWebGL2RenderingContext
-  , WebGLActiveInfo(WebGLActiveInfo), unWebGLActiveInfo, castToWebGLActiveInfo, gTypeWebGLActiveInfo
-  , WebGLBuffer(WebGLBuffer), unWebGLBuffer, castToWebGLBuffer, gTypeWebGLBuffer
-  , WebGLCompressedTextureATC(WebGLCompressedTextureATC), unWebGLCompressedTextureATC, castToWebGLCompressedTextureATC, gTypeWebGLCompressedTextureATC
-  , WebGLCompressedTexturePVRTC(WebGLCompressedTexturePVRTC), unWebGLCompressedTexturePVRTC, castToWebGLCompressedTexturePVRTC, gTypeWebGLCompressedTexturePVRTC
-  , WebGLCompressedTextureS3TC(WebGLCompressedTextureS3TC), unWebGLCompressedTextureS3TC, castToWebGLCompressedTextureS3TC, gTypeWebGLCompressedTextureS3TC
-  , WebGLContextAttributes(WebGLContextAttributes), unWebGLContextAttributes, castToWebGLContextAttributes, gTypeWebGLContextAttributes
-  , WebGLContextEvent(WebGLContextEvent), unWebGLContextEvent, castToWebGLContextEvent, gTypeWebGLContextEvent
-  , WebGLDebugRendererInfo(WebGLDebugRendererInfo), unWebGLDebugRendererInfo, castToWebGLDebugRendererInfo, gTypeWebGLDebugRendererInfo
-  , WebGLDebugShaders(WebGLDebugShaders), unWebGLDebugShaders, castToWebGLDebugShaders, gTypeWebGLDebugShaders
-  , WebGLDepthTexture(WebGLDepthTexture), unWebGLDepthTexture, castToWebGLDepthTexture, gTypeWebGLDepthTexture
-  , WebGLDrawBuffers(WebGLDrawBuffers), unWebGLDrawBuffers, castToWebGLDrawBuffers, gTypeWebGLDrawBuffers
-  , WebGLFramebuffer(WebGLFramebuffer), unWebGLFramebuffer, castToWebGLFramebuffer, gTypeWebGLFramebuffer
-  , WebGLLoseContext(WebGLLoseContext), unWebGLLoseContext, castToWebGLLoseContext, gTypeWebGLLoseContext
-  , WebGLProgram(WebGLProgram), unWebGLProgram, castToWebGLProgram, gTypeWebGLProgram
-  , WebGLQuery(WebGLQuery), unWebGLQuery, castToWebGLQuery, gTypeWebGLQuery
-  , WebGLRenderbuffer(WebGLRenderbuffer), unWebGLRenderbuffer, castToWebGLRenderbuffer, gTypeWebGLRenderbuffer
-  , WebGLRenderingContext(WebGLRenderingContext), unWebGLRenderingContext, castToWebGLRenderingContext, gTypeWebGLRenderingContext
-  , WebGLRenderingContextBase(WebGLRenderingContextBase), unWebGLRenderingContextBase, IsWebGLRenderingContextBase, toWebGLRenderingContextBase, castToWebGLRenderingContextBase, gTypeWebGLRenderingContextBase
-  , WebGLSampler(WebGLSampler), unWebGLSampler, castToWebGLSampler, gTypeWebGLSampler
-  , WebGLShader(WebGLShader), unWebGLShader, castToWebGLShader, gTypeWebGLShader
-  , WebGLShaderPrecisionFormat(WebGLShaderPrecisionFormat), unWebGLShaderPrecisionFormat, castToWebGLShaderPrecisionFormat, gTypeWebGLShaderPrecisionFormat
-  , WebGLSync(WebGLSync), unWebGLSync, castToWebGLSync, gTypeWebGLSync
-  , WebGLTexture(WebGLTexture), unWebGLTexture, castToWebGLTexture, gTypeWebGLTexture
-  , WebGLTransformFeedback(WebGLTransformFeedback), unWebGLTransformFeedback, castToWebGLTransformFeedback, gTypeWebGLTransformFeedback
-  , WebGLUniformLocation(WebGLUniformLocation), unWebGLUniformLocation, castToWebGLUniformLocation, gTypeWebGLUniformLocation
-  , WebGLVertexArrayObject(WebGLVertexArrayObject), unWebGLVertexArrayObject, castToWebGLVertexArrayObject, gTypeWebGLVertexArrayObject
-  , WebGLVertexArrayObjectOES(WebGLVertexArrayObjectOES), unWebGLVertexArrayObjectOES, castToWebGLVertexArrayObjectOES, gTypeWebGLVertexArrayObjectOES
-  , WebKitAnimationEvent(WebKitAnimationEvent), unWebKitAnimationEvent, castToWebKitAnimationEvent, gTypeWebKitAnimationEvent
-  , WebKitCSSFilterValue(WebKitCSSFilterValue), unWebKitCSSFilterValue, castToWebKitCSSFilterValue, gTypeWebKitCSSFilterValue
-  , WebKitCSSMatrix(WebKitCSSMatrix), unWebKitCSSMatrix, castToWebKitCSSMatrix, gTypeWebKitCSSMatrix
-  , WebKitCSSRegionRule(WebKitCSSRegionRule), unWebKitCSSRegionRule, castToWebKitCSSRegionRule, gTypeWebKitCSSRegionRule
-  , WebKitCSSTransformValue(WebKitCSSTransformValue), unWebKitCSSTransformValue, castToWebKitCSSTransformValue, gTypeWebKitCSSTransformValue
-  , WebKitCSSViewportRule(WebKitCSSViewportRule), unWebKitCSSViewportRule, castToWebKitCSSViewportRule, gTypeWebKitCSSViewportRule
-  , WebKitNamedFlow(WebKitNamedFlow), unWebKitNamedFlow, castToWebKitNamedFlow, gTypeWebKitNamedFlow
-  , WebKitNamespace(WebKitNamespace), unWebKitNamespace, castToWebKitNamespace, gTypeWebKitNamespace
-  , WebKitPlaybackTargetAvailabilityEvent(WebKitPlaybackTargetAvailabilityEvent), unWebKitPlaybackTargetAvailabilityEvent, castToWebKitPlaybackTargetAvailabilityEvent, gTypeWebKitPlaybackTargetAvailabilityEvent
-  , WebKitPoint(WebKitPoint), unWebKitPoint, castToWebKitPoint, gTypeWebKitPoint
-  , WebKitTransitionEvent(WebKitTransitionEvent), unWebKitTransitionEvent, castToWebKitTransitionEvent, gTypeWebKitTransitionEvent
-  , WebSocket(WebSocket), unWebSocket, castToWebSocket, gTypeWebSocket
-  , WheelEvent(WheelEvent), unWheelEvent, castToWheelEvent, gTypeWheelEvent
-  , Window(Window), unWindow, castToWindow, gTypeWindow
-  , WindowBase64(WindowBase64), unWindowBase64, castToWindowBase64, gTypeWindowBase64
-  , WindowTimers(WindowTimers), unWindowTimers, castToWindowTimers, gTypeWindowTimers
-  , Worker(Worker), unWorker, castToWorker, gTypeWorker
-  , WorkerGlobalScope(WorkerGlobalScope), unWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope, castToWorkerGlobalScope, gTypeWorkerGlobalScope
-  , WorkerLocation(WorkerLocation), unWorkerLocation, castToWorkerLocation, gTypeWorkerLocation
-  , WorkerNavigator(WorkerNavigator), unWorkerNavigator, castToWorkerNavigator, gTypeWorkerNavigator
-  , XMLHttpRequest(XMLHttpRequest), unXMLHttpRequest, castToXMLHttpRequest, gTypeXMLHttpRequest
-  , XMLHttpRequestProgressEvent(XMLHttpRequestProgressEvent), unXMLHttpRequestProgressEvent, castToXMLHttpRequestProgressEvent, gTypeXMLHttpRequestProgressEvent
-  , XMLHttpRequestUpload(XMLHttpRequestUpload), unXMLHttpRequestUpload, castToXMLHttpRequestUpload, gTypeXMLHttpRequestUpload
-  , XMLSerializer(XMLSerializer), unXMLSerializer, castToXMLSerializer, gTypeXMLSerializer
-  , XPathEvaluator(XPathEvaluator), unXPathEvaluator, castToXPathEvaluator, gTypeXPathEvaluator
-  , XPathExpression(XPathExpression), unXPathExpression, castToXPathExpression, gTypeXPathExpression
-  , XPathNSResolver(XPathNSResolver), unXPathNSResolver, castToXPathNSResolver, gTypeXPathNSResolver
-  , XPathResult(XPathResult), unXPathResult, castToXPathResult, gTypeXPathResult
-  , XSLTProcessor(XSLTProcessor), unXSLTProcessor, castToXSLTProcessor, gTypeXSLTProcessor
--- AUTO GENERATION ENDS HERE
-  ) where
-
-import Prelude ()
-import Prelude.Compat hiding((!!))
-import qualified Data.Text as T (unpack, Text)
-import Control.Monad.IO.Class (MonadIO(..))
-import Data.Int (Int8, Int16, Int32, Int64)
-import Data.Word (Word8, Word16, Word32, Word64)
-import Language.Javascript.JSaddle
-       (Object(..), valToBool, valNull, valToNumber, (!!), js,
-        JSVal, JSString, JSM, maybeNullOrUndefined, maybeNullOrUndefined',
-        valToStr, jsg, ToJSString(..), strToText, MakeObject(..),
-        Nullable(..), Function(..), freeFunction, instanceOf, JSContextRef,
-        askJSM, runJSM, MonadJSM(..), liftJSM)
-import Foreign.Ptr (nullPtr)
-import Control.Lens.Operators ((^.))
-import Data.Maybe (catMaybes)
-import Language.Javascript.JSaddle.Classes (ToJSVal(..))
-import Control.Monad ((>=>))
-import Data.Coerce (coerce, Coercible)
-import Control.Monad.Trans.Reader (ReaderT(..), ask)
-import Control.Exception (bracket)
-
--- | This is the same as 'JSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
-type DOM = JSM
--- | This is the same as 'JSContextRef' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
-type DOMContext = JSContextRef
--- | This is the same as 'MonadJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
-type MonadDOM = MonadJSM
-
--- | This is the same as 'liftJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
-liftDOM :: MonadDOM m => DOM a -> m a
-liftDOM = liftJSM
-
--- | This is the same as 'askJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
-askDOM :: MonadDOM m => m DOMContext
-askDOM = askJSM
-
--- | This is the same as 'runJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
-runDOM :: MonadIO m => DOM a -> DOMContext -> m a
-runDOM = runJSM
-
-newtype GType = GType Object
-
-typeInstanceIsA :: ToJSVal value => value -> GType -> JSM Bool
-typeInstanceIsA o (GType t) = o `instanceOf` 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') => JSM GType -> String
-                                                -> obj -> JSM obj'
-castTo gtype objTypeName obj = do
-  gtype' <- gtype
-  let gobj@(GObject objRef) = toGObject obj
-  typeInstanceIsA objRef gtype' >>= \case
-    True  -> return $ unsafeCastGObject gobj
-    False -> error $ "Cannot cast object to " ++ objTypeName
-
--- | Determine if this is an instance of a particular type
---
-isA :: IsGObject o => o -> GType -> JSM Bool
-isA obj = typeInstanceIsA (unGObject $ toGObject obj)
-
-newtype GObject = GObject { unGObject :: JSVal }
-
-class (ToJSVal o, FromJSVal o) => IsGObject o where
-  -- | Safe upcast.
-  toGObject         :: o -> GObject
-  -- | Unchecked downcast.
-  unsafeCastGObject :: GObject -> o
-
-class PToJSVal o where
-  pToJSVal :: o -> JSVal
-
-class PFromJSVal o where
-  pFromJSVal :: JSVal -> o
-
---class ToJSVal o where
---  toJSVal :: o -> JSM JSVal
-
-class FromJSVal o where
-    fromJSVal :: JSVal -> JSM (Maybe o)
-    fromJSVal = maybeNullOrUndefined' fromJSValUnchecked
-
-    fromJSValUnchecked :: JSVal -> JSM o
-    fromJSValUnchecked v =
-        fromJSVal v >>= \case
-            Nothing -> error "fromJSValUnchecked"
-            Just r  -> return r
-
-fromJSArray :: FromJSVal o => JSVal -> JSM [Maybe o]
-fromJSArray a = do
-    l <- a ^. js "length" >>= valToNumber
-    mapM (\i -> a !! i >>= fromJSVal) [0..round l - 1]
-
-fromJSArrayUnchecked :: FromJSVal o => JSVal -> JSM [o]
-fromJSArrayUnchecked a = do
-    l <- a ^. js "length" >>= valToNumber
-    mapM (\i -> a !! i >>= fromJSValUnchecked) [0..round l - 1]
-
--- newtype Nullable a = Nullable JSVal
-
-nullableToMaybe :: FromJSVal a => JSVal -> JSM (Maybe a)
-nullableToMaybe = fromJSVal
-{-# INLINE nullableToMaybe #-}
---
-maybeToNullable :: ToJSVal a => Maybe a -> JSM JSVal
-maybeToNullable Nothing = return valNull
-maybeToNullable (Just a) = toJSVal a
-{-# INLINE maybeToNullable #-}
-
-instance PToJSVal GObject where
-  pToJSVal = unGObject
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal GObject where
-  pFromJSVal = GObject
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal GObject where
-  toJSVal = return . unGObject
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal GObject where
-  fromJSVal val = fmap GObject <$> maybeNullOrUndefined val
-  {-# INLINE fromJSVal #-}
-
---instance IsGObject o => PToJSVal o where
---  pToJSVal = unGObject . toGObject
---  {-# INLINE pToJSVal #-}
---
---instance IsGObject o => PFromJSVal o where
---  pFromJSVal = unsafeCastGObject . GObject . castRef
---  {-# INLINE pFromJSVal #-}
---
---instance IsGObject o => ToJSVal o where
---  toJSVal = return . unGObject . toGObject
---  {-# INLINE toJSVal #-}
---
---instance IsGObject o => FromJSVal o where
---  fromJSVal = return . fmap (unsafeCastGObject . GObject . castRef) . maybeJSNullOrUndefined
---  {-# INLINE fromJSVal #-}
-
-instance IsGObject GObject where
-  toGObject = id
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = id
-  {-# INLINE unsafeCastGObject #-}
-
-castToGObject :: IsGObject obj => obj -> JSM obj
-castToGObject = return
-
-#ifdef ghcjs_HOST_OS
-foreign import javascript unsafe "object" gTypeGObject :: GType
-#else
-gTypeGObject :: GType
-gTypeGObject = error "gTypeGObject: only available in JavaScript"
-#endif
-
-objectToString :: (IsGObject self, FromJSString result) => self -> JSM result
-objectToString self = fromJSValUnchecked (unGObject $ toGObject self)
-
--- | Fastest string type to use when you just
---   want to take a string from the DOM then
---   give it back as is.
-type DOMString = JSString
-
-class FromJSVal s => FromJSString s where
-    fromJSString :: JSString -> JSM s
-
-fromJSStringArray :: FromJSString s => JSVal -> JSM [s]
-fromJSStringArray a = do
-    l <- a ^. js "length" >>= valToNumber
-    mapM (\i -> a !! i >>= valToStr >>= fromJSString) [0..round l - 1]
-
---fromJSString :: FromJSString a => JSString -> a
---fromJSString a = pFromJSVal . pToJSVal
---{-# INLINE fromJSString #-}
-
-toMaybeJSString :: ToJSString a => Maybe a -> JSM JSVal
-toMaybeJSString Nothing = return valNull
-toMaybeJSString (Just a) = toJSVal (toJSString a)
-{-# INLINE toMaybeJSString #-}
-
-fromMaybeJSString :: FromJSString a => JSVal -> JSM (Maybe a)
-fromMaybeJSString = maybeNullOrUndefined' (valToStr >=> fromJSString)
-{-# INLINE fromMaybeJSString #-}
-
-instance FromJSVal JSVal where
-    fromJSValUnchecked = return
-instance FromJSVal Double where
-    fromJSValUnchecked = valToNumber
-instance FromJSVal Float where
-    fromJSValUnchecked v = realToFrac <$> valToNumber v
-instance FromJSVal Int where
-    fromJSValUnchecked v = round <$> valToNumber v
-instance FromJSVal Int32 where
-    fromJSValUnchecked v = round <$> valToNumber v
-instance FromJSVal Int64 where
-    fromJSValUnchecked v = round <$> valToNumber v
-instance FromJSVal Word where
-    fromJSValUnchecked v = round <$> valToNumber v
-instance FromJSVal Word32 where
-    fromJSValUnchecked v = round <$> valToNumber v
-instance FromJSVal Word64 where
-    fromJSValUnchecked v = round <$> valToNumber v
-instance FromJSVal Bool where
-    fromJSValUnchecked = valToBool
-instance FromJSVal T.Text where
-    fromJSValUnchecked v = strToText <$> valToStr v
-instance FromJSString T.Text where
-    fromJSString = return . strToText
-instance FromJSVal String where
-    fromJSValUnchecked v = T.unpack . strToText <$> valToStr v
-instance FromJSString String where
-    fromJSString v = return . T.unpack $ strToText v
-instance FromJSVal JSString where
-    fromJSValUnchecked = valToStr
-instance FromJSString JSString where
-    fromJSString = return
-
-type ToDOMString s = ToJSString s
-type FromDOMString s = FromJSString s
-type IsDOMString s = (ToDOMString s, FromDOMString s)
-
--- Callbacks
-newtype Callback a = Callback Function
-
-withCallback :: (MonadDOM m, Coercible c Function)
-             => JSM c -> (c -> JSM a) -> m a
-withCallback aquire f = do
-    jsCtx <- askJSM
-    liftIO $ bracket
-        (runJSM aquire jsCtx)
-        ((`runJSM` jsCtx) . freeFunction . coerce)
-        (\t -> runJSM (f t) jsCtx)
-
-newtype AudioBufferCallback = AudioBufferCallback (Callback (JSVal -> IO ()))
-instance ToJSVal AudioBufferCallback where toJSVal (AudioBufferCallback (Callback r)) = toJSVal r
-newtype DatabaseCallback = DatabaseCallback (Callback (JSVal -> IO ()))
-instance ToJSVal DatabaseCallback where toJSVal (DatabaseCallback (Callback r)) = toJSVal r
-newtype MediaQueryListListener = MediaQueryListListener (Callback (JSVal -> IO ()))
-instance ToJSVal MediaQueryListListener where toJSVal (MediaQueryListListener (Callback r)) = toJSVal r
-newtype MediaStreamTrackSourcesCallback = MediaStreamTrackSourcesCallback (Callback (JSVal -> IO ()))
-instance ToJSVal MediaStreamTrackSourcesCallback where toJSVal (MediaStreamTrackSourcesCallback (Callback r)) = toJSVal r
-newtype NavigatorUserMediaErrorCallback = NavigatorUserMediaErrorCallback (Callback (JSVal -> IO ()))
-instance ToJSVal NavigatorUserMediaErrorCallback where toJSVal (NavigatorUserMediaErrorCallback (Callback r)) = toJSVal r
-newtype NavigatorUserMediaSuccessCallback = NavigatorUserMediaSuccessCallback (Callback (JSVal -> IO ()))
-instance ToJSVal NavigatorUserMediaSuccessCallback where toJSVal (NavigatorUserMediaSuccessCallback (Callback r)) = toJSVal r
-newtype NotificationPermissionCallback permissions = NotificationPermissionCallback (Callback (JSVal -> IO ()))
-instance ToJSVal (NotificationPermissionCallback permissions) where toJSVal (NotificationPermissionCallback (Callback r)) = toJSVal r
-newtype PositionCallback = PositionCallback (Callback (JSVal -> IO ()))
-instance ToJSVal PositionCallback where toJSVal (PositionCallback (Callback r)) = toJSVal r
-newtype PositionErrorCallback = PositionErrorCallback (Callback (JSVal -> IO ()))
-instance ToJSVal PositionErrorCallback where toJSVal (PositionErrorCallback (Callback r)) = toJSVal r
-newtype RequestAnimationFrameCallback = RequestAnimationFrameCallback (Callback (JSVal -> IO ()))
-instance ToJSVal RequestAnimationFrameCallback where toJSVal (RequestAnimationFrameCallback (Callback r)) = toJSVal r
-newtype RTCPeerConnectionErrorCallback = RTCPeerConnectionErrorCallback (Callback (JSVal -> IO ()))
-instance ToJSVal RTCPeerConnectionErrorCallback where toJSVal (RTCPeerConnectionErrorCallback (Callback r)) = toJSVal r
-newtype RTCSessionDescriptionCallback = RTCSessionDescriptionCallback (Callback (JSVal -> IO ()))
-instance ToJSVal RTCSessionDescriptionCallback where toJSVal (RTCSessionDescriptionCallback (Callback r)) = toJSVal r
-newtype RTCStatsCallback = RTCStatsCallback (Callback (JSVal -> IO ()))
-instance ToJSVal RTCStatsCallback where toJSVal (RTCStatsCallback (Callback r)) = toJSVal r
-newtype SQLStatementCallback = SQLStatementCallback (Callback (JSVal -> JSVal -> IO ()))
-instance ToJSVal SQLStatementCallback where toJSVal (SQLStatementCallback (Callback r)) = toJSVal r
-newtype SQLStatementErrorCallback = SQLStatementErrorCallback (Callback (JSVal -> JSVal -> IO ()))
-instance ToJSVal SQLStatementErrorCallback where toJSVal (SQLStatementErrorCallback (Callback r)) = toJSVal r
-newtype SQLTransactionCallback = SQLTransactionCallback (Callback (JSVal -> IO ()))
-instance ToJSVal SQLTransactionCallback where toJSVal (SQLTransactionCallback (Callback r)) = toJSVal r
-newtype SQLTransactionErrorCallback = SQLTransactionErrorCallback (Callback (JSVal -> IO ()))
-instance ToJSVal SQLTransactionErrorCallback where toJSVal (SQLTransactionErrorCallback (Callback r)) = toJSVal r
-newtype StorageErrorCallback = StorageErrorCallback (Callback (JSVal -> IO ()))
-instance ToJSVal StorageErrorCallback where toJSVal (StorageErrorCallback (Callback r)) = toJSVal r
-newtype StorageQuotaCallback = StorageQuotaCallback (Callback (JSVal -> IO ()))
-instance ToJSVal StorageQuotaCallback where toJSVal (StorageQuotaCallback (Callback r)) = toJSVal r
-newtype StorageUsageCallback = StorageUsageCallback (Callback (JSVal -> JSVal -> IO ()))
-instance ToJSVal StorageUsageCallback where toJSVal (StorageUsageCallback (Callback r)) = toJSVal r
-newtype StringCallback s = StringCallback (Callback (JSVal -> IO ()))
-instance ToJSVal (StringCallback s) where toJSVal (StringCallback (Callback r)) = toJSVal r
-newtype VoidCallback = VoidCallback (Callback (IO ()))
-instance ToJSVal VoidCallback where toJSVal (VoidCallback (Callback r)) = toJSVal r
-
--- Custom types
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
-newtype SerializedScriptValue = SerializedScriptValue { unSerializedScriptValue :: JSVal }
-
-instance PToJSVal SerializedScriptValue where
-  pToJSVal = unSerializedScriptValue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SerializedScriptValue where
-  pFromJSVal = SerializedScriptValue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SerializedScriptValue where
-  toJSVal = return . unSerializedScriptValue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SerializedScriptValue where
-  fromJSVal v = fmap SerializedScriptValue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsSerializedScriptValue o
-toSerializedScriptValue :: IsSerializedScriptValue o => o -> SerializedScriptValue
-toSerializedScriptValue = unsafeCastGObject . toGObject
-
-instance IsSerializedScriptValue SerializedScriptValue
-instance IsGObject SerializedScriptValue where
-  toGObject = GObject . unSerializedScriptValue
-  unsafeCastGObject = SerializedScriptValue . unGObject
--- TODO add more IsSerializedScriptValue instances
-#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 :: JSVal }
-
-instance PToJSVal PositionOptions where
-  pToJSVal = unPositionOptions
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PositionOptions where
-  pFromJSVal = PositionOptions
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PositionOptions where
-  toJSVal = return . unPositionOptions
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PositionOptions where
-  fromJSVal v = fmap PositionOptions <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsPositionOptions o
-toPositionOptions :: IsPositionOptions o => o -> PositionOptions
-toPositionOptions = unsafeCastGObject . toGObject
-
-instance IsPositionOptions PositionOptions
-instance IsGObject PositionOptions where
-  toGObject = GObject . unPositionOptions
-  unsafeCastGObject = PositionOptions . unGObject
--- TODO add more IsPositionOptions instances
-#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 :: JSVal }
-
-instance PToJSVal Dictionary where
-  pToJSVal = unDictionary
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Dictionary where
-  pFromJSVal = Dictionary
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Dictionary where
-  toJSVal = return . unDictionary
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Dictionary where
-  fromJSVal v = fmap Dictionary <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsDictionary o
-toDictionary :: IsDictionary o => o -> Dictionary
-toDictionary = unsafeCastGObject . toGObject
-
-instance IsDictionary Dictionary
-instance IsGObject Dictionary where
-  toGObject = GObject . unDictionary
-  unsafeCastGObject = Dictionary . unGObject
--- TODO add more IsDictionary instances
-#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 :: JSVal }
-
-instance PToJSVal BlobPropertyBag where
-  pToJSVal = unBlobPropertyBag
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal BlobPropertyBag where
-  pFromJSVal = BlobPropertyBag
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal BlobPropertyBag where
-  toJSVal = return . unBlobPropertyBag
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal BlobPropertyBag where
-  fromJSVal v = fmap BlobPropertyBag <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsBlobPropertyBag o
-toBlobPropertyBag :: IsBlobPropertyBag o => o -> BlobPropertyBag
-toBlobPropertyBag = unsafeCastGObject . toGObject
-
-instance IsBlobPropertyBag BlobPropertyBag
-instance IsGObject BlobPropertyBag where
-  toGObject = GObject . unBlobPropertyBag
-  unsafeCastGObject = BlobPropertyBag . unGObject
--- TODO add more IsBlobPropertyBag instances
-#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 :: JSVal }
-
-instance PToJSVal MutationCallback where
-  pToJSVal = unMutationCallback
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MutationCallback where
-  pFromJSVal = MutationCallback
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MutationCallback where
-  toJSVal = return . unMutationCallback
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MutationCallback where
-  fromJSVal v = fmap MutationCallback <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsMutationCallback o
-toMutationCallback :: IsMutationCallback o => o -> MutationCallback
-toMutationCallback = unsafeCastGObject . toGObject
-
-instance IsMutationCallback MutationCallback
-instance IsGObject MutationCallback where
-  toGObject = GObject . unMutationCallback
-  unsafeCastGObject = MutationCallback . unGObject
--- TODO add more IsMutationCallback instances
-#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 :: JSVal }
-
-instance PToJSVal Promise where
-  pToJSVal = unPromise
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Promise where
-  pFromJSVal = Promise
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Promise where
-  toJSVal = return . unPromise
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Promise where
-  fromJSVal v = fmap Promise <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsPromise o
-toPromise :: IsPromise o => o -> Promise
-toPromise = unsafeCastGObject . toGObject
-
-instance IsPromise Promise
-instance IsGObject Promise where
-  toGObject = GObject . unPromise
-  unsafeCastGObject = Promise . unGObject
--- TODO add more IsPromise instances
-
-castToPromise :: IsGObject obj => obj -> JSM Promise
-castToPromise = castTo gTypePromise "Promise"
-
-gTypePromise :: JSM GType
-gTypePromise = GType . Object <$> jsg "Promise"
-#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 :: JSVal }
-
-instance PToJSVal ArrayBuffer where
-  pToJSVal = unArrayBuffer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ArrayBuffer where
-  pFromJSVal = ArrayBuffer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ArrayBuffer where
-  toJSVal = return . unArrayBuffer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ArrayBuffer where
-  fromJSVal v = fmap ArrayBuffer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsArrayBuffer o
-toArrayBuffer :: IsArrayBuffer o => o -> ArrayBuffer
-toArrayBuffer = unsafeCastGObject . toGObject
-
-instance IsArrayBuffer ArrayBuffer
-instance IsGObject ArrayBuffer where
-  toGObject = GObject . unArrayBuffer
-  unsafeCastGObject = ArrayBuffer . unGObject
-
-castToArrayBuffer :: IsGObject obj => obj -> JSM ArrayBuffer
-castToArrayBuffer = castTo gTypeArrayBuffer "ArrayBuffer"
-
-gTypeArrayBuffer :: JSM GType
-gTypeArrayBuffer = GType . Object <$> jsg "ArrayBuffer"
-#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 :: JSVal }
-
-instance PToJSVal Float32Array where
-  pToJSVal = unFloat32Array
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Float32Array where
-  pFromJSVal = Float32Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Float32Array where
-  toJSVal = return . unFloat32Array
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Float32Array where
-  fromJSVal v = fmap Float32Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsFloat32Array o
-toFloat32Array :: IsFloat32Array o => o -> Float32Array
-toFloat32Array = unsafeCastGObject . toGObject
-
-instance IsFloat32Array Float32Array
-instance IsGObject Float32Array where
-  toGObject = GObject . unFloat32Array
-  unsafeCastGObject = Float32Array . unGObject
--- TODO add more IsFloat32Array instances
-
-castToFloat32Array :: IsGObject obj => obj -> JSM Float32Array
-castToFloat32Array = castTo gTypeFloat32Array "Float32Array"
-
-gTypeFloat32Array :: JSM GType
-gTypeFloat32Array = GType . Object <$> jsg "Float32Array"
-#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 :: JSVal }
-
-instance PToJSVal Float64Array where
-  pToJSVal = unFloat64Array
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Float64Array where
-  pFromJSVal = Float64Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Float64Array where
-  toJSVal = return . unFloat64Array
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Float64Array where
-  fromJSVal v = fmap Float64Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsFloat64Array o
-toFloat64Array :: IsFloat64Array o => o -> Float64Array
-toFloat64Array = unsafeCastGObject . toGObject
-
-instance IsFloat64Array Float64Array
-instance IsGObject Float64Array where
-  toGObject = GObject . unFloat64Array
-  unsafeCastGObject = Float64Array . unGObject
--- TODO add more IsFloat64Array instances
-
-castToFloat64Array :: IsGObject obj => obj -> JSM Float64Array
-castToFloat64Array = castTo gTypeFloat64Array "Float64Array"
-
-gTypeFloat64Array :: JSM GType
-gTypeFloat64Array = GType . Object <$> jsg "Float64Array"
-#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 :: JSVal }
-
-instance PToJSVal Uint8Array where
-  pToJSVal = unUint8Array
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Uint8Array where
-  pFromJSVal = Uint8Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Uint8Array where
-  toJSVal = return . unUint8Array
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Uint8Array where
-  fromJSVal v = fmap Uint8Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsUint8Array o
-toUint8Array :: IsUint8Array o => o -> Uint8Array
-toUint8Array = unsafeCastGObject . toGObject
-
-instance IsUint8Array Uint8Array
-instance IsGObject Uint8Array where
-  toGObject = GObject . unUint8Array
-  unsafeCastGObject = Uint8Array . unGObject
--- TODO add more IsUint8Array instances
-
-castToUint8Array :: IsGObject obj => obj -> JSM Uint8Array
-castToUint8Array = castTo gTypeUint8Array "Uint8Array"
-
-gTypeUint8Array :: JSM GType
-gTypeUint8Array = GType . Object <$> jsg "Uint8Array"
-#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 :: JSVal }
-
-instance PToJSVal Uint8ClampedArray where
-  pToJSVal = unUint8ClampedArray
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Uint8ClampedArray where
-  pFromJSVal = Uint8ClampedArray
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Uint8ClampedArray where
-  toJSVal = return . unUint8ClampedArray
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Uint8ClampedArray where
-  fromJSVal v = fmap Uint8ClampedArray <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsUint8ClampedArray o
-toUint8ClampedArray :: IsUint8ClampedArray o => o -> Uint8ClampedArray
-toUint8ClampedArray = unsafeCastGObject . toGObject
-
-instance IsUint8ClampedArray Uint8ClampedArray
-instance IsGObject Uint8ClampedArray where
-  toGObject = GObject . unUint8ClampedArray
-  unsafeCastGObject = Uint8ClampedArray . unGObject
--- TODO add more IsUint8ClampedArray instances
-
-castToUint8ClampedArray :: IsGObject obj => obj -> JSM Uint8ClampedArray
-castToUint8ClampedArray = castTo gTypeUint8ClampedArray "Uint8ClampedArray"
-
-gTypeUint8ClampedArray :: JSM GType
-gTypeUint8ClampedArray = GType . Object <$> jsg "Uint8ClampedArray"
-#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 :: JSVal }
-
-instance PToJSVal Uint16Array where
-  pToJSVal = unUint16Array
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Uint16Array where
-  pFromJSVal = Uint16Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Uint16Array where
-  toJSVal = return . unUint16Array
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Uint16Array where
-  fromJSVal v = fmap Uint16Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsUint16Array o
-toUint16Array :: IsUint16Array o => o -> Uint16Array
-toUint16Array = unsafeCastGObject . toGObject
-
-instance IsUint16Array Uint16Array
-instance IsGObject Uint16Array where
-  toGObject = GObject . unUint16Array
-  unsafeCastGObject = Uint16Array . unGObject
--- TODO add more IsUint16Array instances
-
-castToUint16Array :: IsGObject obj => obj -> JSM Uint16Array
-castToUint16Array = castTo gTypeUint16Array "Uint16Array"
-
-gTypeUint16Array :: JSM GType
-gTypeUint16Array = GType . Object <$> jsg "Uint16Array"
-#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 :: JSVal }
-
-instance PToJSVal Uint32Array where
-  pToJSVal = unUint32Array
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Uint32Array where
-  pFromJSVal = Uint32Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Uint32Array where
-  toJSVal = return . unUint32Array
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Uint32Array where
-  fromJSVal v = fmap Uint32Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsUint32Array o
-toUint32Array :: IsUint32Array o => o -> Uint32Array
-toUint32Array = unsafeCastGObject . toGObject
-
-instance IsUint32Array Uint32Array
-instance IsGObject Uint32Array where
-  toGObject = GObject . unUint32Array
-  unsafeCastGObject = Uint32Array . unGObject
--- TODO add more IsUint32Array instances
-
-castToUint32Array :: IsGObject obj => obj -> JSM Uint32Array
-castToUint32Array = castTo gTypeUint32Array "Uint32Array"
-
-gTypeUint32Array :: JSM GType
-gTypeUint32Array = GType . Object <$> jsg "Uint32Array"
-#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 :: JSVal }
-
-instance PToJSVal Int8Array where
-  pToJSVal = unInt8Array
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Int8Array where
-  pFromJSVal = Int8Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Int8Array where
-  toJSVal = return . unInt8Array
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Int8Array where
-  fromJSVal v = fmap Int8Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsInt8Array o
-toInt8Array :: IsInt8Array o => o -> Int8Array
-toInt8Array = unsafeCastGObject . toGObject
-
-instance IsInt8Array Int8Array
-instance IsGObject Int8Array where
-  toGObject = GObject . unInt8Array
-  unsafeCastGObject = Int8Array . unGObject
--- TODO add more IsInt8Array instances
-
-castToInt8Array :: IsGObject obj => obj -> JSM Int8Array
-castToInt8Array = castTo gTypeInt8Array "Int8Array"
-
-gTypeInt8Array :: JSM GType
-gTypeInt8Array = GType . Object <$> jsg "Int8Array"
-#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 :: JSVal }
-
-instance PToJSVal Int16Array where
-  pToJSVal = unInt16Array
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Int16Array where
-  pFromJSVal = Int16Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Int16Array where
-  toJSVal = return . unInt16Array
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Int16Array where
-  fromJSVal v = fmap Int16Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsInt16Array o
-toInt16Array :: IsInt16Array o => o -> Int16Array
-toInt16Array = unsafeCastGObject . toGObject
-
-instance IsInt16Array Int16Array
-instance IsGObject Int16Array where
-  toGObject = GObject . unInt16Array
-  unsafeCastGObject = Int16Array . unGObject
--- TODO add more IsInt16Array instances
-
-castToInt16Array :: IsGObject obj => obj -> JSM Int16Array
-castToInt16Array = castTo gTypeInt16Array "Int16Array"
-
-gTypeInt16Array :: JSM GType
-gTypeInt16Array = GType . Object <$> jsg "Int16Array"
-#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 :: JSVal }
-
-instance PToJSVal Int32Array where
-  pToJSVal = unInt32Array
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Int32Array where
-  pFromJSVal = Int32Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Int32Array where
-  toJSVal = return . unInt32Array
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Int32Array where
-  fromJSVal v = fmap Int32Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsInt32Array o
-toInt32Array :: IsInt32Array o => o -> Int32Array
-toInt32Array = unsafeCastGObject . toGObject
-
-instance IsInt32Array Int32Array
-instance IsGObject Int32Array where
-  toGObject = GObject . unInt32Array
-  unsafeCastGObject = Int32Array . unGObject
--- TODO add more IsInt32Array instances
-
-castToInt32Array :: IsGObject obj => obj -> JSM Int32Array
-castToInt32Array = castTo gTypeInt32Array "Int32Array"
-
-gTypeInt32Array :: JSM GType
-gTypeInt32Array = GType . Object <$> jsg "Int32Array"
-#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 :: JSVal }
-
-instance PToJSVal ObjectArray where
-  pToJSVal = unObjectArray
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ObjectArray where
-  pFromJSVal = ObjectArray
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ObjectArray where
-  toJSVal = return . unObjectArray
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ObjectArray where
-  fromJSVal v = fmap ObjectArray <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsObjectArray o
-toObjectArray :: IsObjectArray o => o -> ObjectArray
-toObjectArray = unsafeCastGObject . toGObject
-
-instance IsObjectArray ObjectArray
-instance IsGObject ObjectArray where
-  toGObject = GObject . unObjectArray
-  unsafeCastGObject = ObjectArray . unGObject
--- TODO add more IsObjectArray instances
-#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 :: JSVal }
-
-instance PToJSVal ArrayBufferView where
-  pToJSVal = unArrayBufferView
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ArrayBufferView where
-  pFromJSVal = ArrayBufferView
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ArrayBufferView where
-  toJSVal = return . unArrayBufferView
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ArrayBufferView where
-  fromJSVal v = fmap ArrayBufferView <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsArrayBufferView o
-toArrayBufferView :: IsArrayBufferView o => o -> ArrayBufferView
-toArrayBufferView = unsafeCastGObject . toGObject
-
-instance IsArrayBufferView ArrayBufferView
-instance IsGObject ArrayBufferView where
-  toGObject = GObject . unArrayBufferView
-  unsafeCastGObject = ArrayBufferView . unGObject
--- TODO add more IsArrayBufferView instances
-#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 :: JSVal }
-
-instance PToJSVal Array where
-  pToJSVal = unArray
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Array where
-  pFromJSVal = Array
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Array where
-  toJSVal = return . unArray
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Array where
-  fromJSVal v = fmap Array <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsArray o
-toArray :: IsArray o => o -> Array
-toArray = unsafeCastGObject . toGObject
-
-instance IsArray Array
-instance IsGObject Array where
-  toGObject = GObject . unArray
-  unsafeCastGObject = Array . unGObject
--- TODO add more IsArray instances
-
-castToArray :: IsGObject obj => obj -> JSM Array
-castToArray = castTo gTypeArray "Array"
-
-gTypeArray :: JSM GType
-gTypeArray = GType . Object <$> jsg "Array"
-#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 :: JSVal }
-
-instance PToJSVal Date where
-  pToJSVal = unDate
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Date where
-  pFromJSVal = Date
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Date where
-  toJSVal = return . unDate
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Date where
-  fromJSVal v = fmap Date <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsDate o
-toDate :: IsDate o => o -> Date
-toDate = unsafeCastGObject . toGObject
-
-instance IsDate Date
-instance IsGObject Date where
-  toGObject = GObject . unDate
-  unsafeCastGObject = Date . unGObject
--- TODO add more IsDate instances
-
-castToDate :: IsGObject obj => obj -> JSM Date
-castToDate = castTo gTypeDate "Date"
-
-gTypeDate :: JSM GType
-gTypeDate = GType . Object <$> jsg "Date"
-#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 :: JSVal }
-
-instance PToJSVal Acceleration where
-  pToJSVal = unAcceleration
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Acceleration where
-  pFromJSVal = Acceleration
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Acceleration where
-  toJSVal = return . unAcceleration
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Acceleration where
-  fromJSVal v = fmap Acceleration <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsAcceleration o
-toAcceleration :: IsAcceleration o => o -> Acceleration
-toAcceleration = unsafeCastGObject . toGObject
-
-instance IsAcceleration Acceleration
-instance IsGObject Acceleration where
-  toGObject = GObject . unAcceleration
-  unsafeCastGObject = Acceleration . unGObject
--- TODO add more IsAcceleration instances
-#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 :: JSVal }
-
-instance PToJSVal RotationRate where
-  pToJSVal = unRotationRate
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RotationRate where
-  pFromJSVal = RotationRate
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RotationRate where
-  toJSVal = return . unRotationRate
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RotationRate where
-  fromJSVal v = fmap RotationRate <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsRotationRate o
-toRotationRate :: IsRotationRate o => o -> RotationRate
-toRotationRate = unsafeCastGObject . toGObject
-
-instance IsRotationRate RotationRate
-instance IsGObject RotationRate where
-  toGObject = GObject . unRotationRate
-  unsafeCastGObject = RotationRate . unGObject
--- TODO add more IsRotationRate instances
-#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 :: JSVal }
-
-instance PToJSVal Algorithm where
-  pToJSVal = unAlgorithm
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Algorithm where
-  pFromJSVal = Algorithm
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Algorithm where
-  toJSVal = return . unAlgorithm
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Algorithm where
-  fromJSVal v = fmap Algorithm <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsAlgorithm o
-toAlgorithm :: IsAlgorithm o => o -> Algorithm
-toAlgorithm = unsafeCastGObject . toGObject
-
-instance IsAlgorithm Algorithm
-instance IsGObject Algorithm where
-  toGObject = GObject . unAlgorithm
-  unsafeCastGObject = Algorithm . unGObject
--- TODO add more IsAlgorithm instances
-#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 :: JSVal }
-
-instance PToJSVal CryptoOperationData where
-  pToJSVal = unCryptoOperationData
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CryptoOperationData where
-  pFromJSVal = CryptoOperationData
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CryptoOperationData where
-  toJSVal = return . unCryptoOperationData
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CryptoOperationData where
-  fromJSVal v = fmap CryptoOperationData <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsCryptoOperationData o
-toCryptoOperationData :: IsCryptoOperationData o => o -> CryptoOperationData
-toCryptoOperationData = unsafeCastGObject . toGObject
-
-instance IsCryptoOperationData CryptoOperationData
-instance IsGObject CryptoOperationData where
-  toGObject = GObject . unCryptoOperationData
-  unsafeCastGObject = CryptoOperationData . unGObject
-instance IsCryptoOperationData ArrayBuffer
-instance IsCryptoOperationData ArrayBufferView
-#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 :: JSVal }
-
-instance PToJSVal CanvasStyle where
-  pToJSVal = unCanvasStyle
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CanvasStyle where
-  pFromJSVal = CanvasStyle
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CanvasStyle where
-  toJSVal = return . unCanvasStyle
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CanvasStyle where
-  fromJSVal v = fmap CanvasStyle <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsCanvasStyle o
-toCanvasStyle :: IsCanvasStyle o => o -> CanvasStyle
-toCanvasStyle = unsafeCastGObject . toGObject
-
-instance IsCanvasStyle CanvasStyle
-instance IsGObject CanvasStyle where
-  toGObject = GObject . unCanvasStyle
-  unsafeCastGObject = CanvasStyle . unGObject
-instance IsCanvasStyle CanvasGradient
-instance IsCanvasStyle CanvasPattern
-#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 :: JSVal }
-
-instance PToJSVal DOMException where
-  pToJSVal = unDOMException
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMException where
-  pFromJSVal = DOMException
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMException where
-  toJSVal = return . unDOMException
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMException where
-  fromJSVal v = fmap DOMException <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-class IsGObject o => IsDOMException o
-toDOMException :: IsDOMException o => o -> DOMException
-toDOMException = unsafeCastGObject . toGObject
-
-instance IsDOMException DOMException
-instance IsGObject DOMException where
-  toGObject = GObject . unDOMException
-  unsafeCastGObject = DOMException . unGObject
-#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 "JSDOM.ANGLEInstancedArrays".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays Mozilla ANGLEInstancedArrays documentation>
-newtype ANGLEInstancedArrays = ANGLEInstancedArrays { unANGLEInstancedArrays :: JSVal }
-
-instance PToJSVal ANGLEInstancedArrays where
-  pToJSVal = unANGLEInstancedArrays
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ANGLEInstancedArrays where
-  pFromJSVal = ANGLEInstancedArrays
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ANGLEInstancedArrays where
-  toJSVal = return . unANGLEInstancedArrays
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ANGLEInstancedArrays where
-  fromJSVal v = fmap ANGLEInstancedArrays <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ANGLEInstancedArrays where
-  makeObject = makeObject . unANGLEInstancedArrays
-
-instance IsGObject ANGLEInstancedArrays where
-  toGObject = GObject . unANGLEInstancedArrays
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ANGLEInstancedArrays . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToANGLEInstancedArrays :: IsGObject obj => obj -> JSM ANGLEInstancedArrays
-castToANGLEInstancedArrays = castTo gTypeANGLEInstancedArrays "ANGLEInstancedArrays"
-
-gTypeANGLEInstancedArrays :: JSM GType
-gTypeANGLEInstancedArrays = GType . Object <$> jsg "ANGLEInstancedArrays"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AbstractView".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView Mozilla AbstractView documentation>
-newtype AbstractView = AbstractView { unAbstractView :: JSVal }
-
-instance PToJSVal AbstractView where
-  pToJSVal = unAbstractView
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AbstractView where
-  pFromJSVal = AbstractView
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AbstractView where
-  toJSVal = return . unAbstractView
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AbstractView where
-  fromJSVal v = fmap AbstractView <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AbstractView where
-  makeObject = makeObject . unAbstractView
-
-instance IsGObject AbstractView where
-  toGObject = GObject . unAbstractView
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AbstractView . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAbstractView :: IsGObject obj => obj -> JSM AbstractView
-castToAbstractView = castTo gTypeAbstractView "AbstractView"
-
-gTypeAbstractView :: JSM GType
-gTypeAbstractView = GType . Object <$> jsg "AbstractView"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AbstractWorker".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker Mozilla AbstractWorker documentation>
-newtype AbstractWorker = AbstractWorker { unAbstractWorker :: JSVal }
-
-instance PToJSVal AbstractWorker where
-  pToJSVal = unAbstractWorker
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AbstractWorker where
-  pFromJSVal = AbstractWorker
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AbstractWorker where
-  toJSVal = return . unAbstractWorker
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AbstractWorker where
-  fromJSVal v = fmap AbstractWorker <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AbstractWorker where
-  makeObject = makeObject . unAbstractWorker
-
-instance IsGObject AbstractWorker where
-  toGObject = GObject . unAbstractWorker
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AbstractWorker . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAbstractWorker :: IsGObject obj => obj -> JSM AbstractWorker
-castToAbstractWorker = castTo gTypeAbstractWorker "AbstractWorker"
-
-gTypeAbstractWorker :: JSM GType
-gTypeAbstractWorker = GType . Object <$> jsg "AbstractWorker"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AllAudioCapabilities".
--- Base interface functions are in:
---
---     * "JSDOM.MediaStreamCapabilities"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities Mozilla AllAudioCapabilities documentation>
-newtype AllAudioCapabilities = AllAudioCapabilities { unAllAudioCapabilities :: JSVal }
-
-instance PToJSVal AllAudioCapabilities where
-  pToJSVal = unAllAudioCapabilities
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AllAudioCapabilities where
-  pFromJSVal = AllAudioCapabilities
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AllAudioCapabilities where
-  toJSVal = return . unAllAudioCapabilities
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AllAudioCapabilities where
-  fromJSVal v = fmap AllAudioCapabilities <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AllAudioCapabilities where
-  makeObject = makeObject . unAllAudioCapabilities
-
-instance IsMediaStreamCapabilities AllAudioCapabilities
-instance IsGObject AllAudioCapabilities where
-  toGObject = GObject . unAllAudioCapabilities
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AllAudioCapabilities . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAllAudioCapabilities :: IsGObject obj => obj -> JSM AllAudioCapabilities
-castToAllAudioCapabilities = castTo gTypeAllAudioCapabilities "AllAudioCapabilities"
-
-gTypeAllAudioCapabilities :: JSM GType
-gTypeAllAudioCapabilities = GType . Object <$> jsg "AllAudioCapabilities"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AllVideoCapabilities".
--- Base interface functions are in:
---
---     * "JSDOM.MediaStreamCapabilities"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities Mozilla AllVideoCapabilities documentation>
-newtype AllVideoCapabilities = AllVideoCapabilities { unAllVideoCapabilities :: JSVal }
-
-instance PToJSVal AllVideoCapabilities where
-  pToJSVal = unAllVideoCapabilities
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AllVideoCapabilities where
-  pFromJSVal = AllVideoCapabilities
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AllVideoCapabilities where
-  toJSVal = return . unAllVideoCapabilities
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AllVideoCapabilities where
-  fromJSVal v = fmap AllVideoCapabilities <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AllVideoCapabilities where
-  makeObject = makeObject . unAllVideoCapabilities
-
-instance IsMediaStreamCapabilities AllVideoCapabilities
-instance IsGObject AllVideoCapabilities where
-  toGObject = GObject . unAllVideoCapabilities
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AllVideoCapabilities . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAllVideoCapabilities :: IsGObject obj => obj -> JSM AllVideoCapabilities
-castToAllVideoCapabilities = castTo gTypeAllVideoCapabilities "AllVideoCapabilities"
-
-gTypeAllVideoCapabilities :: JSM GType
-gTypeAllVideoCapabilities = GType . Object <$> jsg "AllVideoCapabilities"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AnalyserNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode Mozilla AnalyserNode documentation>
-newtype AnalyserNode = AnalyserNode { unAnalyserNode :: JSVal }
-
-instance PToJSVal AnalyserNode where
-  pToJSVal = unAnalyserNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AnalyserNode where
-  pFromJSVal = AnalyserNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AnalyserNode where
-  toJSVal = return . unAnalyserNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AnalyserNode where
-  fromJSVal v = fmap AnalyserNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AnalyserNode where
-  makeObject = makeObject . unAnalyserNode
-
-instance IsAudioNode AnalyserNode
-instance IsEventTarget AnalyserNode
-instance IsGObject AnalyserNode where
-  toGObject = GObject . unAnalyserNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AnalyserNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAnalyserNode :: IsGObject obj => obj -> JSM AnalyserNode
-castToAnalyserNode = castTo gTypeAnalyserNode "AnalyserNode"
-
-gTypeAnalyserNode :: JSM GType
-gTypeAnalyserNode = GType . Object <$> jsg "AnalyserNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AnimationEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent Mozilla AnimationEvent documentation>
-newtype AnimationEvent = AnimationEvent { unAnimationEvent :: JSVal }
-
-instance PToJSVal AnimationEvent where
-  pToJSVal = unAnimationEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AnimationEvent where
-  pFromJSVal = AnimationEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AnimationEvent where
-  toJSVal = return . unAnimationEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AnimationEvent where
-  fromJSVal v = fmap AnimationEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AnimationEvent where
-  makeObject = makeObject . unAnimationEvent
-
-instance IsEvent AnimationEvent
-instance IsGObject AnimationEvent where
-  toGObject = GObject . unAnimationEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AnimationEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAnimationEvent :: IsGObject obj => obj -> JSM AnimationEvent
-castToAnimationEvent = castTo gTypeAnimationEvent "AnimationEvent"
-
-gTypeAnimationEvent :: JSM GType
-gTypeAnimationEvent = GType . Object <$> jsg "AnimationEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ApplicationCache".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache Mozilla ApplicationCache documentation>
-newtype ApplicationCache = ApplicationCache { unApplicationCache :: JSVal }
-
-instance PToJSVal ApplicationCache where
-  pToJSVal = unApplicationCache
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ApplicationCache where
-  pFromJSVal = ApplicationCache
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ApplicationCache where
-  toJSVal = return . unApplicationCache
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ApplicationCache where
-  fromJSVal v = fmap ApplicationCache <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ApplicationCache where
-  makeObject = makeObject . unApplicationCache
-
-instance IsEventTarget ApplicationCache
-instance IsGObject ApplicationCache where
-  toGObject = GObject . unApplicationCache
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ApplicationCache . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToApplicationCache :: IsGObject obj => obj -> JSM ApplicationCache
-castToApplicationCache = castTo gTypeApplicationCache "ApplicationCache"
-
-gTypeApplicationCache :: JSM GType
-gTypeApplicationCache = GType . Object <$> jsg "ApplicationCache"
-#else
-type IsApplicationCache o = ApplicationCacheClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Attr".
--- Base interface functions are in:
---
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Attr Mozilla Attr documentation>
-newtype Attr = Attr { unAttr :: JSVal }
-
-instance PToJSVal Attr where
-  pToJSVal = unAttr
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Attr where
-  pFromJSVal = Attr
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Attr where
-  toJSVal = return . unAttr
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Attr where
-  fromJSVal v = fmap Attr <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Attr where
-  makeObject = makeObject . unAttr
-
-instance IsNode Attr
-instance IsEventTarget Attr
-instance IsGObject Attr where
-  toGObject = GObject . unAttr
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Attr . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAttr :: IsGObject obj => obj -> JSM Attr
-castToAttr = castTo gTypeAttr "Attr"
-
-gTypeAttr :: JSM GType
-gTypeAttr = GType . Object <$> jsg "Attr"
-#else
-type IsAttr o = AttrClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioBuffer".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer Mozilla AudioBuffer documentation>
-newtype AudioBuffer = AudioBuffer { unAudioBuffer :: JSVal }
-
-instance PToJSVal AudioBuffer where
-  pToJSVal = unAudioBuffer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioBuffer where
-  pFromJSVal = AudioBuffer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioBuffer where
-  toJSVal = return . unAudioBuffer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioBuffer where
-  fromJSVal v = fmap AudioBuffer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioBuffer where
-  makeObject = makeObject . unAudioBuffer
-
-instance IsGObject AudioBuffer where
-  toGObject = GObject . unAudioBuffer
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioBuffer . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioBuffer :: IsGObject obj => obj -> JSM AudioBuffer
-castToAudioBuffer = castTo gTypeAudioBuffer "AudioBuffer"
-
-gTypeAudioBuffer :: JSM GType
-gTypeAudioBuffer = GType . Object <$> jsg "AudioBuffer"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioBufferSourceNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode Mozilla AudioBufferSourceNode documentation>
-newtype AudioBufferSourceNode = AudioBufferSourceNode { unAudioBufferSourceNode :: JSVal }
-
-instance PToJSVal AudioBufferSourceNode where
-  pToJSVal = unAudioBufferSourceNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioBufferSourceNode where
-  pFromJSVal = AudioBufferSourceNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioBufferSourceNode where
-  toJSVal = return . unAudioBufferSourceNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioBufferSourceNode where
-  fromJSVal v = fmap AudioBufferSourceNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioBufferSourceNode where
-  makeObject = makeObject . unAudioBufferSourceNode
-
-instance IsAudioNode AudioBufferSourceNode
-instance IsEventTarget AudioBufferSourceNode
-instance IsGObject AudioBufferSourceNode where
-  toGObject = GObject . unAudioBufferSourceNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioBufferSourceNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioBufferSourceNode :: IsGObject obj => obj -> JSM AudioBufferSourceNode
-castToAudioBufferSourceNode = castTo gTypeAudioBufferSourceNode "AudioBufferSourceNode"
-
-gTypeAudioBufferSourceNode :: JSM GType
-gTypeAudioBufferSourceNode = GType . Object <$> jsg "AudioBufferSourceNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioContext".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation>
-newtype AudioContext = AudioContext { unAudioContext :: JSVal }
-
-instance PToJSVal AudioContext where
-  pToJSVal = unAudioContext
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioContext where
-  pFromJSVal = AudioContext
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioContext where
-  toJSVal = return . unAudioContext
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioContext where
-  fromJSVal v = fmap AudioContext <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioContext where
-  makeObject = makeObject . unAudioContext
-
-class IsEventTarget o => IsAudioContext o
-toAudioContext :: IsAudioContext o => o -> AudioContext
-toAudioContext = unsafeCastGObject . toGObject
-
-instance IsAudioContext AudioContext
-instance IsEventTarget AudioContext
-instance IsGObject AudioContext where
-  toGObject = GObject . unAudioContext
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioContext . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioContext :: IsGObject obj => obj -> JSM AudioContext
-castToAudioContext = castTo gTypeAudioContext "AudioContext"
-
-gTypeAudioContext :: JSM GType
-gTypeAudioContext = GType . Object <$> jsg "AudioContext"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioDestinationNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode Mozilla AudioDestinationNode documentation>
-newtype AudioDestinationNode = AudioDestinationNode { unAudioDestinationNode :: JSVal }
-
-instance PToJSVal AudioDestinationNode where
-  pToJSVal = unAudioDestinationNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioDestinationNode where
-  pFromJSVal = AudioDestinationNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioDestinationNode where
-  toJSVal = return . unAudioDestinationNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioDestinationNode where
-  fromJSVal v = fmap AudioDestinationNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioDestinationNode where
-  makeObject = makeObject . unAudioDestinationNode
-
-instance IsAudioNode AudioDestinationNode
-instance IsEventTarget AudioDestinationNode
-instance IsGObject AudioDestinationNode where
-  toGObject = GObject . unAudioDestinationNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioDestinationNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioDestinationNode :: IsGObject obj => obj -> JSM AudioDestinationNode
-castToAudioDestinationNode = castTo gTypeAudioDestinationNode "AudioDestinationNode"
-
-gTypeAudioDestinationNode :: JSM GType
-gTypeAudioDestinationNode = GType . Object <$> jsg "AudioDestinationNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioListener".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener Mozilla AudioListener documentation>
-newtype AudioListener = AudioListener { unAudioListener :: JSVal }
-
-instance PToJSVal AudioListener where
-  pToJSVal = unAudioListener
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioListener where
-  pFromJSVal = AudioListener
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioListener where
-  toJSVal = return . unAudioListener
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioListener where
-  fromJSVal v = fmap AudioListener <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioListener where
-  makeObject = makeObject . unAudioListener
-
-instance IsGObject AudioListener where
-  toGObject = GObject . unAudioListener
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioListener . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioListener :: IsGObject obj => obj -> JSM AudioListener
-castToAudioListener = castTo gTypeAudioListener "AudioListener"
-
-gTypeAudioListener :: JSM GType
-gTypeAudioListener = GType . Object <$> jsg "AudioListener"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioNode".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode Mozilla AudioNode documentation>
-newtype AudioNode = AudioNode { unAudioNode :: JSVal }
-
-instance PToJSVal AudioNode where
-  pToJSVal = unAudioNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioNode where
-  pFromJSVal = AudioNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioNode where
-  toJSVal = return . unAudioNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioNode where
-  fromJSVal v = fmap AudioNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioNode where
-  makeObject = makeObject . unAudioNode
-
-class IsEventTarget o => IsAudioNode o
-toAudioNode :: IsAudioNode o => o -> AudioNode
-toAudioNode = unsafeCastGObject . toGObject
-
-instance IsAudioNode AudioNode
-instance IsEventTarget AudioNode
-instance IsGObject AudioNode where
-  toGObject = GObject . unAudioNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioNode :: IsGObject obj => obj -> JSM AudioNode
-castToAudioNode = castTo gTypeAudioNode "AudioNode"
-
-gTypeAudioNode :: JSM GType
-gTypeAudioNode = GType . Object <$> jsg "AudioNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioParam".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam Mozilla AudioParam documentation>
-newtype AudioParam = AudioParam { unAudioParam :: JSVal }
-
-instance PToJSVal AudioParam where
-  pToJSVal = unAudioParam
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioParam where
-  pFromJSVal = AudioParam
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioParam where
-  toJSVal = return . unAudioParam
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioParam where
-  fromJSVal v = fmap AudioParam <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioParam where
-  makeObject = makeObject . unAudioParam
-
-instance IsGObject AudioParam where
-  toGObject = GObject . unAudioParam
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioParam . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioParam :: IsGObject obj => obj -> JSM AudioParam
-castToAudioParam = castTo gTypeAudioParam "AudioParam"
-
-gTypeAudioParam :: JSM GType
-gTypeAudioParam = GType . Object <$> jsg "AudioParam"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioProcessingEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent Mozilla AudioProcessingEvent documentation>
-newtype AudioProcessingEvent = AudioProcessingEvent { unAudioProcessingEvent :: JSVal }
-
-instance PToJSVal AudioProcessingEvent where
-  pToJSVal = unAudioProcessingEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioProcessingEvent where
-  pFromJSVal = AudioProcessingEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioProcessingEvent where
-  toJSVal = return . unAudioProcessingEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioProcessingEvent where
-  fromJSVal v = fmap AudioProcessingEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioProcessingEvent where
-  makeObject = makeObject . unAudioProcessingEvent
-
-instance IsEvent AudioProcessingEvent
-instance IsGObject AudioProcessingEvent where
-  toGObject = GObject . unAudioProcessingEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioProcessingEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioProcessingEvent :: IsGObject obj => obj -> JSM AudioProcessingEvent
-castToAudioProcessingEvent = castTo gTypeAudioProcessingEvent "AudioProcessingEvent"
-
-gTypeAudioProcessingEvent :: JSM GType
-gTypeAudioProcessingEvent = GType . Object <$> jsg "AudioProcessingEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioStreamTrack".
--- Base interface functions are in:
---
---     * "JSDOM.MediaStreamTrack"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioStreamTrack Mozilla AudioStreamTrack documentation>
-newtype AudioStreamTrack = AudioStreamTrack { unAudioStreamTrack :: JSVal }
-
-instance PToJSVal AudioStreamTrack where
-  pToJSVal = unAudioStreamTrack
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioStreamTrack where
-  pFromJSVal = AudioStreamTrack
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioStreamTrack where
-  toJSVal = return . unAudioStreamTrack
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioStreamTrack where
-  fromJSVal v = fmap AudioStreamTrack <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioStreamTrack where
-  makeObject = makeObject . unAudioStreamTrack
-
-instance IsMediaStreamTrack AudioStreamTrack
-instance IsEventTarget AudioStreamTrack
-instance IsGObject AudioStreamTrack where
-  toGObject = GObject . unAudioStreamTrack
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioStreamTrack . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioStreamTrack :: IsGObject obj => obj -> JSM AudioStreamTrack
-castToAudioStreamTrack = castTo gTypeAudioStreamTrack "AudioStreamTrack"
-
-gTypeAudioStreamTrack :: JSM GType
-gTypeAudioStreamTrack = GType . Object <$> jsg "AudioStreamTrack"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.AudioTrack".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack Mozilla AudioTrack documentation>
-newtype AudioTrack = AudioTrack { unAudioTrack :: JSVal }
-
-instance PToJSVal AudioTrack where
-  pToJSVal = unAudioTrack
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioTrack where
-  pFromJSVal = AudioTrack
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioTrack where
-  toJSVal = return . unAudioTrack
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioTrack where
-  fromJSVal v = fmap AudioTrack <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioTrack where
-  makeObject = makeObject . unAudioTrack
-
-instance IsGObject AudioTrack where
-  toGObject = GObject . unAudioTrack
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioTrack . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioTrack :: IsGObject obj => obj -> JSM AudioTrack
-castToAudioTrack = castTo gTypeAudioTrack "AudioTrack"
-
-gTypeAudioTrack :: JSM GType
-gTypeAudioTrack = GType . Object <$> jsg "AudioTrack"
-#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 "JSDOM.AudioTrackList".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList Mozilla AudioTrackList documentation>
-newtype AudioTrackList = AudioTrackList { unAudioTrackList :: JSVal }
-
-instance PToJSVal AudioTrackList where
-  pToJSVal = unAudioTrackList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AudioTrackList where
-  pFromJSVal = AudioTrackList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AudioTrackList where
-  toJSVal = return . unAudioTrackList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AudioTrackList where
-  fromJSVal v = fmap AudioTrackList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AudioTrackList where
-  makeObject = makeObject . unAudioTrackList
-
-instance IsEventTarget AudioTrackList
-instance IsGObject AudioTrackList where
-  toGObject = GObject . unAudioTrackList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AudioTrackList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAudioTrackList :: IsGObject obj => obj -> JSM AudioTrackList
-castToAudioTrackList = castTo gTypeAudioTrackList "AudioTrackList"
-
-gTypeAudioTrackList :: JSM GType
-gTypeAudioTrackList = GType . Object <$> jsg "AudioTrackList"
-#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 "JSDOM.AutocompleteErrorEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent Mozilla AutocompleteErrorEvent documentation>
-newtype AutocompleteErrorEvent = AutocompleteErrorEvent { unAutocompleteErrorEvent :: JSVal }
-
-instance PToJSVal AutocompleteErrorEvent where
-  pToJSVal = unAutocompleteErrorEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal AutocompleteErrorEvent where
-  pFromJSVal = AutocompleteErrorEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal AutocompleteErrorEvent where
-  toJSVal = return . unAutocompleteErrorEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal AutocompleteErrorEvent where
-  fromJSVal v = fmap AutocompleteErrorEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject AutocompleteErrorEvent where
-  makeObject = makeObject . unAutocompleteErrorEvent
-
-instance IsEvent AutocompleteErrorEvent
-instance IsGObject AutocompleteErrorEvent where
-  toGObject = GObject . unAutocompleteErrorEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = AutocompleteErrorEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToAutocompleteErrorEvent :: IsGObject obj => obj -> JSM AutocompleteErrorEvent
-castToAutocompleteErrorEvent = castTo gTypeAutocompleteErrorEvent "AutocompleteErrorEvent"
-
-gTypeAutocompleteErrorEvent :: JSM GType
-gTypeAutocompleteErrorEvent = GType . Object <$> jsg "AutocompleteErrorEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.BarProp".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/BarProp Mozilla BarProp documentation>
-newtype BarProp = BarProp { unBarProp :: JSVal }
-
-instance PToJSVal BarProp where
-  pToJSVal = unBarProp
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal BarProp where
-  pFromJSVal = BarProp
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal BarProp where
-  toJSVal = return . unBarProp
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal BarProp where
-  fromJSVal v = fmap BarProp <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject BarProp where
-  makeObject = makeObject . unBarProp
-
-instance IsGObject BarProp where
-  toGObject = GObject . unBarProp
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = BarProp . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToBarProp :: IsGObject obj => obj -> JSM BarProp
-castToBarProp = castTo gTypeBarProp "BarProp"
-
-gTypeBarProp :: JSM GType
-gTypeBarProp = GType . Object <$> jsg "BarProp"
-#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 "JSDOM.BatteryManager".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager Mozilla BatteryManager documentation>
-newtype BatteryManager = BatteryManager { unBatteryManager :: JSVal }
-
-instance PToJSVal BatteryManager where
-  pToJSVal = unBatteryManager
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal BatteryManager where
-  pFromJSVal = BatteryManager
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal BatteryManager where
-  toJSVal = return . unBatteryManager
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal BatteryManager where
-  fromJSVal v = fmap BatteryManager <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject BatteryManager where
-  makeObject = makeObject . unBatteryManager
-
-instance IsEventTarget BatteryManager
-instance IsGObject BatteryManager where
-  toGObject = GObject . unBatteryManager
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = BatteryManager . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToBatteryManager :: IsGObject obj => obj -> JSM BatteryManager
-castToBatteryManager = castTo gTypeBatteryManager "BatteryManager"
-
-gTypeBatteryManager :: JSM GType
-gTypeBatteryManager = GType . Object <$> jsg "BatteryManager"
-#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 "JSDOM.BeforeLoadEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent Mozilla BeforeLoadEvent documentation>
-newtype BeforeLoadEvent = BeforeLoadEvent { unBeforeLoadEvent :: JSVal }
-
-instance PToJSVal BeforeLoadEvent where
-  pToJSVal = unBeforeLoadEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal BeforeLoadEvent where
-  pFromJSVal = BeforeLoadEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal BeforeLoadEvent where
-  toJSVal = return . unBeforeLoadEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal BeforeLoadEvent where
-  fromJSVal v = fmap BeforeLoadEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject BeforeLoadEvent where
-  makeObject = makeObject . unBeforeLoadEvent
-
-instance IsEvent BeforeLoadEvent
-instance IsGObject BeforeLoadEvent where
-  toGObject = GObject . unBeforeLoadEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = BeforeLoadEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToBeforeLoadEvent :: IsGObject obj => obj -> JSM BeforeLoadEvent
-castToBeforeLoadEvent = castTo gTypeBeforeLoadEvent "BeforeLoadEvent"
-
-gTypeBeforeLoadEvent :: JSM GType
-gTypeBeforeLoadEvent = GType . Object <$> jsg "BeforeLoadEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.BeforeUnloadEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent Mozilla BeforeUnloadEvent documentation>
-newtype BeforeUnloadEvent = BeforeUnloadEvent { unBeforeUnloadEvent :: JSVal }
-
-instance PToJSVal BeforeUnloadEvent where
-  pToJSVal = unBeforeUnloadEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal BeforeUnloadEvent where
-  pFromJSVal = BeforeUnloadEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal BeforeUnloadEvent where
-  toJSVal = return . unBeforeUnloadEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal BeforeUnloadEvent where
-  fromJSVal v = fmap BeforeUnloadEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject BeforeUnloadEvent where
-  makeObject = makeObject . unBeforeUnloadEvent
-
-instance IsEvent BeforeUnloadEvent
-instance IsGObject BeforeUnloadEvent where
-  toGObject = GObject . unBeforeUnloadEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = BeforeUnloadEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToBeforeUnloadEvent :: IsGObject obj => obj -> JSM BeforeUnloadEvent
-castToBeforeUnloadEvent = castTo gTypeBeforeUnloadEvent "BeforeUnloadEvent"
-
-gTypeBeforeUnloadEvent :: JSM GType
-gTypeBeforeUnloadEvent = GType . Object <$> jsg "BeforeUnloadEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.BiquadFilterNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode Mozilla BiquadFilterNode documentation>
-newtype BiquadFilterNode = BiquadFilterNode { unBiquadFilterNode :: JSVal }
-
-instance PToJSVal BiquadFilterNode where
-  pToJSVal = unBiquadFilterNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal BiquadFilterNode where
-  pFromJSVal = BiquadFilterNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal BiquadFilterNode where
-  toJSVal = return . unBiquadFilterNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal BiquadFilterNode where
-  fromJSVal v = fmap BiquadFilterNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject BiquadFilterNode where
-  makeObject = makeObject . unBiquadFilterNode
-
-instance IsAudioNode BiquadFilterNode
-instance IsEventTarget BiquadFilterNode
-instance IsGObject BiquadFilterNode where
-  toGObject = GObject . unBiquadFilterNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = BiquadFilterNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToBiquadFilterNode :: IsGObject obj => obj -> JSM BiquadFilterNode
-castToBiquadFilterNode = castTo gTypeBiquadFilterNode "BiquadFilterNode"
-
-gTypeBiquadFilterNode :: JSM GType
-gTypeBiquadFilterNode = GType . Object <$> jsg "BiquadFilterNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Blob".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation>
-newtype Blob = Blob { unBlob :: JSVal }
-
-instance PToJSVal Blob where
-  pToJSVal = unBlob
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Blob where
-  pFromJSVal = Blob
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Blob where
-  toJSVal = return . unBlob
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Blob where
-  fromJSVal v = fmap Blob <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Blob where
-  makeObject = makeObject . unBlob
-
-class IsGObject o => IsBlob o
-toBlob :: IsBlob o => o -> Blob
-toBlob = unsafeCastGObject . toGObject
-
-instance IsBlob Blob
-instance IsGObject Blob where
-  toGObject = GObject . unBlob
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Blob . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToBlob :: IsGObject obj => obj -> JSM Blob
-castToBlob = castTo gTypeBlob "Blob"
-
-gTypeBlob :: JSM GType
-gTypeBlob = GType . Object <$> jsg "Blob"
-#else
-type IsBlob o = BlobClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CDATASection".
--- Base interface functions are in:
---
---     * "JSDOM.Text"
---     * "JSDOM.CharacterData"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CDATASection Mozilla CDATASection documentation>
-newtype CDATASection = CDATASection { unCDATASection :: JSVal }
-
-instance PToJSVal CDATASection where
-  pToJSVal = unCDATASection
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CDATASection where
-  pFromJSVal = CDATASection
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CDATASection where
-  toJSVal = return . unCDATASection
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CDATASection where
-  fromJSVal v = fmap CDATASection <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CDATASection where
-  makeObject = makeObject . unCDATASection
-
-instance IsText CDATASection
-instance IsCharacterData CDATASection
-instance IsNode CDATASection
-instance IsEventTarget CDATASection
-instance IsGObject CDATASection where
-  toGObject = GObject . unCDATASection
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CDATASection . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCDATASection :: IsGObject obj => obj -> JSM CDATASection
-castToCDATASection = castTo gTypeCDATASection "CDATASection"
-
-gTypeCDATASection :: JSM GType
-gTypeCDATASection = GType . Object <$> jsg "CDATASection"
-#else
-type IsCDATASection o = CDATASectionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSS".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSS Mozilla CSS documentation>
-newtype CSS = CSS { unCSS :: JSVal }
-
-instance PToJSVal CSS where
-  pToJSVal = unCSS
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSS where
-  pFromJSVal = CSS
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSS where
-  toJSVal = return . unCSS
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSS where
-  fromJSVal v = fmap CSS <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSS where
-  makeObject = makeObject . unCSS
-
-instance IsGObject CSS where
-  toGObject = GObject . unCSS
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSS . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSS :: IsGObject obj => obj -> JSM CSS
-castToCSS = castTo gTypeCSS "CSS"
-
-gTypeCSS :: JSM GType
-gTypeCSS = GType . Object <$> jsg "CSS"
-#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 "JSDOM.CSSCharsetRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule Mozilla CSSCharsetRule documentation>
-newtype CSSCharsetRule = CSSCharsetRule { unCSSCharsetRule :: JSVal }
-
-instance PToJSVal CSSCharsetRule where
-  pToJSVal = unCSSCharsetRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSCharsetRule where
-  pFromJSVal = CSSCharsetRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSCharsetRule where
-  toJSVal = return . unCSSCharsetRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSCharsetRule where
-  fromJSVal v = fmap CSSCharsetRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSCharsetRule where
-  makeObject = makeObject . unCSSCharsetRule
-
-instance IsCSSRule CSSCharsetRule
-instance IsGObject CSSCharsetRule where
-  toGObject = GObject . unCSSCharsetRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSCharsetRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSCharsetRule :: IsGObject obj => obj -> JSM CSSCharsetRule
-castToCSSCharsetRule = castTo gTypeCSSCharsetRule "CSSCharsetRule"
-
-gTypeCSSCharsetRule :: JSM GType
-gTypeCSSCharsetRule = GType . Object <$> jsg "CSSCharsetRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSFontFaceLoadEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent Mozilla CSSFontFaceLoadEvent documentation>
-newtype CSSFontFaceLoadEvent = CSSFontFaceLoadEvent { unCSSFontFaceLoadEvent :: JSVal }
-
-instance PToJSVal CSSFontFaceLoadEvent where
-  pToJSVal = unCSSFontFaceLoadEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSFontFaceLoadEvent where
-  pFromJSVal = CSSFontFaceLoadEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSFontFaceLoadEvent where
-  toJSVal = return . unCSSFontFaceLoadEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSFontFaceLoadEvent where
-  fromJSVal v = fmap CSSFontFaceLoadEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSFontFaceLoadEvent where
-  makeObject = makeObject . unCSSFontFaceLoadEvent
-
-instance IsEvent CSSFontFaceLoadEvent
-instance IsGObject CSSFontFaceLoadEvent where
-  toGObject = GObject . unCSSFontFaceLoadEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSFontFaceLoadEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSFontFaceLoadEvent :: IsGObject obj => obj -> JSM CSSFontFaceLoadEvent
-castToCSSFontFaceLoadEvent = castTo gTypeCSSFontFaceLoadEvent "CSSFontFaceLoadEvent"
-
-gTypeCSSFontFaceLoadEvent :: JSM GType
-gTypeCSSFontFaceLoadEvent = GType . Object <$> jsg "CSSFontFaceLoadEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSFontFaceRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule Mozilla CSSFontFaceRule documentation>
-newtype CSSFontFaceRule = CSSFontFaceRule { unCSSFontFaceRule :: JSVal }
-
-instance PToJSVal CSSFontFaceRule where
-  pToJSVal = unCSSFontFaceRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSFontFaceRule where
-  pFromJSVal = CSSFontFaceRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSFontFaceRule where
-  toJSVal = return . unCSSFontFaceRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSFontFaceRule where
-  fromJSVal v = fmap CSSFontFaceRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSFontFaceRule where
-  makeObject = makeObject . unCSSFontFaceRule
-
-instance IsCSSRule CSSFontFaceRule
-instance IsGObject CSSFontFaceRule where
-  toGObject = GObject . unCSSFontFaceRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSFontFaceRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSFontFaceRule :: IsGObject obj => obj -> JSM CSSFontFaceRule
-castToCSSFontFaceRule = castTo gTypeCSSFontFaceRule "CSSFontFaceRule"
-
-gTypeCSSFontFaceRule :: JSM GType
-gTypeCSSFontFaceRule = GType . Object <$> jsg "CSSFontFaceRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSImportRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule Mozilla CSSImportRule documentation>
-newtype CSSImportRule = CSSImportRule { unCSSImportRule :: JSVal }
-
-instance PToJSVal CSSImportRule where
-  pToJSVal = unCSSImportRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSImportRule where
-  pFromJSVal = CSSImportRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSImportRule where
-  toJSVal = return . unCSSImportRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSImportRule where
-  fromJSVal v = fmap CSSImportRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSImportRule where
-  makeObject = makeObject . unCSSImportRule
-
-instance IsCSSRule CSSImportRule
-instance IsGObject CSSImportRule where
-  toGObject = GObject . unCSSImportRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSImportRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSImportRule :: IsGObject obj => obj -> JSM CSSImportRule
-castToCSSImportRule = castTo gTypeCSSImportRule "CSSImportRule"
-
-gTypeCSSImportRule :: JSM GType
-gTypeCSSImportRule = GType . Object <$> jsg "CSSImportRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSKeyframeRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule Mozilla CSSKeyframeRule documentation>
-newtype CSSKeyframeRule = CSSKeyframeRule { unCSSKeyframeRule :: JSVal }
-
-instance PToJSVal CSSKeyframeRule where
-  pToJSVal = unCSSKeyframeRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSKeyframeRule where
-  pFromJSVal = CSSKeyframeRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSKeyframeRule where
-  toJSVal = return . unCSSKeyframeRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSKeyframeRule where
-  fromJSVal v = fmap CSSKeyframeRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSKeyframeRule where
-  makeObject = makeObject . unCSSKeyframeRule
-
-instance IsCSSRule CSSKeyframeRule
-instance IsGObject CSSKeyframeRule where
-  toGObject = GObject . unCSSKeyframeRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSKeyframeRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSKeyframeRule :: IsGObject obj => obj -> JSM CSSKeyframeRule
-castToCSSKeyframeRule = castTo gTypeCSSKeyframeRule "CSSKeyframeRule"
-
-gTypeCSSKeyframeRule :: JSM GType
-gTypeCSSKeyframeRule = GType . Object <$> jsg "CSSKeyframeRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSKeyframesRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule Mozilla CSSKeyframesRule documentation>
-newtype CSSKeyframesRule = CSSKeyframesRule { unCSSKeyframesRule :: JSVal }
-
-instance PToJSVal CSSKeyframesRule where
-  pToJSVal = unCSSKeyframesRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSKeyframesRule where
-  pFromJSVal = CSSKeyframesRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSKeyframesRule where
-  toJSVal = return . unCSSKeyframesRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSKeyframesRule where
-  fromJSVal v = fmap CSSKeyframesRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSKeyframesRule where
-  makeObject = makeObject . unCSSKeyframesRule
-
-instance IsCSSRule CSSKeyframesRule
-instance IsGObject CSSKeyframesRule where
-  toGObject = GObject . unCSSKeyframesRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSKeyframesRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSKeyframesRule :: IsGObject obj => obj -> JSM CSSKeyframesRule
-castToCSSKeyframesRule = castTo gTypeCSSKeyframesRule "CSSKeyframesRule"
-
-gTypeCSSKeyframesRule :: JSM GType
-gTypeCSSKeyframesRule = GType . Object <$> jsg "CSSKeyframesRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSMediaRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule Mozilla CSSMediaRule documentation>
-newtype CSSMediaRule = CSSMediaRule { unCSSMediaRule :: JSVal }
-
-instance PToJSVal CSSMediaRule where
-  pToJSVal = unCSSMediaRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSMediaRule where
-  pFromJSVal = CSSMediaRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSMediaRule where
-  toJSVal = return . unCSSMediaRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSMediaRule where
-  fromJSVal v = fmap CSSMediaRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSMediaRule where
-  makeObject = makeObject . unCSSMediaRule
-
-instance IsCSSRule CSSMediaRule
-instance IsGObject CSSMediaRule where
-  toGObject = GObject . unCSSMediaRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSMediaRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSMediaRule :: IsGObject obj => obj -> JSM CSSMediaRule
-castToCSSMediaRule = castTo gTypeCSSMediaRule "CSSMediaRule"
-
-gTypeCSSMediaRule :: JSM GType
-gTypeCSSMediaRule = GType . Object <$> jsg "CSSMediaRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSPageRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule Mozilla CSSPageRule documentation>
-newtype CSSPageRule = CSSPageRule { unCSSPageRule :: JSVal }
-
-instance PToJSVal CSSPageRule where
-  pToJSVal = unCSSPageRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSPageRule where
-  pFromJSVal = CSSPageRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSPageRule where
-  toJSVal = return . unCSSPageRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSPageRule where
-  fromJSVal v = fmap CSSPageRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSPageRule where
-  makeObject = makeObject . unCSSPageRule
-
-instance IsCSSRule CSSPageRule
-instance IsGObject CSSPageRule where
-  toGObject = GObject . unCSSPageRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSPageRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSPageRule :: IsGObject obj => obj -> JSM CSSPageRule
-castToCSSPageRule = castTo gTypeCSSPageRule "CSSPageRule"
-
-gTypeCSSPageRule :: JSM GType
-gTypeCSSPageRule = GType . Object <$> jsg "CSSPageRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSPrimitiveValue".
--- Base interface functions are in:
---
---     * "JSDOM.CSSValue"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue Mozilla CSSPrimitiveValue documentation>
-newtype CSSPrimitiveValue = CSSPrimitiveValue { unCSSPrimitiveValue :: JSVal }
-
-instance PToJSVal CSSPrimitiveValue where
-  pToJSVal = unCSSPrimitiveValue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSPrimitiveValue where
-  pFromJSVal = CSSPrimitiveValue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSPrimitiveValue where
-  toJSVal = return . unCSSPrimitiveValue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSPrimitiveValue where
-  fromJSVal v = fmap CSSPrimitiveValue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSPrimitiveValue where
-  makeObject = makeObject . unCSSPrimitiveValue
-
-instance IsCSSValue CSSPrimitiveValue
-instance IsGObject CSSPrimitiveValue where
-  toGObject = GObject . unCSSPrimitiveValue
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSPrimitiveValue . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSPrimitiveValue :: IsGObject obj => obj -> JSM CSSPrimitiveValue
-castToCSSPrimitiveValue = castTo gTypeCSSPrimitiveValue "CSSPrimitiveValue"
-
-gTypeCSSPrimitiveValue :: JSM GType
-gTypeCSSPrimitiveValue = GType . Object <$> jsg "CSSPrimitiveValue"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSRule".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule Mozilla CSSRule documentation>
-newtype CSSRule = CSSRule { unCSSRule :: JSVal }
-
-instance PToJSVal CSSRule where
-  pToJSVal = unCSSRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSRule where
-  pFromJSVal = CSSRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSRule where
-  toJSVal = return . unCSSRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSRule where
-  fromJSVal v = fmap CSSRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSRule where
-  makeObject = makeObject . unCSSRule
-
-class IsGObject o => IsCSSRule o
-toCSSRule :: IsCSSRule o => o -> CSSRule
-toCSSRule = unsafeCastGObject . toGObject
-
-instance IsCSSRule CSSRule
-instance IsGObject CSSRule where
-  toGObject = GObject . unCSSRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSRule :: IsGObject obj => obj -> JSM CSSRule
-castToCSSRule = castTo gTypeCSSRule "CSSRule"
-
-gTypeCSSRule :: JSM GType
-gTypeCSSRule = GType . Object <$> jsg "CSSRule"
-#else
-type IsCSSRule o = CSSRuleClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSRuleList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList Mozilla CSSRuleList documentation>
-newtype CSSRuleList = CSSRuleList { unCSSRuleList :: JSVal }
-
-instance PToJSVal CSSRuleList where
-  pToJSVal = unCSSRuleList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSRuleList where
-  pFromJSVal = CSSRuleList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSRuleList where
-  toJSVal = return . unCSSRuleList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSRuleList where
-  fromJSVal v = fmap CSSRuleList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSRuleList where
-  makeObject = makeObject . unCSSRuleList
-
-instance IsGObject CSSRuleList where
-  toGObject = GObject . unCSSRuleList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSRuleList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSRuleList :: IsGObject obj => obj -> JSM CSSRuleList
-castToCSSRuleList = castTo gTypeCSSRuleList "CSSRuleList"
-
-gTypeCSSRuleList :: JSM GType
-gTypeCSSRuleList = GType . Object <$> jsg "CSSRuleList"
-#else
-type IsCSSRuleList o = CSSRuleListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSStyleDeclaration".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration Mozilla CSSStyleDeclaration documentation>
-newtype CSSStyleDeclaration = CSSStyleDeclaration { unCSSStyleDeclaration :: JSVal }
-
-instance PToJSVal CSSStyleDeclaration where
-  pToJSVal = unCSSStyleDeclaration
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSStyleDeclaration where
-  pFromJSVal = CSSStyleDeclaration
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSStyleDeclaration where
-  toJSVal = return . unCSSStyleDeclaration
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSStyleDeclaration where
-  fromJSVal v = fmap CSSStyleDeclaration <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSStyleDeclaration where
-  makeObject = makeObject . unCSSStyleDeclaration
-
-instance IsGObject CSSStyleDeclaration where
-  toGObject = GObject . unCSSStyleDeclaration
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSStyleDeclaration . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSStyleDeclaration :: IsGObject obj => obj -> JSM CSSStyleDeclaration
-castToCSSStyleDeclaration = castTo gTypeCSSStyleDeclaration "CSSStyleDeclaration"
-
-gTypeCSSStyleDeclaration :: JSM GType
-gTypeCSSStyleDeclaration = GType . Object <$> jsg "CSSStyleDeclaration"
-#else
-type IsCSSStyleDeclaration o = CSSStyleDeclarationClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSStyleRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule Mozilla CSSStyleRule documentation>
-newtype CSSStyleRule = CSSStyleRule { unCSSStyleRule :: JSVal }
-
-instance PToJSVal CSSStyleRule where
-  pToJSVal = unCSSStyleRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSStyleRule where
-  pFromJSVal = CSSStyleRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSStyleRule where
-  toJSVal = return . unCSSStyleRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSStyleRule where
-  fromJSVal v = fmap CSSStyleRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSStyleRule where
-  makeObject = makeObject . unCSSStyleRule
-
-instance IsCSSRule CSSStyleRule
-instance IsGObject CSSStyleRule where
-  toGObject = GObject . unCSSStyleRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSStyleRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSStyleRule :: IsGObject obj => obj -> JSM CSSStyleRule
-castToCSSStyleRule = castTo gTypeCSSStyleRule "CSSStyleRule"
-
-gTypeCSSStyleRule :: JSM GType
-gTypeCSSStyleRule = GType . Object <$> jsg "CSSStyleRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSStyleSheet".
--- Base interface functions are in:
---
---     * "JSDOM.StyleSheet"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet Mozilla CSSStyleSheet documentation>
-newtype CSSStyleSheet = CSSStyleSheet { unCSSStyleSheet :: JSVal }
-
-instance PToJSVal CSSStyleSheet where
-  pToJSVal = unCSSStyleSheet
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSStyleSheet where
-  pFromJSVal = CSSStyleSheet
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSStyleSheet where
-  toJSVal = return . unCSSStyleSheet
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSStyleSheet where
-  fromJSVal v = fmap CSSStyleSheet <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSStyleSheet where
-  makeObject = makeObject . unCSSStyleSheet
-
-instance IsStyleSheet CSSStyleSheet
-instance IsGObject CSSStyleSheet where
-  toGObject = GObject . unCSSStyleSheet
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSStyleSheet . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSStyleSheet :: IsGObject obj => obj -> JSM CSSStyleSheet
-castToCSSStyleSheet = castTo gTypeCSSStyleSheet "CSSStyleSheet"
-
-gTypeCSSStyleSheet :: JSM GType
-gTypeCSSStyleSheet = GType . Object <$> jsg "CSSStyleSheet"
-#else
-type IsCSSStyleSheet o = CSSStyleSheetClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSSupportsRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule Mozilla CSSSupportsRule documentation>
-newtype CSSSupportsRule = CSSSupportsRule { unCSSSupportsRule :: JSVal }
-
-instance PToJSVal CSSSupportsRule where
-  pToJSVal = unCSSSupportsRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSSupportsRule where
-  pFromJSVal = CSSSupportsRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSSupportsRule where
-  toJSVal = return . unCSSSupportsRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSSupportsRule where
-  fromJSVal v = fmap CSSSupportsRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSSupportsRule where
-  makeObject = makeObject . unCSSSupportsRule
-
-instance IsCSSRule CSSSupportsRule
-instance IsGObject CSSSupportsRule where
-  toGObject = GObject . unCSSSupportsRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSSupportsRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSSupportsRule :: IsGObject obj => obj -> JSM CSSSupportsRule
-castToCSSSupportsRule = castTo gTypeCSSSupportsRule "CSSSupportsRule"
-
-gTypeCSSSupportsRule :: JSM GType
-gTypeCSSSupportsRule = GType . Object <$> jsg "CSSSupportsRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSUnknownRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSUnknownRule Mozilla CSSUnknownRule documentation>
-newtype CSSUnknownRule = CSSUnknownRule { unCSSUnknownRule :: JSVal }
-
-instance PToJSVal CSSUnknownRule where
-  pToJSVal = unCSSUnknownRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSUnknownRule where
-  pFromJSVal = CSSUnknownRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSUnknownRule where
-  toJSVal = return . unCSSUnknownRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSUnknownRule where
-  fromJSVal v = fmap CSSUnknownRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSUnknownRule where
-  makeObject = makeObject . unCSSUnknownRule
-
-instance IsCSSRule CSSUnknownRule
-instance IsGObject CSSUnknownRule where
-  toGObject = GObject . unCSSUnknownRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSUnknownRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSUnknownRule :: IsGObject obj => obj -> JSM CSSUnknownRule
-castToCSSUnknownRule = castTo gTypeCSSUnknownRule "CSSUnknownRule"
-
-gTypeCSSUnknownRule :: JSM GType
-gTypeCSSUnknownRule = GType . Object <$> jsg "CSSUnknownRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSValue".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue Mozilla CSSValue documentation>
-newtype CSSValue = CSSValue { unCSSValue :: JSVal }
-
-instance PToJSVal CSSValue where
-  pToJSVal = unCSSValue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSValue where
-  pFromJSVal = CSSValue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSValue where
-  toJSVal = return . unCSSValue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSValue where
-  fromJSVal v = fmap CSSValue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSValue where
-  makeObject = makeObject . unCSSValue
-
-class IsGObject o => IsCSSValue o
-toCSSValue :: IsCSSValue o => o -> CSSValue
-toCSSValue = unsafeCastGObject . toGObject
-
-instance IsCSSValue CSSValue
-instance IsGObject CSSValue where
-  toGObject = GObject . unCSSValue
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSValue . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSValue :: IsGObject obj => obj -> JSM CSSValue
-castToCSSValue = castTo gTypeCSSValue "CSSValue"
-
-gTypeCSSValue :: JSM GType
-gTypeCSSValue = GType . Object <$> jsg "CSSValue"
-#else
-type IsCSSValue o = CSSValueClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CSSValueList".
--- Base interface functions are in:
---
---     * "JSDOM.CSSValue"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList Mozilla CSSValueList documentation>
-newtype CSSValueList = CSSValueList { unCSSValueList :: JSVal }
-
-instance PToJSVal CSSValueList where
-  pToJSVal = unCSSValueList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CSSValueList where
-  pFromJSVal = CSSValueList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CSSValueList where
-  toJSVal = return . unCSSValueList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CSSValueList where
-  fromJSVal v = fmap CSSValueList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CSSValueList where
-  makeObject = makeObject . unCSSValueList
-
-class IsCSSValue o => IsCSSValueList o
-toCSSValueList :: IsCSSValueList o => o -> CSSValueList
-toCSSValueList = unsafeCastGObject . toGObject
-
-instance IsCSSValueList CSSValueList
-instance IsCSSValue CSSValueList
-instance IsGObject CSSValueList where
-  toGObject = GObject . unCSSValueList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CSSValueList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCSSValueList :: IsGObject obj => obj -> JSM CSSValueList
-castToCSSValueList = castTo gTypeCSSValueList "CSSValueList"
-
-gTypeCSSValueList :: JSM GType
-gTypeCSSValueList = GType . Object <$> jsg "CSSValueList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CanvasGradient".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient Mozilla CanvasGradient documentation>
-newtype CanvasGradient = CanvasGradient { unCanvasGradient :: JSVal }
-
-instance PToJSVal CanvasGradient where
-  pToJSVal = unCanvasGradient
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CanvasGradient where
-  pFromJSVal = CanvasGradient
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CanvasGradient where
-  toJSVal = return . unCanvasGradient
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CanvasGradient where
-  fromJSVal v = fmap CanvasGradient <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CanvasGradient where
-  makeObject = makeObject . unCanvasGradient
-
-instance IsGObject CanvasGradient where
-  toGObject = GObject . unCanvasGradient
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CanvasGradient . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCanvasGradient :: IsGObject obj => obj -> JSM CanvasGradient
-castToCanvasGradient = castTo gTypeCanvasGradient "CanvasGradient"
-
-gTypeCanvasGradient :: JSM GType
-gTypeCanvasGradient = GType . Object <$> jsg "CanvasGradient"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CanvasPattern".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern Mozilla CanvasPattern documentation>
-newtype CanvasPattern = CanvasPattern { unCanvasPattern :: JSVal }
-
-instance PToJSVal CanvasPattern where
-  pToJSVal = unCanvasPattern
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CanvasPattern where
-  pFromJSVal = CanvasPattern
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CanvasPattern where
-  toJSVal = return . unCanvasPattern
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CanvasPattern where
-  fromJSVal v = fmap CanvasPattern <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CanvasPattern where
-  makeObject = makeObject . unCanvasPattern
-
-instance IsGObject CanvasPattern where
-  toGObject = GObject . unCanvasPattern
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CanvasPattern . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCanvasPattern :: IsGObject obj => obj -> JSM CanvasPattern
-castToCanvasPattern = castTo gTypeCanvasPattern "CanvasPattern"
-
-gTypeCanvasPattern :: JSM GType
-gTypeCanvasPattern = GType . Object <$> jsg "CanvasPattern"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CanvasProxy".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasProxy Mozilla CanvasProxy documentation>
-newtype CanvasProxy = CanvasProxy { unCanvasProxy :: JSVal }
-
-instance PToJSVal CanvasProxy where
-  pToJSVal = unCanvasProxy
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CanvasProxy where
-  pFromJSVal = CanvasProxy
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CanvasProxy where
-  toJSVal = return . unCanvasProxy
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CanvasProxy where
-  fromJSVal v = fmap CanvasProxy <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CanvasProxy where
-  makeObject = makeObject . unCanvasProxy
-
-instance IsGObject CanvasProxy where
-  toGObject = GObject . unCanvasProxy
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CanvasProxy . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCanvasProxy :: IsGObject obj => obj -> JSM CanvasProxy
-castToCanvasProxy = castTo gTypeCanvasProxy "CanvasProxy"
-
-gTypeCanvasProxy :: JSM GType
-gTypeCanvasProxy = GType . Object <$> jsg "CanvasProxy"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CanvasRenderingContext".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext Mozilla CanvasRenderingContext documentation>
-newtype CanvasRenderingContext = CanvasRenderingContext { unCanvasRenderingContext :: JSVal }
-
-instance PToJSVal CanvasRenderingContext where
-  pToJSVal = unCanvasRenderingContext
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CanvasRenderingContext where
-  pFromJSVal = CanvasRenderingContext
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CanvasRenderingContext where
-  toJSVal = return . unCanvasRenderingContext
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CanvasRenderingContext where
-  fromJSVal v = fmap CanvasRenderingContext <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CanvasRenderingContext where
-  makeObject = makeObject . unCanvasRenderingContext
-
-class IsGObject o => IsCanvasRenderingContext o
-toCanvasRenderingContext :: IsCanvasRenderingContext o => o -> CanvasRenderingContext
-toCanvasRenderingContext = unsafeCastGObject . toGObject
-
-instance IsCanvasRenderingContext CanvasRenderingContext
-instance IsGObject CanvasRenderingContext where
-  toGObject = GObject . unCanvasRenderingContext
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CanvasRenderingContext . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCanvasRenderingContext :: IsGObject obj => obj -> JSM CanvasRenderingContext
-castToCanvasRenderingContext = castTo gTypeCanvasRenderingContext "CanvasRenderingContext"
-
-gTypeCanvasRenderingContext :: JSM GType
-gTypeCanvasRenderingContext = GType . Object <$> jsg "CanvasRenderingContext"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CanvasRenderingContext2D".
--- Base interface functions are in:
---
---     * "JSDOM.CanvasRenderingContext"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D Mozilla CanvasRenderingContext2D documentation>
-newtype CanvasRenderingContext2D = CanvasRenderingContext2D { unCanvasRenderingContext2D :: JSVal }
-
-instance PToJSVal CanvasRenderingContext2D where
-  pToJSVal = unCanvasRenderingContext2D
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CanvasRenderingContext2D where
-  pFromJSVal = CanvasRenderingContext2D
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CanvasRenderingContext2D where
-  toJSVal = return . unCanvasRenderingContext2D
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CanvasRenderingContext2D where
-  fromJSVal v = fmap CanvasRenderingContext2D <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CanvasRenderingContext2D where
-  makeObject = makeObject . unCanvasRenderingContext2D
-
-instance IsCanvasRenderingContext CanvasRenderingContext2D
-instance IsGObject CanvasRenderingContext2D where
-  toGObject = GObject . unCanvasRenderingContext2D
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CanvasRenderingContext2D . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCanvasRenderingContext2D :: IsGObject obj => obj -> JSM CanvasRenderingContext2D
-castToCanvasRenderingContext2D = castTo gTypeCanvasRenderingContext2D "CanvasRenderingContext2D"
-
-gTypeCanvasRenderingContext2D :: JSM GType
-gTypeCanvasRenderingContext2D = GType . Object <$> jsg "CanvasRenderingContext2D"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CapabilityRange".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange Mozilla CapabilityRange documentation>
-newtype CapabilityRange = CapabilityRange { unCapabilityRange :: JSVal }
-
-instance PToJSVal CapabilityRange where
-  pToJSVal = unCapabilityRange
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CapabilityRange where
-  pFromJSVal = CapabilityRange
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CapabilityRange where
-  toJSVal = return . unCapabilityRange
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CapabilityRange where
-  fromJSVal v = fmap CapabilityRange <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CapabilityRange where
-  makeObject = makeObject . unCapabilityRange
-
-instance IsGObject CapabilityRange where
-  toGObject = GObject . unCapabilityRange
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CapabilityRange . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCapabilityRange :: IsGObject obj => obj -> JSM CapabilityRange
-castToCapabilityRange = castTo gTypeCapabilityRange "CapabilityRange"
-
-gTypeCapabilityRange :: JSM GType
-gTypeCapabilityRange = GType . Object <$> jsg "CapabilityRange"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ChannelMergerNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ChannelMergerNode Mozilla ChannelMergerNode documentation>
-newtype ChannelMergerNode = ChannelMergerNode { unChannelMergerNode :: JSVal }
-
-instance PToJSVal ChannelMergerNode where
-  pToJSVal = unChannelMergerNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ChannelMergerNode where
-  pFromJSVal = ChannelMergerNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ChannelMergerNode where
-  toJSVal = return . unChannelMergerNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ChannelMergerNode where
-  fromJSVal v = fmap ChannelMergerNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ChannelMergerNode where
-  makeObject = makeObject . unChannelMergerNode
-
-instance IsAudioNode ChannelMergerNode
-instance IsEventTarget ChannelMergerNode
-instance IsGObject ChannelMergerNode where
-  toGObject = GObject . unChannelMergerNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ChannelMergerNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToChannelMergerNode :: IsGObject obj => obj -> JSM ChannelMergerNode
-castToChannelMergerNode = castTo gTypeChannelMergerNode "ChannelMergerNode"
-
-gTypeChannelMergerNode :: JSM GType
-gTypeChannelMergerNode = GType . Object <$> jsg "ChannelMergerNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ChannelSplitterNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode Mozilla ChannelSplitterNode documentation>
-newtype ChannelSplitterNode = ChannelSplitterNode { unChannelSplitterNode :: JSVal }
-
-instance PToJSVal ChannelSplitterNode where
-  pToJSVal = unChannelSplitterNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ChannelSplitterNode where
-  pFromJSVal = ChannelSplitterNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ChannelSplitterNode where
-  toJSVal = return . unChannelSplitterNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ChannelSplitterNode where
-  fromJSVal v = fmap ChannelSplitterNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ChannelSplitterNode where
-  makeObject = makeObject . unChannelSplitterNode
-
-instance IsAudioNode ChannelSplitterNode
-instance IsEventTarget ChannelSplitterNode
-instance IsGObject ChannelSplitterNode where
-  toGObject = GObject . unChannelSplitterNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ChannelSplitterNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToChannelSplitterNode :: IsGObject obj => obj -> JSM ChannelSplitterNode
-castToChannelSplitterNode = castTo gTypeChannelSplitterNode "ChannelSplitterNode"
-
-gTypeChannelSplitterNode :: JSM GType
-gTypeChannelSplitterNode = GType . Object <$> jsg "ChannelSplitterNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CharacterData".
--- Base interface functions are in:
---
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData Mozilla CharacterData documentation>
-newtype CharacterData = CharacterData { unCharacterData :: JSVal }
-
-instance PToJSVal CharacterData where
-  pToJSVal = unCharacterData
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CharacterData where
-  pFromJSVal = CharacterData
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CharacterData where
-  toJSVal = return . unCharacterData
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CharacterData where
-  fromJSVal v = fmap CharacterData <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CharacterData where
-  makeObject = makeObject . unCharacterData
-
-class IsNode o => IsCharacterData o
-toCharacterData :: IsCharacterData o => o -> CharacterData
-toCharacterData = unsafeCastGObject . toGObject
-
-instance IsCharacterData CharacterData
-instance IsNode CharacterData
-instance IsEventTarget CharacterData
-instance IsGObject CharacterData where
-  toGObject = GObject . unCharacterData
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CharacterData . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCharacterData :: IsGObject obj => obj -> JSM CharacterData
-castToCharacterData = castTo gTypeCharacterData "CharacterData"
-
-gTypeCharacterData :: JSM GType
-gTypeCharacterData = GType . Object <$> jsg "CharacterData"
-#else
-type IsCharacterData o = CharacterDataClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ChildNode".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode Mozilla ChildNode documentation>
-newtype ChildNode = ChildNode { unChildNode :: JSVal }
-
-instance PToJSVal ChildNode where
-  pToJSVal = unChildNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ChildNode where
-  pFromJSVal = ChildNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ChildNode where
-  toJSVal = return . unChildNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ChildNode where
-  fromJSVal v = fmap ChildNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ChildNode where
-  makeObject = makeObject . unChildNode
-
-instance IsGObject ChildNode where
-  toGObject = GObject . unChildNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ChildNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToChildNode :: IsGObject obj => obj -> JSM ChildNode
-castToChildNode = castTo gTypeChildNode "ChildNode"
-
-gTypeChildNode :: JSM GType
-gTypeChildNode = GType . Object <$> jsg "ChildNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ClientRect".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect Mozilla ClientRect documentation>
-newtype ClientRect = ClientRect { unClientRect :: JSVal }
-
-instance PToJSVal ClientRect where
-  pToJSVal = unClientRect
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ClientRect where
-  pFromJSVal = ClientRect
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ClientRect where
-  toJSVal = return . unClientRect
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ClientRect where
-  fromJSVal v = fmap ClientRect <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ClientRect where
-  makeObject = makeObject . unClientRect
-
-instance IsGObject ClientRect where
-  toGObject = GObject . unClientRect
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ClientRect . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToClientRect :: IsGObject obj => obj -> JSM ClientRect
-castToClientRect = castTo gTypeClientRect "ClientRect"
-
-gTypeClientRect :: JSM GType
-gTypeClientRect = GType . Object <$> jsg "ClientRect"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ClientRectList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList Mozilla ClientRectList documentation>
-newtype ClientRectList = ClientRectList { unClientRectList :: JSVal }
-
-instance PToJSVal ClientRectList where
-  pToJSVal = unClientRectList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ClientRectList where
-  pFromJSVal = ClientRectList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ClientRectList where
-  toJSVal = return . unClientRectList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ClientRectList where
-  fromJSVal v = fmap ClientRectList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ClientRectList where
-  makeObject = makeObject . unClientRectList
-
-instance IsGObject ClientRectList where
-  toGObject = GObject . unClientRectList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ClientRectList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToClientRectList :: IsGObject obj => obj -> JSM ClientRectList
-castToClientRectList = castTo gTypeClientRectList "ClientRectList"
-
-gTypeClientRectList :: JSM GType
-gTypeClientRectList = GType . Object <$> jsg "ClientRectList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CloseEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent Mozilla CloseEvent documentation>
-newtype CloseEvent = CloseEvent { unCloseEvent :: JSVal }
-
-instance PToJSVal CloseEvent where
-  pToJSVal = unCloseEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CloseEvent where
-  pFromJSVal = CloseEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CloseEvent where
-  toJSVal = return . unCloseEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CloseEvent where
-  fromJSVal v = fmap CloseEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CloseEvent where
-  makeObject = makeObject . unCloseEvent
-
-instance IsEvent CloseEvent
-instance IsGObject CloseEvent where
-  toGObject = GObject . unCloseEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CloseEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCloseEvent :: IsGObject obj => obj -> JSM CloseEvent
-castToCloseEvent = castTo gTypeCloseEvent "CloseEvent"
-
-gTypeCloseEvent :: JSM GType
-gTypeCloseEvent = GType . Object <$> jsg "CloseEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CommandLineAPIHost".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost Mozilla CommandLineAPIHost documentation>
-newtype CommandLineAPIHost = CommandLineAPIHost { unCommandLineAPIHost :: JSVal }
-
-instance PToJSVal CommandLineAPIHost where
-  pToJSVal = unCommandLineAPIHost
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CommandLineAPIHost where
-  pFromJSVal = CommandLineAPIHost
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CommandLineAPIHost where
-  toJSVal = return . unCommandLineAPIHost
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CommandLineAPIHost where
-  fromJSVal v = fmap CommandLineAPIHost <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CommandLineAPIHost where
-  makeObject = makeObject . unCommandLineAPIHost
-
-instance IsGObject CommandLineAPIHost where
-  toGObject = GObject . unCommandLineAPIHost
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CommandLineAPIHost . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCommandLineAPIHost :: IsGObject obj => obj -> JSM CommandLineAPIHost
-castToCommandLineAPIHost = castTo gTypeCommandLineAPIHost "CommandLineAPIHost"
-
-gTypeCommandLineAPIHost :: JSM GType
-gTypeCommandLineAPIHost = GType . Object <$> jsg "CommandLineAPIHost"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Comment".
--- Base interface functions are in:
---
---     * "JSDOM.CharacterData"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation>
-newtype Comment = Comment { unComment :: JSVal }
-
-instance PToJSVal Comment where
-  pToJSVal = unComment
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Comment where
-  pFromJSVal = Comment
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Comment where
-  toJSVal = return . unComment
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Comment where
-  fromJSVal v = fmap Comment <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Comment where
-  makeObject = makeObject . unComment
-
-instance IsCharacterData Comment
-instance IsNode Comment
-instance IsEventTarget Comment
-instance IsGObject Comment where
-  toGObject = GObject . unComment
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Comment . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToComment :: IsGObject obj => obj -> JSM Comment
-castToComment = castTo gTypeComment "Comment"
-
-gTypeComment :: JSM GType
-gTypeComment = GType . Object <$> jsg "Comment"
-#else
-type IsComment o = CommentClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CompositionEvent".
--- Base interface functions are in:
---
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent Mozilla CompositionEvent documentation>
-newtype CompositionEvent = CompositionEvent { unCompositionEvent :: JSVal }
-
-instance PToJSVal CompositionEvent where
-  pToJSVal = unCompositionEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CompositionEvent where
-  pFromJSVal = CompositionEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CompositionEvent where
-  toJSVal = return . unCompositionEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CompositionEvent where
-  fromJSVal v = fmap CompositionEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CompositionEvent where
-  makeObject = makeObject . unCompositionEvent
-
-instance IsUIEvent CompositionEvent
-instance IsEvent CompositionEvent
-instance IsGObject CompositionEvent where
-  toGObject = GObject . unCompositionEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CompositionEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCompositionEvent :: IsGObject obj => obj -> JSM CompositionEvent
-castToCompositionEvent = castTo gTypeCompositionEvent "CompositionEvent"
-
-gTypeCompositionEvent :: JSM GType
-gTypeCompositionEvent = GType . Object <$> jsg "CompositionEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ConvolverNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode Mozilla ConvolverNode documentation>
-newtype ConvolverNode = ConvolverNode { unConvolverNode :: JSVal }
-
-instance PToJSVal ConvolverNode where
-  pToJSVal = unConvolverNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ConvolverNode where
-  pFromJSVal = ConvolverNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ConvolverNode where
-  toJSVal = return . unConvolverNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ConvolverNode where
-  fromJSVal v = fmap ConvolverNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ConvolverNode where
-  makeObject = makeObject . unConvolverNode
-
-instance IsAudioNode ConvolverNode
-instance IsEventTarget ConvolverNode
-instance IsGObject ConvolverNode where
-  toGObject = GObject . unConvolverNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ConvolverNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToConvolverNode :: IsGObject obj => obj -> JSM ConvolverNode
-castToConvolverNode = castTo gTypeConvolverNode "ConvolverNode"
-
-gTypeConvolverNode :: JSM GType
-gTypeConvolverNode = GType . Object <$> jsg "ConvolverNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Coordinates".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates Mozilla Coordinates documentation>
-newtype Coordinates = Coordinates { unCoordinates :: JSVal }
-
-instance PToJSVal Coordinates where
-  pToJSVal = unCoordinates
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Coordinates where
-  pFromJSVal = Coordinates
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Coordinates where
-  toJSVal = return . unCoordinates
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Coordinates where
-  fromJSVal v = fmap Coordinates <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Coordinates where
-  makeObject = makeObject . unCoordinates
-
-instance IsGObject Coordinates where
-  toGObject = GObject . unCoordinates
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Coordinates . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCoordinates :: IsGObject obj => obj -> JSM Coordinates
-castToCoordinates = castTo gTypeCoordinates "Coordinates"
-
-gTypeCoordinates :: JSM GType
-gTypeCoordinates = GType . Object <$> jsg "Coordinates"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Counter".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Counter Mozilla Counter documentation>
-newtype Counter = Counter { unCounter :: JSVal }
-
-instance PToJSVal Counter where
-  pToJSVal = unCounter
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Counter where
-  pFromJSVal = Counter
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Counter where
-  toJSVal = return . unCounter
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Counter where
-  fromJSVal v = fmap Counter <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Counter where
-  makeObject = makeObject . unCounter
-
-instance IsGObject Counter where
-  toGObject = GObject . unCounter
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Counter . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCounter :: IsGObject obj => obj -> JSM Counter
-castToCounter = castTo gTypeCounter "Counter"
-
-gTypeCounter :: JSM GType
-gTypeCounter = GType . Object <$> jsg "Counter"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Crypto".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Crypto Mozilla Crypto documentation>
-newtype Crypto = Crypto { unCrypto :: JSVal }
-
-instance PToJSVal Crypto where
-  pToJSVal = unCrypto
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Crypto where
-  pFromJSVal = Crypto
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Crypto where
-  toJSVal = return . unCrypto
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Crypto where
-  fromJSVal v = fmap Crypto <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Crypto where
-  makeObject = makeObject . unCrypto
-
-instance IsGObject Crypto where
-  toGObject = GObject . unCrypto
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Crypto . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCrypto :: IsGObject obj => obj -> JSM Crypto
-castToCrypto = castTo gTypeCrypto "Crypto"
-
-gTypeCrypto :: JSM GType
-gTypeCrypto = GType . Object <$> jsg "Crypto"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CryptoKey".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey Mozilla CryptoKey documentation>
-newtype CryptoKey = CryptoKey { unCryptoKey :: JSVal }
-
-instance PToJSVal CryptoKey where
-  pToJSVal = unCryptoKey
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CryptoKey where
-  pFromJSVal = CryptoKey
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CryptoKey where
-  toJSVal = return . unCryptoKey
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CryptoKey where
-  fromJSVal v = fmap CryptoKey <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CryptoKey where
-  makeObject = makeObject . unCryptoKey
-
-instance IsGObject CryptoKey where
-  toGObject = GObject . unCryptoKey
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CryptoKey . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCryptoKey :: IsGObject obj => obj -> JSM CryptoKey
-castToCryptoKey = castTo gTypeCryptoKey "CryptoKey"
-
-gTypeCryptoKey :: JSM GType
-gTypeCryptoKey = GType . Object <$> jsg "CryptoKey"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CryptoKeyPair".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair Mozilla CryptoKeyPair documentation>
-newtype CryptoKeyPair = CryptoKeyPair { unCryptoKeyPair :: JSVal }
-
-instance PToJSVal CryptoKeyPair where
-  pToJSVal = unCryptoKeyPair
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CryptoKeyPair where
-  pFromJSVal = CryptoKeyPair
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CryptoKeyPair where
-  toJSVal = return . unCryptoKeyPair
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CryptoKeyPair where
-  fromJSVal v = fmap CryptoKeyPair <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CryptoKeyPair where
-  makeObject = makeObject . unCryptoKeyPair
-
-instance IsGObject CryptoKeyPair where
-  toGObject = GObject . unCryptoKeyPair
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CryptoKeyPair . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCryptoKeyPair :: IsGObject obj => obj -> JSM CryptoKeyPair
-castToCryptoKeyPair = castTo gTypeCryptoKeyPair "CryptoKeyPair"
-
-gTypeCryptoKeyPair :: JSM GType
-gTypeCryptoKeyPair = GType . Object <$> jsg "CryptoKeyPair"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.CustomEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent Mozilla CustomEvent documentation>
-newtype CustomEvent = CustomEvent { unCustomEvent :: JSVal }
-
-instance PToJSVal CustomEvent where
-  pToJSVal = unCustomEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal CustomEvent where
-  pFromJSVal = CustomEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal CustomEvent where
-  toJSVal = return . unCustomEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal CustomEvent where
-  fromJSVal v = fmap CustomEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject CustomEvent where
-  makeObject = makeObject . unCustomEvent
-
-instance IsEvent CustomEvent
-instance IsGObject CustomEvent where
-  toGObject = GObject . unCustomEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = CustomEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToCustomEvent :: IsGObject obj => obj -> JSM CustomEvent
-castToCustomEvent = castTo gTypeCustomEvent "CustomEvent"
-
-gTypeCustomEvent :: JSM GType
-gTypeCustomEvent = GType . Object <$> jsg "CustomEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DOMError".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DOMError Mozilla DOMError documentation>
-newtype DOMError = DOMError { unDOMError :: JSVal }
-
-instance PToJSVal DOMError where
-  pToJSVal = unDOMError
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMError where
-  pFromJSVal = DOMError
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMError where
-  toJSVal = return . unDOMError
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMError where
-  fromJSVal v = fmap DOMError <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DOMError where
-  makeObject = makeObject . unDOMError
-
-class IsGObject o => IsDOMError o
-toDOMError :: IsDOMError o => o -> DOMError
-toDOMError = unsafeCastGObject . toGObject
-
-instance IsDOMError DOMError
-instance IsGObject DOMError where
-  toGObject = GObject . unDOMError
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DOMError . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDOMError :: IsGObject obj => obj -> JSM DOMError
-castToDOMError = castTo gTypeDOMError "DOMError"
-
-gTypeDOMError :: JSM GType
-gTypeDOMError = GType . Object <$> jsg "DOMError"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DOMImplementation".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation Mozilla DOMImplementation documentation>
-newtype DOMImplementation = DOMImplementation { unDOMImplementation :: JSVal }
-
-instance PToJSVal DOMImplementation where
-  pToJSVal = unDOMImplementation
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMImplementation where
-  pFromJSVal = DOMImplementation
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMImplementation where
-  toJSVal = return . unDOMImplementation
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMImplementation where
-  fromJSVal v = fmap DOMImplementation <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DOMImplementation where
-  makeObject = makeObject . unDOMImplementation
-
-instance IsGObject DOMImplementation where
-  toGObject = GObject . unDOMImplementation
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DOMImplementation . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDOMImplementation :: IsGObject obj => obj -> JSM DOMImplementation
-castToDOMImplementation = castTo gTypeDOMImplementation "DOMImplementation"
-
-gTypeDOMImplementation :: JSM GType
-gTypeDOMImplementation = GType . Object <$> jsg "DOMImplementation"
-#else
-type IsDOMImplementation o = DOMImplementationClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DOMNamedFlowCollection".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection Mozilla WebKitNamedFlowCollection documentation>
-newtype DOMNamedFlowCollection = DOMNamedFlowCollection { unDOMNamedFlowCollection :: JSVal }
-
-instance PToJSVal DOMNamedFlowCollection where
-  pToJSVal = unDOMNamedFlowCollection
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMNamedFlowCollection where
-  pFromJSVal = DOMNamedFlowCollection
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMNamedFlowCollection where
-  toJSVal = return . unDOMNamedFlowCollection
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMNamedFlowCollection where
-  fromJSVal v = fmap DOMNamedFlowCollection <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DOMNamedFlowCollection where
-  makeObject = makeObject . unDOMNamedFlowCollection
-
-instance IsGObject DOMNamedFlowCollection where
-  toGObject = GObject . unDOMNamedFlowCollection
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DOMNamedFlowCollection . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDOMNamedFlowCollection :: IsGObject obj => obj -> JSM DOMNamedFlowCollection
-castToDOMNamedFlowCollection = castTo gTypeDOMNamedFlowCollection "DOMNamedFlowCollection"
-
-gTypeDOMNamedFlowCollection :: JSM GType
-gTypeDOMNamedFlowCollection = GType . Object <$> jsg "WebKitNamedFlowCollection"
-#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 "JSDOM.DOMParser".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation>
-newtype DOMParser = DOMParser { unDOMParser :: JSVal }
-
-instance PToJSVal DOMParser where
-  pToJSVal = unDOMParser
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMParser where
-  pFromJSVal = DOMParser
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMParser where
-  toJSVal = return . unDOMParser
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMParser where
-  fromJSVal v = fmap DOMParser <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DOMParser where
-  makeObject = makeObject . unDOMParser
-
-instance IsGObject DOMParser where
-  toGObject = GObject . unDOMParser
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DOMParser . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDOMParser :: IsGObject obj => obj -> JSM DOMParser
-castToDOMParser = castTo gTypeDOMParser "DOMParser"
-
-gTypeDOMParser :: JSM GType
-gTypeDOMParser = GType . Object <$> jsg "DOMParser"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DOMSettableTokenList".
--- Base interface functions are in:
---
---     * "JSDOM.DOMTokenList"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList Mozilla DOMSettableTokenList documentation>
-newtype DOMSettableTokenList = DOMSettableTokenList { unDOMSettableTokenList :: JSVal }
-
-instance PToJSVal DOMSettableTokenList where
-  pToJSVal = unDOMSettableTokenList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMSettableTokenList where
-  pFromJSVal = DOMSettableTokenList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMSettableTokenList where
-  toJSVal = return . unDOMSettableTokenList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMSettableTokenList where
-  fromJSVal v = fmap DOMSettableTokenList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DOMSettableTokenList where
-  makeObject = makeObject . unDOMSettableTokenList
-
-instance IsDOMTokenList DOMSettableTokenList
-instance IsGObject DOMSettableTokenList where
-  toGObject = GObject . unDOMSettableTokenList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DOMSettableTokenList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDOMSettableTokenList :: IsGObject obj => obj -> JSM DOMSettableTokenList
-castToDOMSettableTokenList = castTo gTypeDOMSettableTokenList "DOMSettableTokenList"
-
-gTypeDOMSettableTokenList :: JSM GType
-gTypeDOMSettableTokenList = GType . Object <$> jsg "DOMSettableTokenList"
-#else
-type IsDOMSettableTokenList o = DOMSettableTokenListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DOMStringList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList Mozilla DOMStringList documentation>
-newtype DOMStringList = DOMStringList { unDOMStringList :: JSVal }
-
-instance PToJSVal DOMStringList where
-  pToJSVal = unDOMStringList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMStringList where
-  pFromJSVal = DOMStringList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMStringList where
-  toJSVal = return . unDOMStringList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMStringList where
-  fromJSVal v = fmap DOMStringList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DOMStringList where
-  makeObject = makeObject . unDOMStringList
-
-instance IsGObject DOMStringList where
-  toGObject = GObject . unDOMStringList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DOMStringList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDOMStringList :: IsGObject obj => obj -> JSM DOMStringList
-castToDOMStringList = castTo gTypeDOMStringList "DOMStringList"
-
-gTypeDOMStringList :: JSM GType
-gTypeDOMStringList = GType . Object <$> jsg "DOMStringList"
-#else
-type IsDOMStringList o = DOMStringListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DOMStringMap".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap Mozilla DOMStringMap documentation>
-newtype DOMStringMap = DOMStringMap { unDOMStringMap :: JSVal }
-
-instance PToJSVal DOMStringMap where
-  pToJSVal = unDOMStringMap
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMStringMap where
-  pFromJSVal = DOMStringMap
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMStringMap where
-  toJSVal = return . unDOMStringMap
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMStringMap where
-  fromJSVal v = fmap DOMStringMap <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DOMStringMap where
-  makeObject = makeObject . unDOMStringMap
-
-instance IsGObject DOMStringMap where
-  toGObject = GObject . unDOMStringMap
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DOMStringMap . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDOMStringMap :: IsGObject obj => obj -> JSM DOMStringMap
-castToDOMStringMap = castTo gTypeDOMStringMap "DOMStringMap"
-
-gTypeDOMStringMap :: JSM GType
-gTypeDOMStringMap = GType . Object <$> jsg "DOMStringMap"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DOMTokenList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList Mozilla DOMTokenList documentation>
-newtype DOMTokenList = DOMTokenList { unDOMTokenList :: JSVal }
-
-instance PToJSVal DOMTokenList where
-  pToJSVal = unDOMTokenList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DOMTokenList where
-  pFromJSVal = DOMTokenList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DOMTokenList where
-  toJSVal = return . unDOMTokenList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DOMTokenList where
-  fromJSVal v = fmap DOMTokenList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DOMTokenList where
-  makeObject = makeObject . unDOMTokenList
-
-class IsGObject o => IsDOMTokenList o
-toDOMTokenList :: IsDOMTokenList o => o -> DOMTokenList
-toDOMTokenList = unsafeCastGObject . toGObject
-
-instance IsDOMTokenList DOMTokenList
-instance IsGObject DOMTokenList where
-  toGObject = GObject . unDOMTokenList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DOMTokenList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDOMTokenList :: IsGObject obj => obj -> JSM DOMTokenList
-castToDOMTokenList = castTo gTypeDOMTokenList "DOMTokenList"
-
-gTypeDOMTokenList :: JSM GType
-gTypeDOMTokenList = GType . Object <$> jsg "DOMTokenList"
-#else
-type IsDOMTokenList o = DOMTokenListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DataCue".
--- Base interface functions are in:
---
---     * "JSDOM.TextTrackCue"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation>
-newtype DataCue = DataCue { unDataCue :: JSVal }
-
-instance PToJSVal DataCue where
-  pToJSVal = unDataCue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DataCue where
-  pFromJSVal = DataCue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DataCue where
-  toJSVal = return . unDataCue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DataCue where
-  fromJSVal v = fmap DataCue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DataCue where
-  makeObject = makeObject . unDataCue
-
-instance IsTextTrackCue DataCue
-instance IsEventTarget DataCue
-instance IsGObject DataCue where
-  toGObject = GObject . unDataCue
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DataCue . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDataCue :: IsGObject obj => obj -> JSM DataCue
-castToDataCue = castTo gTypeDataCue "DataCue"
-
-gTypeDataCue :: JSM GType
-gTypeDataCue = GType . Object <$> jsg "WebKitDataCue"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DataTransfer".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer Mozilla DataTransfer documentation>
-newtype DataTransfer = DataTransfer { unDataTransfer :: JSVal }
-
-instance PToJSVal DataTransfer where
-  pToJSVal = unDataTransfer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DataTransfer where
-  pFromJSVal = DataTransfer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DataTransfer where
-  toJSVal = return . unDataTransfer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DataTransfer where
-  fromJSVal v = fmap DataTransfer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DataTransfer where
-  makeObject = makeObject . unDataTransfer
-
-instance IsGObject DataTransfer where
-  toGObject = GObject . unDataTransfer
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DataTransfer . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDataTransfer :: IsGObject obj => obj -> JSM DataTransfer
-castToDataTransfer = castTo gTypeDataTransfer "DataTransfer"
-
-gTypeDataTransfer :: JSM GType
-gTypeDataTransfer = GType . Object <$> jsg "DataTransfer"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DataTransferItem".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem Mozilla DataTransferItem documentation>
-newtype DataTransferItem = DataTransferItem { unDataTransferItem :: JSVal }
-
-instance PToJSVal DataTransferItem where
-  pToJSVal = unDataTransferItem
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DataTransferItem where
-  pFromJSVal = DataTransferItem
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DataTransferItem where
-  toJSVal = return . unDataTransferItem
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DataTransferItem where
-  fromJSVal v = fmap DataTransferItem <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DataTransferItem where
-  makeObject = makeObject . unDataTransferItem
-
-instance IsGObject DataTransferItem where
-  toGObject = GObject . unDataTransferItem
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DataTransferItem . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDataTransferItem :: IsGObject obj => obj -> JSM DataTransferItem
-castToDataTransferItem = castTo gTypeDataTransferItem "DataTransferItem"
-
-gTypeDataTransferItem :: JSM GType
-gTypeDataTransferItem = GType . Object <$> jsg "DataTransferItem"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DataTransferItemList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList Mozilla DataTransferItemList documentation>
-newtype DataTransferItemList = DataTransferItemList { unDataTransferItemList :: JSVal }
-
-instance PToJSVal DataTransferItemList where
-  pToJSVal = unDataTransferItemList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DataTransferItemList where
-  pFromJSVal = DataTransferItemList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DataTransferItemList where
-  toJSVal = return . unDataTransferItemList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DataTransferItemList where
-  fromJSVal v = fmap DataTransferItemList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DataTransferItemList where
-  makeObject = makeObject . unDataTransferItemList
-
-instance IsGObject DataTransferItemList where
-  toGObject = GObject . unDataTransferItemList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DataTransferItemList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDataTransferItemList :: IsGObject obj => obj -> JSM DataTransferItemList
-castToDataTransferItemList = castTo gTypeDataTransferItemList "DataTransferItemList"
-
-gTypeDataTransferItemList :: JSM GType
-gTypeDataTransferItemList = GType . Object <$> jsg "DataTransferItemList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Database".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Database Mozilla Database documentation>
-newtype Database = Database { unDatabase :: JSVal }
-
-instance PToJSVal Database where
-  pToJSVal = unDatabase
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Database where
-  pFromJSVal = Database
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Database where
-  toJSVal = return . unDatabase
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Database where
-  fromJSVal v = fmap Database <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Database where
-  makeObject = makeObject . unDatabase
-
-instance IsGObject Database where
-  toGObject = GObject . unDatabase
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Database . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDatabase :: IsGObject obj => obj -> JSM Database
-castToDatabase = castTo gTypeDatabase "Database"
-
-gTypeDatabase :: JSM GType
-gTypeDatabase = GType . Object <$> jsg "Database"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DedicatedWorkerGlobalScope".
--- Base interface functions are in:
---
---     * "JSDOM.WorkerGlobalScope"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope Mozilla DedicatedWorkerGlobalScope documentation>
-newtype DedicatedWorkerGlobalScope = DedicatedWorkerGlobalScope { unDedicatedWorkerGlobalScope :: JSVal }
-
-instance PToJSVal DedicatedWorkerGlobalScope where
-  pToJSVal = unDedicatedWorkerGlobalScope
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DedicatedWorkerGlobalScope where
-  pFromJSVal = DedicatedWorkerGlobalScope
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DedicatedWorkerGlobalScope where
-  toJSVal = return . unDedicatedWorkerGlobalScope
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DedicatedWorkerGlobalScope where
-  fromJSVal v = fmap DedicatedWorkerGlobalScope <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DedicatedWorkerGlobalScope where
-  makeObject = makeObject . unDedicatedWorkerGlobalScope
-
-instance IsWorkerGlobalScope DedicatedWorkerGlobalScope
-instance IsEventTarget DedicatedWorkerGlobalScope
-instance IsGObject DedicatedWorkerGlobalScope where
-  toGObject = GObject . unDedicatedWorkerGlobalScope
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DedicatedWorkerGlobalScope . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDedicatedWorkerGlobalScope :: IsGObject obj => obj -> JSM DedicatedWorkerGlobalScope
-castToDedicatedWorkerGlobalScope = castTo gTypeDedicatedWorkerGlobalScope "DedicatedWorkerGlobalScope"
-
-gTypeDedicatedWorkerGlobalScope :: JSM GType
-gTypeDedicatedWorkerGlobalScope = GType . Object <$> jsg "DedicatedWorkerGlobalScope"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DelayNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode Mozilla DelayNode documentation>
-newtype DelayNode = DelayNode { unDelayNode :: JSVal }
-
-instance PToJSVal DelayNode where
-  pToJSVal = unDelayNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DelayNode where
-  pFromJSVal = DelayNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DelayNode where
-  toJSVal = return . unDelayNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DelayNode where
-  fromJSVal v = fmap DelayNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DelayNode where
-  makeObject = makeObject . unDelayNode
-
-instance IsAudioNode DelayNode
-instance IsEventTarget DelayNode
-instance IsGObject DelayNode where
-  toGObject = GObject . unDelayNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DelayNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDelayNode :: IsGObject obj => obj -> JSM DelayNode
-castToDelayNode = castTo gTypeDelayNode "DelayNode"
-
-gTypeDelayNode :: JSM GType
-gTypeDelayNode = GType . Object <$> jsg "DelayNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DeviceMotionEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent Mozilla DeviceMotionEvent documentation>
-newtype DeviceMotionEvent = DeviceMotionEvent { unDeviceMotionEvent :: JSVal }
-
-instance PToJSVal DeviceMotionEvent where
-  pToJSVal = unDeviceMotionEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DeviceMotionEvent where
-  pFromJSVal = DeviceMotionEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DeviceMotionEvent where
-  toJSVal = return . unDeviceMotionEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DeviceMotionEvent where
-  fromJSVal v = fmap DeviceMotionEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DeviceMotionEvent where
-  makeObject = makeObject . unDeviceMotionEvent
-
-instance IsEvent DeviceMotionEvent
-instance IsGObject DeviceMotionEvent where
-  toGObject = GObject . unDeviceMotionEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DeviceMotionEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDeviceMotionEvent :: IsGObject obj => obj -> JSM DeviceMotionEvent
-castToDeviceMotionEvent = castTo gTypeDeviceMotionEvent "DeviceMotionEvent"
-
-gTypeDeviceMotionEvent :: JSM GType
-gTypeDeviceMotionEvent = GType . Object <$> jsg "DeviceMotionEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DeviceOrientationEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent Mozilla DeviceOrientationEvent documentation>
-newtype DeviceOrientationEvent = DeviceOrientationEvent { unDeviceOrientationEvent :: JSVal }
-
-instance PToJSVal DeviceOrientationEvent where
-  pToJSVal = unDeviceOrientationEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DeviceOrientationEvent where
-  pFromJSVal = DeviceOrientationEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DeviceOrientationEvent where
-  toJSVal = return . unDeviceOrientationEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DeviceOrientationEvent where
-  fromJSVal v = fmap DeviceOrientationEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DeviceOrientationEvent where
-  makeObject = makeObject . unDeviceOrientationEvent
-
-instance IsEvent DeviceOrientationEvent
-instance IsGObject DeviceOrientationEvent where
-  toGObject = GObject . unDeviceOrientationEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DeviceOrientationEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDeviceOrientationEvent :: IsGObject obj => obj -> JSM DeviceOrientationEvent
-castToDeviceOrientationEvent = castTo gTypeDeviceOrientationEvent "DeviceOrientationEvent"
-
-gTypeDeviceOrientationEvent :: JSM GType
-gTypeDeviceOrientationEvent = GType . Object <$> jsg "DeviceOrientationEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DeviceProximityEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent Mozilla DeviceProximityEvent documentation>
-newtype DeviceProximityEvent = DeviceProximityEvent { unDeviceProximityEvent :: JSVal }
-
-instance PToJSVal DeviceProximityEvent where
-  pToJSVal = unDeviceProximityEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DeviceProximityEvent where
-  pFromJSVal = DeviceProximityEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DeviceProximityEvent where
-  toJSVal = return . unDeviceProximityEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DeviceProximityEvent where
-  fromJSVal v = fmap DeviceProximityEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DeviceProximityEvent where
-  makeObject = makeObject . unDeviceProximityEvent
-
-instance IsEvent DeviceProximityEvent
-instance IsGObject DeviceProximityEvent where
-  toGObject = GObject . unDeviceProximityEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DeviceProximityEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDeviceProximityEvent :: IsGObject obj => obj -> JSM DeviceProximityEvent
-castToDeviceProximityEvent = castTo gTypeDeviceProximityEvent "DeviceProximityEvent"
-
-gTypeDeviceProximityEvent :: JSM GType
-gTypeDeviceProximityEvent = GType . Object <$> jsg "DeviceProximityEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Document".
--- Base interface functions are in:
---
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation>
-newtype Document = Document { unDocument :: JSVal }
-
-instance PToJSVal Document where
-  pToJSVal = unDocument
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Document where
-  pFromJSVal = Document
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Document where
-  toJSVal = return . unDocument
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Document where
-  fromJSVal v = fmap Document <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Document where
-  makeObject = makeObject . unDocument
-
-class IsNode o => IsDocument o
-toDocument :: IsDocument o => o -> Document
-toDocument = unsafeCastGObject . toGObject
-
-instance IsDocument Document
-instance IsNode Document
-instance IsEventTarget Document
-instance IsGObject Document where
-  toGObject = GObject . unDocument
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Document . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDocument :: IsGObject obj => obj -> JSM Document
-castToDocument = castTo gTypeDocument "Document"
-
-gTypeDocument :: JSM GType
-gTypeDocument = GType . Object <$> jsg "Document"
-#else
-type IsDocument o = DocumentClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DocumentFragment".
--- Base interface functions are in:
---
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation>
-newtype DocumentFragment = DocumentFragment { unDocumentFragment :: JSVal }
-
-instance PToJSVal DocumentFragment where
-  pToJSVal = unDocumentFragment
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DocumentFragment where
-  pFromJSVal = DocumentFragment
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DocumentFragment where
-  toJSVal = return . unDocumentFragment
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DocumentFragment where
-  fromJSVal v = fmap DocumentFragment <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DocumentFragment where
-  makeObject = makeObject . unDocumentFragment
-
-instance IsNode DocumentFragment
-instance IsEventTarget DocumentFragment
-instance IsGObject DocumentFragment where
-  toGObject = GObject . unDocumentFragment
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DocumentFragment . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDocumentFragment :: IsGObject obj => obj -> JSM DocumentFragment
-castToDocumentFragment = castTo gTypeDocumentFragment "DocumentFragment"
-
-gTypeDocumentFragment :: JSM GType
-gTypeDocumentFragment = GType . Object <$> jsg "DocumentFragment"
-#else
-type IsDocumentFragment o = DocumentFragmentClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DocumentType".
--- Base interface functions are in:
---
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType Mozilla DocumentType documentation>
-newtype DocumentType = DocumentType { unDocumentType :: JSVal }
-
-instance PToJSVal DocumentType where
-  pToJSVal = unDocumentType
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DocumentType where
-  pFromJSVal = DocumentType
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DocumentType where
-  toJSVal = return . unDocumentType
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DocumentType where
-  fromJSVal v = fmap DocumentType <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DocumentType where
-  makeObject = makeObject . unDocumentType
-
-instance IsNode DocumentType
-instance IsEventTarget DocumentType
-instance IsGObject DocumentType where
-  toGObject = GObject . unDocumentType
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DocumentType . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDocumentType :: IsGObject obj => obj -> JSM DocumentType
-castToDocumentType = castTo gTypeDocumentType "DocumentType"
-
-gTypeDocumentType :: JSM GType
-gTypeDocumentType = GType . Object <$> jsg "DocumentType"
-#else
-type IsDocumentType o = DocumentTypeClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.DynamicsCompressorNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode Mozilla DynamicsCompressorNode documentation>
-newtype DynamicsCompressorNode = DynamicsCompressorNode { unDynamicsCompressorNode :: JSVal }
-
-instance PToJSVal DynamicsCompressorNode where
-  pToJSVal = unDynamicsCompressorNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal DynamicsCompressorNode where
-  pFromJSVal = DynamicsCompressorNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal DynamicsCompressorNode where
-  toJSVal = return . unDynamicsCompressorNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal DynamicsCompressorNode where
-  fromJSVal v = fmap DynamicsCompressorNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject DynamicsCompressorNode where
-  makeObject = makeObject . unDynamicsCompressorNode
-
-instance IsAudioNode DynamicsCompressorNode
-instance IsEventTarget DynamicsCompressorNode
-instance IsGObject DynamicsCompressorNode where
-  toGObject = GObject . unDynamicsCompressorNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = DynamicsCompressorNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToDynamicsCompressorNode :: IsGObject obj => obj -> JSM DynamicsCompressorNode
-castToDynamicsCompressorNode = castTo gTypeDynamicsCompressorNode "DynamicsCompressorNode"
-
-gTypeDynamicsCompressorNode :: JSM GType
-gTypeDynamicsCompressorNode = GType . Object <$> jsg "DynamicsCompressorNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EXTBlendMinMax".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EXTBlendMinMax Mozilla EXTBlendMinMax documentation>
-newtype EXTBlendMinMax = EXTBlendMinMax { unEXTBlendMinMax :: JSVal }
-
-instance PToJSVal EXTBlendMinMax where
-  pToJSVal = unEXTBlendMinMax
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EXTBlendMinMax where
-  pFromJSVal = EXTBlendMinMax
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EXTBlendMinMax where
-  toJSVal = return . unEXTBlendMinMax
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EXTBlendMinMax where
-  fromJSVal v = fmap EXTBlendMinMax <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EXTBlendMinMax where
-  makeObject = makeObject . unEXTBlendMinMax
-
-instance IsGObject EXTBlendMinMax where
-  toGObject = GObject . unEXTBlendMinMax
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EXTBlendMinMax . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEXTBlendMinMax :: IsGObject obj => obj -> JSM EXTBlendMinMax
-castToEXTBlendMinMax = castTo gTypeEXTBlendMinMax "EXTBlendMinMax"
-
-gTypeEXTBlendMinMax :: JSM GType
-gTypeEXTBlendMinMax = GType . Object <$> jsg "EXTBlendMinMax"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EXTFragDepth".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EXTFragDepth Mozilla EXTFragDepth documentation>
-newtype EXTFragDepth = EXTFragDepth { unEXTFragDepth :: JSVal }
-
-instance PToJSVal EXTFragDepth where
-  pToJSVal = unEXTFragDepth
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EXTFragDepth where
-  pFromJSVal = EXTFragDepth
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EXTFragDepth where
-  toJSVal = return . unEXTFragDepth
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EXTFragDepth where
-  fromJSVal v = fmap EXTFragDepth <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EXTFragDepth where
-  makeObject = makeObject . unEXTFragDepth
-
-instance IsGObject EXTFragDepth where
-  toGObject = GObject . unEXTFragDepth
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EXTFragDepth . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEXTFragDepth :: IsGObject obj => obj -> JSM EXTFragDepth
-castToEXTFragDepth = castTo gTypeEXTFragDepth "EXTFragDepth"
-
-gTypeEXTFragDepth :: JSM GType
-gTypeEXTFragDepth = GType . Object <$> jsg "EXTFragDepth"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EXTShaderTextureLOD".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EXTShaderTextureLOD Mozilla EXTShaderTextureLOD documentation>
-newtype EXTShaderTextureLOD = EXTShaderTextureLOD { unEXTShaderTextureLOD :: JSVal }
-
-instance PToJSVal EXTShaderTextureLOD where
-  pToJSVal = unEXTShaderTextureLOD
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EXTShaderTextureLOD where
-  pFromJSVal = EXTShaderTextureLOD
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EXTShaderTextureLOD where
-  toJSVal = return . unEXTShaderTextureLOD
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EXTShaderTextureLOD where
-  fromJSVal v = fmap EXTShaderTextureLOD <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EXTShaderTextureLOD where
-  makeObject = makeObject . unEXTShaderTextureLOD
-
-instance IsGObject EXTShaderTextureLOD where
-  toGObject = GObject . unEXTShaderTextureLOD
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EXTShaderTextureLOD . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEXTShaderTextureLOD :: IsGObject obj => obj -> JSM EXTShaderTextureLOD
-castToEXTShaderTextureLOD = castTo gTypeEXTShaderTextureLOD "EXTShaderTextureLOD"
-
-gTypeEXTShaderTextureLOD :: JSM GType
-gTypeEXTShaderTextureLOD = GType . Object <$> jsg "EXTShaderTextureLOD"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EXTTextureFilterAnisotropic".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EXTTextureFilterAnisotropic Mozilla EXTTextureFilterAnisotropic documentation>
-newtype EXTTextureFilterAnisotropic = EXTTextureFilterAnisotropic { unEXTTextureFilterAnisotropic :: JSVal }
-
-instance PToJSVal EXTTextureFilterAnisotropic where
-  pToJSVal = unEXTTextureFilterAnisotropic
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EXTTextureFilterAnisotropic where
-  pFromJSVal = EXTTextureFilterAnisotropic
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EXTTextureFilterAnisotropic where
-  toJSVal = return . unEXTTextureFilterAnisotropic
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EXTTextureFilterAnisotropic where
-  fromJSVal v = fmap EXTTextureFilterAnisotropic <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EXTTextureFilterAnisotropic where
-  makeObject = makeObject . unEXTTextureFilterAnisotropic
-
-instance IsGObject EXTTextureFilterAnisotropic where
-  toGObject = GObject . unEXTTextureFilterAnisotropic
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EXTTextureFilterAnisotropic . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEXTTextureFilterAnisotropic :: IsGObject obj => obj -> JSM EXTTextureFilterAnisotropic
-castToEXTTextureFilterAnisotropic = castTo gTypeEXTTextureFilterAnisotropic "EXTTextureFilterAnisotropic"
-
-gTypeEXTTextureFilterAnisotropic :: JSM GType
-gTypeEXTTextureFilterAnisotropic = GType . Object <$> jsg "EXTTextureFilterAnisotropic"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EXTsRGB".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EXTsRGB Mozilla EXTsRGB documentation>
-newtype EXTsRGB = EXTsRGB { unEXTsRGB :: JSVal }
-
-instance PToJSVal EXTsRGB where
-  pToJSVal = unEXTsRGB
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EXTsRGB where
-  pFromJSVal = EXTsRGB
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EXTsRGB where
-  toJSVal = return . unEXTsRGB
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EXTsRGB where
-  fromJSVal v = fmap EXTsRGB <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EXTsRGB where
-  makeObject = makeObject . unEXTsRGB
-
-instance IsGObject EXTsRGB where
-  toGObject = GObject . unEXTsRGB
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EXTsRGB . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEXTsRGB :: IsGObject obj => obj -> JSM EXTsRGB
-castToEXTsRGB = castTo gTypeEXTsRGB "EXTsRGB"
-
-gTypeEXTsRGB :: JSM GType
-gTypeEXTsRGB = GType . Object <$> jsg "EXTsRGB"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Element".
--- Base interface functions are in:
---
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Element Mozilla Element documentation>
-newtype Element = Element { unElement :: JSVal }
-
-instance PToJSVal Element where
-  pToJSVal = unElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Element where
-  pFromJSVal = Element
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Element where
-  toJSVal = return . unElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Element where
-  fromJSVal v = fmap Element <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Element where
-  makeObject = makeObject . unElement
-
-class IsNode o => IsElement o
-toElement :: IsElement o => o -> Element
-toElement = unsafeCastGObject . toGObject
-
-instance IsElement Element
-instance IsNode Element
-instance IsEventTarget Element
-instance IsGObject Element where
-  toGObject = GObject . unElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Element . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToElement :: IsGObject obj => obj -> JSM Element
-castToElement = castTo gTypeElement "Element"
-
-gTypeElement :: JSM GType
-gTypeElement = GType . Object <$> jsg "Element"
-#else
-type IsElement o = ElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Entity".
--- Base interface functions are in:
---
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Entity Mozilla Entity documentation>
-newtype Entity = Entity { unEntity :: JSVal }
-
-instance PToJSVal Entity where
-  pToJSVal = unEntity
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Entity where
-  pFromJSVal = Entity
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Entity where
-  toJSVal = return . unEntity
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Entity where
-  fromJSVal v = fmap Entity <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Entity where
-  makeObject = makeObject . unEntity
-
-instance IsNode Entity
-instance IsEventTarget Entity
-instance IsGObject Entity where
-  toGObject = GObject . unEntity
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Entity . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEntity :: IsGObject obj => obj -> JSM Entity
-castToEntity = castTo gTypeEntity "Entity"
-
-gTypeEntity :: JSM GType
-gTypeEntity = GType . Object <$> jsg "Entity"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EntityReference".
--- Base interface functions are in:
---
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EntityReference Mozilla EntityReference documentation>
-newtype EntityReference = EntityReference { unEntityReference :: JSVal }
-
-instance PToJSVal EntityReference where
-  pToJSVal = unEntityReference
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EntityReference where
-  pFromJSVal = EntityReference
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EntityReference where
-  toJSVal = return . unEntityReference
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EntityReference where
-  fromJSVal v = fmap EntityReference <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EntityReference where
-  makeObject = makeObject . unEntityReference
-
-instance IsNode EntityReference
-instance IsEventTarget EntityReference
-instance IsGObject EntityReference where
-  toGObject = GObject . unEntityReference
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EntityReference . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEntityReference :: IsGObject obj => obj -> JSM EntityReference
-castToEntityReference = castTo gTypeEntityReference "EntityReference"
-
-gTypeEntityReference :: JSM GType
-gTypeEntityReference = GType . Object <$> jsg "EntityReference"
-#else
-type IsEntityReference o = EntityReferenceClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ErrorEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent Mozilla ErrorEvent documentation>
-newtype ErrorEvent = ErrorEvent { unErrorEvent :: JSVal }
-
-instance PToJSVal ErrorEvent where
-  pToJSVal = unErrorEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ErrorEvent where
-  pFromJSVal = ErrorEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ErrorEvent where
-  toJSVal = return . unErrorEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ErrorEvent where
-  fromJSVal v = fmap ErrorEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ErrorEvent where
-  makeObject = makeObject . unErrorEvent
-
-instance IsEvent ErrorEvent
-instance IsGObject ErrorEvent where
-  toGObject = GObject . unErrorEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ErrorEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToErrorEvent :: IsGObject obj => obj -> JSM ErrorEvent
-castToErrorEvent = castTo gTypeErrorEvent "ErrorEvent"
-
-gTypeErrorEvent :: JSM GType
-gTypeErrorEvent = GType . Object <$> jsg "ErrorEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Event".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Event Mozilla Event documentation>
-newtype Event = Event { unEvent :: JSVal }
-
-instance PToJSVal Event where
-  pToJSVal = unEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Event where
-  pFromJSVal = Event
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Event where
-  toJSVal = return . unEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Event where
-  fromJSVal v = fmap Event <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Event where
-  makeObject = makeObject . unEvent
-
-class IsGObject o => IsEvent o
-toEvent :: IsEvent o => o -> Event
-toEvent = unsafeCastGObject . toGObject
-
-instance IsEvent Event
-instance IsGObject Event where
-  toGObject = GObject . unEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Event . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEvent :: IsGObject obj => obj -> JSM Event
-castToEvent = castTo gTypeEvent "Event"
-
-gTypeEvent :: JSM GType
-gTypeEvent = GType . Object <$> jsg "Event"
-#else
-type IsEvent o = EventClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EventListener".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EventListener Mozilla EventListener documentation>
-newtype EventListener = EventListener { unEventListener :: JSVal }
-
-instance PToJSVal EventListener where
-  pToJSVal = unEventListener
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EventListener where
-  pFromJSVal = EventListener
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EventListener where
-  toJSVal = return . unEventListener
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EventListener where
-  fromJSVal v = fmap EventListener <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EventListener where
-  makeObject = makeObject . unEventListener
-
-instance IsGObject EventListener where
-  toGObject = GObject . unEventListener
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EventListener . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEventListener :: IsGObject obj => obj -> JSM EventListener
-castToEventListener = castTo gTypeEventListener "EventListener"
-
-gTypeEventListener :: JSM GType
-gTypeEventListener = GType . Object <$> jsg "EventListener"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EventSource".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation>
-newtype EventSource = EventSource { unEventSource :: JSVal }
-
-instance PToJSVal EventSource where
-  pToJSVal = unEventSource
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EventSource where
-  pFromJSVal = EventSource
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EventSource where
-  toJSVal = return . unEventSource
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EventSource where
-  fromJSVal v = fmap EventSource <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EventSource where
-  makeObject = makeObject . unEventSource
-
-instance IsEventTarget EventSource
-instance IsGObject EventSource where
-  toGObject = GObject . unEventSource
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EventSource . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEventSource :: IsGObject obj => obj -> JSM EventSource
-castToEventSource = castTo gTypeEventSource "EventSource"
-
-gTypeEventSource :: JSM GType
-gTypeEventSource = GType . Object <$> jsg "EventSource"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.EventTarget".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget Mozilla EventTarget documentation>
-newtype EventTarget = EventTarget { unEventTarget :: JSVal }
-
-instance PToJSVal EventTarget where
-  pToJSVal = unEventTarget
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal EventTarget where
-  pFromJSVal = EventTarget
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal EventTarget where
-  toJSVal = return . unEventTarget
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal EventTarget where
-  fromJSVal v = fmap EventTarget <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject EventTarget where
-  makeObject = makeObject . unEventTarget
-
-class IsGObject o => IsEventTarget o
-toEventTarget :: IsEventTarget o => o -> EventTarget
-toEventTarget = unsafeCastGObject . toGObject
-
-instance IsEventTarget EventTarget
-instance IsGObject EventTarget where
-  toGObject = GObject . unEventTarget
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = EventTarget . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToEventTarget :: IsGObject obj => obj -> JSM EventTarget
-castToEventTarget = castTo gTypeEventTarget "EventTarget"
-
-gTypeEventTarget :: JSM GType
-gTypeEventTarget = GType . Object <$> jsg "EventTarget"
-#else
-type IsEventTarget o = EventTargetClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.File".
--- Base interface functions are in:
---
---     * "JSDOM.Blob"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/File Mozilla File documentation>
-newtype File = File { unFile :: JSVal }
-
-instance PToJSVal File where
-  pToJSVal = unFile
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal File where
-  pFromJSVal = File
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal File where
-  toJSVal = return . unFile
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal File where
-  fromJSVal v = fmap File <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject File where
-  makeObject = makeObject . unFile
-
-instance IsBlob File
-instance IsGObject File where
-  toGObject = GObject . unFile
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = File . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToFile :: IsGObject obj => obj -> JSM File
-castToFile = castTo gTypeFile "File"
-
-gTypeFile :: JSM GType
-gTypeFile = GType . Object <$> jsg "File"
-#else
-type IsFile o = FileClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.FileError".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/FileError Mozilla FileError documentation>
-newtype FileError = FileError { unFileError :: JSVal }
-
-instance PToJSVal FileError where
-  pToJSVal = unFileError
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal FileError where
-  pFromJSVal = FileError
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal FileError where
-  toJSVal = return . unFileError
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal FileError where
-  fromJSVal v = fmap FileError <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject FileError where
-  makeObject = makeObject . unFileError
-
-instance IsGObject FileError where
-  toGObject = GObject . unFileError
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = FileError . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToFileError :: IsGObject obj => obj -> JSM FileError
-castToFileError = castTo gTypeFileError "FileError"
-
-gTypeFileError :: JSM GType
-gTypeFileError = GType . Object <$> jsg "FileError"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.FileList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/FileList Mozilla FileList documentation>
-newtype FileList = FileList { unFileList :: JSVal }
-
-instance PToJSVal FileList where
-  pToJSVal = unFileList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal FileList where
-  pFromJSVal = FileList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal FileList where
-  toJSVal = return . unFileList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal FileList where
-  fromJSVal v = fmap FileList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject FileList where
-  makeObject = makeObject . unFileList
-
-instance IsGObject FileList where
-  toGObject = GObject . unFileList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = FileList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToFileList :: IsGObject obj => obj -> JSM FileList
-castToFileList = castTo gTypeFileList "FileList"
-
-gTypeFileList :: JSM GType
-gTypeFileList = GType . Object <$> jsg "FileList"
-#else
-type IsFileList o = FileListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.FileReader".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation>
-newtype FileReader = FileReader { unFileReader :: JSVal }
-
-instance PToJSVal FileReader where
-  pToJSVal = unFileReader
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal FileReader where
-  pFromJSVal = FileReader
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal FileReader where
-  toJSVal = return . unFileReader
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal FileReader where
-  fromJSVal v = fmap FileReader <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject FileReader where
-  makeObject = makeObject . unFileReader
-
-instance IsEventTarget FileReader
-instance IsGObject FileReader where
-  toGObject = GObject . unFileReader
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = FileReader . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToFileReader :: IsGObject obj => obj -> JSM FileReader
-castToFileReader = castTo gTypeFileReader "FileReader"
-
-gTypeFileReader :: JSM GType
-gTypeFileReader = GType . Object <$> jsg "FileReader"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.FileReaderSync".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation>
-newtype FileReaderSync = FileReaderSync { unFileReaderSync :: JSVal }
-
-instance PToJSVal FileReaderSync where
-  pToJSVal = unFileReaderSync
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal FileReaderSync where
-  pFromJSVal = FileReaderSync
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal FileReaderSync where
-  toJSVal = return . unFileReaderSync
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal FileReaderSync where
-  fromJSVal v = fmap FileReaderSync <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject FileReaderSync where
-  makeObject = makeObject . unFileReaderSync
-
-instance IsGObject FileReaderSync where
-  toGObject = GObject . unFileReaderSync
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = FileReaderSync . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToFileReaderSync :: IsGObject obj => obj -> JSM FileReaderSync
-castToFileReaderSync = castTo gTypeFileReaderSync "FileReaderSync"
-
-gTypeFileReaderSync :: JSM GType
-gTypeFileReaderSync = GType . Object <$> jsg "FileReaderSync"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.FocusEvent".
--- Base interface functions are in:
---
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent Mozilla FocusEvent documentation>
-newtype FocusEvent = FocusEvent { unFocusEvent :: JSVal }
-
-instance PToJSVal FocusEvent where
-  pToJSVal = unFocusEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal FocusEvent where
-  pFromJSVal = FocusEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal FocusEvent where
-  toJSVal = return . unFocusEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal FocusEvent where
-  fromJSVal v = fmap FocusEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject FocusEvent where
-  makeObject = makeObject . unFocusEvent
-
-instance IsUIEvent FocusEvent
-instance IsEvent FocusEvent
-instance IsGObject FocusEvent where
-  toGObject = GObject . unFocusEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = FocusEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToFocusEvent :: IsGObject obj => obj -> JSM FocusEvent
-castToFocusEvent = castTo gTypeFocusEvent "FocusEvent"
-
-gTypeFocusEvent :: JSM GType
-gTypeFocusEvent = GType . Object <$> jsg "FocusEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.FontLoader".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader Mozilla FontLoader documentation>
-newtype FontLoader = FontLoader { unFontLoader :: JSVal }
-
-instance PToJSVal FontLoader where
-  pToJSVal = unFontLoader
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal FontLoader where
-  pFromJSVal = FontLoader
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal FontLoader where
-  toJSVal = return . unFontLoader
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal FontLoader where
-  fromJSVal v = fmap FontLoader <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject FontLoader where
-  makeObject = makeObject . unFontLoader
-
-instance IsEventTarget FontLoader
-instance IsGObject FontLoader where
-  toGObject = GObject . unFontLoader
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = FontLoader . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToFontLoader :: IsGObject obj => obj -> JSM FontLoader
-castToFontLoader = castTo gTypeFontLoader "FontLoader"
-
-gTypeFontLoader :: JSM GType
-gTypeFontLoader = GType . Object <$> jsg "FontLoader"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.FormData".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation>
-newtype FormData = FormData { unFormData :: JSVal }
-
-instance PToJSVal FormData where
-  pToJSVal = unFormData
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal FormData where
-  pFromJSVal = FormData
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal FormData where
-  toJSVal = return . unFormData
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal FormData where
-  fromJSVal v = fmap FormData <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject FormData where
-  makeObject = makeObject . unFormData
-
-instance IsGObject FormData where
-  toGObject = GObject . unFormData
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = FormData . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToFormData :: IsGObject obj => obj -> JSM FormData
-castToFormData = castTo gTypeFormData "FormData"
-
-gTypeFormData :: JSM GType
-gTypeFormData = GType . Object <$> jsg "FormData"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.GainNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/GainNode Mozilla GainNode documentation>
-newtype GainNode = GainNode { unGainNode :: JSVal }
-
-instance PToJSVal GainNode where
-  pToJSVal = unGainNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal GainNode where
-  pFromJSVal = GainNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal GainNode where
-  toJSVal = return . unGainNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal GainNode where
-  fromJSVal v = fmap GainNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject GainNode where
-  makeObject = makeObject . unGainNode
-
-instance IsAudioNode GainNode
-instance IsEventTarget GainNode
-instance IsGObject GainNode where
-  toGObject = GObject . unGainNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = GainNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToGainNode :: IsGObject obj => obj -> JSM GainNode
-castToGainNode = castTo gTypeGainNode "GainNode"
-
-gTypeGainNode :: JSM GType
-gTypeGainNode = GType . Object <$> jsg "GainNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Gamepad".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Mozilla Gamepad documentation>
-newtype Gamepad = Gamepad { unGamepad :: JSVal }
-
-instance PToJSVal Gamepad where
-  pToJSVal = unGamepad
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Gamepad where
-  pFromJSVal = Gamepad
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Gamepad where
-  toJSVal = return . unGamepad
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Gamepad where
-  fromJSVal v = fmap Gamepad <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Gamepad where
-  makeObject = makeObject . unGamepad
-
-instance IsGObject Gamepad where
-  toGObject = GObject . unGamepad
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Gamepad . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToGamepad :: IsGObject obj => obj -> JSM Gamepad
-castToGamepad = castTo gTypeGamepad "Gamepad"
-
-gTypeGamepad :: JSM GType
-gTypeGamepad = GType . Object <$> jsg "Gamepad"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.GamepadButton".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton Mozilla GamepadButton documentation>
-newtype GamepadButton = GamepadButton { unGamepadButton :: JSVal }
-
-instance PToJSVal GamepadButton where
-  pToJSVal = unGamepadButton
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal GamepadButton where
-  pFromJSVal = GamepadButton
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal GamepadButton where
-  toJSVal = return . unGamepadButton
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal GamepadButton where
-  fromJSVal v = fmap GamepadButton <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject GamepadButton where
-  makeObject = makeObject . unGamepadButton
-
-instance IsGObject GamepadButton where
-  toGObject = GObject . unGamepadButton
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = GamepadButton . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToGamepadButton :: IsGObject obj => obj -> JSM GamepadButton
-castToGamepadButton = castTo gTypeGamepadButton "GamepadButton"
-
-gTypeGamepadButton :: JSM GType
-gTypeGamepadButton = GType . Object <$> jsg "GamepadButton"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.GamepadEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent Mozilla GamepadEvent documentation>
-newtype GamepadEvent = GamepadEvent { unGamepadEvent :: JSVal }
-
-instance PToJSVal GamepadEvent where
-  pToJSVal = unGamepadEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal GamepadEvent where
-  pFromJSVal = GamepadEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal GamepadEvent where
-  toJSVal = return . unGamepadEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal GamepadEvent where
-  fromJSVal v = fmap GamepadEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject GamepadEvent where
-  makeObject = makeObject . unGamepadEvent
-
-instance IsEvent GamepadEvent
-instance IsGObject GamepadEvent where
-  toGObject = GObject . unGamepadEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = GamepadEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToGamepadEvent :: IsGObject obj => obj -> JSM GamepadEvent
-castToGamepadEvent = castTo gTypeGamepadEvent "GamepadEvent"
-
-gTypeGamepadEvent :: JSM GType
-gTypeGamepadEvent = GType . Object <$> jsg "GamepadEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Geolocation".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation Mozilla Geolocation documentation>
-newtype Geolocation = Geolocation { unGeolocation :: JSVal }
-
-instance PToJSVal Geolocation where
-  pToJSVal = unGeolocation
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Geolocation where
-  pFromJSVal = Geolocation
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Geolocation where
-  toJSVal = return . unGeolocation
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Geolocation where
-  fromJSVal v = fmap Geolocation <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Geolocation where
-  makeObject = makeObject . unGeolocation
-
-instance IsGObject Geolocation where
-  toGObject = GObject . unGeolocation
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Geolocation . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToGeolocation :: IsGObject obj => obj -> JSM Geolocation
-castToGeolocation = castTo gTypeGeolocation "Geolocation"
-
-gTypeGeolocation :: JSM GType
-gTypeGeolocation = GType . Object <$> jsg "Geolocation"
-#else
-type IsGeolocation o = GeolocationClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Geoposition".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition Mozilla Geoposition documentation>
-newtype Geoposition = Geoposition { unGeoposition :: JSVal }
-
-instance PToJSVal Geoposition where
-  pToJSVal = unGeoposition
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Geoposition where
-  pFromJSVal = Geoposition
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Geoposition where
-  toJSVal = return . unGeoposition
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Geoposition where
-  fromJSVal v = fmap Geoposition <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Geoposition where
-  makeObject = makeObject . unGeoposition
-
-instance IsGObject Geoposition where
-  toGObject = GObject . unGeoposition
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Geoposition . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToGeoposition :: IsGObject obj => obj -> JSM Geoposition
-castToGeoposition = castTo gTypeGeoposition "Geoposition"
-
-gTypeGeoposition :: JSM GType
-gTypeGeoposition = GType . Object <$> jsg "Geoposition"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLAllCollection".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection Mozilla HTMLAllCollection documentation>
-newtype HTMLAllCollection = HTMLAllCollection { unHTMLAllCollection :: JSVal }
-
-instance PToJSVal HTMLAllCollection where
-  pToJSVal = unHTMLAllCollection
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLAllCollection where
-  pFromJSVal = HTMLAllCollection
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLAllCollection where
-  toJSVal = return . unHTMLAllCollection
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLAllCollection where
-  fromJSVal v = fmap HTMLAllCollection <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLAllCollection where
-  makeObject = makeObject . unHTMLAllCollection
-
-instance IsGObject HTMLAllCollection where
-  toGObject = GObject . unHTMLAllCollection
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLAllCollection . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLAllCollection :: IsGObject obj => obj -> JSM HTMLAllCollection
-castToHTMLAllCollection = castTo gTypeHTMLAllCollection "HTMLAllCollection"
-
-gTypeHTMLAllCollection :: JSM GType
-gTypeHTMLAllCollection = GType . Object <$> jsg "HTMLAllCollection"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLAnchorElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement Mozilla HTMLAnchorElement documentation>
-newtype HTMLAnchorElement = HTMLAnchorElement { unHTMLAnchorElement :: JSVal }
-
-instance PToJSVal HTMLAnchorElement where
-  pToJSVal = unHTMLAnchorElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLAnchorElement where
-  pFromJSVal = HTMLAnchorElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLAnchorElement where
-  toJSVal = return . unHTMLAnchorElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLAnchorElement where
-  fromJSVal v = fmap HTMLAnchorElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLAnchorElement where
-  makeObject = makeObject . unHTMLAnchorElement
-
-instance IsHTMLElement HTMLAnchorElement
-instance IsElement HTMLAnchorElement
-instance IsNode HTMLAnchorElement
-instance IsEventTarget HTMLAnchorElement
-instance IsGObject HTMLAnchorElement where
-  toGObject = GObject . unHTMLAnchorElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLAnchorElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLAnchorElement :: IsGObject obj => obj -> JSM HTMLAnchorElement
-castToHTMLAnchorElement = castTo gTypeHTMLAnchorElement "HTMLAnchorElement"
-
-gTypeHTMLAnchorElement :: JSM GType
-gTypeHTMLAnchorElement = GType . Object <$> jsg "HTMLAnchorElement"
-#else
-type IsHTMLAnchorElement o = HTMLAnchorElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLAppletElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement Mozilla HTMLAppletElement documentation>
-newtype HTMLAppletElement = HTMLAppletElement { unHTMLAppletElement :: JSVal }
-
-instance PToJSVal HTMLAppletElement where
-  pToJSVal = unHTMLAppletElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLAppletElement where
-  pFromJSVal = HTMLAppletElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLAppletElement where
-  toJSVal = return . unHTMLAppletElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLAppletElement where
-  fromJSVal v = fmap HTMLAppletElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLAppletElement where
-  makeObject = makeObject . unHTMLAppletElement
-
-instance IsHTMLElement HTMLAppletElement
-instance IsElement HTMLAppletElement
-instance IsNode HTMLAppletElement
-instance IsEventTarget HTMLAppletElement
-instance IsGObject HTMLAppletElement where
-  toGObject = GObject . unHTMLAppletElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLAppletElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLAppletElement :: IsGObject obj => obj -> JSM HTMLAppletElement
-castToHTMLAppletElement = castTo gTypeHTMLAppletElement "HTMLAppletElement"
-
-gTypeHTMLAppletElement :: JSM GType
-gTypeHTMLAppletElement = GType . Object <$> jsg "HTMLAppletElement"
-#else
-type IsHTMLAppletElement o = HTMLAppletElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLAreaElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement Mozilla HTMLAreaElement documentation>
-newtype HTMLAreaElement = HTMLAreaElement { unHTMLAreaElement :: JSVal }
-
-instance PToJSVal HTMLAreaElement where
-  pToJSVal = unHTMLAreaElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLAreaElement where
-  pFromJSVal = HTMLAreaElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLAreaElement where
-  toJSVal = return . unHTMLAreaElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLAreaElement where
-  fromJSVal v = fmap HTMLAreaElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLAreaElement where
-  makeObject = makeObject . unHTMLAreaElement
-
-instance IsHTMLElement HTMLAreaElement
-instance IsElement HTMLAreaElement
-instance IsNode HTMLAreaElement
-instance IsEventTarget HTMLAreaElement
-instance IsGObject HTMLAreaElement where
-  toGObject = GObject . unHTMLAreaElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLAreaElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLAreaElement :: IsGObject obj => obj -> JSM HTMLAreaElement
-castToHTMLAreaElement = castTo gTypeHTMLAreaElement "HTMLAreaElement"
-
-gTypeHTMLAreaElement :: JSM GType
-gTypeHTMLAreaElement = GType . Object <$> jsg "HTMLAreaElement"
-#else
-type IsHTMLAreaElement o = HTMLAreaElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLAudioElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLMediaElement"
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement Mozilla HTMLAudioElement documentation>
-newtype HTMLAudioElement = HTMLAudioElement { unHTMLAudioElement :: JSVal }
-
-instance PToJSVal HTMLAudioElement where
-  pToJSVal = unHTMLAudioElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLAudioElement where
-  pFromJSVal = HTMLAudioElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLAudioElement where
-  toJSVal = return . unHTMLAudioElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLAudioElement where
-  fromJSVal v = fmap HTMLAudioElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLAudioElement where
-  makeObject = makeObject . unHTMLAudioElement
-
-instance IsHTMLMediaElement HTMLAudioElement
-instance IsHTMLElement HTMLAudioElement
-instance IsElement HTMLAudioElement
-instance IsNode HTMLAudioElement
-instance IsEventTarget HTMLAudioElement
-instance IsGObject HTMLAudioElement where
-  toGObject = GObject . unHTMLAudioElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLAudioElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLAudioElement :: IsGObject obj => obj -> JSM HTMLAudioElement
-castToHTMLAudioElement = castTo gTypeHTMLAudioElement "HTMLAudioElement"
-
-gTypeHTMLAudioElement :: JSM GType
-gTypeHTMLAudioElement = GType . Object <$> jsg "HTMLAudioElement"
-#else
-type IsHTMLAudioElement o = HTMLAudioElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLBRElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement Mozilla HTMLBRElement documentation>
-newtype HTMLBRElement = HTMLBRElement { unHTMLBRElement :: JSVal }
-
-instance PToJSVal HTMLBRElement where
-  pToJSVal = unHTMLBRElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLBRElement where
-  pFromJSVal = HTMLBRElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLBRElement where
-  toJSVal = return . unHTMLBRElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLBRElement where
-  fromJSVal v = fmap HTMLBRElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLBRElement where
-  makeObject = makeObject . unHTMLBRElement
-
-instance IsHTMLElement HTMLBRElement
-instance IsElement HTMLBRElement
-instance IsNode HTMLBRElement
-instance IsEventTarget HTMLBRElement
-instance IsGObject HTMLBRElement where
-  toGObject = GObject . unHTMLBRElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLBRElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLBRElement :: IsGObject obj => obj -> JSM HTMLBRElement
-castToHTMLBRElement = castTo gTypeHTMLBRElement "HTMLBRElement"
-
-gTypeHTMLBRElement :: JSM GType
-gTypeHTMLBRElement = GType . Object <$> jsg "HTMLBRElement"
-#else
-type IsHTMLBRElement o = HTMLBRElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLBaseElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement Mozilla HTMLBaseElement documentation>
-newtype HTMLBaseElement = HTMLBaseElement { unHTMLBaseElement :: JSVal }
-
-instance PToJSVal HTMLBaseElement where
-  pToJSVal = unHTMLBaseElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLBaseElement where
-  pFromJSVal = HTMLBaseElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLBaseElement where
-  toJSVal = return . unHTMLBaseElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLBaseElement where
-  fromJSVal v = fmap HTMLBaseElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLBaseElement where
-  makeObject = makeObject . unHTMLBaseElement
-
-instance IsHTMLElement HTMLBaseElement
-instance IsElement HTMLBaseElement
-instance IsNode HTMLBaseElement
-instance IsEventTarget HTMLBaseElement
-instance IsGObject HTMLBaseElement where
-  toGObject = GObject . unHTMLBaseElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLBaseElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLBaseElement :: IsGObject obj => obj -> JSM HTMLBaseElement
-castToHTMLBaseElement = castTo gTypeHTMLBaseElement "HTMLBaseElement"
-
-gTypeHTMLBaseElement :: JSM GType
-gTypeHTMLBaseElement = GType . Object <$> jsg "HTMLBaseElement"
-#else
-type IsHTMLBaseElement o = HTMLBaseElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLBaseFontElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement Mozilla HTMLBaseFontElement documentation>
-newtype HTMLBaseFontElement = HTMLBaseFontElement { unHTMLBaseFontElement :: JSVal }
-
-instance PToJSVal HTMLBaseFontElement where
-  pToJSVal = unHTMLBaseFontElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLBaseFontElement where
-  pFromJSVal = HTMLBaseFontElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLBaseFontElement where
-  toJSVal = return . unHTMLBaseFontElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLBaseFontElement where
-  fromJSVal v = fmap HTMLBaseFontElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLBaseFontElement where
-  makeObject = makeObject . unHTMLBaseFontElement
-
-instance IsHTMLElement HTMLBaseFontElement
-instance IsElement HTMLBaseFontElement
-instance IsNode HTMLBaseFontElement
-instance IsEventTarget HTMLBaseFontElement
-instance IsGObject HTMLBaseFontElement where
-  toGObject = GObject . unHTMLBaseFontElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLBaseFontElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLBaseFontElement :: IsGObject obj => obj -> JSM HTMLBaseFontElement
-castToHTMLBaseFontElement = castTo gTypeHTMLBaseFontElement "HTMLBaseFontElement"
-
-gTypeHTMLBaseFontElement :: JSM GType
-gTypeHTMLBaseFontElement = GType . Object <$> jsg "HTMLBaseFontElement"
-#else
-type IsHTMLBaseFontElement o = HTMLBaseFontElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLBodyElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement Mozilla HTMLBodyElement documentation>
-newtype HTMLBodyElement = HTMLBodyElement { unHTMLBodyElement :: JSVal }
-
-instance PToJSVal HTMLBodyElement where
-  pToJSVal = unHTMLBodyElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLBodyElement where
-  pFromJSVal = HTMLBodyElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLBodyElement where
-  toJSVal = return . unHTMLBodyElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLBodyElement where
-  fromJSVal v = fmap HTMLBodyElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLBodyElement where
-  makeObject = makeObject . unHTMLBodyElement
-
-instance IsHTMLElement HTMLBodyElement
-instance IsElement HTMLBodyElement
-instance IsNode HTMLBodyElement
-instance IsEventTarget HTMLBodyElement
-instance IsGObject HTMLBodyElement where
-  toGObject = GObject . unHTMLBodyElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLBodyElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLBodyElement :: IsGObject obj => obj -> JSM HTMLBodyElement
-castToHTMLBodyElement = castTo gTypeHTMLBodyElement "HTMLBodyElement"
-
-gTypeHTMLBodyElement :: JSM GType
-gTypeHTMLBodyElement = GType . Object <$> jsg "HTMLBodyElement"
-#else
-type IsHTMLBodyElement o = HTMLBodyElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLButtonElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement Mozilla HTMLButtonElement documentation>
-newtype HTMLButtonElement = HTMLButtonElement { unHTMLButtonElement :: JSVal }
-
-instance PToJSVal HTMLButtonElement where
-  pToJSVal = unHTMLButtonElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLButtonElement where
-  pFromJSVal = HTMLButtonElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLButtonElement where
-  toJSVal = return . unHTMLButtonElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLButtonElement where
-  fromJSVal v = fmap HTMLButtonElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLButtonElement where
-  makeObject = makeObject . unHTMLButtonElement
-
-instance IsHTMLElement HTMLButtonElement
-instance IsElement HTMLButtonElement
-instance IsNode HTMLButtonElement
-instance IsEventTarget HTMLButtonElement
-instance IsGObject HTMLButtonElement where
-  toGObject = GObject . unHTMLButtonElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLButtonElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLButtonElement :: IsGObject obj => obj -> JSM HTMLButtonElement
-castToHTMLButtonElement = castTo gTypeHTMLButtonElement "HTMLButtonElement"
-
-gTypeHTMLButtonElement :: JSM GType
-gTypeHTMLButtonElement = GType . Object <$> jsg "HTMLButtonElement"
-#else
-type IsHTMLButtonElement o = HTMLButtonElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLCanvasElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement Mozilla HTMLCanvasElement documentation>
-newtype HTMLCanvasElement = HTMLCanvasElement { unHTMLCanvasElement :: JSVal }
-
-instance PToJSVal HTMLCanvasElement where
-  pToJSVal = unHTMLCanvasElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLCanvasElement where
-  pFromJSVal = HTMLCanvasElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLCanvasElement where
-  toJSVal = return . unHTMLCanvasElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLCanvasElement where
-  fromJSVal v = fmap HTMLCanvasElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLCanvasElement where
-  makeObject = makeObject . unHTMLCanvasElement
-
-instance IsHTMLElement HTMLCanvasElement
-instance IsElement HTMLCanvasElement
-instance IsNode HTMLCanvasElement
-instance IsEventTarget HTMLCanvasElement
-instance IsGObject HTMLCanvasElement where
-  toGObject = GObject . unHTMLCanvasElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLCanvasElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLCanvasElement :: IsGObject obj => obj -> JSM HTMLCanvasElement
-castToHTMLCanvasElement = castTo gTypeHTMLCanvasElement "HTMLCanvasElement"
-
-gTypeHTMLCanvasElement :: JSM GType
-gTypeHTMLCanvasElement = GType . Object <$> jsg "HTMLCanvasElement"
-#else
-type IsHTMLCanvasElement o = HTMLCanvasElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLCollection".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection Mozilla HTMLCollection documentation>
-newtype HTMLCollection = HTMLCollection { unHTMLCollection :: JSVal }
-
-instance PToJSVal HTMLCollection where
-  pToJSVal = unHTMLCollection
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLCollection where
-  pFromJSVal = HTMLCollection
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLCollection where
-  toJSVal = return . unHTMLCollection
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLCollection where
-  fromJSVal v = fmap HTMLCollection <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLCollection where
-  makeObject = makeObject . unHTMLCollection
-
-class IsGObject o => IsHTMLCollection o
-toHTMLCollection :: IsHTMLCollection o => o -> HTMLCollection
-toHTMLCollection = unsafeCastGObject . toGObject
-
-instance IsHTMLCollection HTMLCollection
-instance IsGObject HTMLCollection where
-  toGObject = GObject . unHTMLCollection
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLCollection . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLCollection :: IsGObject obj => obj -> JSM HTMLCollection
-castToHTMLCollection = castTo gTypeHTMLCollection "HTMLCollection"
-
-gTypeHTMLCollection :: JSM GType
-gTypeHTMLCollection = GType . Object <$> jsg "HTMLCollection"
-#else
-type IsHTMLCollection o = HTMLCollectionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLDListElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement Mozilla HTMLDListElement documentation>
-newtype HTMLDListElement = HTMLDListElement { unHTMLDListElement :: JSVal }
-
-instance PToJSVal HTMLDListElement where
-  pToJSVal = unHTMLDListElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLDListElement where
-  pFromJSVal = HTMLDListElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLDListElement where
-  toJSVal = return . unHTMLDListElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLDListElement where
-  fromJSVal v = fmap HTMLDListElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLDListElement where
-  makeObject = makeObject . unHTMLDListElement
-
-instance IsHTMLElement HTMLDListElement
-instance IsElement HTMLDListElement
-instance IsNode HTMLDListElement
-instance IsEventTarget HTMLDListElement
-instance IsGObject HTMLDListElement where
-  toGObject = GObject . unHTMLDListElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLDListElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLDListElement :: IsGObject obj => obj -> JSM HTMLDListElement
-castToHTMLDListElement = castTo gTypeHTMLDListElement "HTMLDListElement"
-
-gTypeHTMLDListElement :: JSM GType
-gTypeHTMLDListElement = GType . Object <$> jsg "HTMLDListElement"
-#else
-type IsHTMLDListElement o = HTMLDListElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLDataListElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement Mozilla HTMLDataListElement documentation>
-newtype HTMLDataListElement = HTMLDataListElement { unHTMLDataListElement :: JSVal }
-
-instance PToJSVal HTMLDataListElement where
-  pToJSVal = unHTMLDataListElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLDataListElement where
-  pFromJSVal = HTMLDataListElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLDataListElement where
-  toJSVal = return . unHTMLDataListElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLDataListElement where
-  fromJSVal v = fmap HTMLDataListElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLDataListElement where
-  makeObject = makeObject . unHTMLDataListElement
-
-instance IsHTMLElement HTMLDataListElement
-instance IsElement HTMLDataListElement
-instance IsNode HTMLDataListElement
-instance IsEventTarget HTMLDataListElement
-instance IsGObject HTMLDataListElement where
-  toGObject = GObject . unHTMLDataListElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLDataListElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLDataListElement :: IsGObject obj => obj -> JSM HTMLDataListElement
-castToHTMLDataListElement = castTo gTypeHTMLDataListElement "HTMLDataListElement"
-
-gTypeHTMLDataListElement :: JSM GType
-gTypeHTMLDataListElement = GType . Object <$> jsg "HTMLDataListElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLDetailsElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement Mozilla HTMLDetailsElement documentation>
-newtype HTMLDetailsElement = HTMLDetailsElement { unHTMLDetailsElement :: JSVal }
-
-instance PToJSVal HTMLDetailsElement where
-  pToJSVal = unHTMLDetailsElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLDetailsElement where
-  pFromJSVal = HTMLDetailsElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLDetailsElement where
-  toJSVal = return . unHTMLDetailsElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLDetailsElement where
-  fromJSVal v = fmap HTMLDetailsElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLDetailsElement where
-  makeObject = makeObject . unHTMLDetailsElement
-
-instance IsHTMLElement HTMLDetailsElement
-instance IsElement HTMLDetailsElement
-instance IsNode HTMLDetailsElement
-instance IsEventTarget HTMLDetailsElement
-instance IsGObject HTMLDetailsElement where
-  toGObject = GObject . unHTMLDetailsElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLDetailsElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLDetailsElement :: IsGObject obj => obj -> JSM HTMLDetailsElement
-castToHTMLDetailsElement = castTo gTypeHTMLDetailsElement "HTMLDetailsElement"
-
-gTypeHTMLDetailsElement :: JSM GType
-gTypeHTMLDetailsElement = GType . Object <$> jsg "HTMLDetailsElement"
-#else
-type IsHTMLDetailsElement o = HTMLDetailsElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLDirectoryElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement Mozilla HTMLDirectoryElement documentation>
-newtype HTMLDirectoryElement = HTMLDirectoryElement { unHTMLDirectoryElement :: JSVal }
-
-instance PToJSVal HTMLDirectoryElement where
-  pToJSVal = unHTMLDirectoryElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLDirectoryElement where
-  pFromJSVal = HTMLDirectoryElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLDirectoryElement where
-  toJSVal = return . unHTMLDirectoryElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLDirectoryElement where
-  fromJSVal v = fmap HTMLDirectoryElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLDirectoryElement where
-  makeObject = makeObject . unHTMLDirectoryElement
-
-instance IsHTMLElement HTMLDirectoryElement
-instance IsElement HTMLDirectoryElement
-instance IsNode HTMLDirectoryElement
-instance IsEventTarget HTMLDirectoryElement
-instance IsGObject HTMLDirectoryElement where
-  toGObject = GObject . unHTMLDirectoryElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLDirectoryElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLDirectoryElement :: IsGObject obj => obj -> JSM HTMLDirectoryElement
-castToHTMLDirectoryElement = castTo gTypeHTMLDirectoryElement "HTMLDirectoryElement"
-
-gTypeHTMLDirectoryElement :: JSM GType
-gTypeHTMLDirectoryElement = GType . Object <$> jsg "HTMLDirectoryElement"
-#else
-type IsHTMLDirectoryElement o = HTMLDirectoryElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLDivElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement Mozilla HTMLDivElement documentation>
-newtype HTMLDivElement = HTMLDivElement { unHTMLDivElement :: JSVal }
-
-instance PToJSVal HTMLDivElement where
-  pToJSVal = unHTMLDivElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLDivElement where
-  pFromJSVal = HTMLDivElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLDivElement where
-  toJSVal = return . unHTMLDivElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLDivElement where
-  fromJSVal v = fmap HTMLDivElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLDivElement where
-  makeObject = makeObject . unHTMLDivElement
-
-instance IsHTMLElement HTMLDivElement
-instance IsElement HTMLDivElement
-instance IsNode HTMLDivElement
-instance IsEventTarget HTMLDivElement
-instance IsGObject HTMLDivElement where
-  toGObject = GObject . unHTMLDivElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLDivElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLDivElement :: IsGObject obj => obj -> JSM HTMLDivElement
-castToHTMLDivElement = castTo gTypeHTMLDivElement "HTMLDivElement"
-
-gTypeHTMLDivElement :: JSM GType
-gTypeHTMLDivElement = GType . Object <$> jsg "HTMLDivElement"
-#else
-type IsHTMLDivElement o = HTMLDivElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLDocument".
--- Base interface functions are in:
---
---     * "JSDOM.Document"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument Mozilla HTMLDocument documentation>
-newtype HTMLDocument = HTMLDocument { unHTMLDocument :: JSVal }
-
-instance PToJSVal HTMLDocument where
-  pToJSVal = unHTMLDocument
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLDocument where
-  pFromJSVal = HTMLDocument
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLDocument where
-  toJSVal = return . unHTMLDocument
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLDocument where
-  fromJSVal v = fmap HTMLDocument <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLDocument where
-  makeObject = makeObject . unHTMLDocument
-
-instance IsDocument HTMLDocument
-instance IsNode HTMLDocument
-instance IsEventTarget HTMLDocument
-instance IsGObject HTMLDocument where
-  toGObject = GObject . unHTMLDocument
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLDocument . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLDocument :: IsGObject obj => obj -> JSM HTMLDocument
-castToHTMLDocument = castTo gTypeHTMLDocument "HTMLDocument"
-
-gTypeHTMLDocument :: JSM GType
-gTypeHTMLDocument = GType . Object <$> jsg "HTMLDocument"
-#else
-type IsHTMLDocument o = HTMLDocumentClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLElement".
--- Base interface functions are in:
---
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement Mozilla HTMLElement documentation>
-newtype HTMLElement = HTMLElement { unHTMLElement :: JSVal }
-
-instance PToJSVal HTMLElement where
-  pToJSVal = unHTMLElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLElement where
-  pFromJSVal = HTMLElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLElement where
-  toJSVal = return . unHTMLElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLElement where
-  fromJSVal v = fmap HTMLElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLElement where
-  makeObject = makeObject . unHTMLElement
-
-class IsElement o => IsHTMLElement o
-toHTMLElement :: IsHTMLElement o => o -> HTMLElement
-toHTMLElement = unsafeCastGObject . toGObject
-
-instance IsHTMLElement HTMLElement
-instance IsElement HTMLElement
-instance IsNode HTMLElement
-instance IsEventTarget HTMLElement
-instance IsGObject HTMLElement where
-  toGObject = GObject . unHTMLElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLElement :: IsGObject obj => obj -> JSM HTMLElement
-castToHTMLElement = castTo gTypeHTMLElement "HTMLElement"
-
-gTypeHTMLElement :: JSM GType
-gTypeHTMLElement = GType . Object <$> jsg "HTMLElement"
-#else
-type IsHTMLElement o = HTMLElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLEmbedElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement Mozilla HTMLEmbedElement documentation>
-newtype HTMLEmbedElement = HTMLEmbedElement { unHTMLEmbedElement :: JSVal }
-
-instance PToJSVal HTMLEmbedElement where
-  pToJSVal = unHTMLEmbedElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLEmbedElement where
-  pFromJSVal = HTMLEmbedElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLEmbedElement where
-  toJSVal = return . unHTMLEmbedElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLEmbedElement where
-  fromJSVal v = fmap HTMLEmbedElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLEmbedElement where
-  makeObject = makeObject . unHTMLEmbedElement
-
-instance IsHTMLElement HTMLEmbedElement
-instance IsElement HTMLEmbedElement
-instance IsNode HTMLEmbedElement
-instance IsEventTarget HTMLEmbedElement
-instance IsGObject HTMLEmbedElement where
-  toGObject = GObject . unHTMLEmbedElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLEmbedElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLEmbedElement :: IsGObject obj => obj -> JSM HTMLEmbedElement
-castToHTMLEmbedElement = castTo gTypeHTMLEmbedElement "HTMLEmbedElement"
-
-gTypeHTMLEmbedElement :: JSM GType
-gTypeHTMLEmbedElement = GType . Object <$> jsg "HTMLEmbedElement"
-#else
-type IsHTMLEmbedElement o = HTMLEmbedElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLFieldSetElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement Mozilla HTMLFieldSetElement documentation>
-newtype HTMLFieldSetElement = HTMLFieldSetElement { unHTMLFieldSetElement :: JSVal }
-
-instance PToJSVal HTMLFieldSetElement where
-  pToJSVal = unHTMLFieldSetElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLFieldSetElement where
-  pFromJSVal = HTMLFieldSetElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLFieldSetElement where
-  toJSVal = return . unHTMLFieldSetElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLFieldSetElement where
-  fromJSVal v = fmap HTMLFieldSetElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLFieldSetElement where
-  makeObject = makeObject . unHTMLFieldSetElement
-
-instance IsHTMLElement HTMLFieldSetElement
-instance IsElement HTMLFieldSetElement
-instance IsNode HTMLFieldSetElement
-instance IsEventTarget HTMLFieldSetElement
-instance IsGObject HTMLFieldSetElement where
-  toGObject = GObject . unHTMLFieldSetElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLFieldSetElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLFieldSetElement :: IsGObject obj => obj -> JSM HTMLFieldSetElement
-castToHTMLFieldSetElement = castTo gTypeHTMLFieldSetElement "HTMLFieldSetElement"
-
-gTypeHTMLFieldSetElement :: JSM GType
-gTypeHTMLFieldSetElement = GType . Object <$> jsg "HTMLFieldSetElement"
-#else
-type IsHTMLFieldSetElement o = HTMLFieldSetElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLFontElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement Mozilla HTMLFontElement documentation>
-newtype HTMLFontElement = HTMLFontElement { unHTMLFontElement :: JSVal }
-
-instance PToJSVal HTMLFontElement where
-  pToJSVal = unHTMLFontElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLFontElement where
-  pFromJSVal = HTMLFontElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLFontElement where
-  toJSVal = return . unHTMLFontElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLFontElement where
-  fromJSVal v = fmap HTMLFontElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLFontElement where
-  makeObject = makeObject . unHTMLFontElement
-
-instance IsHTMLElement HTMLFontElement
-instance IsElement HTMLFontElement
-instance IsNode HTMLFontElement
-instance IsEventTarget HTMLFontElement
-instance IsGObject HTMLFontElement where
-  toGObject = GObject . unHTMLFontElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLFontElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLFontElement :: IsGObject obj => obj -> JSM HTMLFontElement
-castToHTMLFontElement = castTo gTypeHTMLFontElement "HTMLFontElement"
-
-gTypeHTMLFontElement :: JSM GType
-gTypeHTMLFontElement = GType . Object <$> jsg "HTMLFontElement"
-#else
-type IsHTMLFontElement o = HTMLFontElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLFormControlsCollection".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLCollection"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection Mozilla HTMLFormControlsCollection documentation>
-newtype HTMLFormControlsCollection = HTMLFormControlsCollection { unHTMLFormControlsCollection :: JSVal }
-
-instance PToJSVal HTMLFormControlsCollection where
-  pToJSVal = unHTMLFormControlsCollection
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLFormControlsCollection where
-  pFromJSVal = HTMLFormControlsCollection
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLFormControlsCollection where
-  toJSVal = return . unHTMLFormControlsCollection
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLFormControlsCollection where
-  fromJSVal v = fmap HTMLFormControlsCollection <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLFormControlsCollection where
-  makeObject = makeObject . unHTMLFormControlsCollection
-
-instance IsHTMLCollection HTMLFormControlsCollection
-instance IsGObject HTMLFormControlsCollection where
-  toGObject = GObject . unHTMLFormControlsCollection
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLFormControlsCollection . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLFormControlsCollection :: IsGObject obj => obj -> JSM HTMLFormControlsCollection
-castToHTMLFormControlsCollection = castTo gTypeHTMLFormControlsCollection "HTMLFormControlsCollection"
-
-gTypeHTMLFormControlsCollection :: JSM GType
-gTypeHTMLFormControlsCollection = GType . Object <$> jsg "HTMLFormControlsCollection"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLFormElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement Mozilla HTMLFormElement documentation>
-newtype HTMLFormElement = HTMLFormElement { unHTMLFormElement :: JSVal }
-
-instance PToJSVal HTMLFormElement where
-  pToJSVal = unHTMLFormElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLFormElement where
-  pFromJSVal = HTMLFormElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLFormElement where
-  toJSVal = return . unHTMLFormElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLFormElement where
-  fromJSVal v = fmap HTMLFormElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLFormElement where
-  makeObject = makeObject . unHTMLFormElement
-
-instance IsHTMLElement HTMLFormElement
-instance IsElement HTMLFormElement
-instance IsNode HTMLFormElement
-instance IsEventTarget HTMLFormElement
-instance IsGObject HTMLFormElement where
-  toGObject = GObject . unHTMLFormElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLFormElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLFormElement :: IsGObject obj => obj -> JSM HTMLFormElement
-castToHTMLFormElement = castTo gTypeHTMLFormElement "HTMLFormElement"
-
-gTypeHTMLFormElement :: JSM GType
-gTypeHTMLFormElement = GType . Object <$> jsg "HTMLFormElement"
-#else
-type IsHTMLFormElement o = HTMLFormElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLFrameElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement Mozilla HTMLFrameElement documentation>
-newtype HTMLFrameElement = HTMLFrameElement { unHTMLFrameElement :: JSVal }
-
-instance PToJSVal HTMLFrameElement where
-  pToJSVal = unHTMLFrameElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLFrameElement where
-  pFromJSVal = HTMLFrameElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLFrameElement where
-  toJSVal = return . unHTMLFrameElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLFrameElement where
-  fromJSVal v = fmap HTMLFrameElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLFrameElement where
-  makeObject = makeObject . unHTMLFrameElement
-
-instance IsHTMLElement HTMLFrameElement
-instance IsElement HTMLFrameElement
-instance IsNode HTMLFrameElement
-instance IsEventTarget HTMLFrameElement
-instance IsGObject HTMLFrameElement where
-  toGObject = GObject . unHTMLFrameElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLFrameElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLFrameElement :: IsGObject obj => obj -> JSM HTMLFrameElement
-castToHTMLFrameElement = castTo gTypeHTMLFrameElement "HTMLFrameElement"
-
-gTypeHTMLFrameElement :: JSM GType
-gTypeHTMLFrameElement = GType . Object <$> jsg "HTMLFrameElement"
-#else
-type IsHTMLFrameElement o = HTMLFrameElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLFrameSetElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement Mozilla HTMLFrameSetElement documentation>
-newtype HTMLFrameSetElement = HTMLFrameSetElement { unHTMLFrameSetElement :: JSVal }
-
-instance PToJSVal HTMLFrameSetElement where
-  pToJSVal = unHTMLFrameSetElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLFrameSetElement where
-  pFromJSVal = HTMLFrameSetElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLFrameSetElement where
-  toJSVal = return . unHTMLFrameSetElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLFrameSetElement where
-  fromJSVal v = fmap HTMLFrameSetElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLFrameSetElement where
-  makeObject = makeObject . unHTMLFrameSetElement
-
-instance IsHTMLElement HTMLFrameSetElement
-instance IsElement HTMLFrameSetElement
-instance IsNode HTMLFrameSetElement
-instance IsEventTarget HTMLFrameSetElement
-instance IsGObject HTMLFrameSetElement where
-  toGObject = GObject . unHTMLFrameSetElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLFrameSetElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLFrameSetElement :: IsGObject obj => obj -> JSM HTMLFrameSetElement
-castToHTMLFrameSetElement = castTo gTypeHTMLFrameSetElement "HTMLFrameSetElement"
-
-gTypeHTMLFrameSetElement :: JSM GType
-gTypeHTMLFrameSetElement = GType . Object <$> jsg "HTMLFrameSetElement"
-#else
-type IsHTMLFrameSetElement o = HTMLFrameSetElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLHRElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement Mozilla HTMLHRElement documentation>
-newtype HTMLHRElement = HTMLHRElement { unHTMLHRElement :: JSVal }
-
-instance PToJSVal HTMLHRElement where
-  pToJSVal = unHTMLHRElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLHRElement where
-  pFromJSVal = HTMLHRElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLHRElement where
-  toJSVal = return . unHTMLHRElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLHRElement where
-  fromJSVal v = fmap HTMLHRElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLHRElement where
-  makeObject = makeObject . unHTMLHRElement
-
-instance IsHTMLElement HTMLHRElement
-instance IsElement HTMLHRElement
-instance IsNode HTMLHRElement
-instance IsEventTarget HTMLHRElement
-instance IsGObject HTMLHRElement where
-  toGObject = GObject . unHTMLHRElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLHRElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLHRElement :: IsGObject obj => obj -> JSM HTMLHRElement
-castToHTMLHRElement = castTo gTypeHTMLHRElement "HTMLHRElement"
-
-gTypeHTMLHRElement :: JSM GType
-gTypeHTMLHRElement = GType . Object <$> jsg "HTMLHRElement"
-#else
-type IsHTMLHRElement o = HTMLHRElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLHeadElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement Mozilla HTMLHeadElement documentation>
-newtype HTMLHeadElement = HTMLHeadElement { unHTMLHeadElement :: JSVal }
-
-instance PToJSVal HTMLHeadElement where
-  pToJSVal = unHTMLHeadElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLHeadElement where
-  pFromJSVal = HTMLHeadElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLHeadElement where
-  toJSVal = return . unHTMLHeadElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLHeadElement where
-  fromJSVal v = fmap HTMLHeadElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLHeadElement where
-  makeObject = makeObject . unHTMLHeadElement
-
-instance IsHTMLElement HTMLHeadElement
-instance IsElement HTMLHeadElement
-instance IsNode HTMLHeadElement
-instance IsEventTarget HTMLHeadElement
-instance IsGObject HTMLHeadElement where
-  toGObject = GObject . unHTMLHeadElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLHeadElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLHeadElement :: IsGObject obj => obj -> JSM HTMLHeadElement
-castToHTMLHeadElement = castTo gTypeHTMLHeadElement "HTMLHeadElement"
-
-gTypeHTMLHeadElement :: JSM GType
-gTypeHTMLHeadElement = GType . Object <$> jsg "HTMLHeadElement"
-#else
-type IsHTMLHeadElement o = HTMLHeadElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLHeadingElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement Mozilla HTMLHeadingElement documentation>
-newtype HTMLHeadingElement = HTMLHeadingElement { unHTMLHeadingElement :: JSVal }
-
-instance PToJSVal HTMLHeadingElement where
-  pToJSVal = unHTMLHeadingElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLHeadingElement where
-  pFromJSVal = HTMLHeadingElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLHeadingElement where
-  toJSVal = return . unHTMLHeadingElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLHeadingElement where
-  fromJSVal v = fmap HTMLHeadingElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLHeadingElement where
-  makeObject = makeObject . unHTMLHeadingElement
-
-instance IsHTMLElement HTMLHeadingElement
-instance IsElement HTMLHeadingElement
-instance IsNode HTMLHeadingElement
-instance IsEventTarget HTMLHeadingElement
-instance IsGObject HTMLHeadingElement where
-  toGObject = GObject . unHTMLHeadingElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLHeadingElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLHeadingElement :: IsGObject obj => obj -> JSM HTMLHeadingElement
-castToHTMLHeadingElement = castTo gTypeHTMLHeadingElement "HTMLHeadingElement"
-
-gTypeHTMLHeadingElement :: JSM GType
-gTypeHTMLHeadingElement = GType . Object <$> jsg "HTMLHeadingElement"
-#else
-type IsHTMLHeadingElement o = HTMLHeadingElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLHtmlElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement Mozilla HTMLHtmlElement documentation>
-newtype HTMLHtmlElement = HTMLHtmlElement { unHTMLHtmlElement :: JSVal }
-
-instance PToJSVal HTMLHtmlElement where
-  pToJSVal = unHTMLHtmlElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLHtmlElement where
-  pFromJSVal = HTMLHtmlElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLHtmlElement where
-  toJSVal = return . unHTMLHtmlElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLHtmlElement where
-  fromJSVal v = fmap HTMLHtmlElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLHtmlElement where
-  makeObject = makeObject . unHTMLHtmlElement
-
-instance IsHTMLElement HTMLHtmlElement
-instance IsElement HTMLHtmlElement
-instance IsNode HTMLHtmlElement
-instance IsEventTarget HTMLHtmlElement
-instance IsGObject HTMLHtmlElement where
-  toGObject = GObject . unHTMLHtmlElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLHtmlElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLHtmlElement :: IsGObject obj => obj -> JSM HTMLHtmlElement
-castToHTMLHtmlElement = castTo gTypeHTMLHtmlElement "HTMLHtmlElement"
-
-gTypeHTMLHtmlElement :: JSM GType
-gTypeHTMLHtmlElement = GType . Object <$> jsg "HTMLHtmlElement"
-#else
-type IsHTMLHtmlElement o = HTMLHtmlElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLIFrameElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement Mozilla HTMLIFrameElement documentation>
-newtype HTMLIFrameElement = HTMLIFrameElement { unHTMLIFrameElement :: JSVal }
-
-instance PToJSVal HTMLIFrameElement where
-  pToJSVal = unHTMLIFrameElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLIFrameElement where
-  pFromJSVal = HTMLIFrameElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLIFrameElement where
-  toJSVal = return . unHTMLIFrameElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLIFrameElement where
-  fromJSVal v = fmap HTMLIFrameElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLIFrameElement where
-  makeObject = makeObject . unHTMLIFrameElement
-
-instance IsHTMLElement HTMLIFrameElement
-instance IsElement HTMLIFrameElement
-instance IsNode HTMLIFrameElement
-instance IsEventTarget HTMLIFrameElement
-instance IsGObject HTMLIFrameElement where
-  toGObject = GObject . unHTMLIFrameElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLIFrameElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLIFrameElement :: IsGObject obj => obj -> JSM HTMLIFrameElement
-castToHTMLIFrameElement = castTo gTypeHTMLIFrameElement "HTMLIFrameElement"
-
-gTypeHTMLIFrameElement :: JSM GType
-gTypeHTMLIFrameElement = GType . Object <$> jsg "HTMLIFrameElement"
-#else
-type IsHTMLIFrameElement o = HTMLIFrameElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLImageElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement Mozilla HTMLImageElement documentation>
-newtype HTMLImageElement = HTMLImageElement { unHTMLImageElement :: JSVal }
-
-instance PToJSVal HTMLImageElement where
-  pToJSVal = unHTMLImageElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLImageElement where
-  pFromJSVal = HTMLImageElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLImageElement where
-  toJSVal = return . unHTMLImageElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLImageElement where
-  fromJSVal v = fmap HTMLImageElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLImageElement where
-  makeObject = makeObject . unHTMLImageElement
-
-instance IsHTMLElement HTMLImageElement
-instance IsElement HTMLImageElement
-instance IsNode HTMLImageElement
-instance IsEventTarget HTMLImageElement
-instance IsGObject HTMLImageElement where
-  toGObject = GObject . unHTMLImageElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLImageElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLImageElement :: IsGObject obj => obj -> JSM HTMLImageElement
-castToHTMLImageElement = castTo gTypeHTMLImageElement "HTMLImageElement"
-
-gTypeHTMLImageElement :: JSM GType
-gTypeHTMLImageElement = GType . Object <$> jsg "HTMLImageElement"
-#else
-type IsHTMLImageElement o = HTMLImageElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLInputElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement Mozilla HTMLInputElement documentation>
-newtype HTMLInputElement = HTMLInputElement { unHTMLInputElement :: JSVal }
-
-instance PToJSVal HTMLInputElement where
-  pToJSVal = unHTMLInputElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLInputElement where
-  pFromJSVal = HTMLInputElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLInputElement where
-  toJSVal = return . unHTMLInputElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLInputElement where
-  fromJSVal v = fmap HTMLInputElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLInputElement where
-  makeObject = makeObject . unHTMLInputElement
-
-instance IsHTMLElement HTMLInputElement
-instance IsElement HTMLInputElement
-instance IsNode HTMLInputElement
-instance IsEventTarget HTMLInputElement
-instance IsGObject HTMLInputElement where
-  toGObject = GObject . unHTMLInputElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLInputElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLInputElement :: IsGObject obj => obj -> JSM HTMLInputElement
-castToHTMLInputElement = castTo gTypeHTMLInputElement "HTMLInputElement"
-
-gTypeHTMLInputElement :: JSM GType
-gTypeHTMLInputElement = GType . Object <$> jsg "HTMLInputElement"
-#else
-type IsHTMLInputElement o = HTMLInputElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLKeygenElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement Mozilla HTMLKeygenElement documentation>
-newtype HTMLKeygenElement = HTMLKeygenElement { unHTMLKeygenElement :: JSVal }
-
-instance PToJSVal HTMLKeygenElement where
-  pToJSVal = unHTMLKeygenElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLKeygenElement where
-  pFromJSVal = HTMLKeygenElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLKeygenElement where
-  toJSVal = return . unHTMLKeygenElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLKeygenElement where
-  fromJSVal v = fmap HTMLKeygenElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLKeygenElement where
-  makeObject = makeObject . unHTMLKeygenElement
-
-instance IsHTMLElement HTMLKeygenElement
-instance IsElement HTMLKeygenElement
-instance IsNode HTMLKeygenElement
-instance IsEventTarget HTMLKeygenElement
-instance IsGObject HTMLKeygenElement where
-  toGObject = GObject . unHTMLKeygenElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLKeygenElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLKeygenElement :: IsGObject obj => obj -> JSM HTMLKeygenElement
-castToHTMLKeygenElement = castTo gTypeHTMLKeygenElement "HTMLKeygenElement"
-
-gTypeHTMLKeygenElement :: JSM GType
-gTypeHTMLKeygenElement = GType . Object <$> jsg "HTMLKeygenElement"
-#else
-type IsHTMLKeygenElement o = HTMLKeygenElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLLIElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement Mozilla HTMLLIElement documentation>
-newtype HTMLLIElement = HTMLLIElement { unHTMLLIElement :: JSVal }
-
-instance PToJSVal HTMLLIElement where
-  pToJSVal = unHTMLLIElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLLIElement where
-  pFromJSVal = HTMLLIElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLLIElement where
-  toJSVal = return . unHTMLLIElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLLIElement where
-  fromJSVal v = fmap HTMLLIElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLLIElement where
-  makeObject = makeObject . unHTMLLIElement
-
-instance IsHTMLElement HTMLLIElement
-instance IsElement HTMLLIElement
-instance IsNode HTMLLIElement
-instance IsEventTarget HTMLLIElement
-instance IsGObject HTMLLIElement where
-  toGObject = GObject . unHTMLLIElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLLIElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLLIElement :: IsGObject obj => obj -> JSM HTMLLIElement
-castToHTMLLIElement = castTo gTypeHTMLLIElement "HTMLLIElement"
-
-gTypeHTMLLIElement :: JSM GType
-gTypeHTMLLIElement = GType . Object <$> jsg "HTMLLIElement"
-#else
-type IsHTMLLIElement o = HTMLLIElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLLabelElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement Mozilla HTMLLabelElement documentation>
-newtype HTMLLabelElement = HTMLLabelElement { unHTMLLabelElement :: JSVal }
-
-instance PToJSVal HTMLLabelElement where
-  pToJSVal = unHTMLLabelElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLLabelElement where
-  pFromJSVal = HTMLLabelElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLLabelElement where
-  toJSVal = return . unHTMLLabelElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLLabelElement where
-  fromJSVal v = fmap HTMLLabelElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLLabelElement where
-  makeObject = makeObject . unHTMLLabelElement
-
-instance IsHTMLElement HTMLLabelElement
-instance IsElement HTMLLabelElement
-instance IsNode HTMLLabelElement
-instance IsEventTarget HTMLLabelElement
-instance IsGObject HTMLLabelElement where
-  toGObject = GObject . unHTMLLabelElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLLabelElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLLabelElement :: IsGObject obj => obj -> JSM HTMLLabelElement
-castToHTMLLabelElement = castTo gTypeHTMLLabelElement "HTMLLabelElement"
-
-gTypeHTMLLabelElement :: JSM GType
-gTypeHTMLLabelElement = GType . Object <$> jsg "HTMLLabelElement"
-#else
-type IsHTMLLabelElement o = HTMLLabelElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLLegendElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement Mozilla HTMLLegendElement documentation>
-newtype HTMLLegendElement = HTMLLegendElement { unHTMLLegendElement :: JSVal }
-
-instance PToJSVal HTMLLegendElement where
-  pToJSVal = unHTMLLegendElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLLegendElement where
-  pFromJSVal = HTMLLegendElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLLegendElement where
-  toJSVal = return . unHTMLLegendElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLLegendElement where
-  fromJSVal v = fmap HTMLLegendElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLLegendElement where
-  makeObject = makeObject . unHTMLLegendElement
-
-instance IsHTMLElement HTMLLegendElement
-instance IsElement HTMLLegendElement
-instance IsNode HTMLLegendElement
-instance IsEventTarget HTMLLegendElement
-instance IsGObject HTMLLegendElement where
-  toGObject = GObject . unHTMLLegendElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLLegendElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLLegendElement :: IsGObject obj => obj -> JSM HTMLLegendElement
-castToHTMLLegendElement = castTo gTypeHTMLLegendElement "HTMLLegendElement"
-
-gTypeHTMLLegendElement :: JSM GType
-gTypeHTMLLegendElement = GType . Object <$> jsg "HTMLLegendElement"
-#else
-type IsHTMLLegendElement o = HTMLLegendElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLLinkElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement Mozilla HTMLLinkElement documentation>
-newtype HTMLLinkElement = HTMLLinkElement { unHTMLLinkElement :: JSVal }
-
-instance PToJSVal HTMLLinkElement where
-  pToJSVal = unHTMLLinkElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLLinkElement where
-  pFromJSVal = HTMLLinkElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLLinkElement where
-  toJSVal = return . unHTMLLinkElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLLinkElement where
-  fromJSVal v = fmap HTMLLinkElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLLinkElement where
-  makeObject = makeObject . unHTMLLinkElement
-
-instance IsHTMLElement HTMLLinkElement
-instance IsElement HTMLLinkElement
-instance IsNode HTMLLinkElement
-instance IsEventTarget HTMLLinkElement
-instance IsGObject HTMLLinkElement where
-  toGObject = GObject . unHTMLLinkElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLLinkElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLLinkElement :: IsGObject obj => obj -> JSM HTMLLinkElement
-castToHTMLLinkElement = castTo gTypeHTMLLinkElement "HTMLLinkElement"
-
-gTypeHTMLLinkElement :: JSM GType
-gTypeHTMLLinkElement = GType . Object <$> jsg "HTMLLinkElement"
-#else
-type IsHTMLLinkElement o = HTMLLinkElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLMapElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement Mozilla HTMLMapElement documentation>
-newtype HTMLMapElement = HTMLMapElement { unHTMLMapElement :: JSVal }
-
-instance PToJSVal HTMLMapElement where
-  pToJSVal = unHTMLMapElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLMapElement where
-  pFromJSVal = HTMLMapElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLMapElement where
-  toJSVal = return . unHTMLMapElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLMapElement where
-  fromJSVal v = fmap HTMLMapElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLMapElement where
-  makeObject = makeObject . unHTMLMapElement
-
-instance IsHTMLElement HTMLMapElement
-instance IsElement HTMLMapElement
-instance IsNode HTMLMapElement
-instance IsEventTarget HTMLMapElement
-instance IsGObject HTMLMapElement where
-  toGObject = GObject . unHTMLMapElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLMapElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLMapElement :: IsGObject obj => obj -> JSM HTMLMapElement
-castToHTMLMapElement = castTo gTypeHTMLMapElement "HTMLMapElement"
-
-gTypeHTMLMapElement :: JSM GType
-gTypeHTMLMapElement = GType . Object <$> jsg "HTMLMapElement"
-#else
-type IsHTMLMapElement o = HTMLMapElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLMarqueeElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement Mozilla HTMLMarqueeElement documentation>
-newtype HTMLMarqueeElement = HTMLMarqueeElement { unHTMLMarqueeElement :: JSVal }
-
-instance PToJSVal HTMLMarqueeElement where
-  pToJSVal = unHTMLMarqueeElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLMarqueeElement where
-  pFromJSVal = HTMLMarqueeElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLMarqueeElement where
-  toJSVal = return . unHTMLMarqueeElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLMarqueeElement where
-  fromJSVal v = fmap HTMLMarqueeElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLMarqueeElement where
-  makeObject = makeObject . unHTMLMarqueeElement
-
-instance IsHTMLElement HTMLMarqueeElement
-instance IsElement HTMLMarqueeElement
-instance IsNode HTMLMarqueeElement
-instance IsEventTarget HTMLMarqueeElement
-instance IsGObject HTMLMarqueeElement where
-  toGObject = GObject . unHTMLMarqueeElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLMarqueeElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLMarqueeElement :: IsGObject obj => obj -> JSM HTMLMarqueeElement
-castToHTMLMarqueeElement = castTo gTypeHTMLMarqueeElement "HTMLMarqueeElement"
-
-gTypeHTMLMarqueeElement :: JSM GType
-gTypeHTMLMarqueeElement = GType . Object <$> jsg "HTMLMarqueeElement"
-#else
-type IsHTMLMarqueeElement o = HTMLMarqueeElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLMediaElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement Mozilla HTMLMediaElement documentation>
-newtype HTMLMediaElement = HTMLMediaElement { unHTMLMediaElement :: JSVal }
-
-instance PToJSVal HTMLMediaElement where
-  pToJSVal = unHTMLMediaElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLMediaElement where
-  pFromJSVal = HTMLMediaElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLMediaElement where
-  toJSVal = return . unHTMLMediaElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLMediaElement where
-  fromJSVal v = fmap HTMLMediaElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLMediaElement where
-  makeObject = makeObject . unHTMLMediaElement
-
-class IsHTMLElement o => IsHTMLMediaElement o
-toHTMLMediaElement :: IsHTMLMediaElement o => o -> HTMLMediaElement
-toHTMLMediaElement = unsafeCastGObject . toGObject
-
-instance IsHTMLMediaElement HTMLMediaElement
-instance IsHTMLElement HTMLMediaElement
-instance IsElement HTMLMediaElement
-instance IsNode HTMLMediaElement
-instance IsEventTarget HTMLMediaElement
-instance IsGObject HTMLMediaElement where
-  toGObject = GObject . unHTMLMediaElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLMediaElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLMediaElement :: IsGObject obj => obj -> JSM HTMLMediaElement
-castToHTMLMediaElement = castTo gTypeHTMLMediaElement "HTMLMediaElement"
-
-gTypeHTMLMediaElement :: JSM GType
-gTypeHTMLMediaElement = GType . Object <$> jsg "HTMLMediaElement"
-#else
-type IsHTMLMediaElement o = HTMLMediaElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLMenuElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement Mozilla HTMLMenuElement documentation>
-newtype HTMLMenuElement = HTMLMenuElement { unHTMLMenuElement :: JSVal }
-
-instance PToJSVal HTMLMenuElement where
-  pToJSVal = unHTMLMenuElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLMenuElement where
-  pFromJSVal = HTMLMenuElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLMenuElement where
-  toJSVal = return . unHTMLMenuElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLMenuElement where
-  fromJSVal v = fmap HTMLMenuElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLMenuElement where
-  makeObject = makeObject . unHTMLMenuElement
-
-instance IsHTMLElement HTMLMenuElement
-instance IsElement HTMLMenuElement
-instance IsNode HTMLMenuElement
-instance IsEventTarget HTMLMenuElement
-instance IsGObject HTMLMenuElement where
-  toGObject = GObject . unHTMLMenuElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLMenuElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLMenuElement :: IsGObject obj => obj -> JSM HTMLMenuElement
-castToHTMLMenuElement = castTo gTypeHTMLMenuElement "HTMLMenuElement"
-
-gTypeHTMLMenuElement :: JSM GType
-gTypeHTMLMenuElement = GType . Object <$> jsg "HTMLMenuElement"
-#else
-type IsHTMLMenuElement o = HTMLMenuElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLMetaElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement Mozilla HTMLMetaElement documentation>
-newtype HTMLMetaElement = HTMLMetaElement { unHTMLMetaElement :: JSVal }
-
-instance PToJSVal HTMLMetaElement where
-  pToJSVal = unHTMLMetaElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLMetaElement where
-  pFromJSVal = HTMLMetaElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLMetaElement where
-  toJSVal = return . unHTMLMetaElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLMetaElement where
-  fromJSVal v = fmap HTMLMetaElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLMetaElement where
-  makeObject = makeObject . unHTMLMetaElement
-
-instance IsHTMLElement HTMLMetaElement
-instance IsElement HTMLMetaElement
-instance IsNode HTMLMetaElement
-instance IsEventTarget HTMLMetaElement
-instance IsGObject HTMLMetaElement where
-  toGObject = GObject . unHTMLMetaElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLMetaElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLMetaElement :: IsGObject obj => obj -> JSM HTMLMetaElement
-castToHTMLMetaElement = castTo gTypeHTMLMetaElement "HTMLMetaElement"
-
-gTypeHTMLMetaElement :: JSM GType
-gTypeHTMLMetaElement = GType . Object <$> jsg "HTMLMetaElement"
-#else
-type IsHTMLMetaElement o = HTMLMetaElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLMeterElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement Mozilla HTMLMeterElement documentation>
-newtype HTMLMeterElement = HTMLMeterElement { unHTMLMeterElement :: JSVal }
-
-instance PToJSVal HTMLMeterElement where
-  pToJSVal = unHTMLMeterElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLMeterElement where
-  pFromJSVal = HTMLMeterElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLMeterElement where
-  toJSVal = return . unHTMLMeterElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLMeterElement where
-  fromJSVal v = fmap HTMLMeterElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLMeterElement where
-  makeObject = makeObject . unHTMLMeterElement
-
-instance IsHTMLElement HTMLMeterElement
-instance IsElement HTMLMeterElement
-instance IsNode HTMLMeterElement
-instance IsEventTarget HTMLMeterElement
-instance IsGObject HTMLMeterElement where
-  toGObject = GObject . unHTMLMeterElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLMeterElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLMeterElement :: IsGObject obj => obj -> JSM HTMLMeterElement
-castToHTMLMeterElement = castTo gTypeHTMLMeterElement "HTMLMeterElement"
-
-gTypeHTMLMeterElement :: JSM GType
-gTypeHTMLMeterElement = GType . Object <$> jsg "HTMLMeterElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLModElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement Mozilla HTMLModElement documentation>
-newtype HTMLModElement = HTMLModElement { unHTMLModElement :: JSVal }
-
-instance PToJSVal HTMLModElement where
-  pToJSVal = unHTMLModElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLModElement where
-  pFromJSVal = HTMLModElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLModElement where
-  toJSVal = return . unHTMLModElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLModElement where
-  fromJSVal v = fmap HTMLModElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLModElement where
-  makeObject = makeObject . unHTMLModElement
-
-instance IsHTMLElement HTMLModElement
-instance IsElement HTMLModElement
-instance IsNode HTMLModElement
-instance IsEventTarget HTMLModElement
-instance IsGObject HTMLModElement where
-  toGObject = GObject . unHTMLModElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLModElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLModElement :: IsGObject obj => obj -> JSM HTMLModElement
-castToHTMLModElement = castTo gTypeHTMLModElement "HTMLModElement"
-
-gTypeHTMLModElement :: JSM GType
-gTypeHTMLModElement = GType . Object <$> jsg "HTMLModElement"
-#else
-type IsHTMLModElement o = HTMLModElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLOListElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement Mozilla HTMLOListElement documentation>
-newtype HTMLOListElement = HTMLOListElement { unHTMLOListElement :: JSVal }
-
-instance PToJSVal HTMLOListElement where
-  pToJSVal = unHTMLOListElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLOListElement where
-  pFromJSVal = HTMLOListElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLOListElement where
-  toJSVal = return . unHTMLOListElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLOListElement where
-  fromJSVal v = fmap HTMLOListElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLOListElement where
-  makeObject = makeObject . unHTMLOListElement
-
-instance IsHTMLElement HTMLOListElement
-instance IsElement HTMLOListElement
-instance IsNode HTMLOListElement
-instance IsEventTarget HTMLOListElement
-instance IsGObject HTMLOListElement where
-  toGObject = GObject . unHTMLOListElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLOListElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLOListElement :: IsGObject obj => obj -> JSM HTMLOListElement
-castToHTMLOListElement = castTo gTypeHTMLOListElement "HTMLOListElement"
-
-gTypeHTMLOListElement :: JSM GType
-gTypeHTMLOListElement = GType . Object <$> jsg "HTMLOListElement"
-#else
-type IsHTMLOListElement o = HTMLOListElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLObjectElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement Mozilla HTMLObjectElement documentation>
-newtype HTMLObjectElement = HTMLObjectElement { unHTMLObjectElement :: JSVal }
-
-instance PToJSVal HTMLObjectElement where
-  pToJSVal = unHTMLObjectElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLObjectElement where
-  pFromJSVal = HTMLObjectElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLObjectElement where
-  toJSVal = return . unHTMLObjectElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLObjectElement where
-  fromJSVal v = fmap HTMLObjectElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLObjectElement where
-  makeObject = makeObject . unHTMLObjectElement
-
-instance IsHTMLElement HTMLObjectElement
-instance IsElement HTMLObjectElement
-instance IsNode HTMLObjectElement
-instance IsEventTarget HTMLObjectElement
-instance IsGObject HTMLObjectElement where
-  toGObject = GObject . unHTMLObjectElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLObjectElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLObjectElement :: IsGObject obj => obj -> JSM HTMLObjectElement
-castToHTMLObjectElement = castTo gTypeHTMLObjectElement "HTMLObjectElement"
-
-gTypeHTMLObjectElement :: JSM GType
-gTypeHTMLObjectElement = GType . Object <$> jsg "HTMLObjectElement"
-#else
-type IsHTMLObjectElement o = HTMLObjectElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLOptGroupElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement Mozilla HTMLOptGroupElement documentation>
-newtype HTMLOptGroupElement = HTMLOptGroupElement { unHTMLOptGroupElement :: JSVal }
-
-instance PToJSVal HTMLOptGroupElement where
-  pToJSVal = unHTMLOptGroupElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLOptGroupElement where
-  pFromJSVal = HTMLOptGroupElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLOptGroupElement where
-  toJSVal = return . unHTMLOptGroupElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLOptGroupElement where
-  fromJSVal v = fmap HTMLOptGroupElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLOptGroupElement where
-  makeObject = makeObject . unHTMLOptGroupElement
-
-instance IsHTMLElement HTMLOptGroupElement
-instance IsElement HTMLOptGroupElement
-instance IsNode HTMLOptGroupElement
-instance IsEventTarget HTMLOptGroupElement
-instance IsGObject HTMLOptGroupElement where
-  toGObject = GObject . unHTMLOptGroupElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLOptGroupElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLOptGroupElement :: IsGObject obj => obj -> JSM HTMLOptGroupElement
-castToHTMLOptGroupElement = castTo gTypeHTMLOptGroupElement "HTMLOptGroupElement"
-
-gTypeHTMLOptGroupElement :: JSM GType
-gTypeHTMLOptGroupElement = GType . Object <$> jsg "HTMLOptGroupElement"
-#else
-type IsHTMLOptGroupElement o = HTMLOptGroupElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLOptionElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement Mozilla HTMLOptionElement documentation>
-newtype HTMLOptionElement = HTMLOptionElement { unHTMLOptionElement :: JSVal }
-
-instance PToJSVal HTMLOptionElement where
-  pToJSVal = unHTMLOptionElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLOptionElement where
-  pFromJSVal = HTMLOptionElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLOptionElement where
-  toJSVal = return . unHTMLOptionElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLOptionElement where
-  fromJSVal v = fmap HTMLOptionElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLOptionElement where
-  makeObject = makeObject . unHTMLOptionElement
-
-instance IsHTMLElement HTMLOptionElement
-instance IsElement HTMLOptionElement
-instance IsNode HTMLOptionElement
-instance IsEventTarget HTMLOptionElement
-instance IsGObject HTMLOptionElement where
-  toGObject = GObject . unHTMLOptionElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLOptionElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLOptionElement :: IsGObject obj => obj -> JSM HTMLOptionElement
-castToHTMLOptionElement = castTo gTypeHTMLOptionElement "HTMLOptionElement"
-
-gTypeHTMLOptionElement :: JSM GType
-gTypeHTMLOptionElement = GType . Object <$> jsg "HTMLOptionElement"
-#else
-type IsHTMLOptionElement o = HTMLOptionElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLOptionsCollection".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLCollection"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection Mozilla HTMLOptionsCollection documentation>
-newtype HTMLOptionsCollection = HTMLOptionsCollection { unHTMLOptionsCollection :: JSVal }
-
-instance PToJSVal HTMLOptionsCollection where
-  pToJSVal = unHTMLOptionsCollection
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLOptionsCollection where
-  pFromJSVal = HTMLOptionsCollection
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLOptionsCollection where
-  toJSVal = return . unHTMLOptionsCollection
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLOptionsCollection where
-  fromJSVal v = fmap HTMLOptionsCollection <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLOptionsCollection where
-  makeObject = makeObject . unHTMLOptionsCollection
-
-instance IsHTMLCollection HTMLOptionsCollection
-instance IsGObject HTMLOptionsCollection where
-  toGObject = GObject . unHTMLOptionsCollection
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLOptionsCollection . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLOptionsCollection :: IsGObject obj => obj -> JSM HTMLOptionsCollection
-castToHTMLOptionsCollection = castTo gTypeHTMLOptionsCollection "HTMLOptionsCollection"
-
-gTypeHTMLOptionsCollection :: JSM GType
-gTypeHTMLOptionsCollection = GType . Object <$> jsg "HTMLOptionsCollection"
-#else
-type IsHTMLOptionsCollection o = HTMLOptionsCollectionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLOutputElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement Mozilla HTMLOutputElement documentation>
-newtype HTMLOutputElement = HTMLOutputElement { unHTMLOutputElement :: JSVal }
-
-instance PToJSVal HTMLOutputElement where
-  pToJSVal = unHTMLOutputElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLOutputElement where
-  pFromJSVal = HTMLOutputElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLOutputElement where
-  toJSVal = return . unHTMLOutputElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLOutputElement where
-  fromJSVal v = fmap HTMLOutputElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLOutputElement where
-  makeObject = makeObject . unHTMLOutputElement
-
-instance IsHTMLElement HTMLOutputElement
-instance IsElement HTMLOutputElement
-instance IsNode HTMLOutputElement
-instance IsEventTarget HTMLOutputElement
-instance IsGObject HTMLOutputElement where
-  toGObject = GObject . unHTMLOutputElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLOutputElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLOutputElement :: IsGObject obj => obj -> JSM HTMLOutputElement
-castToHTMLOutputElement = castTo gTypeHTMLOutputElement "HTMLOutputElement"
-
-gTypeHTMLOutputElement :: JSM GType
-gTypeHTMLOutputElement = GType . Object <$> jsg "HTMLOutputElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLParagraphElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement Mozilla HTMLParagraphElement documentation>
-newtype HTMLParagraphElement = HTMLParagraphElement { unHTMLParagraphElement :: JSVal }
-
-instance PToJSVal HTMLParagraphElement where
-  pToJSVal = unHTMLParagraphElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLParagraphElement where
-  pFromJSVal = HTMLParagraphElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLParagraphElement where
-  toJSVal = return . unHTMLParagraphElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLParagraphElement where
-  fromJSVal v = fmap HTMLParagraphElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLParagraphElement where
-  makeObject = makeObject . unHTMLParagraphElement
-
-instance IsHTMLElement HTMLParagraphElement
-instance IsElement HTMLParagraphElement
-instance IsNode HTMLParagraphElement
-instance IsEventTarget HTMLParagraphElement
-instance IsGObject HTMLParagraphElement where
-  toGObject = GObject . unHTMLParagraphElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLParagraphElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLParagraphElement :: IsGObject obj => obj -> JSM HTMLParagraphElement
-castToHTMLParagraphElement = castTo gTypeHTMLParagraphElement "HTMLParagraphElement"
-
-gTypeHTMLParagraphElement :: JSM GType
-gTypeHTMLParagraphElement = GType . Object <$> jsg "HTMLParagraphElement"
-#else
-type IsHTMLParagraphElement o = HTMLParagraphElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLParamElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement Mozilla HTMLParamElement documentation>
-newtype HTMLParamElement = HTMLParamElement { unHTMLParamElement :: JSVal }
-
-instance PToJSVal HTMLParamElement where
-  pToJSVal = unHTMLParamElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLParamElement where
-  pFromJSVal = HTMLParamElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLParamElement where
-  toJSVal = return . unHTMLParamElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLParamElement where
-  fromJSVal v = fmap HTMLParamElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLParamElement where
-  makeObject = makeObject . unHTMLParamElement
-
-instance IsHTMLElement HTMLParamElement
-instance IsElement HTMLParamElement
-instance IsNode HTMLParamElement
-instance IsEventTarget HTMLParamElement
-instance IsGObject HTMLParamElement where
-  toGObject = GObject . unHTMLParamElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLParamElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLParamElement :: IsGObject obj => obj -> JSM HTMLParamElement
-castToHTMLParamElement = castTo gTypeHTMLParamElement "HTMLParamElement"
-
-gTypeHTMLParamElement :: JSM GType
-gTypeHTMLParamElement = GType . Object <$> jsg "HTMLParamElement"
-#else
-type IsHTMLParamElement o = HTMLParamElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLPreElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement Mozilla HTMLPreElement documentation>
-newtype HTMLPreElement = HTMLPreElement { unHTMLPreElement :: JSVal }
-
-instance PToJSVal HTMLPreElement where
-  pToJSVal = unHTMLPreElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLPreElement where
-  pFromJSVal = HTMLPreElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLPreElement where
-  toJSVal = return . unHTMLPreElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLPreElement where
-  fromJSVal v = fmap HTMLPreElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLPreElement where
-  makeObject = makeObject . unHTMLPreElement
-
-instance IsHTMLElement HTMLPreElement
-instance IsElement HTMLPreElement
-instance IsNode HTMLPreElement
-instance IsEventTarget HTMLPreElement
-instance IsGObject HTMLPreElement where
-  toGObject = GObject . unHTMLPreElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLPreElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLPreElement :: IsGObject obj => obj -> JSM HTMLPreElement
-castToHTMLPreElement = castTo gTypeHTMLPreElement "HTMLPreElement"
-
-gTypeHTMLPreElement :: JSM GType
-gTypeHTMLPreElement = GType . Object <$> jsg "HTMLPreElement"
-#else
-type IsHTMLPreElement o = HTMLPreElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLProgressElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement Mozilla HTMLProgressElement documentation>
-newtype HTMLProgressElement = HTMLProgressElement { unHTMLProgressElement :: JSVal }
-
-instance PToJSVal HTMLProgressElement where
-  pToJSVal = unHTMLProgressElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLProgressElement where
-  pFromJSVal = HTMLProgressElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLProgressElement where
-  toJSVal = return . unHTMLProgressElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLProgressElement where
-  fromJSVal v = fmap HTMLProgressElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLProgressElement where
-  makeObject = makeObject . unHTMLProgressElement
-
-instance IsHTMLElement HTMLProgressElement
-instance IsElement HTMLProgressElement
-instance IsNode HTMLProgressElement
-instance IsEventTarget HTMLProgressElement
-instance IsGObject HTMLProgressElement where
-  toGObject = GObject . unHTMLProgressElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLProgressElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLProgressElement :: IsGObject obj => obj -> JSM HTMLProgressElement
-castToHTMLProgressElement = castTo gTypeHTMLProgressElement "HTMLProgressElement"
-
-gTypeHTMLProgressElement :: JSM GType
-gTypeHTMLProgressElement = GType . Object <$> jsg "HTMLProgressElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLQuoteElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement Mozilla HTMLQuoteElement documentation>
-newtype HTMLQuoteElement = HTMLQuoteElement { unHTMLQuoteElement :: JSVal }
-
-instance PToJSVal HTMLQuoteElement where
-  pToJSVal = unHTMLQuoteElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLQuoteElement where
-  pFromJSVal = HTMLQuoteElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLQuoteElement where
-  toJSVal = return . unHTMLQuoteElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLQuoteElement where
-  fromJSVal v = fmap HTMLQuoteElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLQuoteElement where
-  makeObject = makeObject . unHTMLQuoteElement
-
-instance IsHTMLElement HTMLQuoteElement
-instance IsElement HTMLQuoteElement
-instance IsNode HTMLQuoteElement
-instance IsEventTarget HTMLQuoteElement
-instance IsGObject HTMLQuoteElement where
-  toGObject = GObject . unHTMLQuoteElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLQuoteElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLQuoteElement :: IsGObject obj => obj -> JSM HTMLQuoteElement
-castToHTMLQuoteElement = castTo gTypeHTMLQuoteElement "HTMLQuoteElement"
-
-gTypeHTMLQuoteElement :: JSM GType
-gTypeHTMLQuoteElement = GType . Object <$> jsg "HTMLQuoteElement"
-#else
-type IsHTMLQuoteElement o = HTMLQuoteElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLScriptElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement Mozilla HTMLScriptElement documentation>
-newtype HTMLScriptElement = HTMLScriptElement { unHTMLScriptElement :: JSVal }
-
-instance PToJSVal HTMLScriptElement where
-  pToJSVal = unHTMLScriptElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLScriptElement where
-  pFromJSVal = HTMLScriptElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLScriptElement where
-  toJSVal = return . unHTMLScriptElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLScriptElement where
-  fromJSVal v = fmap HTMLScriptElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLScriptElement where
-  makeObject = makeObject . unHTMLScriptElement
-
-instance IsHTMLElement HTMLScriptElement
-instance IsElement HTMLScriptElement
-instance IsNode HTMLScriptElement
-instance IsEventTarget HTMLScriptElement
-instance IsGObject HTMLScriptElement where
-  toGObject = GObject . unHTMLScriptElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLScriptElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLScriptElement :: IsGObject obj => obj -> JSM HTMLScriptElement
-castToHTMLScriptElement = castTo gTypeHTMLScriptElement "HTMLScriptElement"
-
-gTypeHTMLScriptElement :: JSM GType
-gTypeHTMLScriptElement = GType . Object <$> jsg "HTMLScriptElement"
-#else
-type IsHTMLScriptElement o = HTMLScriptElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLSelectElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement Mozilla HTMLSelectElement documentation>
-newtype HTMLSelectElement = HTMLSelectElement { unHTMLSelectElement :: JSVal }
-
-instance PToJSVal HTMLSelectElement where
-  pToJSVal = unHTMLSelectElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLSelectElement where
-  pFromJSVal = HTMLSelectElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLSelectElement where
-  toJSVal = return . unHTMLSelectElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLSelectElement where
-  fromJSVal v = fmap HTMLSelectElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLSelectElement where
-  makeObject = makeObject . unHTMLSelectElement
-
-instance IsHTMLElement HTMLSelectElement
-instance IsElement HTMLSelectElement
-instance IsNode HTMLSelectElement
-instance IsEventTarget HTMLSelectElement
-instance IsGObject HTMLSelectElement where
-  toGObject = GObject . unHTMLSelectElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLSelectElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLSelectElement :: IsGObject obj => obj -> JSM HTMLSelectElement
-castToHTMLSelectElement = castTo gTypeHTMLSelectElement "HTMLSelectElement"
-
-gTypeHTMLSelectElement :: JSM GType
-gTypeHTMLSelectElement = GType . Object <$> jsg "HTMLSelectElement"
-#else
-type IsHTMLSelectElement o = HTMLSelectElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLSourceElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement Mozilla HTMLSourceElement documentation>
-newtype HTMLSourceElement = HTMLSourceElement { unHTMLSourceElement :: JSVal }
-
-instance PToJSVal HTMLSourceElement where
-  pToJSVal = unHTMLSourceElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLSourceElement where
-  pFromJSVal = HTMLSourceElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLSourceElement where
-  toJSVal = return . unHTMLSourceElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLSourceElement where
-  fromJSVal v = fmap HTMLSourceElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLSourceElement where
-  makeObject = makeObject . unHTMLSourceElement
-
-instance IsHTMLElement HTMLSourceElement
-instance IsElement HTMLSourceElement
-instance IsNode HTMLSourceElement
-instance IsEventTarget HTMLSourceElement
-instance IsGObject HTMLSourceElement where
-  toGObject = GObject . unHTMLSourceElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLSourceElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLSourceElement :: IsGObject obj => obj -> JSM HTMLSourceElement
-castToHTMLSourceElement = castTo gTypeHTMLSourceElement "HTMLSourceElement"
-
-gTypeHTMLSourceElement :: JSM GType
-gTypeHTMLSourceElement = GType . Object <$> jsg "HTMLSourceElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLSpanElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSpanElement Mozilla HTMLSpanElement documentation>
-newtype HTMLSpanElement = HTMLSpanElement { unHTMLSpanElement :: JSVal }
-
-instance PToJSVal HTMLSpanElement where
-  pToJSVal = unHTMLSpanElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLSpanElement where
-  pFromJSVal = HTMLSpanElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLSpanElement where
-  toJSVal = return . unHTMLSpanElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLSpanElement where
-  fromJSVal v = fmap HTMLSpanElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLSpanElement where
-  makeObject = makeObject . unHTMLSpanElement
-
-instance IsHTMLElement HTMLSpanElement
-instance IsElement HTMLSpanElement
-instance IsNode HTMLSpanElement
-instance IsEventTarget HTMLSpanElement
-instance IsGObject HTMLSpanElement where
-  toGObject = GObject . unHTMLSpanElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLSpanElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLSpanElement :: IsGObject obj => obj -> JSM HTMLSpanElement
-castToHTMLSpanElement = castTo gTypeHTMLSpanElement "HTMLSpanElement"
-
-gTypeHTMLSpanElement :: JSM GType
-gTypeHTMLSpanElement = GType . Object <$> jsg "HTMLSpanElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLStyleElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement Mozilla HTMLStyleElement documentation>
-newtype HTMLStyleElement = HTMLStyleElement { unHTMLStyleElement :: JSVal }
-
-instance PToJSVal HTMLStyleElement where
-  pToJSVal = unHTMLStyleElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLStyleElement where
-  pFromJSVal = HTMLStyleElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLStyleElement where
-  toJSVal = return . unHTMLStyleElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLStyleElement where
-  fromJSVal v = fmap HTMLStyleElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLStyleElement where
-  makeObject = makeObject . unHTMLStyleElement
-
-instance IsHTMLElement HTMLStyleElement
-instance IsElement HTMLStyleElement
-instance IsNode HTMLStyleElement
-instance IsEventTarget HTMLStyleElement
-instance IsGObject HTMLStyleElement where
-  toGObject = GObject . unHTMLStyleElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLStyleElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLStyleElement :: IsGObject obj => obj -> JSM HTMLStyleElement
-castToHTMLStyleElement = castTo gTypeHTMLStyleElement "HTMLStyleElement"
-
-gTypeHTMLStyleElement :: JSM GType
-gTypeHTMLStyleElement = GType . Object <$> jsg "HTMLStyleElement"
-#else
-type IsHTMLStyleElement o = HTMLStyleElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTableCaptionElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement Mozilla HTMLTableCaptionElement documentation>
-newtype HTMLTableCaptionElement = HTMLTableCaptionElement { unHTMLTableCaptionElement :: JSVal }
-
-instance PToJSVal HTMLTableCaptionElement where
-  pToJSVal = unHTMLTableCaptionElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTableCaptionElement where
-  pFromJSVal = HTMLTableCaptionElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTableCaptionElement where
-  toJSVal = return . unHTMLTableCaptionElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTableCaptionElement where
-  fromJSVal v = fmap HTMLTableCaptionElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTableCaptionElement where
-  makeObject = makeObject . unHTMLTableCaptionElement
-
-instance IsHTMLElement HTMLTableCaptionElement
-instance IsElement HTMLTableCaptionElement
-instance IsNode HTMLTableCaptionElement
-instance IsEventTarget HTMLTableCaptionElement
-instance IsGObject HTMLTableCaptionElement where
-  toGObject = GObject . unHTMLTableCaptionElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTableCaptionElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTableCaptionElement :: IsGObject obj => obj -> JSM HTMLTableCaptionElement
-castToHTMLTableCaptionElement = castTo gTypeHTMLTableCaptionElement "HTMLTableCaptionElement"
-
-gTypeHTMLTableCaptionElement :: JSM GType
-gTypeHTMLTableCaptionElement = GType . Object <$> jsg "HTMLTableCaptionElement"
-#else
-type IsHTMLTableCaptionElement o = HTMLTableCaptionElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTableCellElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement Mozilla HTMLTableCellElement documentation>
-newtype HTMLTableCellElement = HTMLTableCellElement { unHTMLTableCellElement :: JSVal }
-
-instance PToJSVal HTMLTableCellElement where
-  pToJSVal = unHTMLTableCellElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTableCellElement where
-  pFromJSVal = HTMLTableCellElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTableCellElement where
-  toJSVal = return . unHTMLTableCellElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTableCellElement where
-  fromJSVal v = fmap HTMLTableCellElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTableCellElement where
-  makeObject = makeObject . unHTMLTableCellElement
-
-instance IsHTMLElement HTMLTableCellElement
-instance IsElement HTMLTableCellElement
-instance IsNode HTMLTableCellElement
-instance IsEventTarget HTMLTableCellElement
-instance IsGObject HTMLTableCellElement where
-  toGObject = GObject . unHTMLTableCellElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTableCellElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTableCellElement :: IsGObject obj => obj -> JSM HTMLTableCellElement
-castToHTMLTableCellElement = castTo gTypeHTMLTableCellElement "HTMLTableCellElement"
-
-gTypeHTMLTableCellElement :: JSM GType
-gTypeHTMLTableCellElement = GType . Object <$> jsg "HTMLTableCellElement"
-#else
-type IsHTMLTableCellElement o = HTMLTableCellElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTableColElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement Mozilla HTMLTableColElement documentation>
-newtype HTMLTableColElement = HTMLTableColElement { unHTMLTableColElement :: JSVal }
-
-instance PToJSVal HTMLTableColElement where
-  pToJSVal = unHTMLTableColElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTableColElement where
-  pFromJSVal = HTMLTableColElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTableColElement where
-  toJSVal = return . unHTMLTableColElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTableColElement where
-  fromJSVal v = fmap HTMLTableColElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTableColElement where
-  makeObject = makeObject . unHTMLTableColElement
-
-instance IsHTMLElement HTMLTableColElement
-instance IsElement HTMLTableColElement
-instance IsNode HTMLTableColElement
-instance IsEventTarget HTMLTableColElement
-instance IsGObject HTMLTableColElement where
-  toGObject = GObject . unHTMLTableColElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTableColElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTableColElement :: IsGObject obj => obj -> JSM HTMLTableColElement
-castToHTMLTableColElement = castTo gTypeHTMLTableColElement "HTMLTableColElement"
-
-gTypeHTMLTableColElement :: JSM GType
-gTypeHTMLTableColElement = GType . Object <$> jsg "HTMLTableColElement"
-#else
-type IsHTMLTableColElement o = HTMLTableColElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTableElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement Mozilla HTMLTableElement documentation>
-newtype HTMLTableElement = HTMLTableElement { unHTMLTableElement :: JSVal }
-
-instance PToJSVal HTMLTableElement where
-  pToJSVal = unHTMLTableElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTableElement where
-  pFromJSVal = HTMLTableElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTableElement where
-  toJSVal = return . unHTMLTableElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTableElement where
-  fromJSVal v = fmap HTMLTableElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTableElement where
-  makeObject = makeObject . unHTMLTableElement
-
-instance IsHTMLElement HTMLTableElement
-instance IsElement HTMLTableElement
-instance IsNode HTMLTableElement
-instance IsEventTarget HTMLTableElement
-instance IsGObject HTMLTableElement where
-  toGObject = GObject . unHTMLTableElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTableElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTableElement :: IsGObject obj => obj -> JSM HTMLTableElement
-castToHTMLTableElement = castTo gTypeHTMLTableElement "HTMLTableElement"
-
-gTypeHTMLTableElement :: JSM GType
-gTypeHTMLTableElement = GType . Object <$> jsg "HTMLTableElement"
-#else
-type IsHTMLTableElement o = HTMLTableElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTableRowElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement Mozilla HTMLTableRowElement documentation>
-newtype HTMLTableRowElement = HTMLTableRowElement { unHTMLTableRowElement :: JSVal }
-
-instance PToJSVal HTMLTableRowElement where
-  pToJSVal = unHTMLTableRowElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTableRowElement where
-  pFromJSVal = HTMLTableRowElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTableRowElement where
-  toJSVal = return . unHTMLTableRowElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTableRowElement where
-  fromJSVal v = fmap HTMLTableRowElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTableRowElement where
-  makeObject = makeObject . unHTMLTableRowElement
-
-instance IsHTMLElement HTMLTableRowElement
-instance IsElement HTMLTableRowElement
-instance IsNode HTMLTableRowElement
-instance IsEventTarget HTMLTableRowElement
-instance IsGObject HTMLTableRowElement where
-  toGObject = GObject . unHTMLTableRowElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTableRowElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTableRowElement :: IsGObject obj => obj -> JSM HTMLTableRowElement
-castToHTMLTableRowElement = castTo gTypeHTMLTableRowElement "HTMLTableRowElement"
-
-gTypeHTMLTableRowElement :: JSM GType
-gTypeHTMLTableRowElement = GType . Object <$> jsg "HTMLTableRowElement"
-#else
-type IsHTMLTableRowElement o = HTMLTableRowElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTableSectionElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement Mozilla HTMLTableSectionElement documentation>
-newtype HTMLTableSectionElement = HTMLTableSectionElement { unHTMLTableSectionElement :: JSVal }
-
-instance PToJSVal HTMLTableSectionElement where
-  pToJSVal = unHTMLTableSectionElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTableSectionElement where
-  pFromJSVal = HTMLTableSectionElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTableSectionElement where
-  toJSVal = return . unHTMLTableSectionElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTableSectionElement where
-  fromJSVal v = fmap HTMLTableSectionElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTableSectionElement where
-  makeObject = makeObject . unHTMLTableSectionElement
-
-instance IsHTMLElement HTMLTableSectionElement
-instance IsElement HTMLTableSectionElement
-instance IsNode HTMLTableSectionElement
-instance IsEventTarget HTMLTableSectionElement
-instance IsGObject HTMLTableSectionElement where
-  toGObject = GObject . unHTMLTableSectionElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTableSectionElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTableSectionElement :: IsGObject obj => obj -> JSM HTMLTableSectionElement
-castToHTMLTableSectionElement = castTo gTypeHTMLTableSectionElement "HTMLTableSectionElement"
-
-gTypeHTMLTableSectionElement :: JSM GType
-gTypeHTMLTableSectionElement = GType . Object <$> jsg "HTMLTableSectionElement"
-#else
-type IsHTMLTableSectionElement o = HTMLTableSectionElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTemplateElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement Mozilla HTMLTemplateElement documentation>
-newtype HTMLTemplateElement = HTMLTemplateElement { unHTMLTemplateElement :: JSVal }
-
-instance PToJSVal HTMLTemplateElement where
-  pToJSVal = unHTMLTemplateElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTemplateElement where
-  pFromJSVal = HTMLTemplateElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTemplateElement where
-  toJSVal = return . unHTMLTemplateElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTemplateElement where
-  fromJSVal v = fmap HTMLTemplateElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTemplateElement where
-  makeObject = makeObject . unHTMLTemplateElement
-
-instance IsHTMLElement HTMLTemplateElement
-instance IsElement HTMLTemplateElement
-instance IsNode HTMLTemplateElement
-instance IsEventTarget HTMLTemplateElement
-instance IsGObject HTMLTemplateElement where
-  toGObject = GObject . unHTMLTemplateElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTemplateElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTemplateElement :: IsGObject obj => obj -> JSM HTMLTemplateElement
-castToHTMLTemplateElement = castTo gTypeHTMLTemplateElement "HTMLTemplateElement"
-
-gTypeHTMLTemplateElement :: JSM GType
-gTypeHTMLTemplateElement = GType . Object <$> jsg "HTMLTemplateElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTextAreaElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement Mozilla HTMLTextAreaElement documentation>
-newtype HTMLTextAreaElement = HTMLTextAreaElement { unHTMLTextAreaElement :: JSVal }
-
-instance PToJSVal HTMLTextAreaElement where
-  pToJSVal = unHTMLTextAreaElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTextAreaElement where
-  pFromJSVal = HTMLTextAreaElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTextAreaElement where
-  toJSVal = return . unHTMLTextAreaElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTextAreaElement where
-  fromJSVal v = fmap HTMLTextAreaElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTextAreaElement where
-  makeObject = makeObject . unHTMLTextAreaElement
-
-instance IsHTMLElement HTMLTextAreaElement
-instance IsElement HTMLTextAreaElement
-instance IsNode HTMLTextAreaElement
-instance IsEventTarget HTMLTextAreaElement
-instance IsGObject HTMLTextAreaElement where
-  toGObject = GObject . unHTMLTextAreaElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTextAreaElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTextAreaElement :: IsGObject obj => obj -> JSM HTMLTextAreaElement
-castToHTMLTextAreaElement = castTo gTypeHTMLTextAreaElement "HTMLTextAreaElement"
-
-gTypeHTMLTextAreaElement :: JSM GType
-gTypeHTMLTextAreaElement = GType . Object <$> jsg "HTMLTextAreaElement"
-#else
-type IsHTMLTextAreaElement o = HTMLTextAreaElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTitleElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement Mozilla HTMLTitleElement documentation>
-newtype HTMLTitleElement = HTMLTitleElement { unHTMLTitleElement :: JSVal }
-
-instance PToJSVal HTMLTitleElement where
-  pToJSVal = unHTMLTitleElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTitleElement where
-  pFromJSVal = HTMLTitleElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTitleElement where
-  toJSVal = return . unHTMLTitleElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTitleElement where
-  fromJSVal v = fmap HTMLTitleElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTitleElement where
-  makeObject = makeObject . unHTMLTitleElement
-
-instance IsHTMLElement HTMLTitleElement
-instance IsElement HTMLTitleElement
-instance IsNode HTMLTitleElement
-instance IsEventTarget HTMLTitleElement
-instance IsGObject HTMLTitleElement where
-  toGObject = GObject . unHTMLTitleElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTitleElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTitleElement :: IsGObject obj => obj -> JSM HTMLTitleElement
-castToHTMLTitleElement = castTo gTypeHTMLTitleElement "HTMLTitleElement"
-
-gTypeHTMLTitleElement :: JSM GType
-gTypeHTMLTitleElement = GType . Object <$> jsg "HTMLTitleElement"
-#else
-type IsHTMLTitleElement o = HTMLTitleElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLTrackElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement Mozilla HTMLTrackElement documentation>
-newtype HTMLTrackElement = HTMLTrackElement { unHTMLTrackElement :: JSVal }
-
-instance PToJSVal HTMLTrackElement where
-  pToJSVal = unHTMLTrackElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLTrackElement where
-  pFromJSVal = HTMLTrackElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLTrackElement where
-  toJSVal = return . unHTMLTrackElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLTrackElement where
-  fromJSVal v = fmap HTMLTrackElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLTrackElement where
-  makeObject = makeObject . unHTMLTrackElement
-
-instance IsHTMLElement HTMLTrackElement
-instance IsElement HTMLTrackElement
-instance IsNode HTMLTrackElement
-instance IsEventTarget HTMLTrackElement
-instance IsGObject HTMLTrackElement where
-  toGObject = GObject . unHTMLTrackElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLTrackElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLTrackElement :: IsGObject obj => obj -> JSM HTMLTrackElement
-castToHTMLTrackElement = castTo gTypeHTMLTrackElement "HTMLTrackElement"
-
-gTypeHTMLTrackElement :: JSM GType
-gTypeHTMLTrackElement = GType . Object <$> jsg "HTMLTrackElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLUListElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement Mozilla HTMLUListElement documentation>
-newtype HTMLUListElement = HTMLUListElement { unHTMLUListElement :: JSVal }
-
-instance PToJSVal HTMLUListElement where
-  pToJSVal = unHTMLUListElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLUListElement where
-  pFromJSVal = HTMLUListElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLUListElement where
-  toJSVal = return . unHTMLUListElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLUListElement where
-  fromJSVal v = fmap HTMLUListElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLUListElement where
-  makeObject = makeObject . unHTMLUListElement
-
-instance IsHTMLElement HTMLUListElement
-instance IsElement HTMLUListElement
-instance IsNode HTMLUListElement
-instance IsEventTarget HTMLUListElement
-instance IsGObject HTMLUListElement where
-  toGObject = GObject . unHTMLUListElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLUListElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLUListElement :: IsGObject obj => obj -> JSM HTMLUListElement
-castToHTMLUListElement = castTo gTypeHTMLUListElement "HTMLUListElement"
-
-gTypeHTMLUListElement :: JSM GType
-gTypeHTMLUListElement = GType . Object <$> jsg "HTMLUListElement"
-#else
-type IsHTMLUListElement o = HTMLUListElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLUnknownElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement Mozilla HTMLUnknownElement documentation>
-newtype HTMLUnknownElement = HTMLUnknownElement { unHTMLUnknownElement :: JSVal }
-
-instance PToJSVal HTMLUnknownElement where
-  pToJSVal = unHTMLUnknownElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLUnknownElement where
-  pFromJSVal = HTMLUnknownElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLUnknownElement where
-  toJSVal = return . unHTMLUnknownElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLUnknownElement where
-  fromJSVal v = fmap HTMLUnknownElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLUnknownElement where
-  makeObject = makeObject . unHTMLUnknownElement
-
-instance IsHTMLElement HTMLUnknownElement
-instance IsElement HTMLUnknownElement
-instance IsNode HTMLUnknownElement
-instance IsEventTarget HTMLUnknownElement
-instance IsGObject HTMLUnknownElement where
-  toGObject = GObject . unHTMLUnknownElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLUnknownElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLUnknownElement :: IsGObject obj => obj -> JSM HTMLUnknownElement
-castToHTMLUnknownElement = castTo gTypeHTMLUnknownElement "HTMLUnknownElement"
-
-gTypeHTMLUnknownElement :: JSM GType
-gTypeHTMLUnknownElement = GType . Object <$> jsg "HTMLUnknownElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HTMLVideoElement".
--- Base interface functions are in:
---
---     * "JSDOM.HTMLMediaElement"
---     * "JSDOM.HTMLElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement Mozilla HTMLVideoElement documentation>
-newtype HTMLVideoElement = HTMLVideoElement { unHTMLVideoElement :: JSVal }
-
-instance PToJSVal HTMLVideoElement where
-  pToJSVal = unHTMLVideoElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HTMLVideoElement where
-  pFromJSVal = HTMLVideoElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HTMLVideoElement where
-  toJSVal = return . unHTMLVideoElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HTMLVideoElement where
-  fromJSVal v = fmap HTMLVideoElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HTMLVideoElement where
-  makeObject = makeObject . unHTMLVideoElement
-
-instance IsHTMLMediaElement HTMLVideoElement
-instance IsHTMLElement HTMLVideoElement
-instance IsElement HTMLVideoElement
-instance IsNode HTMLVideoElement
-instance IsEventTarget HTMLVideoElement
-instance IsGObject HTMLVideoElement where
-  toGObject = GObject . unHTMLVideoElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HTMLVideoElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHTMLVideoElement :: IsGObject obj => obj -> JSM HTMLVideoElement
-castToHTMLVideoElement = castTo gTypeHTMLVideoElement "HTMLVideoElement"
-
-gTypeHTMLVideoElement :: JSM GType
-gTypeHTMLVideoElement = GType . Object <$> jsg "HTMLVideoElement"
-#else
-type IsHTMLVideoElement o = HTMLVideoElementClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.HashChangeEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent Mozilla HashChangeEvent documentation>
-newtype HashChangeEvent = HashChangeEvent { unHashChangeEvent :: JSVal }
-
-instance PToJSVal HashChangeEvent where
-  pToJSVal = unHashChangeEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal HashChangeEvent where
-  pFromJSVal = HashChangeEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal HashChangeEvent where
-  toJSVal = return . unHashChangeEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal HashChangeEvent where
-  fromJSVal v = fmap HashChangeEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject HashChangeEvent where
-  makeObject = makeObject . unHashChangeEvent
-
-instance IsEvent HashChangeEvent
-instance IsGObject HashChangeEvent where
-  toGObject = GObject . unHashChangeEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = HashChangeEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHashChangeEvent :: IsGObject obj => obj -> JSM HashChangeEvent
-castToHashChangeEvent = castTo gTypeHashChangeEvent "HashChangeEvent"
-
-gTypeHashChangeEvent :: JSM GType
-gTypeHashChangeEvent = GType . Object <$> jsg "HashChangeEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.History".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/History Mozilla History documentation>
-newtype History = History { unHistory :: JSVal }
-
-instance PToJSVal History where
-  pToJSVal = unHistory
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal History where
-  pFromJSVal = History
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal History where
-  toJSVal = return . unHistory
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal History where
-  fromJSVal v = fmap History <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject History where
-  makeObject = makeObject . unHistory
-
-instance IsGObject History where
-  toGObject = GObject . unHistory
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = History . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToHistory :: IsGObject obj => obj -> JSM History
-castToHistory = castTo gTypeHistory "History"
-
-gTypeHistory :: JSM GType
-gTypeHistory = GType . Object <$> jsg "History"
-#else
-type IsHistory o = HistoryClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBAny".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBAny Mozilla IDBAny documentation>
-newtype IDBAny = IDBAny { unIDBAny :: JSVal }
-
-instance PToJSVal IDBAny where
-  pToJSVal = unIDBAny
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBAny where
-  pFromJSVal = IDBAny
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBAny where
-  toJSVal = return . unIDBAny
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBAny where
-  fromJSVal v = fmap IDBAny <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBAny where
-  makeObject = makeObject . unIDBAny
-
-instance IsGObject IDBAny where
-  toGObject = GObject . unIDBAny
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBAny . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBAny :: IsGObject obj => obj -> JSM IDBAny
-castToIDBAny = castTo gTypeIDBAny "IDBAny"
-
-gTypeIDBAny :: JSM GType
-gTypeIDBAny = GType . Object <$> jsg "IDBAny"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBCursor".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor Mozilla IDBCursor documentation>
-newtype IDBCursor = IDBCursor { unIDBCursor :: JSVal }
-
-instance PToJSVal IDBCursor where
-  pToJSVal = unIDBCursor
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBCursor where
-  pFromJSVal = IDBCursor
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBCursor where
-  toJSVal = return . unIDBCursor
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBCursor where
-  fromJSVal v = fmap IDBCursor <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBCursor where
-  makeObject = makeObject . unIDBCursor
-
-class IsGObject o => IsIDBCursor o
-toIDBCursor :: IsIDBCursor o => o -> IDBCursor
-toIDBCursor = unsafeCastGObject . toGObject
-
-instance IsIDBCursor IDBCursor
-instance IsGObject IDBCursor where
-  toGObject = GObject . unIDBCursor
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBCursor . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBCursor :: IsGObject obj => obj -> JSM IDBCursor
-castToIDBCursor = castTo gTypeIDBCursor "IDBCursor"
-
-gTypeIDBCursor :: JSM GType
-gTypeIDBCursor = GType . Object <$> jsg "IDBCursor"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBCursorWithValue".
--- Base interface functions are in:
---
---     * "JSDOM.IDBCursor"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue Mozilla IDBCursorWithValue documentation>
-newtype IDBCursorWithValue = IDBCursorWithValue { unIDBCursorWithValue :: JSVal }
-
-instance PToJSVal IDBCursorWithValue where
-  pToJSVal = unIDBCursorWithValue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBCursorWithValue where
-  pFromJSVal = IDBCursorWithValue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBCursorWithValue where
-  toJSVal = return . unIDBCursorWithValue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBCursorWithValue where
-  fromJSVal v = fmap IDBCursorWithValue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBCursorWithValue where
-  makeObject = makeObject . unIDBCursorWithValue
-
-instance IsIDBCursor IDBCursorWithValue
-instance IsGObject IDBCursorWithValue where
-  toGObject = GObject . unIDBCursorWithValue
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBCursorWithValue . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBCursorWithValue :: IsGObject obj => obj -> JSM IDBCursorWithValue
-castToIDBCursorWithValue = castTo gTypeIDBCursorWithValue "IDBCursorWithValue"
-
-gTypeIDBCursorWithValue :: JSM GType
-gTypeIDBCursorWithValue = GType . Object <$> jsg "IDBCursorWithValue"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBDatabase".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase Mozilla IDBDatabase documentation>
-newtype IDBDatabase = IDBDatabase { unIDBDatabase :: JSVal }
-
-instance PToJSVal IDBDatabase where
-  pToJSVal = unIDBDatabase
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBDatabase where
-  pFromJSVal = IDBDatabase
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBDatabase where
-  toJSVal = return . unIDBDatabase
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBDatabase where
-  fromJSVal v = fmap IDBDatabase <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBDatabase where
-  makeObject = makeObject . unIDBDatabase
-
-instance IsEventTarget IDBDatabase
-instance IsGObject IDBDatabase where
-  toGObject = GObject . unIDBDatabase
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBDatabase . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBDatabase :: IsGObject obj => obj -> JSM IDBDatabase
-castToIDBDatabase = castTo gTypeIDBDatabase "IDBDatabase"
-
-gTypeIDBDatabase :: JSM GType
-gTypeIDBDatabase = GType . Object <$> jsg "IDBDatabase"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBFactory".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory Mozilla IDBFactory documentation>
-newtype IDBFactory = IDBFactory { unIDBFactory :: JSVal }
-
-instance PToJSVal IDBFactory where
-  pToJSVal = unIDBFactory
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBFactory where
-  pFromJSVal = IDBFactory
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBFactory where
-  toJSVal = return . unIDBFactory
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBFactory where
-  fromJSVal v = fmap IDBFactory <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBFactory where
-  makeObject = makeObject . unIDBFactory
-
-instance IsGObject IDBFactory where
-  toGObject = GObject . unIDBFactory
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBFactory . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBFactory :: IsGObject obj => obj -> JSM IDBFactory
-castToIDBFactory = castTo gTypeIDBFactory "IDBFactory"
-
-gTypeIDBFactory :: JSM GType
-gTypeIDBFactory = GType . Object <$> jsg "IDBFactory"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBIndex".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex Mozilla IDBIndex documentation>
-newtype IDBIndex = IDBIndex { unIDBIndex :: JSVal }
-
-instance PToJSVal IDBIndex where
-  pToJSVal = unIDBIndex
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBIndex where
-  pFromJSVal = IDBIndex
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBIndex where
-  toJSVal = return . unIDBIndex
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBIndex where
-  fromJSVal v = fmap IDBIndex <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBIndex where
-  makeObject = makeObject . unIDBIndex
-
-instance IsGObject IDBIndex where
-  toGObject = GObject . unIDBIndex
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBIndex . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBIndex :: IsGObject obj => obj -> JSM IDBIndex
-castToIDBIndex = castTo gTypeIDBIndex "IDBIndex"
-
-gTypeIDBIndex :: JSM GType
-gTypeIDBIndex = GType . Object <$> jsg "IDBIndex"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBKeyRange".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange Mozilla IDBKeyRange documentation>
-newtype IDBKeyRange = IDBKeyRange { unIDBKeyRange :: JSVal }
-
-instance PToJSVal IDBKeyRange where
-  pToJSVal = unIDBKeyRange
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBKeyRange where
-  pFromJSVal = IDBKeyRange
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBKeyRange where
-  toJSVal = return . unIDBKeyRange
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBKeyRange where
-  fromJSVal v = fmap IDBKeyRange <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBKeyRange where
-  makeObject = makeObject . unIDBKeyRange
-
-instance IsGObject IDBKeyRange where
-  toGObject = GObject . unIDBKeyRange
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBKeyRange . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBKeyRange :: IsGObject obj => obj -> JSM IDBKeyRange
-castToIDBKeyRange = castTo gTypeIDBKeyRange "IDBKeyRange"
-
-gTypeIDBKeyRange :: JSM GType
-gTypeIDBKeyRange = GType . Object <$> jsg "IDBKeyRange"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBObjectStore".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore Mozilla IDBObjectStore documentation>
-newtype IDBObjectStore = IDBObjectStore { unIDBObjectStore :: JSVal }
-
-instance PToJSVal IDBObjectStore where
-  pToJSVal = unIDBObjectStore
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBObjectStore where
-  pFromJSVal = IDBObjectStore
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBObjectStore where
-  toJSVal = return . unIDBObjectStore
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBObjectStore where
-  fromJSVal v = fmap IDBObjectStore <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBObjectStore where
-  makeObject = makeObject . unIDBObjectStore
-
-instance IsGObject IDBObjectStore where
-  toGObject = GObject . unIDBObjectStore
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBObjectStore . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBObjectStore :: IsGObject obj => obj -> JSM IDBObjectStore
-castToIDBObjectStore = castTo gTypeIDBObjectStore "IDBObjectStore"
-
-gTypeIDBObjectStore :: JSM GType
-gTypeIDBObjectStore = GType . Object <$> jsg "IDBObjectStore"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBOpenDBRequest".
--- Base interface functions are in:
---
---     * "JSDOM.IDBRequest"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest Mozilla IDBOpenDBRequest documentation>
-newtype IDBOpenDBRequest = IDBOpenDBRequest { unIDBOpenDBRequest :: JSVal }
-
-instance PToJSVal IDBOpenDBRequest where
-  pToJSVal = unIDBOpenDBRequest
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBOpenDBRequest where
-  pFromJSVal = IDBOpenDBRequest
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBOpenDBRequest where
-  toJSVal = return . unIDBOpenDBRequest
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBOpenDBRequest where
-  fromJSVal v = fmap IDBOpenDBRequest <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBOpenDBRequest where
-  makeObject = makeObject . unIDBOpenDBRequest
-
-instance IsIDBRequest IDBOpenDBRequest
-instance IsEventTarget IDBOpenDBRequest
-instance IsGObject IDBOpenDBRequest where
-  toGObject = GObject . unIDBOpenDBRequest
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBOpenDBRequest . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBOpenDBRequest :: IsGObject obj => obj -> JSM IDBOpenDBRequest
-castToIDBOpenDBRequest = castTo gTypeIDBOpenDBRequest "IDBOpenDBRequest"
-
-gTypeIDBOpenDBRequest :: JSM GType
-gTypeIDBOpenDBRequest = GType . Object <$> jsg "IDBOpenDBRequest"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBRequest".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest Mozilla IDBRequest documentation>
-newtype IDBRequest = IDBRequest { unIDBRequest :: JSVal }
-
-instance PToJSVal IDBRequest where
-  pToJSVal = unIDBRequest
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBRequest where
-  pFromJSVal = IDBRequest
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBRequest where
-  toJSVal = return . unIDBRequest
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBRequest where
-  fromJSVal v = fmap IDBRequest <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBRequest where
-  makeObject = makeObject . unIDBRequest
-
-class IsEventTarget o => IsIDBRequest o
-toIDBRequest :: IsIDBRequest o => o -> IDBRequest
-toIDBRequest = unsafeCastGObject . toGObject
-
-instance IsIDBRequest IDBRequest
-instance IsEventTarget IDBRequest
-instance IsGObject IDBRequest where
-  toGObject = GObject . unIDBRequest
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBRequest . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBRequest :: IsGObject obj => obj -> JSM IDBRequest
-castToIDBRequest = castTo gTypeIDBRequest "IDBRequest"
-
-gTypeIDBRequest :: JSM GType
-gTypeIDBRequest = GType . Object <$> jsg "IDBRequest"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBTransaction".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction Mozilla IDBTransaction documentation>
-newtype IDBTransaction = IDBTransaction { unIDBTransaction :: JSVal }
-
-instance PToJSVal IDBTransaction where
-  pToJSVal = unIDBTransaction
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBTransaction where
-  pFromJSVal = IDBTransaction
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBTransaction where
-  toJSVal = return . unIDBTransaction
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBTransaction where
-  fromJSVal v = fmap IDBTransaction <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBTransaction where
-  makeObject = makeObject . unIDBTransaction
-
-instance IsEventTarget IDBTransaction
-instance IsGObject IDBTransaction where
-  toGObject = GObject . unIDBTransaction
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBTransaction . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBTransaction :: IsGObject obj => obj -> JSM IDBTransaction
-castToIDBTransaction = castTo gTypeIDBTransaction "IDBTransaction"
-
-gTypeIDBTransaction :: JSM GType
-gTypeIDBTransaction = GType . Object <$> jsg "IDBTransaction"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.IDBVersionChangeEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent Mozilla IDBVersionChangeEvent documentation>
-newtype IDBVersionChangeEvent = IDBVersionChangeEvent { unIDBVersionChangeEvent :: JSVal }
-
-instance PToJSVal IDBVersionChangeEvent where
-  pToJSVal = unIDBVersionChangeEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal IDBVersionChangeEvent where
-  pFromJSVal = IDBVersionChangeEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal IDBVersionChangeEvent where
-  toJSVal = return . unIDBVersionChangeEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal IDBVersionChangeEvent where
-  fromJSVal v = fmap IDBVersionChangeEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject IDBVersionChangeEvent where
-  makeObject = makeObject . unIDBVersionChangeEvent
-
-instance IsEvent IDBVersionChangeEvent
-instance IsGObject IDBVersionChangeEvent where
-  toGObject = GObject . unIDBVersionChangeEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = IDBVersionChangeEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToIDBVersionChangeEvent :: IsGObject obj => obj -> JSM IDBVersionChangeEvent
-castToIDBVersionChangeEvent = castTo gTypeIDBVersionChangeEvent "IDBVersionChangeEvent"
-
-gTypeIDBVersionChangeEvent :: JSM GType
-gTypeIDBVersionChangeEvent = GType . Object <$> jsg "IDBVersionChangeEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ImageData".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation>
-newtype ImageData = ImageData { unImageData :: JSVal }
-
-instance PToJSVal ImageData where
-  pToJSVal = unImageData
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ImageData where
-  pFromJSVal = ImageData
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ImageData where
-  toJSVal = return . unImageData
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ImageData where
-  fromJSVal v = fmap ImageData <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ImageData where
-  makeObject = makeObject . unImageData
-
-instance IsGObject ImageData where
-  toGObject = GObject . unImageData
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ImageData . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToImageData :: IsGObject obj => obj -> JSM ImageData
-castToImageData = castTo gTypeImageData "ImageData"
-
-gTypeImageData :: JSM GType
-gTypeImageData = GType . Object <$> jsg "ImageData"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.InspectorFrontendHost".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost Mozilla InspectorFrontendHost documentation>
-newtype InspectorFrontendHost = InspectorFrontendHost { unInspectorFrontendHost :: JSVal }
-
-instance PToJSVal InspectorFrontendHost where
-  pToJSVal = unInspectorFrontendHost
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal InspectorFrontendHost where
-  pFromJSVal = InspectorFrontendHost
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal InspectorFrontendHost where
-  toJSVal = return . unInspectorFrontendHost
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal InspectorFrontendHost where
-  fromJSVal v = fmap InspectorFrontendHost <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject InspectorFrontendHost where
-  makeObject = makeObject . unInspectorFrontendHost
-
-instance IsGObject InspectorFrontendHost where
-  toGObject = GObject . unInspectorFrontendHost
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = InspectorFrontendHost . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToInspectorFrontendHost :: IsGObject obj => obj -> JSM InspectorFrontendHost
-castToInspectorFrontendHost = castTo gTypeInspectorFrontendHost "InspectorFrontendHost"
-
-gTypeInspectorFrontendHost :: JSM GType
-gTypeInspectorFrontendHost = GType . Object <$> jsg "InspectorFrontendHost"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.InternalSettings".
--- Base interface functions are in:
---
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings Mozilla InternalSettings documentation>
-newtype InternalSettings = InternalSettings { unInternalSettings :: JSVal }
-
-instance PToJSVal InternalSettings where
-  pToJSVal = unInternalSettings
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal InternalSettings where
-  pFromJSVal = InternalSettings
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal InternalSettings where
-  toJSVal = return . unInternalSettings
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal InternalSettings where
-  fromJSVal v = fmap InternalSettings <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject InternalSettings where
-  makeObject = makeObject . unInternalSettings
-
-instance IsGObject InternalSettings where
-  toGObject = GObject . unInternalSettings
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = InternalSettings . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToInternalSettings :: IsGObject obj => obj -> JSM InternalSettings
-castToInternalSettings = castTo gTypeInternalSettings "InternalSettings"
-
-gTypeInternalSettings :: JSM GType
-gTypeInternalSettings = GType . Object <$> jsg "InternalSettings"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Internals".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Internals Mozilla Internals documentation>
-newtype Internals = Internals { unInternals :: JSVal }
-
-instance PToJSVal Internals where
-  pToJSVal = unInternals
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Internals where
-  pFromJSVal = Internals
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Internals where
-  toJSVal = return . unInternals
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Internals where
-  fromJSVal v = fmap Internals <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Internals where
-  makeObject = makeObject . unInternals
-
-instance IsGObject Internals where
-  toGObject = GObject . unInternals
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Internals . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToInternals :: IsGObject obj => obj -> JSM Internals
-castToInternals = castTo gTypeInternals "Internals"
-
-gTypeInternals :: JSM GType
-gTypeInternals = GType . Object <$> jsg "Internals"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.KeyboardEvent".
--- Base interface functions are in:
---
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent Mozilla KeyboardEvent documentation>
-newtype KeyboardEvent = KeyboardEvent { unKeyboardEvent :: JSVal }
-
-instance PToJSVal KeyboardEvent where
-  pToJSVal = unKeyboardEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal KeyboardEvent where
-  pFromJSVal = KeyboardEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal KeyboardEvent where
-  toJSVal = return . unKeyboardEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal KeyboardEvent where
-  fromJSVal v = fmap KeyboardEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject KeyboardEvent where
-  makeObject = makeObject . unKeyboardEvent
-
-instance IsUIEvent KeyboardEvent
-instance IsEvent KeyboardEvent
-instance IsGObject KeyboardEvent where
-  toGObject = GObject . unKeyboardEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = KeyboardEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToKeyboardEvent :: IsGObject obj => obj -> JSM KeyboardEvent
-castToKeyboardEvent = castTo gTypeKeyboardEvent "KeyboardEvent"
-
-gTypeKeyboardEvent :: JSM GType
-gTypeKeyboardEvent = GType . Object <$> jsg "KeyboardEvent"
-#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 "JSDOM.Location".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Location Mozilla Location documentation>
-newtype Location = Location { unLocation :: JSVal }
-
-instance PToJSVal Location where
-  pToJSVal = unLocation
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Location where
-  pFromJSVal = Location
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Location where
-  toJSVal = return . unLocation
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Location where
-  fromJSVal v = fmap Location <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Location where
-  makeObject = makeObject . unLocation
-
-instance IsGObject Location where
-  toGObject = GObject . unLocation
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Location . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToLocation :: IsGObject obj => obj -> JSM Location
-castToLocation = castTo gTypeLocation "Location"
-
-gTypeLocation :: JSM GType
-gTypeLocation = GType . Object <$> jsg "Location"
-#else
-type IsLocation o = LocationClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MallocStatistics".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics Mozilla MallocStatistics documentation>
-newtype MallocStatistics = MallocStatistics { unMallocStatistics :: JSVal }
-
-instance PToJSVal MallocStatistics where
-  pToJSVal = unMallocStatistics
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MallocStatistics where
-  pFromJSVal = MallocStatistics
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MallocStatistics where
-  toJSVal = return . unMallocStatistics
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MallocStatistics where
-  fromJSVal v = fmap MallocStatistics <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MallocStatistics where
-  makeObject = makeObject . unMallocStatistics
-
-instance IsGObject MallocStatistics where
-  toGObject = GObject . unMallocStatistics
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MallocStatistics . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMallocStatistics :: IsGObject obj => obj -> JSM MallocStatistics
-castToMallocStatistics = castTo gTypeMallocStatistics "MallocStatistics"
-
-gTypeMallocStatistics :: JSM GType
-gTypeMallocStatistics = GType . Object <$> jsg "MallocStatistics"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaController".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation>
-newtype MediaController = MediaController { unMediaController :: JSVal }
-
-instance PToJSVal MediaController where
-  pToJSVal = unMediaController
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaController where
-  pFromJSVal = MediaController
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaController where
-  toJSVal = return . unMediaController
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaController where
-  fromJSVal v = fmap MediaController <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaController where
-  makeObject = makeObject . unMediaController
-
-instance IsEventTarget MediaController
-instance IsGObject MediaController where
-  toGObject = GObject . unMediaController
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaController . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaController :: IsGObject obj => obj -> JSM MediaController
-castToMediaController = castTo gTypeMediaController "MediaController"
-
-gTypeMediaController :: JSM GType
-gTypeMediaController = GType . Object <$> jsg "MediaController"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaControlsHost".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost Mozilla MediaControlsHost documentation>
-newtype MediaControlsHost = MediaControlsHost { unMediaControlsHost :: JSVal }
-
-instance PToJSVal MediaControlsHost where
-  pToJSVal = unMediaControlsHost
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaControlsHost where
-  pFromJSVal = MediaControlsHost
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaControlsHost where
-  toJSVal = return . unMediaControlsHost
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaControlsHost where
-  fromJSVal v = fmap MediaControlsHost <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaControlsHost where
-  makeObject = makeObject . unMediaControlsHost
-
-instance IsGObject MediaControlsHost where
-  toGObject = GObject . unMediaControlsHost
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaControlsHost . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaControlsHost :: IsGObject obj => obj -> JSM MediaControlsHost
-castToMediaControlsHost = castTo gTypeMediaControlsHost "MediaControlsHost"
-
-gTypeMediaControlsHost :: JSM GType
-gTypeMediaControlsHost = GType . Object <$> jsg "MediaControlsHost"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaElementAudioSourceNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode Mozilla MediaElementAudioSourceNode documentation>
-newtype MediaElementAudioSourceNode = MediaElementAudioSourceNode { unMediaElementAudioSourceNode :: JSVal }
-
-instance PToJSVal MediaElementAudioSourceNode where
-  pToJSVal = unMediaElementAudioSourceNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaElementAudioSourceNode where
-  pFromJSVal = MediaElementAudioSourceNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaElementAudioSourceNode where
-  toJSVal = return . unMediaElementAudioSourceNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaElementAudioSourceNode where
-  fromJSVal v = fmap MediaElementAudioSourceNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaElementAudioSourceNode where
-  makeObject = makeObject . unMediaElementAudioSourceNode
-
-instance IsAudioNode MediaElementAudioSourceNode
-instance IsEventTarget MediaElementAudioSourceNode
-instance IsGObject MediaElementAudioSourceNode where
-  toGObject = GObject . unMediaElementAudioSourceNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaElementAudioSourceNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaElementAudioSourceNode :: IsGObject obj => obj -> JSM MediaElementAudioSourceNode
-castToMediaElementAudioSourceNode = castTo gTypeMediaElementAudioSourceNode "MediaElementAudioSourceNode"
-
-gTypeMediaElementAudioSourceNode :: JSM GType
-gTypeMediaElementAudioSourceNode = GType . Object <$> jsg "MediaElementAudioSourceNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaError".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaError Mozilla MediaError documentation>
-newtype MediaError = MediaError { unMediaError :: JSVal }
-
-instance PToJSVal MediaError where
-  pToJSVal = unMediaError
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaError where
-  pFromJSVal = MediaError
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaError where
-  toJSVal = return . unMediaError
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaError where
-  fromJSVal v = fmap MediaError <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaError where
-  makeObject = makeObject . unMediaError
-
-instance IsGObject MediaError where
-  toGObject = GObject . unMediaError
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaError . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaError :: IsGObject obj => obj -> JSM MediaError
-castToMediaError = castTo gTypeMediaError "MediaError"
-
-gTypeMediaError :: JSM GType
-gTypeMediaError = GType . Object <$> jsg "MediaError"
-#else
-type IsMediaError o = MediaErrorClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaKeyError".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError Mozilla WebKitMediaKeyError documentation>
-newtype MediaKeyError = MediaKeyError { unMediaKeyError :: JSVal }
-
-instance PToJSVal MediaKeyError where
-  pToJSVal = unMediaKeyError
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaKeyError where
-  pFromJSVal = MediaKeyError
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaKeyError where
-  toJSVal = return . unMediaKeyError
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaKeyError where
-  fromJSVal v = fmap MediaKeyError <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaKeyError where
-  makeObject = makeObject . unMediaKeyError
-
-instance IsGObject MediaKeyError where
-  toGObject = GObject . unMediaKeyError
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaKeyError . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaKeyError :: IsGObject obj => obj -> JSM MediaKeyError
-castToMediaKeyError = castTo gTypeMediaKeyError "MediaKeyError"
-
-gTypeMediaKeyError :: JSM GType
-gTypeMediaKeyError = GType . Object <$> jsg "WebKitMediaKeyError"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaKeyEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent Mozilla MediaKeyEvent documentation>
-newtype MediaKeyEvent = MediaKeyEvent { unMediaKeyEvent :: JSVal }
-
-instance PToJSVal MediaKeyEvent where
-  pToJSVal = unMediaKeyEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaKeyEvent where
-  pFromJSVal = MediaKeyEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaKeyEvent where
-  toJSVal = return . unMediaKeyEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaKeyEvent where
-  fromJSVal v = fmap MediaKeyEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaKeyEvent where
-  makeObject = makeObject . unMediaKeyEvent
-
-instance IsEvent MediaKeyEvent
-instance IsGObject MediaKeyEvent where
-  toGObject = GObject . unMediaKeyEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaKeyEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaKeyEvent :: IsGObject obj => obj -> JSM MediaKeyEvent
-castToMediaKeyEvent = castTo gTypeMediaKeyEvent "MediaKeyEvent"
-
-gTypeMediaKeyEvent :: JSM GType
-gTypeMediaKeyEvent = GType . Object <$> jsg "MediaKeyEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaKeyMessageEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation>
-newtype MediaKeyMessageEvent = MediaKeyMessageEvent { unMediaKeyMessageEvent :: JSVal }
-
-instance PToJSVal MediaKeyMessageEvent where
-  pToJSVal = unMediaKeyMessageEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaKeyMessageEvent where
-  pFromJSVal = MediaKeyMessageEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaKeyMessageEvent where
-  toJSVal = return . unMediaKeyMessageEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaKeyMessageEvent where
-  fromJSVal v = fmap MediaKeyMessageEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaKeyMessageEvent where
-  makeObject = makeObject . unMediaKeyMessageEvent
-
-instance IsEvent MediaKeyMessageEvent
-instance IsGObject MediaKeyMessageEvent where
-  toGObject = GObject . unMediaKeyMessageEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaKeyMessageEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaKeyMessageEvent :: IsGObject obj => obj -> JSM MediaKeyMessageEvent
-castToMediaKeyMessageEvent = castTo gTypeMediaKeyMessageEvent "MediaKeyMessageEvent"
-
-gTypeMediaKeyMessageEvent :: JSM GType
-gTypeMediaKeyMessageEvent = GType . Object <$> jsg "WebKitMediaKeyMessageEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaKeyNeededEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent Mozilla MediaKeyNeededEvent documentation>
-newtype MediaKeyNeededEvent = MediaKeyNeededEvent { unMediaKeyNeededEvent :: JSVal }
-
-instance PToJSVal MediaKeyNeededEvent where
-  pToJSVal = unMediaKeyNeededEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaKeyNeededEvent where
-  pFromJSVal = MediaKeyNeededEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaKeyNeededEvent where
-  toJSVal = return . unMediaKeyNeededEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaKeyNeededEvent where
-  fromJSVal v = fmap MediaKeyNeededEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaKeyNeededEvent where
-  makeObject = makeObject . unMediaKeyNeededEvent
-
-instance IsEvent MediaKeyNeededEvent
-instance IsGObject MediaKeyNeededEvent where
-  toGObject = GObject . unMediaKeyNeededEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaKeyNeededEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaKeyNeededEvent :: IsGObject obj => obj -> JSM MediaKeyNeededEvent
-castToMediaKeyNeededEvent = castTo gTypeMediaKeyNeededEvent "MediaKeyNeededEvent"
-
-gTypeMediaKeyNeededEvent :: JSM GType
-gTypeMediaKeyNeededEvent = GType . Object <$> jsg "MediaKeyNeededEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaKeySession".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession Mozilla WebKitMediaKeySession documentation>
-newtype MediaKeySession = MediaKeySession { unMediaKeySession :: JSVal }
-
-instance PToJSVal MediaKeySession where
-  pToJSVal = unMediaKeySession
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaKeySession where
-  pFromJSVal = MediaKeySession
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaKeySession where
-  toJSVal = return . unMediaKeySession
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaKeySession where
-  fromJSVal v = fmap MediaKeySession <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaKeySession where
-  makeObject = makeObject . unMediaKeySession
-
-instance IsEventTarget MediaKeySession
-instance IsGObject MediaKeySession where
-  toGObject = GObject . unMediaKeySession
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaKeySession . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaKeySession :: IsGObject obj => obj -> JSM MediaKeySession
-castToMediaKeySession = castTo gTypeMediaKeySession "MediaKeySession"
-
-gTypeMediaKeySession :: JSM GType
-gTypeMediaKeySession = GType . Object <$> jsg "WebKitMediaKeySession"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaKeys".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation>
-newtype MediaKeys = MediaKeys { unMediaKeys :: JSVal }
-
-instance PToJSVal MediaKeys where
-  pToJSVal = unMediaKeys
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaKeys where
-  pFromJSVal = MediaKeys
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaKeys where
-  toJSVal = return . unMediaKeys
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaKeys where
-  fromJSVal v = fmap MediaKeys <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaKeys where
-  makeObject = makeObject . unMediaKeys
-
-instance IsGObject MediaKeys where
-  toGObject = GObject . unMediaKeys
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaKeys . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaKeys :: IsGObject obj => obj -> JSM MediaKeys
-castToMediaKeys = castTo gTypeMediaKeys "MediaKeys"
-
-gTypeMediaKeys :: JSM GType
-gTypeMediaKeys = GType . Object <$> jsg "WebKitMediaKeys"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaList Mozilla MediaList documentation>
-newtype MediaList = MediaList { unMediaList :: JSVal }
-
-instance PToJSVal MediaList where
-  pToJSVal = unMediaList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaList where
-  pFromJSVal = MediaList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaList where
-  toJSVal = return . unMediaList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaList where
-  fromJSVal v = fmap MediaList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaList where
-  makeObject = makeObject . unMediaList
-
-instance IsGObject MediaList where
-  toGObject = GObject . unMediaList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaList :: IsGObject obj => obj -> JSM MediaList
-castToMediaList = castTo gTypeMediaList "MediaList"
-
-gTypeMediaList :: JSM GType
-gTypeMediaList = GType . Object <$> jsg "MediaList"
-#else
-type IsMediaList o = MediaListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaQueryList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList Mozilla MediaQueryList documentation>
-newtype MediaQueryList = MediaQueryList { unMediaQueryList :: JSVal }
-
-instance PToJSVal MediaQueryList where
-  pToJSVal = unMediaQueryList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaQueryList where
-  pFromJSVal = MediaQueryList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaQueryList where
-  toJSVal = return . unMediaQueryList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaQueryList where
-  fromJSVal v = fmap MediaQueryList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaQueryList where
-  makeObject = makeObject . unMediaQueryList
-
-instance IsGObject MediaQueryList where
-  toGObject = GObject . unMediaQueryList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaQueryList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaQueryList :: IsGObject obj => obj -> JSM MediaQueryList
-castToMediaQueryList = castTo gTypeMediaQueryList "MediaQueryList"
-
-gTypeMediaQueryList :: JSM GType
-gTypeMediaQueryList = GType . Object <$> jsg "MediaQueryList"
-#else
-type IsMediaQueryList o = MediaQueryListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaSource".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation>
-newtype MediaSource = MediaSource { unMediaSource :: JSVal }
-
-instance PToJSVal MediaSource where
-  pToJSVal = unMediaSource
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaSource where
-  pFromJSVal = MediaSource
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaSource where
-  toJSVal = return . unMediaSource
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaSource where
-  fromJSVal v = fmap MediaSource <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaSource where
-  makeObject = makeObject . unMediaSource
-
-instance IsEventTarget MediaSource
-instance IsGObject MediaSource where
-  toGObject = GObject . unMediaSource
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaSource . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaSource :: IsGObject obj => obj -> JSM MediaSource
-castToMediaSource = castTo gTypeMediaSource "MediaSource"
-
-gTypeMediaSource :: JSM GType
-gTypeMediaSource = GType . Object <$> jsg "MediaSource"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaSourceStates".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates Mozilla MediaSourceStates documentation>
-newtype MediaSourceStates = MediaSourceStates { unMediaSourceStates :: JSVal }
-
-instance PToJSVal MediaSourceStates where
-  pToJSVal = unMediaSourceStates
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaSourceStates where
-  pFromJSVal = MediaSourceStates
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaSourceStates where
-  toJSVal = return . unMediaSourceStates
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaSourceStates where
-  fromJSVal v = fmap MediaSourceStates <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaSourceStates where
-  makeObject = makeObject . unMediaSourceStates
-
-instance IsGObject MediaSourceStates where
-  toGObject = GObject . unMediaSourceStates
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaSourceStates . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaSourceStates :: IsGObject obj => obj -> JSM MediaSourceStates
-castToMediaSourceStates = castTo gTypeMediaSourceStates "MediaSourceStates"
-
-gTypeMediaSourceStates :: JSM GType
-gTypeMediaSourceStates = GType . Object <$> jsg "MediaSourceStates"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaStream".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation>
-newtype MediaStream = MediaStream { unMediaStream :: JSVal }
-
-instance PToJSVal MediaStream where
-  pToJSVal = unMediaStream
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaStream where
-  pFromJSVal = MediaStream
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaStream where
-  toJSVal = return . unMediaStream
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaStream where
-  fromJSVal v = fmap MediaStream <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaStream where
-  makeObject = makeObject . unMediaStream
-
-instance IsEventTarget MediaStream
-instance IsGObject MediaStream where
-  toGObject = GObject . unMediaStream
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaStream . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaStream :: IsGObject obj => obj -> JSM MediaStream
-castToMediaStream = castTo gTypeMediaStream "MediaStream"
-
-gTypeMediaStream :: JSM GType
-gTypeMediaStream = GType . Object <$> jsg "webkitMediaStream"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaStreamAudioDestinationNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode Mozilla MediaStreamAudioDestinationNode documentation>
-newtype MediaStreamAudioDestinationNode = MediaStreamAudioDestinationNode { unMediaStreamAudioDestinationNode :: JSVal }
-
-instance PToJSVal MediaStreamAudioDestinationNode where
-  pToJSVal = unMediaStreamAudioDestinationNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaStreamAudioDestinationNode where
-  pFromJSVal = MediaStreamAudioDestinationNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaStreamAudioDestinationNode where
-  toJSVal = return . unMediaStreamAudioDestinationNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaStreamAudioDestinationNode where
-  fromJSVal v = fmap MediaStreamAudioDestinationNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaStreamAudioDestinationNode where
-  makeObject = makeObject . unMediaStreamAudioDestinationNode
-
-instance IsAudioNode MediaStreamAudioDestinationNode
-instance IsEventTarget MediaStreamAudioDestinationNode
-instance IsGObject MediaStreamAudioDestinationNode where
-  toGObject = GObject . unMediaStreamAudioDestinationNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaStreamAudioDestinationNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaStreamAudioDestinationNode :: IsGObject obj => obj -> JSM MediaStreamAudioDestinationNode
-castToMediaStreamAudioDestinationNode = castTo gTypeMediaStreamAudioDestinationNode "MediaStreamAudioDestinationNode"
-
-gTypeMediaStreamAudioDestinationNode :: JSM GType
-gTypeMediaStreamAudioDestinationNode = GType . Object <$> jsg "MediaStreamAudioDestinationNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaStreamAudioSourceNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode Mozilla MediaStreamAudioSourceNode documentation>
-newtype MediaStreamAudioSourceNode = MediaStreamAudioSourceNode { unMediaStreamAudioSourceNode :: JSVal }
-
-instance PToJSVal MediaStreamAudioSourceNode where
-  pToJSVal = unMediaStreamAudioSourceNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaStreamAudioSourceNode where
-  pFromJSVal = MediaStreamAudioSourceNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaStreamAudioSourceNode where
-  toJSVal = return . unMediaStreamAudioSourceNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaStreamAudioSourceNode where
-  fromJSVal v = fmap MediaStreamAudioSourceNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaStreamAudioSourceNode where
-  makeObject = makeObject . unMediaStreamAudioSourceNode
-
-instance IsAudioNode MediaStreamAudioSourceNode
-instance IsEventTarget MediaStreamAudioSourceNode
-instance IsGObject MediaStreamAudioSourceNode where
-  toGObject = GObject . unMediaStreamAudioSourceNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaStreamAudioSourceNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaStreamAudioSourceNode :: IsGObject obj => obj -> JSM MediaStreamAudioSourceNode
-castToMediaStreamAudioSourceNode = castTo gTypeMediaStreamAudioSourceNode "MediaStreamAudioSourceNode"
-
-gTypeMediaStreamAudioSourceNode :: JSM GType
-gTypeMediaStreamAudioSourceNode = GType . Object <$> jsg "MediaStreamAudioSourceNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaStreamCapabilities".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamCapabilities Mozilla MediaStreamCapabilities documentation>
-newtype MediaStreamCapabilities = MediaStreamCapabilities { unMediaStreamCapabilities :: JSVal }
-
-instance PToJSVal MediaStreamCapabilities where
-  pToJSVal = unMediaStreamCapabilities
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaStreamCapabilities where
-  pFromJSVal = MediaStreamCapabilities
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaStreamCapabilities where
-  toJSVal = return . unMediaStreamCapabilities
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaStreamCapabilities where
-  fromJSVal v = fmap MediaStreamCapabilities <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaStreamCapabilities where
-  makeObject = makeObject . unMediaStreamCapabilities
-
-class IsGObject o => IsMediaStreamCapabilities o
-toMediaStreamCapabilities :: IsMediaStreamCapabilities o => o -> MediaStreamCapabilities
-toMediaStreamCapabilities = unsafeCastGObject . toGObject
-
-instance IsMediaStreamCapabilities MediaStreamCapabilities
-instance IsGObject MediaStreamCapabilities where
-  toGObject = GObject . unMediaStreamCapabilities
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaStreamCapabilities . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaStreamCapabilities :: IsGObject obj => obj -> JSM MediaStreamCapabilities
-castToMediaStreamCapabilities = castTo gTypeMediaStreamCapabilities "MediaStreamCapabilities"
-
-gTypeMediaStreamCapabilities :: JSM GType
-gTypeMediaStreamCapabilities = GType . Object <$> jsg "MediaStreamCapabilities"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaStreamEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent Mozilla MediaStreamEvent documentation>
-newtype MediaStreamEvent = MediaStreamEvent { unMediaStreamEvent :: JSVal }
-
-instance PToJSVal MediaStreamEvent where
-  pToJSVal = unMediaStreamEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaStreamEvent where
-  pFromJSVal = MediaStreamEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaStreamEvent where
-  toJSVal = return . unMediaStreamEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaStreamEvent where
-  fromJSVal v = fmap MediaStreamEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaStreamEvent where
-  makeObject = makeObject . unMediaStreamEvent
-
-instance IsEvent MediaStreamEvent
-instance IsGObject MediaStreamEvent where
-  toGObject = GObject . unMediaStreamEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaStreamEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaStreamEvent :: IsGObject obj => obj -> JSM MediaStreamEvent
-castToMediaStreamEvent = castTo gTypeMediaStreamEvent "MediaStreamEvent"
-
-gTypeMediaStreamEvent :: JSM GType
-gTypeMediaStreamEvent = GType . Object <$> jsg "MediaStreamEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaStreamTrack".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack Mozilla MediaStreamTrack documentation>
-newtype MediaStreamTrack = MediaStreamTrack { unMediaStreamTrack :: JSVal }
-
-instance PToJSVal MediaStreamTrack where
-  pToJSVal = unMediaStreamTrack
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaStreamTrack where
-  pFromJSVal = MediaStreamTrack
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaStreamTrack where
-  toJSVal = return . unMediaStreamTrack
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaStreamTrack where
-  fromJSVal v = fmap MediaStreamTrack <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaStreamTrack where
-  makeObject = makeObject . unMediaStreamTrack
-
-class IsEventTarget o => IsMediaStreamTrack o
-toMediaStreamTrack :: IsMediaStreamTrack o => o -> MediaStreamTrack
-toMediaStreamTrack = unsafeCastGObject . toGObject
-
-instance IsMediaStreamTrack MediaStreamTrack
-instance IsEventTarget MediaStreamTrack
-instance IsGObject MediaStreamTrack where
-  toGObject = GObject . unMediaStreamTrack
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaStreamTrack . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaStreamTrack :: IsGObject obj => obj -> JSM MediaStreamTrack
-castToMediaStreamTrack = castTo gTypeMediaStreamTrack "MediaStreamTrack"
-
-gTypeMediaStreamTrack :: JSM GType
-gTypeMediaStreamTrack = GType . Object <$> jsg "MediaStreamTrack"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaStreamTrackEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent Mozilla MediaStreamTrackEvent documentation>
-newtype MediaStreamTrackEvent = MediaStreamTrackEvent { unMediaStreamTrackEvent :: JSVal }
-
-instance PToJSVal MediaStreamTrackEvent where
-  pToJSVal = unMediaStreamTrackEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaStreamTrackEvent where
-  pFromJSVal = MediaStreamTrackEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaStreamTrackEvent where
-  toJSVal = return . unMediaStreamTrackEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaStreamTrackEvent where
-  fromJSVal v = fmap MediaStreamTrackEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaStreamTrackEvent where
-  makeObject = makeObject . unMediaStreamTrackEvent
-
-instance IsEvent MediaStreamTrackEvent
-instance IsGObject MediaStreamTrackEvent where
-  toGObject = GObject . unMediaStreamTrackEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaStreamTrackEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaStreamTrackEvent :: IsGObject obj => obj -> JSM MediaStreamTrackEvent
-castToMediaStreamTrackEvent = castTo gTypeMediaStreamTrackEvent "MediaStreamTrackEvent"
-
-gTypeMediaStreamTrackEvent :: JSM GType
-gTypeMediaStreamTrackEvent = GType . Object <$> jsg "MediaStreamTrackEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaTrackConstraint".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraint Mozilla MediaTrackConstraint documentation>
-newtype MediaTrackConstraint = MediaTrackConstraint { unMediaTrackConstraint :: JSVal }
-
-instance PToJSVal MediaTrackConstraint where
-  pToJSVal = unMediaTrackConstraint
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaTrackConstraint where
-  pFromJSVal = MediaTrackConstraint
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaTrackConstraint where
-  toJSVal = return . unMediaTrackConstraint
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaTrackConstraint where
-  fromJSVal v = fmap MediaTrackConstraint <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaTrackConstraint where
-  makeObject = makeObject . unMediaTrackConstraint
-
-instance IsGObject MediaTrackConstraint where
-  toGObject = GObject . unMediaTrackConstraint
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaTrackConstraint . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaTrackConstraint :: IsGObject obj => obj -> JSM MediaTrackConstraint
-castToMediaTrackConstraint = castTo gTypeMediaTrackConstraint "MediaTrackConstraint"
-
-gTypeMediaTrackConstraint :: JSM GType
-gTypeMediaTrackConstraint = GType . Object <$> jsg "MediaTrackConstraint"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaTrackConstraintSet".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraintSet Mozilla MediaTrackConstraintSet documentation>
-newtype MediaTrackConstraintSet = MediaTrackConstraintSet { unMediaTrackConstraintSet :: JSVal }
-
-instance PToJSVal MediaTrackConstraintSet where
-  pToJSVal = unMediaTrackConstraintSet
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaTrackConstraintSet where
-  pFromJSVal = MediaTrackConstraintSet
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaTrackConstraintSet where
-  toJSVal = return . unMediaTrackConstraintSet
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaTrackConstraintSet where
-  fromJSVal v = fmap MediaTrackConstraintSet <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaTrackConstraintSet where
-  makeObject = makeObject . unMediaTrackConstraintSet
-
-instance IsGObject MediaTrackConstraintSet where
-  toGObject = GObject . unMediaTrackConstraintSet
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaTrackConstraintSet . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaTrackConstraintSet :: IsGObject obj => obj -> JSM MediaTrackConstraintSet
-castToMediaTrackConstraintSet = castTo gTypeMediaTrackConstraintSet "MediaTrackConstraintSet"
-
-gTypeMediaTrackConstraintSet :: JSM GType
-gTypeMediaTrackConstraintSet = GType . Object <$> jsg "MediaTrackConstraintSet"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MediaTrackConstraints".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints Mozilla MediaTrackConstraints documentation>
-newtype MediaTrackConstraints = MediaTrackConstraints { unMediaTrackConstraints :: JSVal }
-
-instance PToJSVal MediaTrackConstraints where
-  pToJSVal = unMediaTrackConstraints
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MediaTrackConstraints where
-  pFromJSVal = MediaTrackConstraints
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MediaTrackConstraints where
-  toJSVal = return . unMediaTrackConstraints
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MediaTrackConstraints where
-  fromJSVal v = fmap MediaTrackConstraints <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MediaTrackConstraints where
-  makeObject = makeObject . unMediaTrackConstraints
-
-instance IsGObject MediaTrackConstraints where
-  toGObject = GObject . unMediaTrackConstraints
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MediaTrackConstraints . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMediaTrackConstraints :: IsGObject obj => obj -> JSM MediaTrackConstraints
-castToMediaTrackConstraints = castTo gTypeMediaTrackConstraints "MediaTrackConstraints"
-
-gTypeMediaTrackConstraints :: JSM GType
-gTypeMediaTrackConstraints = GType . Object <$> jsg "MediaTrackConstraints"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MemoryInfo".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo Mozilla MemoryInfo documentation>
-newtype MemoryInfo = MemoryInfo { unMemoryInfo :: JSVal }
-
-instance PToJSVal MemoryInfo where
-  pToJSVal = unMemoryInfo
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MemoryInfo where
-  pFromJSVal = MemoryInfo
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MemoryInfo where
-  toJSVal = return . unMemoryInfo
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MemoryInfo where
-  fromJSVal v = fmap MemoryInfo <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MemoryInfo where
-  makeObject = makeObject . unMemoryInfo
-
-instance IsGObject MemoryInfo where
-  toGObject = GObject . unMemoryInfo
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MemoryInfo . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMemoryInfo :: IsGObject obj => obj -> JSM MemoryInfo
-castToMemoryInfo = castTo gTypeMemoryInfo "MemoryInfo"
-
-gTypeMemoryInfo :: JSM GType
-gTypeMemoryInfo = GType . Object <$> jsg "MemoryInfo"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MessageChannel".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation>
-newtype MessageChannel = MessageChannel { unMessageChannel :: JSVal }
-
-instance PToJSVal MessageChannel where
-  pToJSVal = unMessageChannel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MessageChannel where
-  pFromJSVal = MessageChannel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MessageChannel where
-  toJSVal = return . unMessageChannel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MessageChannel where
-  fromJSVal v = fmap MessageChannel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MessageChannel where
-  makeObject = makeObject . unMessageChannel
-
-instance IsGObject MessageChannel where
-  toGObject = GObject . unMessageChannel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MessageChannel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMessageChannel :: IsGObject obj => obj -> JSM MessageChannel
-castToMessageChannel = castTo gTypeMessageChannel "MessageChannel"
-
-gTypeMessageChannel :: JSM GType
-gTypeMessageChannel = GType . Object <$> jsg "MessageChannel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MessageEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation>
-newtype MessageEvent = MessageEvent { unMessageEvent :: JSVal }
-
-instance PToJSVal MessageEvent where
-  pToJSVal = unMessageEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MessageEvent where
-  pFromJSVal = MessageEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MessageEvent where
-  toJSVal = return . unMessageEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MessageEvent where
-  fromJSVal v = fmap MessageEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MessageEvent where
-  makeObject = makeObject . unMessageEvent
-
-instance IsEvent MessageEvent
-instance IsGObject MessageEvent where
-  toGObject = GObject . unMessageEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MessageEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMessageEvent :: IsGObject obj => obj -> JSM MessageEvent
-castToMessageEvent = castTo gTypeMessageEvent "MessageEvent"
-
-gTypeMessageEvent :: JSM GType
-gTypeMessageEvent = GType . Object <$> jsg "MessageEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MessagePort".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort Mozilla MessagePort documentation>
-newtype MessagePort = MessagePort { unMessagePort :: JSVal }
-
-instance PToJSVal MessagePort where
-  pToJSVal = unMessagePort
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MessagePort where
-  pFromJSVal = MessagePort
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MessagePort where
-  toJSVal = return . unMessagePort
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MessagePort where
-  fromJSVal v = fmap MessagePort <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MessagePort where
-  makeObject = makeObject . unMessagePort
-
-instance IsEventTarget MessagePort
-instance IsGObject MessagePort where
-  toGObject = GObject . unMessagePort
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MessagePort . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMessagePort :: IsGObject obj => obj -> JSM MessagePort
-castToMessagePort = castTo gTypeMessagePort "MessagePort"
-
-gTypeMessagePort :: JSM GType
-gTypeMessagePort = GType . Object <$> jsg "MessagePort"
-#else
-type IsMessagePort o = MessagePortClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MimeType".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MimeType Mozilla MimeType documentation>
-newtype MimeType = MimeType { unMimeType :: JSVal }
-
-instance PToJSVal MimeType where
-  pToJSVal = unMimeType
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MimeType where
-  pFromJSVal = MimeType
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MimeType where
-  toJSVal = return . unMimeType
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MimeType where
-  fromJSVal v = fmap MimeType <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MimeType where
-  makeObject = makeObject . unMimeType
-
-instance IsGObject MimeType where
-  toGObject = GObject . unMimeType
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MimeType . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMimeType :: IsGObject obj => obj -> JSM MimeType
-castToMimeType = castTo gTypeMimeType "MimeType"
-
-gTypeMimeType :: JSM GType
-gTypeMimeType = GType . Object <$> jsg "MimeType"
-#else
-type IsMimeType o = MimeTypeClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MimeTypeArray".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray Mozilla MimeTypeArray documentation>
-newtype MimeTypeArray = MimeTypeArray { unMimeTypeArray :: JSVal }
-
-instance PToJSVal MimeTypeArray where
-  pToJSVal = unMimeTypeArray
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MimeTypeArray where
-  pFromJSVal = MimeTypeArray
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MimeTypeArray where
-  toJSVal = return . unMimeTypeArray
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MimeTypeArray where
-  fromJSVal v = fmap MimeTypeArray <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MimeTypeArray where
-  makeObject = makeObject . unMimeTypeArray
-
-instance IsGObject MimeTypeArray where
-  toGObject = GObject . unMimeTypeArray
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MimeTypeArray . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMimeTypeArray :: IsGObject obj => obj -> JSM MimeTypeArray
-castToMimeTypeArray = castTo gTypeMimeTypeArray "MimeTypeArray"
-
-gTypeMimeTypeArray :: JSM GType
-gTypeMimeTypeArray = GType . Object <$> jsg "MimeTypeArray"
-#else
-type IsMimeTypeArray o = MimeTypeArrayClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MouseEvent".
--- Base interface functions are in:
---
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent Mozilla MouseEvent documentation>
-newtype MouseEvent = MouseEvent { unMouseEvent :: JSVal }
-
-instance PToJSVal MouseEvent where
-  pToJSVal = unMouseEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MouseEvent where
-  pFromJSVal = MouseEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MouseEvent where
-  toJSVal = return . unMouseEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MouseEvent where
-  fromJSVal v = fmap MouseEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MouseEvent where
-  makeObject = makeObject . unMouseEvent
-
-class IsUIEvent o => IsMouseEvent o
-toMouseEvent :: IsMouseEvent o => o -> MouseEvent
-toMouseEvent = unsafeCastGObject . toGObject
-
-instance IsMouseEvent MouseEvent
-instance IsUIEvent MouseEvent
-instance IsEvent MouseEvent
-instance IsGObject MouseEvent where
-  toGObject = GObject . unMouseEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MouseEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMouseEvent :: IsGObject obj => obj -> JSM MouseEvent
-castToMouseEvent = castTo gTypeMouseEvent "MouseEvent"
-
-gTypeMouseEvent :: JSM GType
-gTypeMouseEvent = GType . Object <$> jsg "MouseEvent"
-#else
-type IsMouseEvent o = MouseEventClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MutationEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent Mozilla MutationEvent documentation>
-newtype MutationEvent = MutationEvent { unMutationEvent :: JSVal }
-
-instance PToJSVal MutationEvent where
-  pToJSVal = unMutationEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MutationEvent where
-  pFromJSVal = MutationEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MutationEvent where
-  toJSVal = return . unMutationEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MutationEvent where
-  fromJSVal v = fmap MutationEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MutationEvent where
-  makeObject = makeObject . unMutationEvent
-
-instance IsEvent MutationEvent
-instance IsGObject MutationEvent where
-  toGObject = GObject . unMutationEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MutationEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMutationEvent :: IsGObject obj => obj -> JSM MutationEvent
-castToMutationEvent = castTo gTypeMutationEvent "MutationEvent"
-
-gTypeMutationEvent :: JSM GType
-gTypeMutationEvent = GType . Object <$> jsg "MutationEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MutationObserver".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation>
-newtype MutationObserver = MutationObserver { unMutationObserver :: JSVal }
-
-instance PToJSVal MutationObserver where
-  pToJSVal = unMutationObserver
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MutationObserver where
-  pFromJSVal = MutationObserver
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MutationObserver where
-  toJSVal = return . unMutationObserver
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MutationObserver where
-  fromJSVal v = fmap MutationObserver <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MutationObserver where
-  makeObject = makeObject . unMutationObserver
-
-instance IsGObject MutationObserver where
-  toGObject = GObject . unMutationObserver
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MutationObserver . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMutationObserver :: IsGObject obj => obj -> JSM MutationObserver
-castToMutationObserver = castTo gTypeMutationObserver "MutationObserver"
-
-gTypeMutationObserver :: JSM GType
-gTypeMutationObserver = GType . Object <$> jsg "MutationObserver"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.MutationRecord".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord Mozilla MutationRecord documentation>
-newtype MutationRecord = MutationRecord { unMutationRecord :: JSVal }
-
-instance PToJSVal MutationRecord where
-  pToJSVal = unMutationRecord
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal MutationRecord where
-  pFromJSVal = MutationRecord
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal MutationRecord where
-  toJSVal = return . unMutationRecord
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal MutationRecord where
-  fromJSVal v = fmap MutationRecord <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject MutationRecord where
-  makeObject = makeObject . unMutationRecord
-
-instance IsGObject MutationRecord where
-  toGObject = GObject . unMutationRecord
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = MutationRecord . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToMutationRecord :: IsGObject obj => obj -> JSM MutationRecord
-castToMutationRecord = castTo gTypeMutationRecord "MutationRecord"
-
-gTypeMutationRecord :: JSM GType
-gTypeMutationRecord = GType . Object <$> jsg "MutationRecord"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.NamedNodeMap".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap Mozilla NamedNodeMap documentation>
-newtype NamedNodeMap = NamedNodeMap { unNamedNodeMap :: JSVal }
-
-instance PToJSVal NamedNodeMap where
-  pToJSVal = unNamedNodeMap
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal NamedNodeMap where
-  pFromJSVal = NamedNodeMap
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal NamedNodeMap where
-  toJSVal = return . unNamedNodeMap
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal NamedNodeMap where
-  fromJSVal v = fmap NamedNodeMap <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject NamedNodeMap where
-  makeObject = makeObject . unNamedNodeMap
-
-instance IsGObject NamedNodeMap where
-  toGObject = GObject . unNamedNodeMap
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = NamedNodeMap . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNamedNodeMap :: IsGObject obj => obj -> JSM NamedNodeMap
-castToNamedNodeMap = castTo gTypeNamedNodeMap "NamedNodeMap"
-
-gTypeNamedNodeMap :: JSM GType
-gTypeNamedNodeMap = GType . Object <$> jsg "NamedNodeMap"
-#else
-type IsNamedNodeMap o = NamedNodeMapClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Navigator".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Navigator Mozilla Navigator documentation>
-newtype Navigator = Navigator { unNavigator :: JSVal }
-
-instance PToJSVal Navigator where
-  pToJSVal = unNavigator
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Navigator where
-  pFromJSVal = Navigator
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Navigator where
-  toJSVal = return . unNavigator
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Navigator where
-  fromJSVal v = fmap Navigator <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Navigator where
-  makeObject = makeObject . unNavigator
-
-instance IsGObject Navigator where
-  toGObject = GObject . unNavigator
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Navigator . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNavigator :: IsGObject obj => obj -> JSM Navigator
-castToNavigator = castTo gTypeNavigator "Navigator"
-
-gTypeNavigator :: JSM GType
-gTypeNavigator = GType . Object <$> jsg "Navigator"
-#else
-type IsNavigator o = NavigatorClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.NavigatorUserMediaError".
--- Base interface functions are in:
---
---     * "JSDOM.DOMError"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError Mozilla NavigatorUserMediaError documentation>
-newtype NavigatorUserMediaError = NavigatorUserMediaError { unNavigatorUserMediaError :: JSVal }
-
-instance PToJSVal NavigatorUserMediaError where
-  pToJSVal = unNavigatorUserMediaError
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal NavigatorUserMediaError where
-  pFromJSVal = NavigatorUserMediaError
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal NavigatorUserMediaError where
-  toJSVal = return . unNavigatorUserMediaError
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal NavigatorUserMediaError where
-  fromJSVal v = fmap NavigatorUserMediaError <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject NavigatorUserMediaError where
-  makeObject = makeObject . unNavigatorUserMediaError
-
-instance IsDOMError NavigatorUserMediaError
-instance IsGObject NavigatorUserMediaError where
-  toGObject = GObject . unNavigatorUserMediaError
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = NavigatorUserMediaError . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNavigatorUserMediaError :: IsGObject obj => obj -> JSM NavigatorUserMediaError
-castToNavigatorUserMediaError = castTo gTypeNavigatorUserMediaError "NavigatorUserMediaError"
-
-gTypeNavigatorUserMediaError :: JSM GType
-gTypeNavigatorUserMediaError = GType . Object <$> jsg "NavigatorUserMediaError"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Node".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Node Mozilla Node documentation>
-newtype Node = Node { unNode :: JSVal }
-
-instance PToJSVal Node where
-  pToJSVal = unNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Node where
-  pFromJSVal = Node
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Node where
-  toJSVal = return . unNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Node where
-  fromJSVal v = fmap Node <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Node where
-  makeObject = makeObject . unNode
-
-class IsEventTarget o => IsNode o
-toNode :: IsNode o => o -> Node
-toNode = unsafeCastGObject . toGObject
-
-instance IsNode Node
-instance IsEventTarget Node
-instance IsGObject Node where
-  toGObject = GObject . unNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Node . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNode :: IsGObject obj => obj -> JSM Node
-castToNode = castTo gTypeNode "Node"
-
-gTypeNode :: JSM GType
-gTypeNode = GType . Object <$> jsg "Node"
-#else
-type IsNode o = NodeClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.NodeFilter".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation>
-newtype NodeFilter = NodeFilter { unNodeFilter :: JSVal }
-
-instance PToJSVal NodeFilter where
-  pToJSVal = unNodeFilter
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal NodeFilter where
-  pFromJSVal = NodeFilter
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal NodeFilter where
-  toJSVal = return . unNodeFilter
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal NodeFilter where
-  fromJSVal v = fmap NodeFilter <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject NodeFilter where
-  makeObject = makeObject . unNodeFilter
-
-instance IsGObject NodeFilter where
-  toGObject = GObject . unNodeFilter
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = NodeFilter . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNodeFilter :: IsGObject obj => obj -> JSM NodeFilter
-castToNodeFilter = castTo gTypeNodeFilter "NodeFilter"
-
-gTypeNodeFilter :: JSM GType
-gTypeNodeFilter = GType . Object <$> jsg "NodeFilter"
-#else
-type IsNodeFilter o = NodeFilterClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.NodeIterator".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator Mozilla NodeIterator documentation>
-newtype NodeIterator = NodeIterator { unNodeIterator :: JSVal }
-
-instance PToJSVal NodeIterator where
-  pToJSVal = unNodeIterator
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal NodeIterator where
-  pFromJSVal = NodeIterator
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal NodeIterator where
-  toJSVal = return . unNodeIterator
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal NodeIterator where
-  fromJSVal v = fmap NodeIterator <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject NodeIterator where
-  makeObject = makeObject . unNodeIterator
-
-instance IsGObject NodeIterator where
-  toGObject = GObject . unNodeIterator
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = NodeIterator . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNodeIterator :: IsGObject obj => obj -> JSM NodeIterator
-castToNodeIterator = castTo gTypeNodeIterator "NodeIterator"
-
-gTypeNodeIterator :: JSM GType
-gTypeNodeIterator = GType . Object <$> jsg "NodeIterator"
-#else
-type IsNodeIterator o = NodeIteratorClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.NodeList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/NodeList Mozilla NodeList documentation>
-newtype NodeList = NodeList { unNodeList :: JSVal }
-
-instance PToJSVal NodeList where
-  pToJSVal = unNodeList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal NodeList where
-  pFromJSVal = NodeList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal NodeList where
-  toJSVal = return . unNodeList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal NodeList where
-  fromJSVal v = fmap NodeList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject NodeList where
-  makeObject = makeObject . unNodeList
-
-class IsGObject o => IsNodeList o
-toNodeList :: IsNodeList o => o -> NodeList
-toNodeList = unsafeCastGObject . toGObject
-
-instance IsNodeList NodeList
-instance IsGObject NodeList where
-  toGObject = GObject . unNodeList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = NodeList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNodeList :: IsGObject obj => obj -> JSM NodeList
-castToNodeList = castTo gTypeNodeList "NodeList"
-
-gTypeNodeList :: JSM GType
-gTypeNodeList = GType . Object <$> jsg "NodeList"
-#else
-type IsNodeList o = NodeListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Notification".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Notification Mozilla Notification documentation>
-newtype Notification = Notification { unNotification :: JSVal }
-
-instance PToJSVal Notification where
-  pToJSVal = unNotification
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Notification where
-  pFromJSVal = Notification
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Notification where
-  toJSVal = return . unNotification
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Notification where
-  fromJSVal v = fmap Notification <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Notification where
-  makeObject = makeObject . unNotification
-
-instance IsEventTarget Notification
-instance IsGObject Notification where
-  toGObject = GObject . unNotification
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Notification . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNotification :: IsGObject obj => obj -> JSM Notification
-castToNotification = castTo gTypeNotification "Notification"
-
-gTypeNotification :: JSM GType
-gTypeNotification = GType . Object <$> jsg "Notification"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.NotificationCenter".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter Mozilla NotificationCenter documentation>
-newtype NotificationCenter = NotificationCenter { unNotificationCenter :: JSVal }
-
-instance PToJSVal NotificationCenter where
-  pToJSVal = unNotificationCenter
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal NotificationCenter where
-  pFromJSVal = NotificationCenter
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal NotificationCenter where
-  toJSVal = return . unNotificationCenter
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal NotificationCenter where
-  fromJSVal v = fmap NotificationCenter <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject NotificationCenter where
-  makeObject = makeObject . unNotificationCenter
-
-instance IsGObject NotificationCenter where
-  toGObject = GObject . unNotificationCenter
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = NotificationCenter . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToNotificationCenter :: IsGObject obj => obj -> JSM NotificationCenter
-castToNotificationCenter = castTo gTypeNotificationCenter "NotificationCenter"
-
-gTypeNotificationCenter :: JSM GType
-gTypeNotificationCenter = GType . Object <$> jsg "NotificationCenter"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OESElementIndexUint".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OESElementIndexUint Mozilla OESElementIndexUint documentation>
-newtype OESElementIndexUint = OESElementIndexUint { unOESElementIndexUint :: JSVal }
-
-instance PToJSVal OESElementIndexUint where
-  pToJSVal = unOESElementIndexUint
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OESElementIndexUint where
-  pFromJSVal = OESElementIndexUint
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OESElementIndexUint where
-  toJSVal = return . unOESElementIndexUint
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OESElementIndexUint where
-  fromJSVal v = fmap OESElementIndexUint <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OESElementIndexUint where
-  makeObject = makeObject . unOESElementIndexUint
-
-instance IsGObject OESElementIndexUint where
-  toGObject = GObject . unOESElementIndexUint
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OESElementIndexUint . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOESElementIndexUint :: IsGObject obj => obj -> JSM OESElementIndexUint
-castToOESElementIndexUint = castTo gTypeOESElementIndexUint "OESElementIndexUint"
-
-gTypeOESElementIndexUint :: JSM GType
-gTypeOESElementIndexUint = GType . Object <$> jsg "OESElementIndexUint"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OESStandardDerivatives".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OESStandardDerivatives Mozilla OESStandardDerivatives documentation>
-newtype OESStandardDerivatives = OESStandardDerivatives { unOESStandardDerivatives :: JSVal }
-
-instance PToJSVal OESStandardDerivatives where
-  pToJSVal = unOESStandardDerivatives
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OESStandardDerivatives where
-  pFromJSVal = OESStandardDerivatives
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OESStandardDerivatives where
-  toJSVal = return . unOESStandardDerivatives
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OESStandardDerivatives where
-  fromJSVal v = fmap OESStandardDerivatives <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OESStandardDerivatives where
-  makeObject = makeObject . unOESStandardDerivatives
-
-instance IsGObject OESStandardDerivatives where
-  toGObject = GObject . unOESStandardDerivatives
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OESStandardDerivatives . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOESStandardDerivatives :: IsGObject obj => obj -> JSM OESStandardDerivatives
-castToOESStandardDerivatives = castTo gTypeOESStandardDerivatives "OESStandardDerivatives"
-
-gTypeOESStandardDerivatives :: JSM GType
-gTypeOESStandardDerivatives = GType . Object <$> jsg "OESStandardDerivatives"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OESTextureFloat".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureFloat Mozilla OESTextureFloat documentation>
-newtype OESTextureFloat = OESTextureFloat { unOESTextureFloat :: JSVal }
-
-instance PToJSVal OESTextureFloat where
-  pToJSVal = unOESTextureFloat
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OESTextureFloat where
-  pFromJSVal = OESTextureFloat
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OESTextureFloat where
-  toJSVal = return . unOESTextureFloat
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OESTextureFloat where
-  fromJSVal v = fmap OESTextureFloat <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OESTextureFloat where
-  makeObject = makeObject . unOESTextureFloat
-
-instance IsGObject OESTextureFloat where
-  toGObject = GObject . unOESTextureFloat
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OESTextureFloat . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOESTextureFloat :: IsGObject obj => obj -> JSM OESTextureFloat
-castToOESTextureFloat = castTo gTypeOESTextureFloat "OESTextureFloat"
-
-gTypeOESTextureFloat :: JSM GType
-gTypeOESTextureFloat = GType . Object <$> jsg "OESTextureFloat"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OESTextureFloatLinear".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureFloatLinear Mozilla OESTextureFloatLinear documentation>
-newtype OESTextureFloatLinear = OESTextureFloatLinear { unOESTextureFloatLinear :: JSVal }
-
-instance PToJSVal OESTextureFloatLinear where
-  pToJSVal = unOESTextureFloatLinear
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OESTextureFloatLinear where
-  pFromJSVal = OESTextureFloatLinear
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OESTextureFloatLinear where
-  toJSVal = return . unOESTextureFloatLinear
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OESTextureFloatLinear where
-  fromJSVal v = fmap OESTextureFloatLinear <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OESTextureFloatLinear where
-  makeObject = makeObject . unOESTextureFloatLinear
-
-instance IsGObject OESTextureFloatLinear where
-  toGObject = GObject . unOESTextureFloatLinear
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OESTextureFloatLinear . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOESTextureFloatLinear :: IsGObject obj => obj -> JSM OESTextureFloatLinear
-castToOESTextureFloatLinear = castTo gTypeOESTextureFloatLinear "OESTextureFloatLinear"
-
-gTypeOESTextureFloatLinear :: JSM GType
-gTypeOESTextureFloatLinear = GType . Object <$> jsg "OESTextureFloatLinear"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OESTextureHalfFloat".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureHalfFloat Mozilla OESTextureHalfFloat documentation>
-newtype OESTextureHalfFloat = OESTextureHalfFloat { unOESTextureHalfFloat :: JSVal }
-
-instance PToJSVal OESTextureHalfFloat where
-  pToJSVal = unOESTextureHalfFloat
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OESTextureHalfFloat where
-  pFromJSVal = OESTextureHalfFloat
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OESTextureHalfFloat where
-  toJSVal = return . unOESTextureHalfFloat
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OESTextureHalfFloat where
-  fromJSVal v = fmap OESTextureHalfFloat <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OESTextureHalfFloat where
-  makeObject = makeObject . unOESTextureHalfFloat
-
-instance IsGObject OESTextureHalfFloat where
-  toGObject = GObject . unOESTextureHalfFloat
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OESTextureHalfFloat . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOESTextureHalfFloat :: IsGObject obj => obj -> JSM OESTextureHalfFloat
-castToOESTextureHalfFloat = castTo gTypeOESTextureHalfFloat "OESTextureHalfFloat"
-
-gTypeOESTextureHalfFloat :: JSM GType
-gTypeOESTextureHalfFloat = GType . Object <$> jsg "OESTextureHalfFloat"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OESTextureHalfFloatLinear".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureHalfFloatLinear Mozilla OESTextureHalfFloatLinear documentation>
-newtype OESTextureHalfFloatLinear = OESTextureHalfFloatLinear { unOESTextureHalfFloatLinear :: JSVal }
-
-instance PToJSVal OESTextureHalfFloatLinear where
-  pToJSVal = unOESTextureHalfFloatLinear
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OESTextureHalfFloatLinear where
-  pFromJSVal = OESTextureHalfFloatLinear
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OESTextureHalfFloatLinear where
-  toJSVal = return . unOESTextureHalfFloatLinear
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OESTextureHalfFloatLinear where
-  fromJSVal v = fmap OESTextureHalfFloatLinear <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OESTextureHalfFloatLinear where
-  makeObject = makeObject . unOESTextureHalfFloatLinear
-
-instance IsGObject OESTextureHalfFloatLinear where
-  toGObject = GObject . unOESTextureHalfFloatLinear
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OESTextureHalfFloatLinear . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOESTextureHalfFloatLinear :: IsGObject obj => obj -> JSM OESTextureHalfFloatLinear
-castToOESTextureHalfFloatLinear = castTo gTypeOESTextureHalfFloatLinear "OESTextureHalfFloatLinear"
-
-gTypeOESTextureHalfFloatLinear :: JSM GType
-gTypeOESTextureHalfFloatLinear = GType . Object <$> jsg "OESTextureHalfFloatLinear"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OESVertexArrayObject".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject Mozilla OESVertexArrayObject documentation>
-newtype OESVertexArrayObject = OESVertexArrayObject { unOESVertexArrayObject :: JSVal }
-
-instance PToJSVal OESVertexArrayObject where
-  pToJSVal = unOESVertexArrayObject
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OESVertexArrayObject where
-  pFromJSVal = OESVertexArrayObject
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OESVertexArrayObject where
-  toJSVal = return . unOESVertexArrayObject
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OESVertexArrayObject where
-  fromJSVal v = fmap OESVertexArrayObject <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OESVertexArrayObject where
-  makeObject = makeObject . unOESVertexArrayObject
-
-instance IsGObject OESVertexArrayObject where
-  toGObject = GObject . unOESVertexArrayObject
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OESVertexArrayObject . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOESVertexArrayObject :: IsGObject obj => obj -> JSM OESVertexArrayObject
-castToOESVertexArrayObject = castTo gTypeOESVertexArrayObject "OESVertexArrayObject"
-
-gTypeOESVertexArrayObject :: JSM GType
-gTypeOESVertexArrayObject = GType . Object <$> jsg "OESVertexArrayObject"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OfflineAudioCompletionEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent Mozilla OfflineAudioCompletionEvent documentation>
-newtype OfflineAudioCompletionEvent = OfflineAudioCompletionEvent { unOfflineAudioCompletionEvent :: JSVal }
-
-instance PToJSVal OfflineAudioCompletionEvent where
-  pToJSVal = unOfflineAudioCompletionEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OfflineAudioCompletionEvent where
-  pFromJSVal = OfflineAudioCompletionEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OfflineAudioCompletionEvent where
-  toJSVal = return . unOfflineAudioCompletionEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OfflineAudioCompletionEvent where
-  fromJSVal v = fmap OfflineAudioCompletionEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OfflineAudioCompletionEvent where
-  makeObject = makeObject . unOfflineAudioCompletionEvent
-
-instance IsEvent OfflineAudioCompletionEvent
-instance IsGObject OfflineAudioCompletionEvent where
-  toGObject = GObject . unOfflineAudioCompletionEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OfflineAudioCompletionEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOfflineAudioCompletionEvent :: IsGObject obj => obj -> JSM OfflineAudioCompletionEvent
-castToOfflineAudioCompletionEvent = castTo gTypeOfflineAudioCompletionEvent "OfflineAudioCompletionEvent"
-
-gTypeOfflineAudioCompletionEvent :: JSM GType
-gTypeOfflineAudioCompletionEvent = GType . Object <$> jsg "OfflineAudioCompletionEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OfflineAudioContext".
--- Base interface functions are in:
---
---     * "JSDOM.AudioContext"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation>
-newtype OfflineAudioContext = OfflineAudioContext { unOfflineAudioContext :: JSVal }
-
-instance PToJSVal OfflineAudioContext where
-  pToJSVal = unOfflineAudioContext
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OfflineAudioContext where
-  pFromJSVal = OfflineAudioContext
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OfflineAudioContext where
-  toJSVal = return . unOfflineAudioContext
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OfflineAudioContext where
-  fromJSVal v = fmap OfflineAudioContext <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OfflineAudioContext where
-  makeObject = makeObject . unOfflineAudioContext
-
-instance IsAudioContext OfflineAudioContext
-instance IsEventTarget OfflineAudioContext
-instance IsGObject OfflineAudioContext where
-  toGObject = GObject . unOfflineAudioContext
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OfflineAudioContext . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOfflineAudioContext :: IsGObject obj => obj -> JSM OfflineAudioContext
-castToOfflineAudioContext = castTo gTypeOfflineAudioContext "OfflineAudioContext"
-
-gTypeOfflineAudioContext :: JSM GType
-gTypeOfflineAudioContext = GType . Object <$> jsg "OfflineAudioContext"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OscillatorNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode Mozilla OscillatorNode documentation>
-newtype OscillatorNode = OscillatorNode { unOscillatorNode :: JSVal }
-
-instance PToJSVal OscillatorNode where
-  pToJSVal = unOscillatorNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OscillatorNode where
-  pFromJSVal = OscillatorNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OscillatorNode where
-  toJSVal = return . unOscillatorNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OscillatorNode where
-  fromJSVal v = fmap OscillatorNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OscillatorNode where
-  makeObject = makeObject . unOscillatorNode
-
-instance IsAudioNode OscillatorNode
-instance IsEventTarget OscillatorNode
-instance IsGObject OscillatorNode where
-  toGObject = GObject . unOscillatorNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OscillatorNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOscillatorNode :: IsGObject obj => obj -> JSM OscillatorNode
-castToOscillatorNode = castTo gTypeOscillatorNode "OscillatorNode"
-
-gTypeOscillatorNode :: JSM GType
-gTypeOscillatorNode = GType . Object <$> jsg "OscillatorNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.OverflowEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent Mozilla OverflowEvent documentation>
-newtype OverflowEvent = OverflowEvent { unOverflowEvent :: JSVal }
-
-instance PToJSVal OverflowEvent where
-  pToJSVal = unOverflowEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal OverflowEvent where
-  pFromJSVal = OverflowEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal OverflowEvent where
-  toJSVal = return . unOverflowEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal OverflowEvent where
-  fromJSVal v = fmap OverflowEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject OverflowEvent where
-  makeObject = makeObject . unOverflowEvent
-
-instance IsEvent OverflowEvent
-instance IsGObject OverflowEvent where
-  toGObject = GObject . unOverflowEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = OverflowEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToOverflowEvent :: IsGObject obj => obj -> JSM OverflowEvent
-castToOverflowEvent = castTo gTypeOverflowEvent "OverflowEvent"
-
-gTypeOverflowEvent :: JSM GType
-gTypeOverflowEvent = GType . Object <$> jsg "OverflowEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PageTransitionEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent Mozilla PageTransitionEvent documentation>
-newtype PageTransitionEvent = PageTransitionEvent { unPageTransitionEvent :: JSVal }
-
-instance PToJSVal PageTransitionEvent where
-  pToJSVal = unPageTransitionEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PageTransitionEvent where
-  pFromJSVal = PageTransitionEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PageTransitionEvent where
-  toJSVal = return . unPageTransitionEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PageTransitionEvent where
-  fromJSVal v = fmap PageTransitionEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PageTransitionEvent where
-  makeObject = makeObject . unPageTransitionEvent
-
-instance IsEvent PageTransitionEvent
-instance IsGObject PageTransitionEvent where
-  toGObject = GObject . unPageTransitionEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PageTransitionEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPageTransitionEvent :: IsGObject obj => obj -> JSM PageTransitionEvent
-castToPageTransitionEvent = castTo gTypePageTransitionEvent "PageTransitionEvent"
-
-gTypePageTransitionEvent :: JSM GType
-gTypePageTransitionEvent = GType . Object <$> jsg "PageTransitionEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PannerNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode Mozilla webkitAudioPannerNode documentation>
-newtype PannerNode = PannerNode { unPannerNode :: JSVal }
-
-instance PToJSVal PannerNode where
-  pToJSVal = unPannerNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PannerNode where
-  pFromJSVal = PannerNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PannerNode where
-  toJSVal = return . unPannerNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PannerNode where
-  fromJSVal v = fmap PannerNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PannerNode where
-  makeObject = makeObject . unPannerNode
-
-instance IsAudioNode PannerNode
-instance IsEventTarget PannerNode
-instance IsGObject PannerNode where
-  toGObject = GObject . unPannerNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PannerNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPannerNode :: IsGObject obj => obj -> JSM PannerNode
-castToPannerNode = castTo gTypePannerNode "PannerNode"
-
-gTypePannerNode :: JSM GType
-gTypePannerNode = GType . Object <$> jsg "webkitAudioPannerNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Path2D".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation>
-newtype Path2D = Path2D { unPath2D :: JSVal }
-
-instance PToJSVal Path2D where
-  pToJSVal = unPath2D
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Path2D where
-  pFromJSVal = Path2D
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Path2D where
-  toJSVal = return . unPath2D
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Path2D where
-  fromJSVal v = fmap Path2D <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Path2D where
-  makeObject = makeObject . unPath2D
-
-instance IsGObject Path2D where
-  toGObject = GObject . unPath2D
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Path2D . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPath2D :: IsGObject obj => obj -> JSM Path2D
-castToPath2D = castTo gTypePath2D "Path2D"
-
-gTypePath2D :: JSM GType
-gTypePath2D = GType . Object <$> jsg "Path2D"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Performance".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Performance Mozilla Performance documentation>
-newtype Performance = Performance { unPerformance :: JSVal }
-
-instance PToJSVal Performance where
-  pToJSVal = unPerformance
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Performance where
-  pFromJSVal = Performance
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Performance where
-  toJSVal = return . unPerformance
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Performance where
-  fromJSVal v = fmap Performance <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Performance where
-  makeObject = makeObject . unPerformance
-
-instance IsEventTarget Performance
-instance IsGObject Performance where
-  toGObject = GObject . unPerformance
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Performance . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPerformance :: IsGObject obj => obj -> JSM Performance
-castToPerformance = castTo gTypePerformance "Performance"
-
-gTypePerformance :: JSM GType
-gTypePerformance = GType . Object <$> jsg "Performance"
-#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 "JSDOM.PerformanceEntry".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry Mozilla PerformanceEntry documentation>
-newtype PerformanceEntry = PerformanceEntry { unPerformanceEntry :: JSVal }
-
-instance PToJSVal PerformanceEntry where
-  pToJSVal = unPerformanceEntry
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PerformanceEntry where
-  pFromJSVal = PerformanceEntry
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PerformanceEntry where
-  toJSVal = return . unPerformanceEntry
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PerformanceEntry where
-  fromJSVal v = fmap PerformanceEntry <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PerformanceEntry where
-  makeObject = makeObject . unPerformanceEntry
-
-class IsGObject o => IsPerformanceEntry o
-toPerformanceEntry :: IsPerformanceEntry o => o -> PerformanceEntry
-toPerformanceEntry = unsafeCastGObject . toGObject
-
-instance IsPerformanceEntry PerformanceEntry
-instance IsGObject PerformanceEntry where
-  toGObject = GObject . unPerformanceEntry
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PerformanceEntry . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPerformanceEntry :: IsGObject obj => obj -> JSM PerformanceEntry
-castToPerformanceEntry = castTo gTypePerformanceEntry "PerformanceEntry"
-
-gTypePerformanceEntry :: JSM GType
-gTypePerformanceEntry = GType . Object <$> jsg "PerformanceEntry"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PerformanceEntryList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList Mozilla PerformanceEntryList documentation>
-newtype PerformanceEntryList = PerformanceEntryList { unPerformanceEntryList :: JSVal }
-
-instance PToJSVal PerformanceEntryList where
-  pToJSVal = unPerformanceEntryList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PerformanceEntryList where
-  pFromJSVal = PerformanceEntryList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PerformanceEntryList where
-  toJSVal = return . unPerformanceEntryList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PerformanceEntryList where
-  fromJSVal v = fmap PerformanceEntryList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PerformanceEntryList where
-  makeObject = makeObject . unPerformanceEntryList
-
-instance IsGObject PerformanceEntryList where
-  toGObject = GObject . unPerformanceEntryList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PerformanceEntryList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPerformanceEntryList :: IsGObject obj => obj -> JSM PerformanceEntryList
-castToPerformanceEntryList = castTo gTypePerformanceEntryList "PerformanceEntryList"
-
-gTypePerformanceEntryList :: JSM GType
-gTypePerformanceEntryList = GType . Object <$> jsg "PerformanceEntryList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PerformanceMark".
--- Base interface functions are in:
---
---     * "JSDOM.PerformanceEntry"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMark Mozilla PerformanceMark documentation>
-newtype PerformanceMark = PerformanceMark { unPerformanceMark :: JSVal }
-
-instance PToJSVal PerformanceMark where
-  pToJSVal = unPerformanceMark
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PerformanceMark where
-  pFromJSVal = PerformanceMark
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PerformanceMark where
-  toJSVal = return . unPerformanceMark
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PerformanceMark where
-  fromJSVal v = fmap PerformanceMark <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PerformanceMark where
-  makeObject = makeObject . unPerformanceMark
-
-instance IsPerformanceEntry PerformanceMark
-instance IsGObject PerformanceMark where
-  toGObject = GObject . unPerformanceMark
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PerformanceMark . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPerformanceMark :: IsGObject obj => obj -> JSM PerformanceMark
-castToPerformanceMark = castTo gTypePerformanceMark "PerformanceMark"
-
-gTypePerformanceMark :: JSM GType
-gTypePerformanceMark = GType . Object <$> jsg "PerformanceMark"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PerformanceMeasure".
--- Base interface functions are in:
---
---     * "JSDOM.PerformanceEntry"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMeasure Mozilla PerformanceMeasure documentation>
-newtype PerformanceMeasure = PerformanceMeasure { unPerformanceMeasure :: JSVal }
-
-instance PToJSVal PerformanceMeasure where
-  pToJSVal = unPerformanceMeasure
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PerformanceMeasure where
-  pFromJSVal = PerformanceMeasure
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PerformanceMeasure where
-  toJSVal = return . unPerformanceMeasure
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PerformanceMeasure where
-  fromJSVal v = fmap PerformanceMeasure <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PerformanceMeasure where
-  makeObject = makeObject . unPerformanceMeasure
-
-instance IsPerformanceEntry PerformanceMeasure
-instance IsGObject PerformanceMeasure where
-  toGObject = GObject . unPerformanceMeasure
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PerformanceMeasure . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPerformanceMeasure :: IsGObject obj => obj -> JSM PerformanceMeasure
-castToPerformanceMeasure = castTo gTypePerformanceMeasure "PerformanceMeasure"
-
-gTypePerformanceMeasure :: JSM GType
-gTypePerformanceMeasure = GType . Object <$> jsg "PerformanceMeasure"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PerformanceNavigation".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation Mozilla PerformanceNavigation documentation>
-newtype PerformanceNavigation = PerformanceNavigation { unPerformanceNavigation :: JSVal }
-
-instance PToJSVal PerformanceNavigation where
-  pToJSVal = unPerformanceNavigation
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PerformanceNavigation where
-  pFromJSVal = PerformanceNavigation
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PerformanceNavigation where
-  toJSVal = return . unPerformanceNavigation
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PerformanceNavigation where
-  fromJSVal v = fmap PerformanceNavigation <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PerformanceNavigation where
-  makeObject = makeObject . unPerformanceNavigation
-
-instance IsGObject PerformanceNavigation where
-  toGObject = GObject . unPerformanceNavigation
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PerformanceNavigation . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPerformanceNavigation :: IsGObject obj => obj -> JSM PerformanceNavigation
-castToPerformanceNavigation = castTo gTypePerformanceNavigation "PerformanceNavigation"
-
-gTypePerformanceNavigation :: JSM GType
-gTypePerformanceNavigation = GType . Object <$> jsg "PerformanceNavigation"
-#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 "JSDOM.PerformanceResourceTiming".
--- Base interface functions are in:
---
---     * "JSDOM.PerformanceEntry"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming Mozilla PerformanceResourceTiming documentation>
-newtype PerformanceResourceTiming = PerformanceResourceTiming { unPerformanceResourceTiming :: JSVal }
-
-instance PToJSVal PerformanceResourceTiming where
-  pToJSVal = unPerformanceResourceTiming
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PerformanceResourceTiming where
-  pFromJSVal = PerformanceResourceTiming
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PerformanceResourceTiming where
-  toJSVal = return . unPerformanceResourceTiming
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PerformanceResourceTiming where
-  fromJSVal v = fmap PerformanceResourceTiming <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PerformanceResourceTiming where
-  makeObject = makeObject . unPerformanceResourceTiming
-
-instance IsPerformanceEntry PerformanceResourceTiming
-instance IsGObject PerformanceResourceTiming where
-  toGObject = GObject . unPerformanceResourceTiming
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PerformanceResourceTiming . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPerformanceResourceTiming :: IsGObject obj => obj -> JSM PerformanceResourceTiming
-castToPerformanceResourceTiming = castTo gTypePerformanceResourceTiming "PerformanceResourceTiming"
-
-gTypePerformanceResourceTiming :: JSM GType
-gTypePerformanceResourceTiming = GType . Object <$> jsg "PerformanceResourceTiming"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PerformanceTiming".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming Mozilla PerformanceTiming documentation>
-newtype PerformanceTiming = PerformanceTiming { unPerformanceTiming :: JSVal }
-
-instance PToJSVal PerformanceTiming where
-  pToJSVal = unPerformanceTiming
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PerformanceTiming where
-  pFromJSVal = PerformanceTiming
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PerformanceTiming where
-  toJSVal = return . unPerformanceTiming
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PerformanceTiming where
-  fromJSVal v = fmap PerformanceTiming <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PerformanceTiming where
-  makeObject = makeObject . unPerformanceTiming
-
-instance IsGObject PerformanceTiming where
-  toGObject = GObject . unPerformanceTiming
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PerformanceTiming . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPerformanceTiming :: IsGObject obj => obj -> JSM PerformanceTiming
-castToPerformanceTiming = castTo gTypePerformanceTiming "PerformanceTiming"
-
-gTypePerformanceTiming :: JSM GType
-gTypePerformanceTiming = GType . Object <$> jsg "PerformanceTiming"
-#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 "JSDOM.PeriodicWave".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PeriodicWave Mozilla PeriodicWave documentation>
-newtype PeriodicWave = PeriodicWave { unPeriodicWave :: JSVal }
-
-instance PToJSVal PeriodicWave where
-  pToJSVal = unPeriodicWave
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PeriodicWave where
-  pFromJSVal = PeriodicWave
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PeriodicWave where
-  toJSVal = return . unPeriodicWave
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PeriodicWave where
-  fromJSVal v = fmap PeriodicWave <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PeriodicWave where
-  makeObject = makeObject . unPeriodicWave
-
-instance IsGObject PeriodicWave where
-  toGObject = GObject . unPeriodicWave
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PeriodicWave . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPeriodicWave :: IsGObject obj => obj -> JSM PeriodicWave
-castToPeriodicWave = castTo gTypePeriodicWave "PeriodicWave"
-
-gTypePeriodicWave :: JSM GType
-gTypePeriodicWave = GType . Object <$> jsg "PeriodicWave"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Plugin".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Plugin Mozilla Plugin documentation>
-newtype Plugin = Plugin { unPlugin :: JSVal }
-
-instance PToJSVal Plugin where
-  pToJSVal = unPlugin
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Plugin where
-  pFromJSVal = Plugin
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Plugin where
-  toJSVal = return . unPlugin
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Plugin where
-  fromJSVal v = fmap Plugin <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Plugin where
-  makeObject = makeObject . unPlugin
-
-instance IsGObject Plugin where
-  toGObject = GObject . unPlugin
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Plugin . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPlugin :: IsGObject obj => obj -> JSM Plugin
-castToPlugin = castTo gTypePlugin "Plugin"
-
-gTypePlugin :: JSM GType
-gTypePlugin = GType . Object <$> jsg "Plugin"
-#else
-type IsPlugin o = PluginClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PluginArray".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray Mozilla PluginArray documentation>
-newtype PluginArray = PluginArray { unPluginArray :: JSVal }
-
-instance PToJSVal PluginArray where
-  pToJSVal = unPluginArray
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PluginArray where
-  pFromJSVal = PluginArray
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PluginArray where
-  toJSVal = return . unPluginArray
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PluginArray where
-  fromJSVal v = fmap PluginArray <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PluginArray where
-  makeObject = makeObject . unPluginArray
-
-instance IsGObject PluginArray where
-  toGObject = GObject . unPluginArray
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PluginArray . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPluginArray :: IsGObject obj => obj -> JSM PluginArray
-castToPluginArray = castTo gTypePluginArray "PluginArray"
-
-gTypePluginArray :: JSM GType
-gTypePluginArray = GType . Object <$> jsg "PluginArray"
-#else
-type IsPluginArray o = PluginArrayClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PopStateEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent Mozilla PopStateEvent documentation>
-newtype PopStateEvent = PopStateEvent { unPopStateEvent :: JSVal }
-
-instance PToJSVal PopStateEvent where
-  pToJSVal = unPopStateEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PopStateEvent where
-  pFromJSVal = PopStateEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PopStateEvent where
-  toJSVal = return . unPopStateEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PopStateEvent where
-  fromJSVal v = fmap PopStateEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PopStateEvent where
-  makeObject = makeObject . unPopStateEvent
-
-instance IsEvent PopStateEvent
-instance IsGObject PopStateEvent where
-  toGObject = GObject . unPopStateEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PopStateEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPopStateEvent :: IsGObject obj => obj -> JSM PopStateEvent
-castToPopStateEvent = castTo gTypePopStateEvent "PopStateEvent"
-
-gTypePopStateEvent :: JSM GType
-gTypePopStateEvent = GType . Object <$> jsg "PopStateEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.PositionError".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/PositionError Mozilla PositionError documentation>
-newtype PositionError = PositionError { unPositionError :: JSVal }
-
-instance PToJSVal PositionError where
-  pToJSVal = unPositionError
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal PositionError where
-  pFromJSVal = PositionError
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal PositionError where
-  toJSVal = return . unPositionError
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal PositionError where
-  fromJSVal v = fmap PositionError <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject PositionError where
-  makeObject = makeObject . unPositionError
-
-instance IsGObject PositionError where
-  toGObject = GObject . unPositionError
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = PositionError . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToPositionError :: IsGObject obj => obj -> JSM PositionError
-castToPositionError = castTo gTypePositionError "PositionError"
-
-gTypePositionError :: JSM GType
-gTypePositionError = GType . Object <$> jsg "PositionError"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ProcessingInstruction".
--- Base interface functions are in:
---
---     * "JSDOM.CharacterData"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction Mozilla ProcessingInstruction documentation>
-newtype ProcessingInstruction = ProcessingInstruction { unProcessingInstruction :: JSVal }
-
-instance PToJSVal ProcessingInstruction where
-  pToJSVal = unProcessingInstruction
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ProcessingInstruction where
-  pFromJSVal = ProcessingInstruction
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ProcessingInstruction where
-  toJSVal = return . unProcessingInstruction
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ProcessingInstruction where
-  fromJSVal v = fmap ProcessingInstruction <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ProcessingInstruction where
-  makeObject = makeObject . unProcessingInstruction
-
-instance IsCharacterData ProcessingInstruction
-instance IsNode ProcessingInstruction
-instance IsEventTarget ProcessingInstruction
-instance IsGObject ProcessingInstruction where
-  toGObject = GObject . unProcessingInstruction
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ProcessingInstruction . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToProcessingInstruction :: IsGObject obj => obj -> JSM ProcessingInstruction
-castToProcessingInstruction = castTo gTypeProcessingInstruction "ProcessingInstruction"
-
-gTypeProcessingInstruction :: JSM GType
-gTypeProcessingInstruction = GType . Object <$> jsg "ProcessingInstruction"
-#else
-type IsProcessingInstruction o = ProcessingInstructionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ProgressEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent Mozilla ProgressEvent documentation>
-newtype ProgressEvent = ProgressEvent { unProgressEvent :: JSVal }
-
-instance PToJSVal ProgressEvent where
-  pToJSVal = unProgressEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ProgressEvent where
-  pFromJSVal = ProgressEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ProgressEvent where
-  toJSVal = return . unProgressEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ProgressEvent where
-  fromJSVal v = fmap ProgressEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ProgressEvent where
-  makeObject = makeObject . unProgressEvent
-
-class IsEvent o => IsProgressEvent o
-toProgressEvent :: IsProgressEvent o => o -> ProgressEvent
-toProgressEvent = unsafeCastGObject . toGObject
-
-instance IsProgressEvent ProgressEvent
-instance IsEvent ProgressEvent
-instance IsGObject ProgressEvent where
-  toGObject = GObject . unProgressEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ProgressEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToProgressEvent :: IsGObject obj => obj -> JSM ProgressEvent
-castToProgressEvent = castTo gTypeProgressEvent "ProgressEvent"
-
-gTypeProgressEvent :: JSM GType
-gTypeProgressEvent = GType . Object <$> jsg "ProgressEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.QuickTimePluginReplacement".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement Mozilla QuickTimePluginReplacement documentation>
-newtype QuickTimePluginReplacement = QuickTimePluginReplacement { unQuickTimePluginReplacement :: JSVal }
-
-instance PToJSVal QuickTimePluginReplacement where
-  pToJSVal = unQuickTimePluginReplacement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal QuickTimePluginReplacement where
-  pFromJSVal = QuickTimePluginReplacement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal QuickTimePluginReplacement where
-  toJSVal = return . unQuickTimePluginReplacement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal QuickTimePluginReplacement where
-  fromJSVal v = fmap QuickTimePluginReplacement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject QuickTimePluginReplacement where
-  makeObject = makeObject . unQuickTimePluginReplacement
-
-instance IsGObject QuickTimePluginReplacement where
-  toGObject = GObject . unQuickTimePluginReplacement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = QuickTimePluginReplacement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToQuickTimePluginReplacement :: IsGObject obj => obj -> JSM QuickTimePluginReplacement
-castToQuickTimePluginReplacement = castTo gTypeQuickTimePluginReplacement "QuickTimePluginReplacement"
-
-gTypeQuickTimePluginReplacement :: JSM GType
-gTypeQuickTimePluginReplacement = GType . Object <$> jsg "QuickTimePluginReplacement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RGBColor".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor Mozilla RGBColor documentation>
-newtype RGBColor = RGBColor { unRGBColor :: JSVal }
-
-instance PToJSVal RGBColor where
-  pToJSVal = unRGBColor
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RGBColor where
-  pFromJSVal = RGBColor
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RGBColor where
-  toJSVal = return . unRGBColor
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RGBColor where
-  fromJSVal v = fmap RGBColor <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RGBColor where
-  makeObject = makeObject . unRGBColor
-
-instance IsGObject RGBColor where
-  toGObject = GObject . unRGBColor
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RGBColor . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRGBColor :: IsGObject obj => obj -> JSM RGBColor
-castToRGBColor = castTo gTypeRGBColor "RGBColor"
-
-gTypeRGBColor :: JSM GType
-gTypeRGBColor = GType . Object <$> jsg "RGBColor"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCConfiguration".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration Mozilla RTCConfiguration documentation>
-newtype RTCConfiguration = RTCConfiguration { unRTCConfiguration :: JSVal }
-
-instance PToJSVal RTCConfiguration where
-  pToJSVal = unRTCConfiguration
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCConfiguration where
-  pFromJSVal = RTCConfiguration
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCConfiguration where
-  toJSVal = return . unRTCConfiguration
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCConfiguration where
-  fromJSVal v = fmap RTCConfiguration <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCConfiguration where
-  makeObject = makeObject . unRTCConfiguration
-
-instance IsGObject RTCConfiguration where
-  toGObject = GObject . unRTCConfiguration
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCConfiguration . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCConfiguration :: IsGObject obj => obj -> JSM RTCConfiguration
-castToRTCConfiguration = castTo gTypeRTCConfiguration "RTCConfiguration"
-
-gTypeRTCConfiguration :: JSM GType
-gTypeRTCConfiguration = GType . Object <$> jsg "RTCConfiguration"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCDTMFSender".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender Mozilla RTCDTMFSender documentation>
-newtype RTCDTMFSender = RTCDTMFSender { unRTCDTMFSender :: JSVal }
-
-instance PToJSVal RTCDTMFSender where
-  pToJSVal = unRTCDTMFSender
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCDTMFSender where
-  pFromJSVal = RTCDTMFSender
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCDTMFSender where
-  toJSVal = return . unRTCDTMFSender
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCDTMFSender where
-  fromJSVal v = fmap RTCDTMFSender <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCDTMFSender where
-  makeObject = makeObject . unRTCDTMFSender
-
-instance IsEventTarget RTCDTMFSender
-instance IsGObject RTCDTMFSender where
-  toGObject = GObject . unRTCDTMFSender
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCDTMFSender . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCDTMFSender :: IsGObject obj => obj -> JSM RTCDTMFSender
-castToRTCDTMFSender = castTo gTypeRTCDTMFSender "RTCDTMFSender"
-
-gTypeRTCDTMFSender :: JSM GType
-gTypeRTCDTMFSender = GType . Object <$> jsg "RTCDTMFSender"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCDTMFToneChangeEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent Mozilla RTCDTMFToneChangeEvent documentation>
-newtype RTCDTMFToneChangeEvent = RTCDTMFToneChangeEvent { unRTCDTMFToneChangeEvent :: JSVal }
-
-instance PToJSVal RTCDTMFToneChangeEvent where
-  pToJSVal = unRTCDTMFToneChangeEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCDTMFToneChangeEvent where
-  pFromJSVal = RTCDTMFToneChangeEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCDTMFToneChangeEvent where
-  toJSVal = return . unRTCDTMFToneChangeEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCDTMFToneChangeEvent where
-  fromJSVal v = fmap RTCDTMFToneChangeEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCDTMFToneChangeEvent where
-  makeObject = makeObject . unRTCDTMFToneChangeEvent
-
-instance IsEvent RTCDTMFToneChangeEvent
-instance IsGObject RTCDTMFToneChangeEvent where
-  toGObject = GObject . unRTCDTMFToneChangeEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCDTMFToneChangeEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCDTMFToneChangeEvent :: IsGObject obj => obj -> JSM RTCDTMFToneChangeEvent
-castToRTCDTMFToneChangeEvent = castTo gTypeRTCDTMFToneChangeEvent "RTCDTMFToneChangeEvent"
-
-gTypeRTCDTMFToneChangeEvent :: JSM GType
-gTypeRTCDTMFToneChangeEvent = GType . Object <$> jsg "RTCDTMFToneChangeEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCDataChannel".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel Mozilla RTCDataChannel documentation>
-newtype RTCDataChannel = RTCDataChannel { unRTCDataChannel :: JSVal }
-
-instance PToJSVal RTCDataChannel where
-  pToJSVal = unRTCDataChannel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCDataChannel where
-  pFromJSVal = RTCDataChannel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCDataChannel where
-  toJSVal = return . unRTCDataChannel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCDataChannel where
-  fromJSVal v = fmap RTCDataChannel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCDataChannel where
-  makeObject = makeObject . unRTCDataChannel
-
-instance IsEventTarget RTCDataChannel
-instance IsGObject RTCDataChannel where
-  toGObject = GObject . unRTCDataChannel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCDataChannel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCDataChannel :: IsGObject obj => obj -> JSM RTCDataChannel
-castToRTCDataChannel = castTo gTypeRTCDataChannel "RTCDataChannel"
-
-gTypeRTCDataChannel :: JSM GType
-gTypeRTCDataChannel = GType . Object <$> jsg "RTCDataChannel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCDataChannelEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent Mozilla RTCDataChannelEvent documentation>
-newtype RTCDataChannelEvent = RTCDataChannelEvent { unRTCDataChannelEvent :: JSVal }
-
-instance PToJSVal RTCDataChannelEvent where
-  pToJSVal = unRTCDataChannelEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCDataChannelEvent where
-  pFromJSVal = RTCDataChannelEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCDataChannelEvent where
-  toJSVal = return . unRTCDataChannelEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCDataChannelEvent where
-  fromJSVal v = fmap RTCDataChannelEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCDataChannelEvent where
-  makeObject = makeObject . unRTCDataChannelEvent
-
-instance IsEvent RTCDataChannelEvent
-instance IsGObject RTCDataChannelEvent where
-  toGObject = GObject . unRTCDataChannelEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCDataChannelEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCDataChannelEvent :: IsGObject obj => obj -> JSM RTCDataChannelEvent
-castToRTCDataChannelEvent = castTo gTypeRTCDataChannelEvent "RTCDataChannelEvent"
-
-gTypeRTCDataChannelEvent :: JSM GType
-gTypeRTCDataChannelEvent = GType . Object <$> jsg "RTCDataChannelEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCIceCandidate".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation>
-newtype RTCIceCandidate = RTCIceCandidate { unRTCIceCandidate :: JSVal }
-
-instance PToJSVal RTCIceCandidate where
-  pToJSVal = unRTCIceCandidate
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCIceCandidate where
-  pFromJSVal = RTCIceCandidate
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCIceCandidate where
-  toJSVal = return . unRTCIceCandidate
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCIceCandidate where
-  fromJSVal v = fmap RTCIceCandidate <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCIceCandidate where
-  makeObject = makeObject . unRTCIceCandidate
-
-instance IsGObject RTCIceCandidate where
-  toGObject = GObject . unRTCIceCandidate
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCIceCandidate . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCIceCandidate :: IsGObject obj => obj -> JSM RTCIceCandidate
-castToRTCIceCandidate = castTo gTypeRTCIceCandidate "RTCIceCandidate"
-
-gTypeRTCIceCandidate :: JSM GType
-gTypeRTCIceCandidate = GType . Object <$> jsg "RTCIceCandidate"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCIceCandidateEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent Mozilla RTCIceCandidateEvent documentation>
-newtype RTCIceCandidateEvent = RTCIceCandidateEvent { unRTCIceCandidateEvent :: JSVal }
-
-instance PToJSVal RTCIceCandidateEvent where
-  pToJSVal = unRTCIceCandidateEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCIceCandidateEvent where
-  pFromJSVal = RTCIceCandidateEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCIceCandidateEvent where
-  toJSVal = return . unRTCIceCandidateEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCIceCandidateEvent where
-  fromJSVal v = fmap RTCIceCandidateEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCIceCandidateEvent where
-  makeObject = makeObject . unRTCIceCandidateEvent
-
-instance IsEvent RTCIceCandidateEvent
-instance IsGObject RTCIceCandidateEvent where
-  toGObject = GObject . unRTCIceCandidateEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCIceCandidateEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCIceCandidateEvent :: IsGObject obj => obj -> JSM RTCIceCandidateEvent
-castToRTCIceCandidateEvent = castTo gTypeRTCIceCandidateEvent "RTCIceCandidateEvent"
-
-gTypeRTCIceCandidateEvent :: JSM GType
-gTypeRTCIceCandidateEvent = GType . Object <$> jsg "RTCIceCandidateEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCIceServer".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer Mozilla RTCIceServer documentation>
-newtype RTCIceServer = RTCIceServer { unRTCIceServer :: JSVal }
-
-instance PToJSVal RTCIceServer where
-  pToJSVal = unRTCIceServer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCIceServer where
-  pFromJSVal = RTCIceServer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCIceServer where
-  toJSVal = return . unRTCIceServer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCIceServer where
-  fromJSVal v = fmap RTCIceServer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCIceServer where
-  makeObject = makeObject . unRTCIceServer
-
-instance IsGObject RTCIceServer where
-  toGObject = GObject . unRTCIceServer
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCIceServer . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCIceServer :: IsGObject obj => obj -> JSM RTCIceServer
-castToRTCIceServer = castTo gTypeRTCIceServer "RTCIceServer"
-
-gTypeRTCIceServer :: JSM GType
-gTypeRTCIceServer = GType . Object <$> jsg "RTCIceServer"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCPeerConnection".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection Mozilla webkitRTCPeerConnection documentation>
-newtype RTCPeerConnection = RTCPeerConnection { unRTCPeerConnection :: JSVal }
-
-instance PToJSVal RTCPeerConnection where
-  pToJSVal = unRTCPeerConnection
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCPeerConnection where
-  pFromJSVal = RTCPeerConnection
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCPeerConnection where
-  toJSVal = return . unRTCPeerConnection
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCPeerConnection where
-  fromJSVal v = fmap RTCPeerConnection <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCPeerConnection where
-  makeObject = makeObject . unRTCPeerConnection
-
-instance IsEventTarget RTCPeerConnection
-instance IsGObject RTCPeerConnection where
-  toGObject = GObject . unRTCPeerConnection
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCPeerConnection . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCPeerConnection :: IsGObject obj => obj -> JSM RTCPeerConnection
-castToRTCPeerConnection = castTo gTypeRTCPeerConnection "RTCPeerConnection"
-
-gTypeRTCPeerConnection :: JSM GType
-gTypeRTCPeerConnection = GType . Object <$> jsg "webkitRTCPeerConnection"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCSessionDescription".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation>
-newtype RTCSessionDescription = RTCSessionDescription { unRTCSessionDescription :: JSVal }
-
-instance PToJSVal RTCSessionDescription where
-  pToJSVal = unRTCSessionDescription
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCSessionDescription where
-  pFromJSVal = RTCSessionDescription
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCSessionDescription where
-  toJSVal = return . unRTCSessionDescription
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCSessionDescription where
-  fromJSVal v = fmap RTCSessionDescription <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCSessionDescription where
-  makeObject = makeObject . unRTCSessionDescription
-
-instance IsGObject RTCSessionDescription where
-  toGObject = GObject . unRTCSessionDescription
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCSessionDescription . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCSessionDescription :: IsGObject obj => obj -> JSM RTCSessionDescription
-castToRTCSessionDescription = castTo gTypeRTCSessionDescription "RTCSessionDescription"
-
-gTypeRTCSessionDescription :: JSM GType
-gTypeRTCSessionDescription = GType . Object <$> jsg "RTCSessionDescription"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCStatsReport".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport Mozilla RTCStatsReport documentation>
-newtype RTCStatsReport = RTCStatsReport { unRTCStatsReport :: JSVal }
-
-instance PToJSVal RTCStatsReport where
-  pToJSVal = unRTCStatsReport
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCStatsReport where
-  pFromJSVal = RTCStatsReport
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCStatsReport where
-  toJSVal = return . unRTCStatsReport
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCStatsReport where
-  fromJSVal v = fmap RTCStatsReport <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCStatsReport where
-  makeObject = makeObject . unRTCStatsReport
-
-instance IsGObject RTCStatsReport where
-  toGObject = GObject . unRTCStatsReport
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCStatsReport . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCStatsReport :: IsGObject obj => obj -> JSM RTCStatsReport
-castToRTCStatsReport = castTo gTypeRTCStatsReport "RTCStatsReport"
-
-gTypeRTCStatsReport :: JSM GType
-gTypeRTCStatsReport = GType . Object <$> jsg "RTCStatsReport"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RTCStatsResponse".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse Mozilla RTCStatsResponse documentation>
-newtype RTCStatsResponse = RTCStatsResponse { unRTCStatsResponse :: JSVal }
-
-instance PToJSVal RTCStatsResponse where
-  pToJSVal = unRTCStatsResponse
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RTCStatsResponse where
-  pFromJSVal = RTCStatsResponse
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RTCStatsResponse where
-  toJSVal = return . unRTCStatsResponse
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RTCStatsResponse where
-  fromJSVal v = fmap RTCStatsResponse <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RTCStatsResponse where
-  makeObject = makeObject . unRTCStatsResponse
-
-instance IsGObject RTCStatsResponse where
-  toGObject = GObject . unRTCStatsResponse
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RTCStatsResponse . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRTCStatsResponse :: IsGObject obj => obj -> JSM RTCStatsResponse
-castToRTCStatsResponse = castTo gTypeRTCStatsResponse "RTCStatsResponse"
-
-gTypeRTCStatsResponse :: JSM GType
-gTypeRTCStatsResponse = GType . Object <$> jsg "RTCStatsResponse"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.RadioNodeList".
--- Base interface functions are in:
---
---     * "JSDOM.NodeList"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList Mozilla RadioNodeList documentation>
-newtype RadioNodeList = RadioNodeList { unRadioNodeList :: JSVal }
-
-instance PToJSVal RadioNodeList where
-  pToJSVal = unRadioNodeList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal RadioNodeList where
-  pFromJSVal = RadioNodeList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal RadioNodeList where
-  toJSVal = return . unRadioNodeList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal RadioNodeList where
-  fromJSVal v = fmap RadioNodeList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject RadioNodeList where
-  makeObject = makeObject . unRadioNodeList
-
-instance IsNodeList RadioNodeList
-instance IsGObject RadioNodeList where
-  toGObject = GObject . unRadioNodeList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = RadioNodeList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRadioNodeList :: IsGObject obj => obj -> JSM RadioNodeList
-castToRadioNodeList = castTo gTypeRadioNodeList "RadioNodeList"
-
-gTypeRadioNodeList :: JSM GType
-gTypeRadioNodeList = GType . Object <$> jsg "RadioNodeList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Range".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation>
-newtype Range = Range { unRange :: JSVal }
-
-instance PToJSVal Range where
-  pToJSVal = unRange
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Range where
-  pFromJSVal = Range
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Range where
-  toJSVal = return . unRange
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Range where
-  fromJSVal v = fmap Range <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Range where
-  makeObject = makeObject . unRange
-
-instance IsGObject Range where
-  toGObject = GObject . unRange
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Range . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRange :: IsGObject obj => obj -> JSM Range
-castToRange = castTo gTypeRange "Range"
-
-gTypeRange :: JSM GType
-gTypeRange = GType . Object <$> jsg "Range"
-#else
-type IsRange o = RangeClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ReadableStream".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation>
-newtype ReadableStream = ReadableStream { unReadableStream :: JSVal }
-
-instance PToJSVal ReadableStream where
-  pToJSVal = unReadableStream
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ReadableStream where
-  pFromJSVal = ReadableStream
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ReadableStream where
-  toJSVal = return . unReadableStream
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ReadableStream where
-  fromJSVal v = fmap ReadableStream <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ReadableStream where
-  makeObject = makeObject . unReadableStream
-
-instance IsGObject ReadableStream where
-  toGObject = GObject . unReadableStream
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ReadableStream . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToReadableStream :: IsGObject obj => obj -> JSM ReadableStream
-castToReadableStream = castTo gTypeReadableStream "ReadableStream"
-
-gTypeReadableStream :: JSM GType
-gTypeReadableStream = GType . Object <$> jsg "ReadableStream"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Rect".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Rect Mozilla Rect documentation>
-newtype Rect = Rect { unRect :: JSVal }
-
-instance PToJSVal Rect where
-  pToJSVal = unRect
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Rect where
-  pFromJSVal = Rect
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Rect where
-  toJSVal = return . unRect
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Rect where
-  fromJSVal v = fmap Rect <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Rect where
-  makeObject = makeObject . unRect
-
-instance IsGObject Rect where
-  toGObject = GObject . unRect
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Rect . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToRect :: IsGObject obj => obj -> JSM Rect
-castToRect = castTo gTypeRect "Rect"
-
-gTypeRect :: JSM GType
-gTypeRect = GType . Object <$> jsg "Rect"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SQLError".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SQLError Mozilla SQLError documentation>
-newtype SQLError = SQLError { unSQLError :: JSVal }
-
-instance PToJSVal SQLError where
-  pToJSVal = unSQLError
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SQLError where
-  pFromJSVal = SQLError
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SQLError where
-  toJSVal = return . unSQLError
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SQLError where
-  fromJSVal v = fmap SQLError <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SQLError where
-  makeObject = makeObject . unSQLError
-
-instance IsGObject SQLError where
-  toGObject = GObject . unSQLError
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SQLError . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSQLError :: IsGObject obj => obj -> JSM SQLError
-castToSQLError = castTo gTypeSQLError "SQLError"
-
-gTypeSQLError :: JSM GType
-gTypeSQLError = GType . Object <$> jsg "SQLError"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SQLResultSet".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet Mozilla SQLResultSet documentation>
-newtype SQLResultSet = SQLResultSet { unSQLResultSet :: JSVal }
-
-instance PToJSVal SQLResultSet where
-  pToJSVal = unSQLResultSet
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SQLResultSet where
-  pFromJSVal = SQLResultSet
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SQLResultSet where
-  toJSVal = return . unSQLResultSet
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SQLResultSet where
-  fromJSVal v = fmap SQLResultSet <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SQLResultSet where
-  makeObject = makeObject . unSQLResultSet
-
-instance IsGObject SQLResultSet where
-  toGObject = GObject . unSQLResultSet
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SQLResultSet . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSQLResultSet :: IsGObject obj => obj -> JSM SQLResultSet
-castToSQLResultSet = castTo gTypeSQLResultSet "SQLResultSet"
-
-gTypeSQLResultSet :: JSM GType
-gTypeSQLResultSet = GType . Object <$> jsg "SQLResultSet"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SQLResultSetRowList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList Mozilla SQLResultSetRowList documentation>
-newtype SQLResultSetRowList = SQLResultSetRowList { unSQLResultSetRowList :: JSVal }
-
-instance PToJSVal SQLResultSetRowList where
-  pToJSVal = unSQLResultSetRowList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SQLResultSetRowList where
-  pFromJSVal = SQLResultSetRowList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SQLResultSetRowList where
-  toJSVal = return . unSQLResultSetRowList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SQLResultSetRowList where
-  fromJSVal v = fmap SQLResultSetRowList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SQLResultSetRowList where
-  makeObject = makeObject . unSQLResultSetRowList
-
-instance IsGObject SQLResultSetRowList where
-  toGObject = GObject . unSQLResultSetRowList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SQLResultSetRowList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSQLResultSetRowList :: IsGObject obj => obj -> JSM SQLResultSetRowList
-castToSQLResultSetRowList = castTo gTypeSQLResultSetRowList "SQLResultSetRowList"
-
-gTypeSQLResultSetRowList :: JSM GType
-gTypeSQLResultSetRowList = GType . Object <$> jsg "SQLResultSetRowList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SQLTransaction".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction Mozilla SQLTransaction documentation>
-newtype SQLTransaction = SQLTransaction { unSQLTransaction :: JSVal }
-
-instance PToJSVal SQLTransaction where
-  pToJSVal = unSQLTransaction
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SQLTransaction where
-  pFromJSVal = SQLTransaction
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SQLTransaction where
-  toJSVal = return . unSQLTransaction
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SQLTransaction where
-  fromJSVal v = fmap SQLTransaction <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SQLTransaction where
-  makeObject = makeObject . unSQLTransaction
-
-instance IsGObject SQLTransaction where
-  toGObject = GObject . unSQLTransaction
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SQLTransaction . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSQLTransaction :: IsGObject obj => obj -> JSM SQLTransaction
-castToSQLTransaction = castTo gTypeSQLTransaction "SQLTransaction"
-
-gTypeSQLTransaction :: JSM GType
-gTypeSQLTransaction = GType . Object <$> jsg "SQLTransaction"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement Mozilla SVGAElement documentation>
-newtype SVGAElement = SVGAElement { unSVGAElement :: JSVal }
-
-instance PToJSVal SVGAElement where
-  pToJSVal = unSVGAElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAElement where
-  pFromJSVal = SVGAElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAElement where
-  toJSVal = return . unSVGAElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAElement where
-  fromJSVal v = fmap SVGAElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAElement where
-  makeObject = makeObject . unSVGAElement
-
-instance IsSVGGraphicsElement SVGAElement
-instance IsSVGElement SVGAElement
-instance IsElement SVGAElement
-instance IsNode SVGAElement
-instance IsEventTarget SVGAElement
-instance IsGObject SVGAElement where
-  toGObject = GObject . unSVGAElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAElement :: IsGObject obj => obj -> JSM SVGAElement
-castToSVGAElement = castTo gTypeSVGAElement "SVGAElement"
-
-gTypeSVGAElement :: JSM GType
-gTypeSVGAElement = GType . Object <$> jsg "SVGAElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAltGlyphDefElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphDefElement Mozilla SVGAltGlyphDefElement documentation>
-newtype SVGAltGlyphDefElement = SVGAltGlyphDefElement { unSVGAltGlyphDefElement :: JSVal }
-
-instance PToJSVal SVGAltGlyphDefElement where
-  pToJSVal = unSVGAltGlyphDefElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAltGlyphDefElement where
-  pFromJSVal = SVGAltGlyphDefElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAltGlyphDefElement where
-  toJSVal = return . unSVGAltGlyphDefElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAltGlyphDefElement where
-  fromJSVal v = fmap SVGAltGlyphDefElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAltGlyphDefElement where
-  makeObject = makeObject . unSVGAltGlyphDefElement
-
-instance IsSVGElement SVGAltGlyphDefElement
-instance IsElement SVGAltGlyphDefElement
-instance IsNode SVGAltGlyphDefElement
-instance IsEventTarget SVGAltGlyphDefElement
-instance IsGObject SVGAltGlyphDefElement where
-  toGObject = GObject . unSVGAltGlyphDefElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAltGlyphDefElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAltGlyphDefElement :: IsGObject obj => obj -> JSM SVGAltGlyphDefElement
-castToSVGAltGlyphDefElement = castTo gTypeSVGAltGlyphDefElement "SVGAltGlyphDefElement"
-
-gTypeSVGAltGlyphDefElement :: JSM GType
-gTypeSVGAltGlyphDefElement = GType . Object <$> jsg "SVGAltGlyphDefElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAltGlyphElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGTextPositioningElement"
---     * "JSDOM.SVGTextContentElement"
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement Mozilla SVGAltGlyphElement documentation>
-newtype SVGAltGlyphElement = SVGAltGlyphElement { unSVGAltGlyphElement :: JSVal }
-
-instance PToJSVal SVGAltGlyphElement where
-  pToJSVal = unSVGAltGlyphElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAltGlyphElement where
-  pFromJSVal = SVGAltGlyphElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAltGlyphElement where
-  toJSVal = return . unSVGAltGlyphElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAltGlyphElement where
-  fromJSVal v = fmap SVGAltGlyphElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAltGlyphElement where
-  makeObject = makeObject . unSVGAltGlyphElement
-
-instance IsSVGTextPositioningElement SVGAltGlyphElement
-instance IsSVGTextContentElement SVGAltGlyphElement
-instance IsSVGGraphicsElement SVGAltGlyphElement
-instance IsSVGElement SVGAltGlyphElement
-instance IsElement SVGAltGlyphElement
-instance IsNode SVGAltGlyphElement
-instance IsEventTarget SVGAltGlyphElement
-instance IsGObject SVGAltGlyphElement where
-  toGObject = GObject . unSVGAltGlyphElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAltGlyphElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAltGlyphElement :: IsGObject obj => obj -> JSM SVGAltGlyphElement
-castToSVGAltGlyphElement = castTo gTypeSVGAltGlyphElement "SVGAltGlyphElement"
-
-gTypeSVGAltGlyphElement :: JSM GType
-gTypeSVGAltGlyphElement = GType . Object <$> jsg "SVGAltGlyphElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAltGlyphItemElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphItemElement Mozilla SVGAltGlyphItemElement documentation>
-newtype SVGAltGlyphItemElement = SVGAltGlyphItemElement { unSVGAltGlyphItemElement :: JSVal }
-
-instance PToJSVal SVGAltGlyphItemElement where
-  pToJSVal = unSVGAltGlyphItemElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAltGlyphItemElement where
-  pFromJSVal = SVGAltGlyphItemElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAltGlyphItemElement where
-  toJSVal = return . unSVGAltGlyphItemElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAltGlyphItemElement where
-  fromJSVal v = fmap SVGAltGlyphItemElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAltGlyphItemElement where
-  makeObject = makeObject . unSVGAltGlyphItemElement
-
-instance IsSVGElement SVGAltGlyphItemElement
-instance IsElement SVGAltGlyphItemElement
-instance IsNode SVGAltGlyphItemElement
-instance IsEventTarget SVGAltGlyphItemElement
-instance IsGObject SVGAltGlyphItemElement where
-  toGObject = GObject . unSVGAltGlyphItemElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAltGlyphItemElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAltGlyphItemElement :: IsGObject obj => obj -> JSM SVGAltGlyphItemElement
-castToSVGAltGlyphItemElement = castTo gTypeSVGAltGlyphItemElement "SVGAltGlyphItemElement"
-
-gTypeSVGAltGlyphItemElement :: JSM GType
-gTypeSVGAltGlyphItemElement = GType . Object <$> jsg "SVGAltGlyphItemElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAngle".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle Mozilla SVGAngle documentation>
-newtype SVGAngle = SVGAngle { unSVGAngle :: JSVal }
-
-instance PToJSVal SVGAngle where
-  pToJSVal = unSVGAngle
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAngle where
-  pFromJSVal = SVGAngle
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAngle where
-  toJSVal = return . unSVGAngle
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAngle where
-  fromJSVal v = fmap SVGAngle <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAngle where
-  makeObject = makeObject . unSVGAngle
-
-instance IsGObject SVGAngle where
-  toGObject = GObject . unSVGAngle
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAngle . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAngle :: IsGObject obj => obj -> JSM SVGAngle
-castToSVGAngle = castTo gTypeSVGAngle "SVGAngle"
-
-gTypeSVGAngle :: JSM GType
-gTypeSVGAngle = GType . Object <$> jsg "SVGAngle"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimateColorElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGAnimationElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateColorElement Mozilla SVGAnimateColorElement documentation>
-newtype SVGAnimateColorElement = SVGAnimateColorElement { unSVGAnimateColorElement :: JSVal }
-
-instance PToJSVal SVGAnimateColorElement where
-  pToJSVal = unSVGAnimateColorElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimateColorElement where
-  pFromJSVal = SVGAnimateColorElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimateColorElement where
-  toJSVal = return . unSVGAnimateColorElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimateColorElement where
-  fromJSVal v = fmap SVGAnimateColorElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimateColorElement where
-  makeObject = makeObject . unSVGAnimateColorElement
-
-instance IsSVGAnimationElement SVGAnimateColorElement
-instance IsSVGElement SVGAnimateColorElement
-instance IsElement SVGAnimateColorElement
-instance IsNode SVGAnimateColorElement
-instance IsEventTarget SVGAnimateColorElement
-instance IsGObject SVGAnimateColorElement where
-  toGObject = GObject . unSVGAnimateColorElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimateColorElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimateColorElement :: IsGObject obj => obj -> JSM SVGAnimateColorElement
-castToSVGAnimateColorElement = castTo gTypeSVGAnimateColorElement "SVGAnimateColorElement"
-
-gTypeSVGAnimateColorElement :: JSM GType
-gTypeSVGAnimateColorElement = GType . Object <$> jsg "SVGAnimateColorElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimateElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGAnimationElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateElement Mozilla SVGAnimateElement documentation>
-newtype SVGAnimateElement = SVGAnimateElement { unSVGAnimateElement :: JSVal }
-
-instance PToJSVal SVGAnimateElement where
-  pToJSVal = unSVGAnimateElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimateElement where
-  pFromJSVal = SVGAnimateElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimateElement where
-  toJSVal = return . unSVGAnimateElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimateElement where
-  fromJSVal v = fmap SVGAnimateElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimateElement where
-  makeObject = makeObject . unSVGAnimateElement
-
-instance IsSVGAnimationElement SVGAnimateElement
-instance IsSVGElement SVGAnimateElement
-instance IsElement SVGAnimateElement
-instance IsNode SVGAnimateElement
-instance IsEventTarget SVGAnimateElement
-instance IsGObject SVGAnimateElement where
-  toGObject = GObject . unSVGAnimateElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimateElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimateElement :: IsGObject obj => obj -> JSM SVGAnimateElement
-castToSVGAnimateElement = castTo gTypeSVGAnimateElement "SVGAnimateElement"
-
-gTypeSVGAnimateElement :: JSM GType
-gTypeSVGAnimateElement = GType . Object <$> jsg "SVGAnimateElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimateMotionElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGAnimationElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateMotionElement Mozilla SVGAnimateMotionElement documentation>
-newtype SVGAnimateMotionElement = SVGAnimateMotionElement { unSVGAnimateMotionElement :: JSVal }
-
-instance PToJSVal SVGAnimateMotionElement where
-  pToJSVal = unSVGAnimateMotionElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimateMotionElement where
-  pFromJSVal = SVGAnimateMotionElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimateMotionElement where
-  toJSVal = return . unSVGAnimateMotionElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimateMotionElement where
-  fromJSVal v = fmap SVGAnimateMotionElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimateMotionElement where
-  makeObject = makeObject . unSVGAnimateMotionElement
-
-instance IsSVGAnimationElement SVGAnimateMotionElement
-instance IsSVGElement SVGAnimateMotionElement
-instance IsElement SVGAnimateMotionElement
-instance IsNode SVGAnimateMotionElement
-instance IsEventTarget SVGAnimateMotionElement
-instance IsGObject SVGAnimateMotionElement where
-  toGObject = GObject . unSVGAnimateMotionElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimateMotionElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimateMotionElement :: IsGObject obj => obj -> JSM SVGAnimateMotionElement
-castToSVGAnimateMotionElement = castTo gTypeSVGAnimateMotionElement "SVGAnimateMotionElement"
-
-gTypeSVGAnimateMotionElement :: JSM GType
-gTypeSVGAnimateMotionElement = GType . Object <$> jsg "SVGAnimateMotionElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimateTransformElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGAnimationElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateTransformElement Mozilla SVGAnimateTransformElement documentation>
-newtype SVGAnimateTransformElement = SVGAnimateTransformElement { unSVGAnimateTransformElement :: JSVal }
-
-instance PToJSVal SVGAnimateTransformElement where
-  pToJSVal = unSVGAnimateTransformElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimateTransformElement where
-  pFromJSVal = SVGAnimateTransformElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimateTransformElement where
-  toJSVal = return . unSVGAnimateTransformElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimateTransformElement where
-  fromJSVal v = fmap SVGAnimateTransformElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimateTransformElement where
-  makeObject = makeObject . unSVGAnimateTransformElement
-
-instance IsSVGAnimationElement SVGAnimateTransformElement
-instance IsSVGElement SVGAnimateTransformElement
-instance IsElement SVGAnimateTransformElement
-instance IsNode SVGAnimateTransformElement
-instance IsEventTarget SVGAnimateTransformElement
-instance IsGObject SVGAnimateTransformElement where
-  toGObject = GObject . unSVGAnimateTransformElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimateTransformElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimateTransformElement :: IsGObject obj => obj -> JSM SVGAnimateTransformElement
-castToSVGAnimateTransformElement = castTo gTypeSVGAnimateTransformElement "SVGAnimateTransformElement"
-
-gTypeSVGAnimateTransformElement :: JSM GType
-gTypeSVGAnimateTransformElement = GType . Object <$> jsg "SVGAnimateTransformElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedAngle".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle Mozilla SVGAnimatedAngle documentation>
-newtype SVGAnimatedAngle = SVGAnimatedAngle { unSVGAnimatedAngle :: JSVal }
-
-instance PToJSVal SVGAnimatedAngle where
-  pToJSVal = unSVGAnimatedAngle
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedAngle where
-  pFromJSVal = SVGAnimatedAngle
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedAngle where
-  toJSVal = return . unSVGAnimatedAngle
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedAngle where
-  fromJSVal v = fmap SVGAnimatedAngle <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedAngle where
-  makeObject = makeObject . unSVGAnimatedAngle
-
-instance IsGObject SVGAnimatedAngle where
-  toGObject = GObject . unSVGAnimatedAngle
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedAngle . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedAngle :: IsGObject obj => obj -> JSM SVGAnimatedAngle
-castToSVGAnimatedAngle = castTo gTypeSVGAnimatedAngle "SVGAnimatedAngle"
-
-gTypeSVGAnimatedAngle :: JSM GType
-gTypeSVGAnimatedAngle = GType . Object <$> jsg "SVGAnimatedAngle"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedBoolean".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean Mozilla SVGAnimatedBoolean documentation>
-newtype SVGAnimatedBoolean = SVGAnimatedBoolean { unSVGAnimatedBoolean :: JSVal }
-
-instance PToJSVal SVGAnimatedBoolean where
-  pToJSVal = unSVGAnimatedBoolean
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedBoolean where
-  pFromJSVal = SVGAnimatedBoolean
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedBoolean where
-  toJSVal = return . unSVGAnimatedBoolean
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedBoolean where
-  fromJSVal v = fmap SVGAnimatedBoolean <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedBoolean where
-  makeObject = makeObject . unSVGAnimatedBoolean
-
-instance IsGObject SVGAnimatedBoolean where
-  toGObject = GObject . unSVGAnimatedBoolean
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedBoolean . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedBoolean :: IsGObject obj => obj -> JSM SVGAnimatedBoolean
-castToSVGAnimatedBoolean = castTo gTypeSVGAnimatedBoolean "SVGAnimatedBoolean"
-
-gTypeSVGAnimatedBoolean :: JSM GType
-gTypeSVGAnimatedBoolean = GType . Object <$> jsg "SVGAnimatedBoolean"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedEnumeration".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration Mozilla SVGAnimatedEnumeration documentation>
-newtype SVGAnimatedEnumeration = SVGAnimatedEnumeration { unSVGAnimatedEnumeration :: JSVal }
-
-instance PToJSVal SVGAnimatedEnumeration where
-  pToJSVal = unSVGAnimatedEnumeration
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedEnumeration where
-  pFromJSVal = SVGAnimatedEnumeration
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedEnumeration where
-  toJSVal = return . unSVGAnimatedEnumeration
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedEnumeration where
-  fromJSVal v = fmap SVGAnimatedEnumeration <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedEnumeration where
-  makeObject = makeObject . unSVGAnimatedEnumeration
-
-instance IsGObject SVGAnimatedEnumeration where
-  toGObject = GObject . unSVGAnimatedEnumeration
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedEnumeration . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedEnumeration :: IsGObject obj => obj -> JSM SVGAnimatedEnumeration
-castToSVGAnimatedEnumeration = castTo gTypeSVGAnimatedEnumeration "SVGAnimatedEnumeration"
-
-gTypeSVGAnimatedEnumeration :: JSM GType
-gTypeSVGAnimatedEnumeration = GType . Object <$> jsg "SVGAnimatedEnumeration"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedInteger".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger Mozilla SVGAnimatedInteger documentation>
-newtype SVGAnimatedInteger = SVGAnimatedInteger { unSVGAnimatedInteger :: JSVal }
-
-instance PToJSVal SVGAnimatedInteger where
-  pToJSVal = unSVGAnimatedInteger
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedInteger where
-  pFromJSVal = SVGAnimatedInteger
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedInteger where
-  toJSVal = return . unSVGAnimatedInteger
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedInteger where
-  fromJSVal v = fmap SVGAnimatedInteger <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedInteger where
-  makeObject = makeObject . unSVGAnimatedInteger
-
-instance IsGObject SVGAnimatedInteger where
-  toGObject = GObject . unSVGAnimatedInteger
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedInteger . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedInteger :: IsGObject obj => obj -> JSM SVGAnimatedInteger
-castToSVGAnimatedInteger = castTo gTypeSVGAnimatedInteger "SVGAnimatedInteger"
-
-gTypeSVGAnimatedInteger :: JSM GType
-gTypeSVGAnimatedInteger = GType . Object <$> jsg "SVGAnimatedInteger"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedLength".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength Mozilla SVGAnimatedLength documentation>
-newtype SVGAnimatedLength = SVGAnimatedLength { unSVGAnimatedLength :: JSVal }
-
-instance PToJSVal SVGAnimatedLength where
-  pToJSVal = unSVGAnimatedLength
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedLength where
-  pFromJSVal = SVGAnimatedLength
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedLength where
-  toJSVal = return . unSVGAnimatedLength
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedLength where
-  fromJSVal v = fmap SVGAnimatedLength <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedLength where
-  makeObject = makeObject . unSVGAnimatedLength
-
-instance IsGObject SVGAnimatedLength where
-  toGObject = GObject . unSVGAnimatedLength
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedLength . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedLength :: IsGObject obj => obj -> JSM SVGAnimatedLength
-castToSVGAnimatedLength = castTo gTypeSVGAnimatedLength "SVGAnimatedLength"
-
-gTypeSVGAnimatedLength :: JSM GType
-gTypeSVGAnimatedLength = GType . Object <$> jsg "SVGAnimatedLength"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedLengthList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList Mozilla SVGAnimatedLengthList documentation>
-newtype SVGAnimatedLengthList = SVGAnimatedLengthList { unSVGAnimatedLengthList :: JSVal }
-
-instance PToJSVal SVGAnimatedLengthList where
-  pToJSVal = unSVGAnimatedLengthList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedLengthList where
-  pFromJSVal = SVGAnimatedLengthList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedLengthList where
-  toJSVal = return . unSVGAnimatedLengthList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedLengthList where
-  fromJSVal v = fmap SVGAnimatedLengthList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedLengthList where
-  makeObject = makeObject . unSVGAnimatedLengthList
-
-instance IsGObject SVGAnimatedLengthList where
-  toGObject = GObject . unSVGAnimatedLengthList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedLengthList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedLengthList :: IsGObject obj => obj -> JSM SVGAnimatedLengthList
-castToSVGAnimatedLengthList = castTo gTypeSVGAnimatedLengthList "SVGAnimatedLengthList"
-
-gTypeSVGAnimatedLengthList :: JSM GType
-gTypeSVGAnimatedLengthList = GType . Object <$> jsg "SVGAnimatedLengthList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedNumber".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber Mozilla SVGAnimatedNumber documentation>
-newtype SVGAnimatedNumber = SVGAnimatedNumber { unSVGAnimatedNumber :: JSVal }
-
-instance PToJSVal SVGAnimatedNumber where
-  pToJSVal = unSVGAnimatedNumber
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedNumber where
-  pFromJSVal = SVGAnimatedNumber
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedNumber where
-  toJSVal = return . unSVGAnimatedNumber
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedNumber where
-  fromJSVal v = fmap SVGAnimatedNumber <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedNumber where
-  makeObject = makeObject . unSVGAnimatedNumber
-
-instance IsGObject SVGAnimatedNumber where
-  toGObject = GObject . unSVGAnimatedNumber
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedNumber . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedNumber :: IsGObject obj => obj -> JSM SVGAnimatedNumber
-castToSVGAnimatedNumber = castTo gTypeSVGAnimatedNumber "SVGAnimatedNumber"
-
-gTypeSVGAnimatedNumber :: JSM GType
-gTypeSVGAnimatedNumber = GType . Object <$> jsg "SVGAnimatedNumber"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedNumberList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList Mozilla SVGAnimatedNumberList documentation>
-newtype SVGAnimatedNumberList = SVGAnimatedNumberList { unSVGAnimatedNumberList :: JSVal }
-
-instance PToJSVal SVGAnimatedNumberList where
-  pToJSVal = unSVGAnimatedNumberList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedNumberList where
-  pFromJSVal = SVGAnimatedNumberList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedNumberList where
-  toJSVal = return . unSVGAnimatedNumberList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedNumberList where
-  fromJSVal v = fmap SVGAnimatedNumberList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedNumberList where
-  makeObject = makeObject . unSVGAnimatedNumberList
-
-instance IsGObject SVGAnimatedNumberList where
-  toGObject = GObject . unSVGAnimatedNumberList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedNumberList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedNumberList :: IsGObject obj => obj -> JSM SVGAnimatedNumberList
-castToSVGAnimatedNumberList = castTo gTypeSVGAnimatedNumberList "SVGAnimatedNumberList"
-
-gTypeSVGAnimatedNumberList :: JSM GType
-gTypeSVGAnimatedNumberList = GType . Object <$> jsg "SVGAnimatedNumberList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedPreserveAspectRatio".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio Mozilla SVGAnimatedPreserveAspectRatio documentation>
-newtype SVGAnimatedPreserveAspectRatio = SVGAnimatedPreserveAspectRatio { unSVGAnimatedPreserveAspectRatio :: JSVal }
-
-instance PToJSVal SVGAnimatedPreserveAspectRatio where
-  pToJSVal = unSVGAnimatedPreserveAspectRatio
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedPreserveAspectRatio where
-  pFromJSVal = SVGAnimatedPreserveAspectRatio
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedPreserveAspectRatio where
-  toJSVal = return . unSVGAnimatedPreserveAspectRatio
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedPreserveAspectRatio where
-  fromJSVal v = fmap SVGAnimatedPreserveAspectRatio <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedPreserveAspectRatio where
-  makeObject = makeObject . unSVGAnimatedPreserveAspectRatio
-
-instance IsGObject SVGAnimatedPreserveAspectRatio where
-  toGObject = GObject . unSVGAnimatedPreserveAspectRatio
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedPreserveAspectRatio . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedPreserveAspectRatio :: IsGObject obj => obj -> JSM SVGAnimatedPreserveAspectRatio
-castToSVGAnimatedPreserveAspectRatio = castTo gTypeSVGAnimatedPreserveAspectRatio "SVGAnimatedPreserveAspectRatio"
-
-gTypeSVGAnimatedPreserveAspectRatio :: JSM GType
-gTypeSVGAnimatedPreserveAspectRatio = GType . Object <$> jsg "SVGAnimatedPreserveAspectRatio"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedRect".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect Mozilla SVGAnimatedRect documentation>
-newtype SVGAnimatedRect = SVGAnimatedRect { unSVGAnimatedRect :: JSVal }
-
-instance PToJSVal SVGAnimatedRect where
-  pToJSVal = unSVGAnimatedRect
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedRect where
-  pFromJSVal = SVGAnimatedRect
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedRect where
-  toJSVal = return . unSVGAnimatedRect
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedRect where
-  fromJSVal v = fmap SVGAnimatedRect <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedRect where
-  makeObject = makeObject . unSVGAnimatedRect
-
-instance IsGObject SVGAnimatedRect where
-  toGObject = GObject . unSVGAnimatedRect
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedRect . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedRect :: IsGObject obj => obj -> JSM SVGAnimatedRect
-castToSVGAnimatedRect = castTo gTypeSVGAnimatedRect "SVGAnimatedRect"
-
-gTypeSVGAnimatedRect :: JSM GType
-gTypeSVGAnimatedRect = GType . Object <$> jsg "SVGAnimatedRect"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedString".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString Mozilla SVGAnimatedString documentation>
-newtype SVGAnimatedString = SVGAnimatedString { unSVGAnimatedString :: JSVal }
-
-instance PToJSVal SVGAnimatedString where
-  pToJSVal = unSVGAnimatedString
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedString where
-  pFromJSVal = SVGAnimatedString
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedString where
-  toJSVal = return . unSVGAnimatedString
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedString where
-  fromJSVal v = fmap SVGAnimatedString <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedString where
-  makeObject = makeObject . unSVGAnimatedString
-
-instance IsGObject SVGAnimatedString where
-  toGObject = GObject . unSVGAnimatedString
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedString . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedString :: IsGObject obj => obj -> JSM SVGAnimatedString
-castToSVGAnimatedString = castTo gTypeSVGAnimatedString "SVGAnimatedString"
-
-gTypeSVGAnimatedString :: JSM GType
-gTypeSVGAnimatedString = GType . Object <$> jsg "SVGAnimatedString"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimatedTransformList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList Mozilla SVGAnimatedTransformList documentation>
-newtype SVGAnimatedTransformList = SVGAnimatedTransformList { unSVGAnimatedTransformList :: JSVal }
-
-instance PToJSVal SVGAnimatedTransformList where
-  pToJSVal = unSVGAnimatedTransformList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimatedTransformList where
-  pFromJSVal = SVGAnimatedTransformList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimatedTransformList where
-  toJSVal = return . unSVGAnimatedTransformList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimatedTransformList where
-  fromJSVal v = fmap SVGAnimatedTransformList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimatedTransformList where
-  makeObject = makeObject . unSVGAnimatedTransformList
-
-instance IsGObject SVGAnimatedTransformList where
-  toGObject = GObject . unSVGAnimatedTransformList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimatedTransformList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimatedTransformList :: IsGObject obj => obj -> JSM SVGAnimatedTransformList
-castToSVGAnimatedTransformList = castTo gTypeSVGAnimatedTransformList "SVGAnimatedTransformList"
-
-gTypeSVGAnimatedTransformList :: JSM GType
-gTypeSVGAnimatedTransformList = GType . Object <$> jsg "SVGAnimatedTransformList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGAnimationElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement Mozilla SVGAnimationElement documentation>
-newtype SVGAnimationElement = SVGAnimationElement { unSVGAnimationElement :: JSVal }
-
-instance PToJSVal SVGAnimationElement where
-  pToJSVal = unSVGAnimationElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGAnimationElement where
-  pFromJSVal = SVGAnimationElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGAnimationElement where
-  toJSVal = return . unSVGAnimationElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGAnimationElement where
-  fromJSVal v = fmap SVGAnimationElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGAnimationElement where
-  makeObject = makeObject . unSVGAnimationElement
-
-class IsSVGElement o => IsSVGAnimationElement o
-toSVGAnimationElement :: IsSVGAnimationElement o => o -> SVGAnimationElement
-toSVGAnimationElement = unsafeCastGObject . toGObject
-
-instance IsSVGAnimationElement SVGAnimationElement
-instance IsSVGElement SVGAnimationElement
-instance IsElement SVGAnimationElement
-instance IsNode SVGAnimationElement
-instance IsEventTarget SVGAnimationElement
-instance IsGObject SVGAnimationElement where
-  toGObject = GObject . unSVGAnimationElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGAnimationElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGAnimationElement :: IsGObject obj => obj -> JSM SVGAnimationElement
-castToSVGAnimationElement = castTo gTypeSVGAnimationElement "SVGAnimationElement"
-
-gTypeSVGAnimationElement :: JSM GType
-gTypeSVGAnimationElement = GType . Object <$> jsg "SVGAnimationElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGCircleElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement Mozilla SVGCircleElement documentation>
-newtype SVGCircleElement = SVGCircleElement { unSVGCircleElement :: JSVal }
-
-instance PToJSVal SVGCircleElement where
-  pToJSVal = unSVGCircleElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGCircleElement where
-  pFromJSVal = SVGCircleElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGCircleElement where
-  toJSVal = return . unSVGCircleElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGCircleElement where
-  fromJSVal v = fmap SVGCircleElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGCircleElement where
-  makeObject = makeObject . unSVGCircleElement
-
-instance IsSVGGraphicsElement SVGCircleElement
-instance IsSVGElement SVGCircleElement
-instance IsElement SVGCircleElement
-instance IsNode SVGCircleElement
-instance IsEventTarget SVGCircleElement
-instance IsGObject SVGCircleElement where
-  toGObject = GObject . unSVGCircleElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGCircleElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGCircleElement :: IsGObject obj => obj -> JSM SVGCircleElement
-castToSVGCircleElement = castTo gTypeSVGCircleElement "SVGCircleElement"
-
-gTypeSVGCircleElement :: JSM GType
-gTypeSVGCircleElement = GType . Object <$> jsg "SVGCircleElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGClipPathElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement Mozilla SVGClipPathElement documentation>
-newtype SVGClipPathElement = SVGClipPathElement { unSVGClipPathElement :: JSVal }
-
-instance PToJSVal SVGClipPathElement where
-  pToJSVal = unSVGClipPathElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGClipPathElement where
-  pFromJSVal = SVGClipPathElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGClipPathElement where
-  toJSVal = return . unSVGClipPathElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGClipPathElement where
-  fromJSVal v = fmap SVGClipPathElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGClipPathElement where
-  makeObject = makeObject . unSVGClipPathElement
-
-instance IsSVGGraphicsElement SVGClipPathElement
-instance IsSVGElement SVGClipPathElement
-instance IsElement SVGClipPathElement
-instance IsNode SVGClipPathElement
-instance IsEventTarget SVGClipPathElement
-instance IsGObject SVGClipPathElement where
-  toGObject = GObject . unSVGClipPathElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGClipPathElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGClipPathElement :: IsGObject obj => obj -> JSM SVGClipPathElement
-castToSVGClipPathElement = castTo gTypeSVGClipPathElement "SVGClipPathElement"
-
-gTypeSVGClipPathElement :: JSM GType
-gTypeSVGClipPathElement = GType . Object <$> jsg "SVGClipPathElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGColor".
--- Base interface functions are in:
---
---     * "JSDOM.CSSValue"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor Mozilla SVGColor documentation>
-newtype SVGColor = SVGColor { unSVGColor :: JSVal }
-
-instance PToJSVal SVGColor where
-  pToJSVal = unSVGColor
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGColor where
-  pFromJSVal = SVGColor
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGColor where
-  toJSVal = return . unSVGColor
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGColor where
-  fromJSVal v = fmap SVGColor <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGColor where
-  makeObject = makeObject . unSVGColor
-
-class IsCSSValue o => IsSVGColor o
-toSVGColor :: IsSVGColor o => o -> SVGColor
-toSVGColor = unsafeCastGObject . toGObject
-
-instance IsSVGColor SVGColor
-instance IsCSSValue SVGColor
-instance IsGObject SVGColor where
-  toGObject = GObject . unSVGColor
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGColor . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGColor :: IsGObject obj => obj -> JSM SVGColor
-castToSVGColor = castTo gTypeSVGColor "SVGColor"
-
-gTypeSVGColor :: JSM GType
-gTypeSVGColor = GType . Object <$> jsg "SVGColor"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGComponentTransferFunctionElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement Mozilla SVGComponentTransferFunctionElement documentation>
-newtype SVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement { unSVGComponentTransferFunctionElement :: JSVal }
-
-instance PToJSVal SVGComponentTransferFunctionElement where
-  pToJSVal = unSVGComponentTransferFunctionElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGComponentTransferFunctionElement where
-  pFromJSVal = SVGComponentTransferFunctionElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGComponentTransferFunctionElement where
-  toJSVal = return . unSVGComponentTransferFunctionElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGComponentTransferFunctionElement where
-  fromJSVal v = fmap SVGComponentTransferFunctionElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGComponentTransferFunctionElement where
-  makeObject = makeObject . unSVGComponentTransferFunctionElement
-
-class IsSVGElement o => IsSVGComponentTransferFunctionElement o
-toSVGComponentTransferFunctionElement :: IsSVGComponentTransferFunctionElement o => o -> SVGComponentTransferFunctionElement
-toSVGComponentTransferFunctionElement = unsafeCastGObject . toGObject
-
-instance IsSVGComponentTransferFunctionElement SVGComponentTransferFunctionElement
-instance IsSVGElement SVGComponentTransferFunctionElement
-instance IsElement SVGComponentTransferFunctionElement
-instance IsNode SVGComponentTransferFunctionElement
-instance IsEventTarget SVGComponentTransferFunctionElement
-instance IsGObject SVGComponentTransferFunctionElement where
-  toGObject = GObject . unSVGComponentTransferFunctionElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGComponentTransferFunctionElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGComponentTransferFunctionElement :: IsGObject obj => obj -> JSM SVGComponentTransferFunctionElement
-castToSVGComponentTransferFunctionElement = castTo gTypeSVGComponentTransferFunctionElement "SVGComponentTransferFunctionElement"
-
-gTypeSVGComponentTransferFunctionElement :: JSM GType
-gTypeSVGComponentTransferFunctionElement = GType . Object <$> jsg "SVGComponentTransferFunctionElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGCursorElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement Mozilla SVGCursorElement documentation>
-newtype SVGCursorElement = SVGCursorElement { unSVGCursorElement :: JSVal }
-
-instance PToJSVal SVGCursorElement where
-  pToJSVal = unSVGCursorElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGCursorElement where
-  pFromJSVal = SVGCursorElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGCursorElement where
-  toJSVal = return . unSVGCursorElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGCursorElement where
-  fromJSVal v = fmap SVGCursorElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGCursorElement where
-  makeObject = makeObject . unSVGCursorElement
-
-instance IsSVGElement SVGCursorElement
-instance IsElement SVGCursorElement
-instance IsNode SVGCursorElement
-instance IsEventTarget SVGCursorElement
-instance IsGObject SVGCursorElement where
-  toGObject = GObject . unSVGCursorElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGCursorElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGCursorElement :: IsGObject obj => obj -> JSM SVGCursorElement
-castToSVGCursorElement = castTo gTypeSVGCursorElement "SVGCursorElement"
-
-gTypeSVGCursorElement :: JSM GType
-gTypeSVGCursorElement = GType . Object <$> jsg "SVGCursorElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGDefsElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDefsElement Mozilla SVGDefsElement documentation>
-newtype SVGDefsElement = SVGDefsElement { unSVGDefsElement :: JSVal }
-
-instance PToJSVal SVGDefsElement where
-  pToJSVal = unSVGDefsElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGDefsElement where
-  pFromJSVal = SVGDefsElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGDefsElement where
-  toJSVal = return . unSVGDefsElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGDefsElement where
-  fromJSVal v = fmap SVGDefsElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGDefsElement where
-  makeObject = makeObject . unSVGDefsElement
-
-instance IsSVGGraphicsElement SVGDefsElement
-instance IsSVGElement SVGDefsElement
-instance IsElement SVGDefsElement
-instance IsNode SVGDefsElement
-instance IsEventTarget SVGDefsElement
-instance IsGObject SVGDefsElement where
-  toGObject = GObject . unSVGDefsElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGDefsElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGDefsElement :: IsGObject obj => obj -> JSM SVGDefsElement
-castToSVGDefsElement = castTo gTypeSVGDefsElement "SVGDefsElement"
-
-gTypeSVGDefsElement :: JSM GType
-gTypeSVGDefsElement = GType . Object <$> jsg "SVGDefsElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGDescElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDescElement Mozilla SVGDescElement documentation>
-newtype SVGDescElement = SVGDescElement { unSVGDescElement :: JSVal }
-
-instance PToJSVal SVGDescElement where
-  pToJSVal = unSVGDescElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGDescElement where
-  pFromJSVal = SVGDescElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGDescElement where
-  toJSVal = return . unSVGDescElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGDescElement where
-  fromJSVal v = fmap SVGDescElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGDescElement where
-  makeObject = makeObject . unSVGDescElement
-
-instance IsSVGElement SVGDescElement
-instance IsElement SVGDescElement
-instance IsNode SVGDescElement
-instance IsEventTarget SVGDescElement
-instance IsGObject SVGDescElement where
-  toGObject = GObject . unSVGDescElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGDescElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGDescElement :: IsGObject obj => obj -> JSM SVGDescElement
-castToSVGDescElement = castTo gTypeSVGDescElement "SVGDescElement"
-
-gTypeSVGDescElement :: JSM GType
-gTypeSVGDescElement = GType . Object <$> jsg "SVGDescElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGDocument".
--- Base interface functions are in:
---
---     * "JSDOM.Document"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument Mozilla SVGDocument documentation>
-newtype SVGDocument = SVGDocument { unSVGDocument :: JSVal }
-
-instance PToJSVal SVGDocument where
-  pToJSVal = unSVGDocument
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGDocument where
-  pFromJSVal = SVGDocument
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGDocument where
-  toJSVal = return . unSVGDocument
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGDocument where
-  fromJSVal v = fmap SVGDocument <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGDocument where
-  makeObject = makeObject . unSVGDocument
-
-instance IsDocument SVGDocument
-instance IsNode SVGDocument
-instance IsEventTarget SVGDocument
-instance IsGObject SVGDocument where
-  toGObject = GObject . unSVGDocument
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGDocument . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGDocument :: IsGObject obj => obj -> JSM SVGDocument
-castToSVGDocument = castTo gTypeSVGDocument "SVGDocument"
-
-gTypeSVGDocument :: JSM GType
-gTypeSVGDocument = GType . Object <$> jsg "SVGDocument"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGElement".
--- Base interface functions are in:
---
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement Mozilla SVGElement documentation>
-newtype SVGElement = SVGElement { unSVGElement :: JSVal }
-
-instance PToJSVal SVGElement where
-  pToJSVal = unSVGElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGElement where
-  pFromJSVal = SVGElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGElement where
-  toJSVal = return . unSVGElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGElement where
-  fromJSVal v = fmap SVGElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGElement where
-  makeObject = makeObject . unSVGElement
-
-class IsElement o => IsSVGElement o
-toSVGElement :: IsSVGElement o => o -> SVGElement
-toSVGElement = unsafeCastGObject . toGObject
-
-instance IsSVGElement SVGElement
-instance IsElement SVGElement
-instance IsNode SVGElement
-instance IsEventTarget SVGElement
-instance IsGObject SVGElement where
-  toGObject = GObject . unSVGElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGElement :: IsGObject obj => obj -> JSM SVGElement
-castToSVGElement = castTo gTypeSVGElement "SVGElement"
-
-gTypeSVGElement :: JSM GType
-gTypeSVGElement = GType . Object <$> jsg "SVGElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGEllipseElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement Mozilla SVGEllipseElement documentation>
-newtype SVGEllipseElement = SVGEllipseElement { unSVGEllipseElement :: JSVal }
-
-instance PToJSVal SVGEllipseElement where
-  pToJSVal = unSVGEllipseElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGEllipseElement where
-  pFromJSVal = SVGEllipseElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGEllipseElement where
-  toJSVal = return . unSVGEllipseElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGEllipseElement where
-  fromJSVal v = fmap SVGEllipseElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGEllipseElement where
-  makeObject = makeObject . unSVGEllipseElement
-
-instance IsSVGGraphicsElement SVGEllipseElement
-instance IsSVGElement SVGEllipseElement
-instance IsElement SVGEllipseElement
-instance IsNode SVGEllipseElement
-instance IsEventTarget SVGEllipseElement
-instance IsGObject SVGEllipseElement where
-  toGObject = GObject . unSVGEllipseElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGEllipseElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGEllipseElement :: IsGObject obj => obj -> JSM SVGEllipseElement
-castToSVGEllipseElement = castTo gTypeSVGEllipseElement "SVGEllipseElement"
-
-gTypeSVGEllipseElement :: JSM GType
-gTypeSVGEllipseElement = GType . Object <$> jsg "SVGEllipseElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGExternalResourcesRequired".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired Mozilla SVGExternalResourcesRequired documentation>
-newtype SVGExternalResourcesRequired = SVGExternalResourcesRequired { unSVGExternalResourcesRequired :: JSVal }
-
-instance PToJSVal SVGExternalResourcesRequired where
-  pToJSVal = unSVGExternalResourcesRequired
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGExternalResourcesRequired where
-  pFromJSVal = SVGExternalResourcesRequired
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGExternalResourcesRequired where
-  toJSVal = return . unSVGExternalResourcesRequired
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGExternalResourcesRequired where
-  fromJSVal v = fmap SVGExternalResourcesRequired <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGExternalResourcesRequired where
-  makeObject = makeObject . unSVGExternalResourcesRequired
-
-instance IsGObject SVGExternalResourcesRequired where
-  toGObject = GObject . unSVGExternalResourcesRequired
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGExternalResourcesRequired . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGExternalResourcesRequired :: IsGObject obj => obj -> JSM SVGExternalResourcesRequired
-castToSVGExternalResourcesRequired = castTo gTypeSVGExternalResourcesRequired "SVGExternalResourcesRequired"
-
-gTypeSVGExternalResourcesRequired :: JSM GType
-gTypeSVGExternalResourcesRequired = GType . Object <$> jsg "SVGExternalResourcesRequired"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEBlendElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement Mozilla SVGFEBlendElement documentation>
-newtype SVGFEBlendElement = SVGFEBlendElement { unSVGFEBlendElement :: JSVal }
-
-instance PToJSVal SVGFEBlendElement where
-  pToJSVal = unSVGFEBlendElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEBlendElement where
-  pFromJSVal = SVGFEBlendElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEBlendElement where
-  toJSVal = return . unSVGFEBlendElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEBlendElement where
-  fromJSVal v = fmap SVGFEBlendElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEBlendElement where
-  makeObject = makeObject . unSVGFEBlendElement
-
-instance IsSVGElement SVGFEBlendElement
-instance IsElement SVGFEBlendElement
-instance IsNode SVGFEBlendElement
-instance IsEventTarget SVGFEBlendElement
-instance IsGObject SVGFEBlendElement where
-  toGObject = GObject . unSVGFEBlendElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEBlendElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEBlendElement :: IsGObject obj => obj -> JSM SVGFEBlendElement
-castToSVGFEBlendElement = castTo gTypeSVGFEBlendElement "SVGFEBlendElement"
-
-gTypeSVGFEBlendElement :: JSM GType
-gTypeSVGFEBlendElement = GType . Object <$> jsg "SVGFEBlendElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEColorMatrixElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement Mozilla SVGFEColorMatrixElement documentation>
-newtype SVGFEColorMatrixElement = SVGFEColorMatrixElement { unSVGFEColorMatrixElement :: JSVal }
-
-instance PToJSVal SVGFEColorMatrixElement where
-  pToJSVal = unSVGFEColorMatrixElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEColorMatrixElement where
-  pFromJSVal = SVGFEColorMatrixElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEColorMatrixElement where
-  toJSVal = return . unSVGFEColorMatrixElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEColorMatrixElement where
-  fromJSVal v = fmap SVGFEColorMatrixElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEColorMatrixElement where
-  makeObject = makeObject . unSVGFEColorMatrixElement
-
-instance IsSVGElement SVGFEColorMatrixElement
-instance IsElement SVGFEColorMatrixElement
-instance IsNode SVGFEColorMatrixElement
-instance IsEventTarget SVGFEColorMatrixElement
-instance IsGObject SVGFEColorMatrixElement where
-  toGObject = GObject . unSVGFEColorMatrixElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEColorMatrixElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEColorMatrixElement :: IsGObject obj => obj -> JSM SVGFEColorMatrixElement
-castToSVGFEColorMatrixElement = castTo gTypeSVGFEColorMatrixElement "SVGFEColorMatrixElement"
-
-gTypeSVGFEColorMatrixElement :: JSM GType
-gTypeSVGFEColorMatrixElement = GType . Object <$> jsg "SVGFEColorMatrixElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEComponentTransferElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement Mozilla SVGFEComponentTransferElement documentation>
-newtype SVGFEComponentTransferElement = SVGFEComponentTransferElement { unSVGFEComponentTransferElement :: JSVal }
-
-instance PToJSVal SVGFEComponentTransferElement where
-  pToJSVal = unSVGFEComponentTransferElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEComponentTransferElement where
-  pFromJSVal = SVGFEComponentTransferElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEComponentTransferElement where
-  toJSVal = return . unSVGFEComponentTransferElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEComponentTransferElement where
-  fromJSVal v = fmap SVGFEComponentTransferElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEComponentTransferElement where
-  makeObject = makeObject . unSVGFEComponentTransferElement
-
-instance IsSVGElement SVGFEComponentTransferElement
-instance IsElement SVGFEComponentTransferElement
-instance IsNode SVGFEComponentTransferElement
-instance IsEventTarget SVGFEComponentTransferElement
-instance IsGObject SVGFEComponentTransferElement where
-  toGObject = GObject . unSVGFEComponentTransferElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEComponentTransferElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEComponentTransferElement :: IsGObject obj => obj -> JSM SVGFEComponentTransferElement
-castToSVGFEComponentTransferElement = castTo gTypeSVGFEComponentTransferElement "SVGFEComponentTransferElement"
-
-gTypeSVGFEComponentTransferElement :: JSM GType
-gTypeSVGFEComponentTransferElement = GType . Object <$> jsg "SVGFEComponentTransferElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFECompositeElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement Mozilla SVGFECompositeElement documentation>
-newtype SVGFECompositeElement = SVGFECompositeElement { unSVGFECompositeElement :: JSVal }
-
-instance PToJSVal SVGFECompositeElement where
-  pToJSVal = unSVGFECompositeElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFECompositeElement where
-  pFromJSVal = SVGFECompositeElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFECompositeElement where
-  toJSVal = return . unSVGFECompositeElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFECompositeElement where
-  fromJSVal v = fmap SVGFECompositeElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFECompositeElement where
-  makeObject = makeObject . unSVGFECompositeElement
-
-instance IsSVGElement SVGFECompositeElement
-instance IsElement SVGFECompositeElement
-instance IsNode SVGFECompositeElement
-instance IsEventTarget SVGFECompositeElement
-instance IsGObject SVGFECompositeElement where
-  toGObject = GObject . unSVGFECompositeElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFECompositeElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFECompositeElement :: IsGObject obj => obj -> JSM SVGFECompositeElement
-castToSVGFECompositeElement = castTo gTypeSVGFECompositeElement "SVGFECompositeElement"
-
-gTypeSVGFECompositeElement :: JSM GType
-gTypeSVGFECompositeElement = GType . Object <$> jsg "SVGFECompositeElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEConvolveMatrixElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement Mozilla SVGFEConvolveMatrixElement documentation>
-newtype SVGFEConvolveMatrixElement = SVGFEConvolveMatrixElement { unSVGFEConvolveMatrixElement :: JSVal }
-
-instance PToJSVal SVGFEConvolveMatrixElement where
-  pToJSVal = unSVGFEConvolveMatrixElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEConvolveMatrixElement where
-  pFromJSVal = SVGFEConvolveMatrixElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEConvolveMatrixElement where
-  toJSVal = return . unSVGFEConvolveMatrixElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEConvolveMatrixElement where
-  fromJSVal v = fmap SVGFEConvolveMatrixElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEConvolveMatrixElement where
-  makeObject = makeObject . unSVGFEConvolveMatrixElement
-
-instance IsSVGElement SVGFEConvolveMatrixElement
-instance IsElement SVGFEConvolveMatrixElement
-instance IsNode SVGFEConvolveMatrixElement
-instance IsEventTarget SVGFEConvolveMatrixElement
-instance IsGObject SVGFEConvolveMatrixElement where
-  toGObject = GObject . unSVGFEConvolveMatrixElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEConvolveMatrixElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEConvolveMatrixElement :: IsGObject obj => obj -> JSM SVGFEConvolveMatrixElement
-castToSVGFEConvolveMatrixElement = castTo gTypeSVGFEConvolveMatrixElement "SVGFEConvolveMatrixElement"
-
-gTypeSVGFEConvolveMatrixElement :: JSM GType
-gTypeSVGFEConvolveMatrixElement = GType . Object <$> jsg "SVGFEConvolveMatrixElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEDiffuseLightingElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement Mozilla SVGFEDiffuseLightingElement documentation>
-newtype SVGFEDiffuseLightingElement = SVGFEDiffuseLightingElement { unSVGFEDiffuseLightingElement :: JSVal }
-
-instance PToJSVal SVGFEDiffuseLightingElement where
-  pToJSVal = unSVGFEDiffuseLightingElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEDiffuseLightingElement where
-  pFromJSVal = SVGFEDiffuseLightingElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEDiffuseLightingElement where
-  toJSVal = return . unSVGFEDiffuseLightingElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEDiffuseLightingElement where
-  fromJSVal v = fmap SVGFEDiffuseLightingElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEDiffuseLightingElement where
-  makeObject = makeObject . unSVGFEDiffuseLightingElement
-
-instance IsSVGElement SVGFEDiffuseLightingElement
-instance IsElement SVGFEDiffuseLightingElement
-instance IsNode SVGFEDiffuseLightingElement
-instance IsEventTarget SVGFEDiffuseLightingElement
-instance IsGObject SVGFEDiffuseLightingElement where
-  toGObject = GObject . unSVGFEDiffuseLightingElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEDiffuseLightingElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEDiffuseLightingElement :: IsGObject obj => obj -> JSM SVGFEDiffuseLightingElement
-castToSVGFEDiffuseLightingElement = castTo gTypeSVGFEDiffuseLightingElement "SVGFEDiffuseLightingElement"
-
-gTypeSVGFEDiffuseLightingElement :: JSM GType
-gTypeSVGFEDiffuseLightingElement = GType . Object <$> jsg "SVGFEDiffuseLightingElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEDisplacementMapElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement Mozilla SVGFEDisplacementMapElement documentation>
-newtype SVGFEDisplacementMapElement = SVGFEDisplacementMapElement { unSVGFEDisplacementMapElement :: JSVal }
-
-instance PToJSVal SVGFEDisplacementMapElement where
-  pToJSVal = unSVGFEDisplacementMapElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEDisplacementMapElement where
-  pFromJSVal = SVGFEDisplacementMapElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEDisplacementMapElement where
-  toJSVal = return . unSVGFEDisplacementMapElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEDisplacementMapElement where
-  fromJSVal v = fmap SVGFEDisplacementMapElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEDisplacementMapElement where
-  makeObject = makeObject . unSVGFEDisplacementMapElement
-
-instance IsSVGElement SVGFEDisplacementMapElement
-instance IsElement SVGFEDisplacementMapElement
-instance IsNode SVGFEDisplacementMapElement
-instance IsEventTarget SVGFEDisplacementMapElement
-instance IsGObject SVGFEDisplacementMapElement where
-  toGObject = GObject . unSVGFEDisplacementMapElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEDisplacementMapElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEDisplacementMapElement :: IsGObject obj => obj -> JSM SVGFEDisplacementMapElement
-castToSVGFEDisplacementMapElement = castTo gTypeSVGFEDisplacementMapElement "SVGFEDisplacementMapElement"
-
-gTypeSVGFEDisplacementMapElement :: JSM GType
-gTypeSVGFEDisplacementMapElement = GType . Object <$> jsg "SVGFEDisplacementMapElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEDistantLightElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement Mozilla SVGFEDistantLightElement documentation>
-newtype SVGFEDistantLightElement = SVGFEDistantLightElement { unSVGFEDistantLightElement :: JSVal }
-
-instance PToJSVal SVGFEDistantLightElement where
-  pToJSVal = unSVGFEDistantLightElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEDistantLightElement where
-  pFromJSVal = SVGFEDistantLightElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEDistantLightElement where
-  toJSVal = return . unSVGFEDistantLightElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEDistantLightElement where
-  fromJSVal v = fmap SVGFEDistantLightElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEDistantLightElement where
-  makeObject = makeObject . unSVGFEDistantLightElement
-
-instance IsSVGElement SVGFEDistantLightElement
-instance IsElement SVGFEDistantLightElement
-instance IsNode SVGFEDistantLightElement
-instance IsEventTarget SVGFEDistantLightElement
-instance IsGObject SVGFEDistantLightElement where
-  toGObject = GObject . unSVGFEDistantLightElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEDistantLightElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEDistantLightElement :: IsGObject obj => obj -> JSM SVGFEDistantLightElement
-castToSVGFEDistantLightElement = castTo gTypeSVGFEDistantLightElement "SVGFEDistantLightElement"
-
-gTypeSVGFEDistantLightElement :: JSM GType
-gTypeSVGFEDistantLightElement = GType . Object <$> jsg "SVGFEDistantLightElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEDropShadowElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement Mozilla SVGFEDropShadowElement documentation>
-newtype SVGFEDropShadowElement = SVGFEDropShadowElement { unSVGFEDropShadowElement :: JSVal }
-
-instance PToJSVal SVGFEDropShadowElement where
-  pToJSVal = unSVGFEDropShadowElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEDropShadowElement where
-  pFromJSVal = SVGFEDropShadowElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEDropShadowElement where
-  toJSVal = return . unSVGFEDropShadowElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEDropShadowElement where
-  fromJSVal v = fmap SVGFEDropShadowElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEDropShadowElement where
-  makeObject = makeObject . unSVGFEDropShadowElement
-
-instance IsSVGElement SVGFEDropShadowElement
-instance IsElement SVGFEDropShadowElement
-instance IsNode SVGFEDropShadowElement
-instance IsEventTarget SVGFEDropShadowElement
-instance IsGObject SVGFEDropShadowElement where
-  toGObject = GObject . unSVGFEDropShadowElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEDropShadowElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEDropShadowElement :: IsGObject obj => obj -> JSM SVGFEDropShadowElement
-castToSVGFEDropShadowElement = castTo gTypeSVGFEDropShadowElement "SVGFEDropShadowElement"
-
-gTypeSVGFEDropShadowElement :: JSM GType
-gTypeSVGFEDropShadowElement = GType . Object <$> jsg "SVGFEDropShadowElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEFloodElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFloodElement Mozilla SVGFEFloodElement documentation>
-newtype SVGFEFloodElement = SVGFEFloodElement { unSVGFEFloodElement :: JSVal }
-
-instance PToJSVal SVGFEFloodElement where
-  pToJSVal = unSVGFEFloodElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEFloodElement where
-  pFromJSVal = SVGFEFloodElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEFloodElement where
-  toJSVal = return . unSVGFEFloodElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEFloodElement where
-  fromJSVal v = fmap SVGFEFloodElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEFloodElement where
-  makeObject = makeObject . unSVGFEFloodElement
-
-instance IsSVGElement SVGFEFloodElement
-instance IsElement SVGFEFloodElement
-instance IsNode SVGFEFloodElement
-instance IsEventTarget SVGFEFloodElement
-instance IsGObject SVGFEFloodElement where
-  toGObject = GObject . unSVGFEFloodElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEFloodElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEFloodElement :: IsGObject obj => obj -> JSM SVGFEFloodElement
-castToSVGFEFloodElement = castTo gTypeSVGFEFloodElement "SVGFEFloodElement"
-
-gTypeSVGFEFloodElement :: JSM GType
-gTypeSVGFEFloodElement = GType . Object <$> jsg "SVGFEFloodElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEFuncAElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGComponentTransferFunctionElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncAElement Mozilla SVGFEFuncAElement documentation>
-newtype SVGFEFuncAElement = SVGFEFuncAElement { unSVGFEFuncAElement :: JSVal }
-
-instance PToJSVal SVGFEFuncAElement where
-  pToJSVal = unSVGFEFuncAElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEFuncAElement where
-  pFromJSVal = SVGFEFuncAElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEFuncAElement where
-  toJSVal = return . unSVGFEFuncAElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEFuncAElement where
-  fromJSVal v = fmap SVGFEFuncAElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEFuncAElement where
-  makeObject = makeObject . unSVGFEFuncAElement
-
-instance IsSVGComponentTransferFunctionElement SVGFEFuncAElement
-instance IsSVGElement SVGFEFuncAElement
-instance IsElement SVGFEFuncAElement
-instance IsNode SVGFEFuncAElement
-instance IsEventTarget SVGFEFuncAElement
-instance IsGObject SVGFEFuncAElement where
-  toGObject = GObject . unSVGFEFuncAElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEFuncAElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEFuncAElement :: IsGObject obj => obj -> JSM SVGFEFuncAElement
-castToSVGFEFuncAElement = castTo gTypeSVGFEFuncAElement "SVGFEFuncAElement"
-
-gTypeSVGFEFuncAElement :: JSM GType
-gTypeSVGFEFuncAElement = GType . Object <$> jsg "SVGFEFuncAElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEFuncBElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGComponentTransferFunctionElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncBElement Mozilla SVGFEFuncBElement documentation>
-newtype SVGFEFuncBElement = SVGFEFuncBElement { unSVGFEFuncBElement :: JSVal }
-
-instance PToJSVal SVGFEFuncBElement where
-  pToJSVal = unSVGFEFuncBElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEFuncBElement where
-  pFromJSVal = SVGFEFuncBElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEFuncBElement where
-  toJSVal = return . unSVGFEFuncBElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEFuncBElement where
-  fromJSVal v = fmap SVGFEFuncBElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEFuncBElement where
-  makeObject = makeObject . unSVGFEFuncBElement
-
-instance IsSVGComponentTransferFunctionElement SVGFEFuncBElement
-instance IsSVGElement SVGFEFuncBElement
-instance IsElement SVGFEFuncBElement
-instance IsNode SVGFEFuncBElement
-instance IsEventTarget SVGFEFuncBElement
-instance IsGObject SVGFEFuncBElement where
-  toGObject = GObject . unSVGFEFuncBElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEFuncBElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEFuncBElement :: IsGObject obj => obj -> JSM SVGFEFuncBElement
-castToSVGFEFuncBElement = castTo gTypeSVGFEFuncBElement "SVGFEFuncBElement"
-
-gTypeSVGFEFuncBElement :: JSM GType
-gTypeSVGFEFuncBElement = GType . Object <$> jsg "SVGFEFuncBElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEFuncGElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGComponentTransferFunctionElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncGElement Mozilla SVGFEFuncGElement documentation>
-newtype SVGFEFuncGElement = SVGFEFuncGElement { unSVGFEFuncGElement :: JSVal }
-
-instance PToJSVal SVGFEFuncGElement where
-  pToJSVal = unSVGFEFuncGElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEFuncGElement where
-  pFromJSVal = SVGFEFuncGElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEFuncGElement where
-  toJSVal = return . unSVGFEFuncGElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEFuncGElement where
-  fromJSVal v = fmap SVGFEFuncGElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEFuncGElement where
-  makeObject = makeObject . unSVGFEFuncGElement
-
-instance IsSVGComponentTransferFunctionElement SVGFEFuncGElement
-instance IsSVGElement SVGFEFuncGElement
-instance IsElement SVGFEFuncGElement
-instance IsNode SVGFEFuncGElement
-instance IsEventTarget SVGFEFuncGElement
-instance IsGObject SVGFEFuncGElement where
-  toGObject = GObject . unSVGFEFuncGElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEFuncGElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEFuncGElement :: IsGObject obj => obj -> JSM SVGFEFuncGElement
-castToSVGFEFuncGElement = castTo gTypeSVGFEFuncGElement "SVGFEFuncGElement"
-
-gTypeSVGFEFuncGElement :: JSM GType
-gTypeSVGFEFuncGElement = GType . Object <$> jsg "SVGFEFuncGElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEFuncRElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGComponentTransferFunctionElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncRElement Mozilla SVGFEFuncRElement documentation>
-newtype SVGFEFuncRElement = SVGFEFuncRElement { unSVGFEFuncRElement :: JSVal }
-
-instance PToJSVal SVGFEFuncRElement where
-  pToJSVal = unSVGFEFuncRElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEFuncRElement where
-  pFromJSVal = SVGFEFuncRElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEFuncRElement where
-  toJSVal = return . unSVGFEFuncRElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEFuncRElement where
-  fromJSVal v = fmap SVGFEFuncRElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEFuncRElement where
-  makeObject = makeObject . unSVGFEFuncRElement
-
-instance IsSVGComponentTransferFunctionElement SVGFEFuncRElement
-instance IsSVGElement SVGFEFuncRElement
-instance IsElement SVGFEFuncRElement
-instance IsNode SVGFEFuncRElement
-instance IsEventTarget SVGFEFuncRElement
-instance IsGObject SVGFEFuncRElement where
-  toGObject = GObject . unSVGFEFuncRElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEFuncRElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEFuncRElement :: IsGObject obj => obj -> JSM SVGFEFuncRElement
-castToSVGFEFuncRElement = castTo gTypeSVGFEFuncRElement "SVGFEFuncRElement"
-
-gTypeSVGFEFuncRElement :: JSM GType
-gTypeSVGFEFuncRElement = GType . Object <$> jsg "SVGFEFuncRElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEGaussianBlurElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement Mozilla SVGFEGaussianBlurElement documentation>
-newtype SVGFEGaussianBlurElement = SVGFEGaussianBlurElement { unSVGFEGaussianBlurElement :: JSVal }
-
-instance PToJSVal SVGFEGaussianBlurElement where
-  pToJSVal = unSVGFEGaussianBlurElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEGaussianBlurElement where
-  pFromJSVal = SVGFEGaussianBlurElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEGaussianBlurElement where
-  toJSVal = return . unSVGFEGaussianBlurElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEGaussianBlurElement where
-  fromJSVal v = fmap SVGFEGaussianBlurElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEGaussianBlurElement where
-  makeObject = makeObject . unSVGFEGaussianBlurElement
-
-instance IsSVGElement SVGFEGaussianBlurElement
-instance IsElement SVGFEGaussianBlurElement
-instance IsNode SVGFEGaussianBlurElement
-instance IsEventTarget SVGFEGaussianBlurElement
-instance IsGObject SVGFEGaussianBlurElement where
-  toGObject = GObject . unSVGFEGaussianBlurElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEGaussianBlurElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEGaussianBlurElement :: IsGObject obj => obj -> JSM SVGFEGaussianBlurElement
-castToSVGFEGaussianBlurElement = castTo gTypeSVGFEGaussianBlurElement "SVGFEGaussianBlurElement"
-
-gTypeSVGFEGaussianBlurElement :: JSM GType
-gTypeSVGFEGaussianBlurElement = GType . Object <$> jsg "SVGFEGaussianBlurElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEImageElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement Mozilla SVGFEImageElement documentation>
-newtype SVGFEImageElement = SVGFEImageElement { unSVGFEImageElement :: JSVal }
-
-instance PToJSVal SVGFEImageElement where
-  pToJSVal = unSVGFEImageElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEImageElement where
-  pFromJSVal = SVGFEImageElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEImageElement where
-  toJSVal = return . unSVGFEImageElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEImageElement where
-  fromJSVal v = fmap SVGFEImageElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEImageElement where
-  makeObject = makeObject . unSVGFEImageElement
-
-instance IsSVGElement SVGFEImageElement
-instance IsElement SVGFEImageElement
-instance IsNode SVGFEImageElement
-instance IsEventTarget SVGFEImageElement
-instance IsGObject SVGFEImageElement where
-  toGObject = GObject . unSVGFEImageElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEImageElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEImageElement :: IsGObject obj => obj -> JSM SVGFEImageElement
-castToSVGFEImageElement = castTo gTypeSVGFEImageElement "SVGFEImageElement"
-
-gTypeSVGFEImageElement :: JSM GType
-gTypeSVGFEImageElement = GType . Object <$> jsg "SVGFEImageElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEMergeElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeElement Mozilla SVGFEMergeElement documentation>
-newtype SVGFEMergeElement = SVGFEMergeElement { unSVGFEMergeElement :: JSVal }
-
-instance PToJSVal SVGFEMergeElement where
-  pToJSVal = unSVGFEMergeElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEMergeElement where
-  pFromJSVal = SVGFEMergeElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEMergeElement where
-  toJSVal = return . unSVGFEMergeElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEMergeElement where
-  fromJSVal v = fmap SVGFEMergeElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEMergeElement where
-  makeObject = makeObject . unSVGFEMergeElement
-
-instance IsSVGElement SVGFEMergeElement
-instance IsElement SVGFEMergeElement
-instance IsNode SVGFEMergeElement
-instance IsEventTarget SVGFEMergeElement
-instance IsGObject SVGFEMergeElement where
-  toGObject = GObject . unSVGFEMergeElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEMergeElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEMergeElement :: IsGObject obj => obj -> JSM SVGFEMergeElement
-castToSVGFEMergeElement = castTo gTypeSVGFEMergeElement "SVGFEMergeElement"
-
-gTypeSVGFEMergeElement :: JSM GType
-gTypeSVGFEMergeElement = GType . Object <$> jsg "SVGFEMergeElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEMergeNodeElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement Mozilla SVGFEMergeNodeElement documentation>
-newtype SVGFEMergeNodeElement = SVGFEMergeNodeElement { unSVGFEMergeNodeElement :: JSVal }
-
-instance PToJSVal SVGFEMergeNodeElement where
-  pToJSVal = unSVGFEMergeNodeElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEMergeNodeElement where
-  pFromJSVal = SVGFEMergeNodeElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEMergeNodeElement where
-  toJSVal = return . unSVGFEMergeNodeElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEMergeNodeElement where
-  fromJSVal v = fmap SVGFEMergeNodeElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEMergeNodeElement where
-  makeObject = makeObject . unSVGFEMergeNodeElement
-
-instance IsSVGElement SVGFEMergeNodeElement
-instance IsElement SVGFEMergeNodeElement
-instance IsNode SVGFEMergeNodeElement
-instance IsEventTarget SVGFEMergeNodeElement
-instance IsGObject SVGFEMergeNodeElement where
-  toGObject = GObject . unSVGFEMergeNodeElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEMergeNodeElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEMergeNodeElement :: IsGObject obj => obj -> JSM SVGFEMergeNodeElement
-castToSVGFEMergeNodeElement = castTo gTypeSVGFEMergeNodeElement "SVGFEMergeNodeElement"
-
-gTypeSVGFEMergeNodeElement :: JSM GType
-gTypeSVGFEMergeNodeElement = GType . Object <$> jsg "SVGFEMergeNodeElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEMorphologyElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement Mozilla SVGFEMorphologyElement documentation>
-newtype SVGFEMorphologyElement = SVGFEMorphologyElement { unSVGFEMorphologyElement :: JSVal }
-
-instance PToJSVal SVGFEMorphologyElement where
-  pToJSVal = unSVGFEMorphologyElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEMorphologyElement where
-  pFromJSVal = SVGFEMorphologyElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEMorphologyElement where
-  toJSVal = return . unSVGFEMorphologyElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEMorphologyElement where
-  fromJSVal v = fmap SVGFEMorphologyElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEMorphologyElement where
-  makeObject = makeObject . unSVGFEMorphologyElement
-
-instance IsSVGElement SVGFEMorphologyElement
-instance IsElement SVGFEMorphologyElement
-instance IsNode SVGFEMorphologyElement
-instance IsEventTarget SVGFEMorphologyElement
-instance IsGObject SVGFEMorphologyElement where
-  toGObject = GObject . unSVGFEMorphologyElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEMorphologyElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEMorphologyElement :: IsGObject obj => obj -> JSM SVGFEMorphologyElement
-castToSVGFEMorphologyElement = castTo gTypeSVGFEMorphologyElement "SVGFEMorphologyElement"
-
-gTypeSVGFEMorphologyElement :: JSM GType
-gTypeSVGFEMorphologyElement = GType . Object <$> jsg "SVGFEMorphologyElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEOffsetElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement Mozilla SVGFEOffsetElement documentation>
-newtype SVGFEOffsetElement = SVGFEOffsetElement { unSVGFEOffsetElement :: JSVal }
-
-instance PToJSVal SVGFEOffsetElement where
-  pToJSVal = unSVGFEOffsetElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEOffsetElement where
-  pFromJSVal = SVGFEOffsetElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEOffsetElement where
-  toJSVal = return . unSVGFEOffsetElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEOffsetElement where
-  fromJSVal v = fmap SVGFEOffsetElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEOffsetElement where
-  makeObject = makeObject . unSVGFEOffsetElement
-
-instance IsSVGElement SVGFEOffsetElement
-instance IsElement SVGFEOffsetElement
-instance IsNode SVGFEOffsetElement
-instance IsEventTarget SVGFEOffsetElement
-instance IsGObject SVGFEOffsetElement where
-  toGObject = GObject . unSVGFEOffsetElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEOffsetElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEOffsetElement :: IsGObject obj => obj -> JSM SVGFEOffsetElement
-castToSVGFEOffsetElement = castTo gTypeSVGFEOffsetElement "SVGFEOffsetElement"
-
-gTypeSVGFEOffsetElement :: JSM GType
-gTypeSVGFEOffsetElement = GType . Object <$> jsg "SVGFEOffsetElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFEPointLightElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement Mozilla SVGFEPointLightElement documentation>
-newtype SVGFEPointLightElement = SVGFEPointLightElement { unSVGFEPointLightElement :: JSVal }
-
-instance PToJSVal SVGFEPointLightElement where
-  pToJSVal = unSVGFEPointLightElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFEPointLightElement where
-  pFromJSVal = SVGFEPointLightElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFEPointLightElement where
-  toJSVal = return . unSVGFEPointLightElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFEPointLightElement where
-  fromJSVal v = fmap SVGFEPointLightElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFEPointLightElement where
-  makeObject = makeObject . unSVGFEPointLightElement
-
-instance IsSVGElement SVGFEPointLightElement
-instance IsElement SVGFEPointLightElement
-instance IsNode SVGFEPointLightElement
-instance IsEventTarget SVGFEPointLightElement
-instance IsGObject SVGFEPointLightElement where
-  toGObject = GObject . unSVGFEPointLightElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFEPointLightElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFEPointLightElement :: IsGObject obj => obj -> JSM SVGFEPointLightElement
-castToSVGFEPointLightElement = castTo gTypeSVGFEPointLightElement "SVGFEPointLightElement"
-
-gTypeSVGFEPointLightElement :: JSM GType
-gTypeSVGFEPointLightElement = GType . Object <$> jsg "SVGFEPointLightElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFESpecularLightingElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement Mozilla SVGFESpecularLightingElement documentation>
-newtype SVGFESpecularLightingElement = SVGFESpecularLightingElement { unSVGFESpecularLightingElement :: JSVal }
-
-instance PToJSVal SVGFESpecularLightingElement where
-  pToJSVal = unSVGFESpecularLightingElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFESpecularLightingElement where
-  pFromJSVal = SVGFESpecularLightingElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFESpecularLightingElement where
-  toJSVal = return . unSVGFESpecularLightingElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFESpecularLightingElement where
-  fromJSVal v = fmap SVGFESpecularLightingElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFESpecularLightingElement where
-  makeObject = makeObject . unSVGFESpecularLightingElement
-
-instance IsSVGElement SVGFESpecularLightingElement
-instance IsElement SVGFESpecularLightingElement
-instance IsNode SVGFESpecularLightingElement
-instance IsEventTarget SVGFESpecularLightingElement
-instance IsGObject SVGFESpecularLightingElement where
-  toGObject = GObject . unSVGFESpecularLightingElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFESpecularLightingElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFESpecularLightingElement :: IsGObject obj => obj -> JSM SVGFESpecularLightingElement
-castToSVGFESpecularLightingElement = castTo gTypeSVGFESpecularLightingElement "SVGFESpecularLightingElement"
-
-gTypeSVGFESpecularLightingElement :: JSM GType
-gTypeSVGFESpecularLightingElement = GType . Object <$> jsg "SVGFESpecularLightingElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFESpotLightElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement Mozilla SVGFESpotLightElement documentation>
-newtype SVGFESpotLightElement = SVGFESpotLightElement { unSVGFESpotLightElement :: JSVal }
-
-instance PToJSVal SVGFESpotLightElement where
-  pToJSVal = unSVGFESpotLightElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFESpotLightElement where
-  pFromJSVal = SVGFESpotLightElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFESpotLightElement where
-  toJSVal = return . unSVGFESpotLightElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFESpotLightElement where
-  fromJSVal v = fmap SVGFESpotLightElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFESpotLightElement where
-  makeObject = makeObject . unSVGFESpotLightElement
-
-instance IsSVGElement SVGFESpotLightElement
-instance IsElement SVGFESpotLightElement
-instance IsNode SVGFESpotLightElement
-instance IsEventTarget SVGFESpotLightElement
-instance IsGObject SVGFESpotLightElement where
-  toGObject = GObject . unSVGFESpotLightElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFESpotLightElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFESpotLightElement :: IsGObject obj => obj -> JSM SVGFESpotLightElement
-castToSVGFESpotLightElement = castTo gTypeSVGFESpotLightElement "SVGFESpotLightElement"
-
-gTypeSVGFESpotLightElement :: JSM GType
-gTypeSVGFESpotLightElement = GType . Object <$> jsg "SVGFESpotLightElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFETileElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement Mozilla SVGFETileElement documentation>
-newtype SVGFETileElement = SVGFETileElement { unSVGFETileElement :: JSVal }
-
-instance PToJSVal SVGFETileElement where
-  pToJSVal = unSVGFETileElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFETileElement where
-  pFromJSVal = SVGFETileElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFETileElement where
-  toJSVal = return . unSVGFETileElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFETileElement where
-  fromJSVal v = fmap SVGFETileElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFETileElement where
-  makeObject = makeObject . unSVGFETileElement
-
-instance IsSVGElement SVGFETileElement
-instance IsElement SVGFETileElement
-instance IsNode SVGFETileElement
-instance IsEventTarget SVGFETileElement
-instance IsGObject SVGFETileElement where
-  toGObject = GObject . unSVGFETileElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFETileElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFETileElement :: IsGObject obj => obj -> JSM SVGFETileElement
-castToSVGFETileElement = castTo gTypeSVGFETileElement "SVGFETileElement"
-
-gTypeSVGFETileElement :: JSM GType
-gTypeSVGFETileElement = GType . Object <$> jsg "SVGFETileElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFETurbulenceElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement Mozilla SVGFETurbulenceElement documentation>
-newtype SVGFETurbulenceElement = SVGFETurbulenceElement { unSVGFETurbulenceElement :: JSVal }
-
-instance PToJSVal SVGFETurbulenceElement where
-  pToJSVal = unSVGFETurbulenceElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFETurbulenceElement where
-  pFromJSVal = SVGFETurbulenceElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFETurbulenceElement where
-  toJSVal = return . unSVGFETurbulenceElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFETurbulenceElement where
-  fromJSVal v = fmap SVGFETurbulenceElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFETurbulenceElement where
-  makeObject = makeObject . unSVGFETurbulenceElement
-
-instance IsSVGElement SVGFETurbulenceElement
-instance IsElement SVGFETurbulenceElement
-instance IsNode SVGFETurbulenceElement
-instance IsEventTarget SVGFETurbulenceElement
-instance IsGObject SVGFETurbulenceElement where
-  toGObject = GObject . unSVGFETurbulenceElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFETurbulenceElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFETurbulenceElement :: IsGObject obj => obj -> JSM SVGFETurbulenceElement
-castToSVGFETurbulenceElement = castTo gTypeSVGFETurbulenceElement "SVGFETurbulenceElement"
-
-gTypeSVGFETurbulenceElement :: JSM GType
-gTypeSVGFETurbulenceElement = GType . Object <$> jsg "SVGFETurbulenceElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFilterElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement Mozilla SVGFilterElement documentation>
-newtype SVGFilterElement = SVGFilterElement { unSVGFilterElement :: JSVal }
-
-instance PToJSVal SVGFilterElement where
-  pToJSVal = unSVGFilterElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFilterElement where
-  pFromJSVal = SVGFilterElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFilterElement where
-  toJSVal = return . unSVGFilterElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFilterElement where
-  fromJSVal v = fmap SVGFilterElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFilterElement where
-  makeObject = makeObject . unSVGFilterElement
-
-instance IsSVGElement SVGFilterElement
-instance IsElement SVGFilterElement
-instance IsNode SVGFilterElement
-instance IsEventTarget SVGFilterElement
-instance IsGObject SVGFilterElement where
-  toGObject = GObject . unSVGFilterElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFilterElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFilterElement :: IsGObject obj => obj -> JSM SVGFilterElement
-castToSVGFilterElement = castTo gTypeSVGFilterElement "SVGFilterElement"
-
-gTypeSVGFilterElement :: JSM GType
-gTypeSVGFilterElement = GType . Object <$> jsg "SVGFilterElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFilterPrimitiveStandardAttributes".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes Mozilla SVGFilterPrimitiveStandardAttributes documentation>
-newtype SVGFilterPrimitiveStandardAttributes = SVGFilterPrimitiveStandardAttributes { unSVGFilterPrimitiveStandardAttributes :: JSVal }
-
-instance PToJSVal SVGFilterPrimitiveStandardAttributes where
-  pToJSVal = unSVGFilterPrimitiveStandardAttributes
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFilterPrimitiveStandardAttributes where
-  pFromJSVal = SVGFilterPrimitiveStandardAttributes
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFilterPrimitiveStandardAttributes where
-  toJSVal = return . unSVGFilterPrimitiveStandardAttributes
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFilterPrimitiveStandardAttributes where
-  fromJSVal v = fmap SVGFilterPrimitiveStandardAttributes <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFilterPrimitiveStandardAttributes where
-  makeObject = makeObject . unSVGFilterPrimitiveStandardAttributes
-
-instance IsGObject SVGFilterPrimitiveStandardAttributes where
-  toGObject = GObject . unSVGFilterPrimitiveStandardAttributes
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFilterPrimitiveStandardAttributes . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFilterPrimitiveStandardAttributes :: IsGObject obj => obj -> JSM SVGFilterPrimitiveStandardAttributes
-castToSVGFilterPrimitiveStandardAttributes = castTo gTypeSVGFilterPrimitiveStandardAttributes "SVGFilterPrimitiveStandardAttributes"
-
-gTypeSVGFilterPrimitiveStandardAttributes :: JSM GType
-gTypeSVGFilterPrimitiveStandardAttributes = GType . Object <$> jsg "SVGFilterPrimitiveStandardAttributes"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFitToViewBox".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox Mozilla SVGFitToViewBox documentation>
-newtype SVGFitToViewBox = SVGFitToViewBox { unSVGFitToViewBox :: JSVal }
-
-instance PToJSVal SVGFitToViewBox where
-  pToJSVal = unSVGFitToViewBox
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFitToViewBox where
-  pFromJSVal = SVGFitToViewBox
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFitToViewBox where
-  toJSVal = return . unSVGFitToViewBox
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFitToViewBox where
-  fromJSVal v = fmap SVGFitToViewBox <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFitToViewBox where
-  makeObject = makeObject . unSVGFitToViewBox
-
-instance IsGObject SVGFitToViewBox where
-  toGObject = GObject . unSVGFitToViewBox
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFitToViewBox . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFitToViewBox :: IsGObject obj => obj -> JSM SVGFitToViewBox
-castToSVGFitToViewBox = castTo gTypeSVGFitToViewBox "SVGFitToViewBox"
-
-gTypeSVGFitToViewBox :: JSM GType
-gTypeSVGFitToViewBox = GType . Object <$> jsg "SVGFitToViewBox"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFontElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontElement Mozilla SVGFontElement documentation>
-newtype SVGFontElement = SVGFontElement { unSVGFontElement :: JSVal }
-
-instance PToJSVal SVGFontElement where
-  pToJSVal = unSVGFontElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFontElement where
-  pFromJSVal = SVGFontElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFontElement where
-  toJSVal = return . unSVGFontElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFontElement where
-  fromJSVal v = fmap SVGFontElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFontElement where
-  makeObject = makeObject . unSVGFontElement
-
-instance IsSVGElement SVGFontElement
-instance IsElement SVGFontElement
-instance IsNode SVGFontElement
-instance IsEventTarget SVGFontElement
-instance IsGObject SVGFontElement where
-  toGObject = GObject . unSVGFontElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFontElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFontElement :: IsGObject obj => obj -> JSM SVGFontElement
-castToSVGFontElement = castTo gTypeSVGFontElement "SVGFontElement"
-
-gTypeSVGFontElement :: JSM GType
-gTypeSVGFontElement = GType . Object <$> jsg "SVGFontElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFontFaceElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceElement Mozilla SVGFontFaceElement documentation>
-newtype SVGFontFaceElement = SVGFontFaceElement { unSVGFontFaceElement :: JSVal }
-
-instance PToJSVal SVGFontFaceElement where
-  pToJSVal = unSVGFontFaceElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFontFaceElement where
-  pFromJSVal = SVGFontFaceElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFontFaceElement where
-  toJSVal = return . unSVGFontFaceElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFontFaceElement where
-  fromJSVal v = fmap SVGFontFaceElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFontFaceElement where
-  makeObject = makeObject . unSVGFontFaceElement
-
-instance IsSVGElement SVGFontFaceElement
-instance IsElement SVGFontFaceElement
-instance IsNode SVGFontFaceElement
-instance IsEventTarget SVGFontFaceElement
-instance IsGObject SVGFontFaceElement where
-  toGObject = GObject . unSVGFontFaceElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFontFaceElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFontFaceElement :: IsGObject obj => obj -> JSM SVGFontFaceElement
-castToSVGFontFaceElement = castTo gTypeSVGFontFaceElement "SVGFontFaceElement"
-
-gTypeSVGFontFaceElement :: JSM GType
-gTypeSVGFontFaceElement = GType . Object <$> jsg "SVGFontFaceElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFontFaceFormatElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceFormatElement Mozilla SVGFontFaceFormatElement documentation>
-newtype SVGFontFaceFormatElement = SVGFontFaceFormatElement { unSVGFontFaceFormatElement :: JSVal }
-
-instance PToJSVal SVGFontFaceFormatElement where
-  pToJSVal = unSVGFontFaceFormatElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFontFaceFormatElement where
-  pFromJSVal = SVGFontFaceFormatElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFontFaceFormatElement where
-  toJSVal = return . unSVGFontFaceFormatElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFontFaceFormatElement where
-  fromJSVal v = fmap SVGFontFaceFormatElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFontFaceFormatElement where
-  makeObject = makeObject . unSVGFontFaceFormatElement
-
-instance IsSVGElement SVGFontFaceFormatElement
-instance IsElement SVGFontFaceFormatElement
-instance IsNode SVGFontFaceFormatElement
-instance IsEventTarget SVGFontFaceFormatElement
-instance IsGObject SVGFontFaceFormatElement where
-  toGObject = GObject . unSVGFontFaceFormatElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFontFaceFormatElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFontFaceFormatElement :: IsGObject obj => obj -> JSM SVGFontFaceFormatElement
-castToSVGFontFaceFormatElement = castTo gTypeSVGFontFaceFormatElement "SVGFontFaceFormatElement"
-
-gTypeSVGFontFaceFormatElement :: JSM GType
-gTypeSVGFontFaceFormatElement = GType . Object <$> jsg "SVGFontFaceFormatElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFontFaceNameElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceNameElement Mozilla SVGFontFaceNameElement documentation>
-newtype SVGFontFaceNameElement = SVGFontFaceNameElement { unSVGFontFaceNameElement :: JSVal }
-
-instance PToJSVal SVGFontFaceNameElement where
-  pToJSVal = unSVGFontFaceNameElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFontFaceNameElement where
-  pFromJSVal = SVGFontFaceNameElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFontFaceNameElement where
-  toJSVal = return . unSVGFontFaceNameElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFontFaceNameElement where
-  fromJSVal v = fmap SVGFontFaceNameElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFontFaceNameElement where
-  makeObject = makeObject . unSVGFontFaceNameElement
-
-instance IsSVGElement SVGFontFaceNameElement
-instance IsElement SVGFontFaceNameElement
-instance IsNode SVGFontFaceNameElement
-instance IsEventTarget SVGFontFaceNameElement
-instance IsGObject SVGFontFaceNameElement where
-  toGObject = GObject . unSVGFontFaceNameElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFontFaceNameElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFontFaceNameElement :: IsGObject obj => obj -> JSM SVGFontFaceNameElement
-castToSVGFontFaceNameElement = castTo gTypeSVGFontFaceNameElement "SVGFontFaceNameElement"
-
-gTypeSVGFontFaceNameElement :: JSM GType
-gTypeSVGFontFaceNameElement = GType . Object <$> jsg "SVGFontFaceNameElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFontFaceSrcElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceSrcElement Mozilla SVGFontFaceSrcElement documentation>
-newtype SVGFontFaceSrcElement = SVGFontFaceSrcElement { unSVGFontFaceSrcElement :: JSVal }
-
-instance PToJSVal SVGFontFaceSrcElement where
-  pToJSVal = unSVGFontFaceSrcElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFontFaceSrcElement where
-  pFromJSVal = SVGFontFaceSrcElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFontFaceSrcElement where
-  toJSVal = return . unSVGFontFaceSrcElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFontFaceSrcElement where
-  fromJSVal v = fmap SVGFontFaceSrcElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFontFaceSrcElement where
-  makeObject = makeObject . unSVGFontFaceSrcElement
-
-instance IsSVGElement SVGFontFaceSrcElement
-instance IsElement SVGFontFaceSrcElement
-instance IsNode SVGFontFaceSrcElement
-instance IsEventTarget SVGFontFaceSrcElement
-instance IsGObject SVGFontFaceSrcElement where
-  toGObject = GObject . unSVGFontFaceSrcElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFontFaceSrcElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFontFaceSrcElement :: IsGObject obj => obj -> JSM SVGFontFaceSrcElement
-castToSVGFontFaceSrcElement = castTo gTypeSVGFontFaceSrcElement "SVGFontFaceSrcElement"
-
-gTypeSVGFontFaceSrcElement :: JSM GType
-gTypeSVGFontFaceSrcElement = GType . Object <$> jsg "SVGFontFaceSrcElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGFontFaceUriElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceUriElement Mozilla SVGFontFaceUriElement documentation>
-newtype SVGFontFaceUriElement = SVGFontFaceUriElement { unSVGFontFaceUriElement :: JSVal }
-
-instance PToJSVal SVGFontFaceUriElement where
-  pToJSVal = unSVGFontFaceUriElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGFontFaceUriElement where
-  pFromJSVal = SVGFontFaceUriElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGFontFaceUriElement where
-  toJSVal = return . unSVGFontFaceUriElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGFontFaceUriElement where
-  fromJSVal v = fmap SVGFontFaceUriElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGFontFaceUriElement where
-  makeObject = makeObject . unSVGFontFaceUriElement
-
-instance IsSVGElement SVGFontFaceUriElement
-instance IsElement SVGFontFaceUriElement
-instance IsNode SVGFontFaceUriElement
-instance IsEventTarget SVGFontFaceUriElement
-instance IsGObject SVGFontFaceUriElement where
-  toGObject = GObject . unSVGFontFaceUriElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGFontFaceUriElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGFontFaceUriElement :: IsGObject obj => obj -> JSM SVGFontFaceUriElement
-castToSVGFontFaceUriElement = castTo gTypeSVGFontFaceUriElement "SVGFontFaceUriElement"
-
-gTypeSVGFontFaceUriElement :: JSM GType
-gTypeSVGFontFaceUriElement = GType . Object <$> jsg "SVGFontFaceUriElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGForeignObjectElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement Mozilla SVGForeignObjectElement documentation>
-newtype SVGForeignObjectElement = SVGForeignObjectElement { unSVGForeignObjectElement :: JSVal }
-
-instance PToJSVal SVGForeignObjectElement where
-  pToJSVal = unSVGForeignObjectElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGForeignObjectElement where
-  pFromJSVal = SVGForeignObjectElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGForeignObjectElement where
-  toJSVal = return . unSVGForeignObjectElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGForeignObjectElement where
-  fromJSVal v = fmap SVGForeignObjectElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGForeignObjectElement where
-  makeObject = makeObject . unSVGForeignObjectElement
-
-instance IsSVGGraphicsElement SVGForeignObjectElement
-instance IsSVGElement SVGForeignObjectElement
-instance IsElement SVGForeignObjectElement
-instance IsNode SVGForeignObjectElement
-instance IsEventTarget SVGForeignObjectElement
-instance IsGObject SVGForeignObjectElement where
-  toGObject = GObject . unSVGForeignObjectElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGForeignObjectElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGForeignObjectElement :: IsGObject obj => obj -> JSM SVGForeignObjectElement
-castToSVGForeignObjectElement = castTo gTypeSVGForeignObjectElement "SVGForeignObjectElement"
-
-gTypeSVGForeignObjectElement :: JSM GType
-gTypeSVGForeignObjectElement = GType . Object <$> jsg "SVGForeignObjectElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGGElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGElement Mozilla SVGGElement documentation>
-newtype SVGGElement = SVGGElement { unSVGGElement :: JSVal }
-
-instance PToJSVal SVGGElement where
-  pToJSVal = unSVGGElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGGElement where
-  pFromJSVal = SVGGElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGGElement where
-  toJSVal = return . unSVGGElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGGElement where
-  fromJSVal v = fmap SVGGElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGGElement where
-  makeObject = makeObject . unSVGGElement
-
-instance IsSVGGraphicsElement SVGGElement
-instance IsSVGElement SVGGElement
-instance IsElement SVGGElement
-instance IsNode SVGGElement
-instance IsEventTarget SVGGElement
-instance IsGObject SVGGElement where
-  toGObject = GObject . unSVGGElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGGElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGGElement :: IsGObject obj => obj -> JSM SVGGElement
-castToSVGGElement = castTo gTypeSVGGElement "SVGGElement"
-
-gTypeSVGGElement :: JSM GType
-gTypeSVGGElement = GType . Object <$> jsg "SVGGElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGGlyphElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphElement Mozilla SVGGlyphElement documentation>
-newtype SVGGlyphElement = SVGGlyphElement { unSVGGlyphElement :: JSVal }
-
-instance PToJSVal SVGGlyphElement where
-  pToJSVal = unSVGGlyphElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGGlyphElement where
-  pFromJSVal = SVGGlyphElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGGlyphElement where
-  toJSVal = return . unSVGGlyphElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGGlyphElement where
-  fromJSVal v = fmap SVGGlyphElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGGlyphElement where
-  makeObject = makeObject . unSVGGlyphElement
-
-instance IsSVGElement SVGGlyphElement
-instance IsElement SVGGlyphElement
-instance IsNode SVGGlyphElement
-instance IsEventTarget SVGGlyphElement
-instance IsGObject SVGGlyphElement where
-  toGObject = GObject . unSVGGlyphElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGGlyphElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGGlyphElement :: IsGObject obj => obj -> JSM SVGGlyphElement
-castToSVGGlyphElement = castTo gTypeSVGGlyphElement "SVGGlyphElement"
-
-gTypeSVGGlyphElement :: JSM GType
-gTypeSVGGlyphElement = GType . Object <$> jsg "SVGGlyphElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGGlyphRefElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement Mozilla SVGGlyphRefElement documentation>
-newtype SVGGlyphRefElement = SVGGlyphRefElement { unSVGGlyphRefElement :: JSVal }
-
-instance PToJSVal SVGGlyphRefElement where
-  pToJSVal = unSVGGlyphRefElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGGlyphRefElement where
-  pFromJSVal = SVGGlyphRefElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGGlyphRefElement where
-  toJSVal = return . unSVGGlyphRefElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGGlyphRefElement where
-  fromJSVal v = fmap SVGGlyphRefElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGGlyphRefElement where
-  makeObject = makeObject . unSVGGlyphRefElement
-
-instance IsSVGElement SVGGlyphRefElement
-instance IsElement SVGGlyphRefElement
-instance IsNode SVGGlyphRefElement
-instance IsEventTarget SVGGlyphRefElement
-instance IsGObject SVGGlyphRefElement where
-  toGObject = GObject . unSVGGlyphRefElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGGlyphRefElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGGlyphRefElement :: IsGObject obj => obj -> JSM SVGGlyphRefElement
-castToSVGGlyphRefElement = castTo gTypeSVGGlyphRefElement "SVGGlyphRefElement"
-
-gTypeSVGGlyphRefElement :: JSM GType
-gTypeSVGGlyphRefElement = GType . Object <$> jsg "SVGGlyphRefElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGGradientElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement Mozilla SVGGradientElement documentation>
-newtype SVGGradientElement = SVGGradientElement { unSVGGradientElement :: JSVal }
-
-instance PToJSVal SVGGradientElement where
-  pToJSVal = unSVGGradientElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGGradientElement where
-  pFromJSVal = SVGGradientElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGGradientElement where
-  toJSVal = return . unSVGGradientElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGGradientElement where
-  fromJSVal v = fmap SVGGradientElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGGradientElement where
-  makeObject = makeObject . unSVGGradientElement
-
-class IsSVGElement o => IsSVGGradientElement o
-toSVGGradientElement :: IsSVGGradientElement o => o -> SVGGradientElement
-toSVGGradientElement = unsafeCastGObject . toGObject
-
-instance IsSVGGradientElement SVGGradientElement
-instance IsSVGElement SVGGradientElement
-instance IsElement SVGGradientElement
-instance IsNode SVGGradientElement
-instance IsEventTarget SVGGradientElement
-instance IsGObject SVGGradientElement where
-  toGObject = GObject . unSVGGradientElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGGradientElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGGradientElement :: IsGObject obj => obj -> JSM SVGGradientElement
-castToSVGGradientElement = castTo gTypeSVGGradientElement "SVGGradientElement"
-
-gTypeSVGGradientElement :: JSM GType
-gTypeSVGGradientElement = GType . Object <$> jsg "SVGGradientElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGGraphicsElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement Mozilla SVGGraphicsElement documentation>
-newtype SVGGraphicsElement = SVGGraphicsElement { unSVGGraphicsElement :: JSVal }
-
-instance PToJSVal SVGGraphicsElement where
-  pToJSVal = unSVGGraphicsElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGGraphicsElement where
-  pFromJSVal = SVGGraphicsElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGGraphicsElement where
-  toJSVal = return . unSVGGraphicsElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGGraphicsElement where
-  fromJSVal v = fmap SVGGraphicsElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGGraphicsElement where
-  makeObject = makeObject . unSVGGraphicsElement
-
-class IsSVGElement o => IsSVGGraphicsElement o
-toSVGGraphicsElement :: IsSVGGraphicsElement o => o -> SVGGraphicsElement
-toSVGGraphicsElement = unsafeCastGObject . toGObject
-
-instance IsSVGGraphicsElement SVGGraphicsElement
-instance IsSVGElement SVGGraphicsElement
-instance IsElement SVGGraphicsElement
-instance IsNode SVGGraphicsElement
-instance IsEventTarget SVGGraphicsElement
-instance IsGObject SVGGraphicsElement where
-  toGObject = GObject . unSVGGraphicsElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGGraphicsElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGGraphicsElement :: IsGObject obj => obj -> JSM SVGGraphicsElement
-castToSVGGraphicsElement = castTo gTypeSVGGraphicsElement "SVGGraphicsElement"
-
-gTypeSVGGraphicsElement :: JSM GType
-gTypeSVGGraphicsElement = GType . Object <$> jsg "SVGGraphicsElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGHKernElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGHKernElement Mozilla SVGHKernElement documentation>
-newtype SVGHKernElement = SVGHKernElement { unSVGHKernElement :: JSVal }
-
-instance PToJSVal SVGHKernElement where
-  pToJSVal = unSVGHKernElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGHKernElement where
-  pFromJSVal = SVGHKernElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGHKernElement where
-  toJSVal = return . unSVGHKernElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGHKernElement where
-  fromJSVal v = fmap SVGHKernElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGHKernElement where
-  makeObject = makeObject . unSVGHKernElement
-
-instance IsSVGElement SVGHKernElement
-instance IsElement SVGHKernElement
-instance IsNode SVGHKernElement
-instance IsEventTarget SVGHKernElement
-instance IsGObject SVGHKernElement where
-  toGObject = GObject . unSVGHKernElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGHKernElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGHKernElement :: IsGObject obj => obj -> JSM SVGHKernElement
-castToSVGHKernElement = castTo gTypeSVGHKernElement "SVGHKernElement"
-
-gTypeSVGHKernElement :: JSM GType
-gTypeSVGHKernElement = GType . Object <$> jsg "SVGHKernElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGImageElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement Mozilla SVGImageElement documentation>
-newtype SVGImageElement = SVGImageElement { unSVGImageElement :: JSVal }
-
-instance PToJSVal SVGImageElement where
-  pToJSVal = unSVGImageElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGImageElement where
-  pFromJSVal = SVGImageElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGImageElement where
-  toJSVal = return . unSVGImageElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGImageElement where
-  fromJSVal v = fmap SVGImageElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGImageElement where
-  makeObject = makeObject . unSVGImageElement
-
-instance IsSVGGraphicsElement SVGImageElement
-instance IsSVGElement SVGImageElement
-instance IsElement SVGImageElement
-instance IsNode SVGImageElement
-instance IsEventTarget SVGImageElement
-instance IsGObject SVGImageElement where
-  toGObject = GObject . unSVGImageElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGImageElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGImageElement :: IsGObject obj => obj -> JSM SVGImageElement
-castToSVGImageElement = castTo gTypeSVGImageElement "SVGImageElement"
-
-gTypeSVGImageElement :: JSM GType
-gTypeSVGImageElement = GType . Object <$> jsg "SVGImageElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGLength".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength Mozilla SVGLength documentation>
-newtype SVGLength = SVGLength { unSVGLength :: JSVal }
-
-instance PToJSVal SVGLength where
-  pToJSVal = unSVGLength
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGLength where
-  pFromJSVal = SVGLength
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGLength where
-  toJSVal = return . unSVGLength
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGLength where
-  fromJSVal v = fmap SVGLength <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGLength where
-  makeObject = makeObject . unSVGLength
-
-instance IsGObject SVGLength where
-  toGObject = GObject . unSVGLength
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGLength . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGLength :: IsGObject obj => obj -> JSM SVGLength
-castToSVGLength = castTo gTypeSVGLength "SVGLength"
-
-gTypeSVGLength :: JSM GType
-gTypeSVGLength = GType . Object <$> jsg "SVGLength"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGLengthList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList Mozilla SVGLengthList documentation>
-newtype SVGLengthList = SVGLengthList { unSVGLengthList :: JSVal }
-
-instance PToJSVal SVGLengthList where
-  pToJSVal = unSVGLengthList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGLengthList where
-  pFromJSVal = SVGLengthList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGLengthList where
-  toJSVal = return . unSVGLengthList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGLengthList where
-  fromJSVal v = fmap SVGLengthList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGLengthList where
-  makeObject = makeObject . unSVGLengthList
-
-instance IsGObject SVGLengthList where
-  toGObject = GObject . unSVGLengthList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGLengthList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGLengthList :: IsGObject obj => obj -> JSM SVGLengthList
-castToSVGLengthList = castTo gTypeSVGLengthList "SVGLengthList"
-
-gTypeSVGLengthList :: JSM GType
-gTypeSVGLengthList = GType . Object <$> jsg "SVGLengthList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGLineElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement Mozilla SVGLineElement documentation>
-newtype SVGLineElement = SVGLineElement { unSVGLineElement :: JSVal }
-
-instance PToJSVal SVGLineElement where
-  pToJSVal = unSVGLineElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGLineElement where
-  pFromJSVal = SVGLineElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGLineElement where
-  toJSVal = return . unSVGLineElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGLineElement where
-  fromJSVal v = fmap SVGLineElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGLineElement where
-  makeObject = makeObject . unSVGLineElement
-
-instance IsSVGGraphicsElement SVGLineElement
-instance IsSVGElement SVGLineElement
-instance IsElement SVGLineElement
-instance IsNode SVGLineElement
-instance IsEventTarget SVGLineElement
-instance IsGObject SVGLineElement where
-  toGObject = GObject . unSVGLineElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGLineElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGLineElement :: IsGObject obj => obj -> JSM SVGLineElement
-castToSVGLineElement = castTo gTypeSVGLineElement "SVGLineElement"
-
-gTypeSVGLineElement :: JSM GType
-gTypeSVGLineElement = GType . Object <$> jsg "SVGLineElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGLinearGradientElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGradientElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement Mozilla SVGLinearGradientElement documentation>
-newtype SVGLinearGradientElement = SVGLinearGradientElement { unSVGLinearGradientElement :: JSVal }
-
-instance PToJSVal SVGLinearGradientElement where
-  pToJSVal = unSVGLinearGradientElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGLinearGradientElement where
-  pFromJSVal = SVGLinearGradientElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGLinearGradientElement where
-  toJSVal = return . unSVGLinearGradientElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGLinearGradientElement where
-  fromJSVal v = fmap SVGLinearGradientElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGLinearGradientElement where
-  makeObject = makeObject . unSVGLinearGradientElement
-
-instance IsSVGGradientElement SVGLinearGradientElement
-instance IsSVGElement SVGLinearGradientElement
-instance IsElement SVGLinearGradientElement
-instance IsNode SVGLinearGradientElement
-instance IsEventTarget SVGLinearGradientElement
-instance IsGObject SVGLinearGradientElement where
-  toGObject = GObject . unSVGLinearGradientElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGLinearGradientElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGLinearGradientElement :: IsGObject obj => obj -> JSM SVGLinearGradientElement
-castToSVGLinearGradientElement = castTo gTypeSVGLinearGradientElement "SVGLinearGradientElement"
-
-gTypeSVGLinearGradientElement :: JSM GType
-gTypeSVGLinearGradientElement = GType . Object <$> jsg "SVGLinearGradientElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGMPathElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMPathElement Mozilla SVGMPathElement documentation>
-newtype SVGMPathElement = SVGMPathElement { unSVGMPathElement :: JSVal }
-
-instance PToJSVal SVGMPathElement where
-  pToJSVal = unSVGMPathElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGMPathElement where
-  pFromJSVal = SVGMPathElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGMPathElement where
-  toJSVal = return . unSVGMPathElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGMPathElement where
-  fromJSVal v = fmap SVGMPathElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGMPathElement where
-  makeObject = makeObject . unSVGMPathElement
-
-instance IsSVGElement SVGMPathElement
-instance IsElement SVGMPathElement
-instance IsNode SVGMPathElement
-instance IsEventTarget SVGMPathElement
-instance IsGObject SVGMPathElement where
-  toGObject = GObject . unSVGMPathElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGMPathElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGMPathElement :: IsGObject obj => obj -> JSM SVGMPathElement
-castToSVGMPathElement = castTo gTypeSVGMPathElement "SVGMPathElement"
-
-gTypeSVGMPathElement :: JSM GType
-gTypeSVGMPathElement = GType . Object <$> jsg "SVGMPathElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGMarkerElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement Mozilla SVGMarkerElement documentation>
-newtype SVGMarkerElement = SVGMarkerElement { unSVGMarkerElement :: JSVal }
-
-instance PToJSVal SVGMarkerElement where
-  pToJSVal = unSVGMarkerElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGMarkerElement where
-  pFromJSVal = SVGMarkerElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGMarkerElement where
-  toJSVal = return . unSVGMarkerElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGMarkerElement where
-  fromJSVal v = fmap SVGMarkerElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGMarkerElement where
-  makeObject = makeObject . unSVGMarkerElement
-
-instance IsSVGElement SVGMarkerElement
-instance IsElement SVGMarkerElement
-instance IsNode SVGMarkerElement
-instance IsEventTarget SVGMarkerElement
-instance IsGObject SVGMarkerElement where
-  toGObject = GObject . unSVGMarkerElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGMarkerElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGMarkerElement :: IsGObject obj => obj -> JSM SVGMarkerElement
-castToSVGMarkerElement = castTo gTypeSVGMarkerElement "SVGMarkerElement"
-
-gTypeSVGMarkerElement :: JSM GType
-gTypeSVGMarkerElement = GType . Object <$> jsg "SVGMarkerElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGMaskElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement Mozilla SVGMaskElement documentation>
-newtype SVGMaskElement = SVGMaskElement { unSVGMaskElement :: JSVal }
-
-instance PToJSVal SVGMaskElement where
-  pToJSVal = unSVGMaskElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGMaskElement where
-  pFromJSVal = SVGMaskElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGMaskElement where
-  toJSVal = return . unSVGMaskElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGMaskElement where
-  fromJSVal v = fmap SVGMaskElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGMaskElement where
-  makeObject = makeObject . unSVGMaskElement
-
-instance IsSVGElement SVGMaskElement
-instance IsElement SVGMaskElement
-instance IsNode SVGMaskElement
-instance IsEventTarget SVGMaskElement
-instance IsGObject SVGMaskElement where
-  toGObject = GObject . unSVGMaskElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGMaskElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGMaskElement :: IsGObject obj => obj -> JSM SVGMaskElement
-castToSVGMaskElement = castTo gTypeSVGMaskElement "SVGMaskElement"
-
-gTypeSVGMaskElement :: JSM GType
-gTypeSVGMaskElement = GType . Object <$> jsg "SVGMaskElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGMatrix".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix Mozilla SVGMatrix documentation>
-newtype SVGMatrix = SVGMatrix { unSVGMatrix :: JSVal }
-
-instance PToJSVal SVGMatrix where
-  pToJSVal = unSVGMatrix
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGMatrix where
-  pFromJSVal = SVGMatrix
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGMatrix where
-  toJSVal = return . unSVGMatrix
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGMatrix where
-  fromJSVal v = fmap SVGMatrix <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGMatrix where
-  makeObject = makeObject . unSVGMatrix
-
-instance IsGObject SVGMatrix where
-  toGObject = GObject . unSVGMatrix
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGMatrix . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGMatrix :: IsGObject obj => obj -> JSM SVGMatrix
-castToSVGMatrix = castTo gTypeSVGMatrix "SVGMatrix"
-
-gTypeSVGMatrix :: JSM GType
-gTypeSVGMatrix = GType . Object <$> jsg "SVGMatrix"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGMetadataElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMetadataElement Mozilla SVGMetadataElement documentation>
-newtype SVGMetadataElement = SVGMetadataElement { unSVGMetadataElement :: JSVal }
-
-instance PToJSVal SVGMetadataElement where
-  pToJSVal = unSVGMetadataElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGMetadataElement where
-  pFromJSVal = SVGMetadataElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGMetadataElement where
-  toJSVal = return . unSVGMetadataElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGMetadataElement where
-  fromJSVal v = fmap SVGMetadataElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGMetadataElement where
-  makeObject = makeObject . unSVGMetadataElement
-
-instance IsSVGElement SVGMetadataElement
-instance IsElement SVGMetadataElement
-instance IsNode SVGMetadataElement
-instance IsEventTarget SVGMetadataElement
-instance IsGObject SVGMetadataElement where
-  toGObject = GObject . unSVGMetadataElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGMetadataElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGMetadataElement :: IsGObject obj => obj -> JSM SVGMetadataElement
-castToSVGMetadataElement = castTo gTypeSVGMetadataElement "SVGMetadataElement"
-
-gTypeSVGMetadataElement :: JSM GType
-gTypeSVGMetadataElement = GType . Object <$> jsg "SVGMetadataElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGMissingGlyphElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMissingGlyphElement Mozilla SVGMissingGlyphElement documentation>
-newtype SVGMissingGlyphElement = SVGMissingGlyphElement { unSVGMissingGlyphElement :: JSVal }
-
-instance PToJSVal SVGMissingGlyphElement where
-  pToJSVal = unSVGMissingGlyphElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGMissingGlyphElement where
-  pFromJSVal = SVGMissingGlyphElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGMissingGlyphElement where
-  toJSVal = return . unSVGMissingGlyphElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGMissingGlyphElement where
-  fromJSVal v = fmap SVGMissingGlyphElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGMissingGlyphElement where
-  makeObject = makeObject . unSVGMissingGlyphElement
-
-instance IsSVGElement SVGMissingGlyphElement
-instance IsElement SVGMissingGlyphElement
-instance IsNode SVGMissingGlyphElement
-instance IsEventTarget SVGMissingGlyphElement
-instance IsGObject SVGMissingGlyphElement where
-  toGObject = GObject . unSVGMissingGlyphElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGMissingGlyphElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGMissingGlyphElement :: IsGObject obj => obj -> JSM SVGMissingGlyphElement
-castToSVGMissingGlyphElement = castTo gTypeSVGMissingGlyphElement "SVGMissingGlyphElement"
-
-gTypeSVGMissingGlyphElement :: JSM GType
-gTypeSVGMissingGlyphElement = GType . Object <$> jsg "SVGMissingGlyphElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGNumber".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber Mozilla SVGNumber documentation>
-newtype SVGNumber = SVGNumber { unSVGNumber :: JSVal }
-
-instance PToJSVal SVGNumber where
-  pToJSVal = unSVGNumber
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGNumber where
-  pFromJSVal = SVGNumber
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGNumber where
-  toJSVal = return . unSVGNumber
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGNumber where
-  fromJSVal v = fmap SVGNumber <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGNumber where
-  makeObject = makeObject . unSVGNumber
-
-instance IsGObject SVGNumber where
-  toGObject = GObject . unSVGNumber
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGNumber . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGNumber :: IsGObject obj => obj -> JSM SVGNumber
-castToSVGNumber = castTo gTypeSVGNumber "SVGNumber"
-
-gTypeSVGNumber :: JSM GType
-gTypeSVGNumber = GType . Object <$> jsg "SVGNumber"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGNumberList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList Mozilla SVGNumberList documentation>
-newtype SVGNumberList = SVGNumberList { unSVGNumberList :: JSVal }
-
-instance PToJSVal SVGNumberList where
-  pToJSVal = unSVGNumberList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGNumberList where
-  pFromJSVal = SVGNumberList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGNumberList where
-  toJSVal = return . unSVGNumberList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGNumberList where
-  fromJSVal v = fmap SVGNumberList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGNumberList where
-  makeObject = makeObject . unSVGNumberList
-
-instance IsGObject SVGNumberList where
-  toGObject = GObject . unSVGNumberList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGNumberList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGNumberList :: IsGObject obj => obj -> JSM SVGNumberList
-castToSVGNumberList = castTo gTypeSVGNumberList "SVGNumberList"
-
-gTypeSVGNumberList :: JSM GType
-gTypeSVGNumberList = GType . Object <$> jsg "SVGNumberList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPaint".
--- Base interface functions are in:
---
---     * "JSDOM.SVGColor"
---     * "JSDOM.CSSValue"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint Mozilla SVGPaint documentation>
-newtype SVGPaint = SVGPaint { unSVGPaint :: JSVal }
-
-instance PToJSVal SVGPaint where
-  pToJSVal = unSVGPaint
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPaint where
-  pFromJSVal = SVGPaint
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPaint where
-  toJSVal = return . unSVGPaint
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPaint where
-  fromJSVal v = fmap SVGPaint <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPaint where
-  makeObject = makeObject . unSVGPaint
-
-instance IsSVGColor SVGPaint
-instance IsCSSValue SVGPaint
-instance IsGObject SVGPaint where
-  toGObject = GObject . unSVGPaint
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPaint . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPaint :: IsGObject obj => obj -> JSM SVGPaint
-castToSVGPaint = castTo gTypeSVGPaint "SVGPaint"
-
-gTypeSVGPaint :: JSM GType
-gTypeSVGPaint = GType . Object <$> jsg "SVGPaint"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement Mozilla SVGPathElement documentation>
-newtype SVGPathElement = SVGPathElement { unSVGPathElement :: JSVal }
-
-instance PToJSVal SVGPathElement where
-  pToJSVal = unSVGPathElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathElement where
-  pFromJSVal = SVGPathElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathElement where
-  toJSVal = return . unSVGPathElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathElement where
-  fromJSVal v = fmap SVGPathElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathElement where
-  makeObject = makeObject . unSVGPathElement
-
-instance IsSVGGraphicsElement SVGPathElement
-instance IsSVGElement SVGPathElement
-instance IsElement SVGPathElement
-instance IsNode SVGPathElement
-instance IsEventTarget SVGPathElement
-instance IsGObject SVGPathElement where
-  toGObject = GObject . unSVGPathElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathElement :: IsGObject obj => obj -> JSM SVGPathElement
-castToSVGPathElement = castTo gTypeSVGPathElement "SVGPathElement"
-
-gTypeSVGPathElement :: JSM GType
-gTypeSVGPathElement = GType . Object <$> jsg "SVGPathElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSeg".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg Mozilla SVGPathSeg documentation>
-newtype SVGPathSeg = SVGPathSeg { unSVGPathSeg :: JSVal }
-
-instance PToJSVal SVGPathSeg where
-  pToJSVal = unSVGPathSeg
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSeg where
-  pFromJSVal = SVGPathSeg
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSeg where
-  toJSVal = return . unSVGPathSeg
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSeg where
-  fromJSVal v = fmap SVGPathSeg <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSeg where
-  makeObject = makeObject . unSVGPathSeg
-
-class IsGObject o => IsSVGPathSeg o
-toSVGPathSeg :: IsSVGPathSeg o => o -> SVGPathSeg
-toSVGPathSeg = unsafeCastGObject . toGObject
-
-instance IsSVGPathSeg SVGPathSeg
-instance IsGObject SVGPathSeg where
-  toGObject = GObject . unSVGPathSeg
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSeg . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSeg :: IsGObject obj => obj -> JSM SVGPathSeg
-castToSVGPathSeg = castTo gTypeSVGPathSeg "SVGPathSeg"
-
-gTypeSVGPathSeg :: JSM GType
-gTypeSVGPathSeg = GType . Object <$> jsg "SVGPathSeg"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegArcAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs Mozilla SVGPathSegArcAbs documentation>
-newtype SVGPathSegArcAbs = SVGPathSegArcAbs { unSVGPathSegArcAbs :: JSVal }
-
-instance PToJSVal SVGPathSegArcAbs where
-  pToJSVal = unSVGPathSegArcAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegArcAbs where
-  pFromJSVal = SVGPathSegArcAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegArcAbs where
-  toJSVal = return . unSVGPathSegArcAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegArcAbs where
-  fromJSVal v = fmap SVGPathSegArcAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegArcAbs where
-  makeObject = makeObject . unSVGPathSegArcAbs
-
-instance IsSVGPathSeg SVGPathSegArcAbs
-instance IsGObject SVGPathSegArcAbs where
-  toGObject = GObject . unSVGPathSegArcAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegArcAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegArcAbs :: IsGObject obj => obj -> JSM SVGPathSegArcAbs
-castToSVGPathSegArcAbs = castTo gTypeSVGPathSegArcAbs "SVGPathSegArcAbs"
-
-gTypeSVGPathSegArcAbs :: JSM GType
-gTypeSVGPathSegArcAbs = GType . Object <$> jsg "SVGPathSegArcAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegArcRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel Mozilla SVGPathSegArcRel documentation>
-newtype SVGPathSegArcRel = SVGPathSegArcRel { unSVGPathSegArcRel :: JSVal }
-
-instance PToJSVal SVGPathSegArcRel where
-  pToJSVal = unSVGPathSegArcRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegArcRel where
-  pFromJSVal = SVGPathSegArcRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegArcRel where
-  toJSVal = return . unSVGPathSegArcRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegArcRel where
-  fromJSVal v = fmap SVGPathSegArcRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegArcRel where
-  makeObject = makeObject . unSVGPathSegArcRel
-
-instance IsSVGPathSeg SVGPathSegArcRel
-instance IsGObject SVGPathSegArcRel where
-  toGObject = GObject . unSVGPathSegArcRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegArcRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegArcRel :: IsGObject obj => obj -> JSM SVGPathSegArcRel
-castToSVGPathSegArcRel = castTo gTypeSVGPathSegArcRel "SVGPathSegArcRel"
-
-gTypeSVGPathSegArcRel :: JSM GType
-gTypeSVGPathSegArcRel = GType . Object <$> jsg "SVGPathSegArcRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegClosePath".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegClosePath Mozilla SVGPathSegClosePath documentation>
-newtype SVGPathSegClosePath = SVGPathSegClosePath { unSVGPathSegClosePath :: JSVal }
-
-instance PToJSVal SVGPathSegClosePath where
-  pToJSVal = unSVGPathSegClosePath
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegClosePath where
-  pFromJSVal = SVGPathSegClosePath
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegClosePath where
-  toJSVal = return . unSVGPathSegClosePath
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegClosePath where
-  fromJSVal v = fmap SVGPathSegClosePath <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegClosePath where
-  makeObject = makeObject . unSVGPathSegClosePath
-
-instance IsSVGPathSeg SVGPathSegClosePath
-instance IsGObject SVGPathSegClosePath where
-  toGObject = GObject . unSVGPathSegClosePath
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegClosePath . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegClosePath :: IsGObject obj => obj -> JSM SVGPathSegClosePath
-castToSVGPathSegClosePath = castTo gTypeSVGPathSegClosePath "SVGPathSegClosePath"
-
-gTypeSVGPathSegClosePath :: JSM GType
-gTypeSVGPathSegClosePath = GType . Object <$> jsg "SVGPathSegClosePath"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoCubicAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs Mozilla SVGPathSegCurvetoCubicAbs documentation>
-newtype SVGPathSegCurvetoCubicAbs = SVGPathSegCurvetoCubicAbs { unSVGPathSegCurvetoCubicAbs :: JSVal }
-
-instance PToJSVal SVGPathSegCurvetoCubicAbs where
-  pToJSVal = unSVGPathSegCurvetoCubicAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegCurvetoCubicAbs where
-  pFromJSVal = SVGPathSegCurvetoCubicAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegCurvetoCubicAbs where
-  toJSVal = return . unSVGPathSegCurvetoCubicAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegCurvetoCubicAbs where
-  fromJSVal v = fmap SVGPathSegCurvetoCubicAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegCurvetoCubicAbs where
-  makeObject = makeObject . unSVGPathSegCurvetoCubicAbs
-
-instance IsSVGPathSeg SVGPathSegCurvetoCubicAbs
-instance IsGObject SVGPathSegCurvetoCubicAbs where
-  toGObject = GObject . unSVGPathSegCurvetoCubicAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegCurvetoCubicAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegCurvetoCubicAbs :: IsGObject obj => obj -> JSM SVGPathSegCurvetoCubicAbs
-castToSVGPathSegCurvetoCubicAbs = castTo gTypeSVGPathSegCurvetoCubicAbs "SVGPathSegCurvetoCubicAbs"
-
-gTypeSVGPathSegCurvetoCubicAbs :: JSM GType
-gTypeSVGPathSegCurvetoCubicAbs = GType . Object <$> jsg "SVGPathSegCurvetoCubicAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoCubicRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel Mozilla SVGPathSegCurvetoCubicRel documentation>
-newtype SVGPathSegCurvetoCubicRel = SVGPathSegCurvetoCubicRel { unSVGPathSegCurvetoCubicRel :: JSVal }
-
-instance PToJSVal SVGPathSegCurvetoCubicRel where
-  pToJSVal = unSVGPathSegCurvetoCubicRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegCurvetoCubicRel where
-  pFromJSVal = SVGPathSegCurvetoCubicRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegCurvetoCubicRel where
-  toJSVal = return . unSVGPathSegCurvetoCubicRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegCurvetoCubicRel where
-  fromJSVal v = fmap SVGPathSegCurvetoCubicRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegCurvetoCubicRel where
-  makeObject = makeObject . unSVGPathSegCurvetoCubicRel
-
-instance IsSVGPathSeg SVGPathSegCurvetoCubicRel
-instance IsGObject SVGPathSegCurvetoCubicRel where
-  toGObject = GObject . unSVGPathSegCurvetoCubicRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegCurvetoCubicRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegCurvetoCubicRel :: IsGObject obj => obj -> JSM SVGPathSegCurvetoCubicRel
-castToSVGPathSegCurvetoCubicRel = castTo gTypeSVGPathSegCurvetoCubicRel "SVGPathSegCurvetoCubicRel"
-
-gTypeSVGPathSegCurvetoCubicRel :: JSM GType
-gTypeSVGPathSegCurvetoCubicRel = GType . Object <$> jsg "SVGPathSegCurvetoCubicRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoCubicSmoothAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathSegCurvetoCubicSmoothAbs documentation>
-newtype SVGPathSegCurvetoCubicSmoothAbs = SVGPathSegCurvetoCubicSmoothAbs { unSVGPathSegCurvetoCubicSmoothAbs :: JSVal }
-
-instance PToJSVal SVGPathSegCurvetoCubicSmoothAbs where
-  pToJSVal = unSVGPathSegCurvetoCubicSmoothAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegCurvetoCubicSmoothAbs where
-  pFromJSVal = SVGPathSegCurvetoCubicSmoothAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegCurvetoCubicSmoothAbs where
-  toJSVal = return . unSVGPathSegCurvetoCubicSmoothAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegCurvetoCubicSmoothAbs where
-  fromJSVal v = fmap SVGPathSegCurvetoCubicSmoothAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegCurvetoCubicSmoothAbs where
-  makeObject = makeObject . unSVGPathSegCurvetoCubicSmoothAbs
-
-instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothAbs
-instance IsGObject SVGPathSegCurvetoCubicSmoothAbs where
-  toGObject = GObject . unSVGPathSegCurvetoCubicSmoothAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegCurvetoCubicSmoothAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegCurvetoCubicSmoothAbs :: IsGObject obj => obj -> JSM SVGPathSegCurvetoCubicSmoothAbs
-castToSVGPathSegCurvetoCubicSmoothAbs = castTo gTypeSVGPathSegCurvetoCubicSmoothAbs "SVGPathSegCurvetoCubicSmoothAbs"
-
-gTypeSVGPathSegCurvetoCubicSmoothAbs :: JSM GType
-gTypeSVGPathSegCurvetoCubicSmoothAbs = GType . Object <$> jsg "SVGPathSegCurvetoCubicSmoothAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoCubicSmoothRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathSegCurvetoCubicSmoothRel documentation>
-newtype SVGPathSegCurvetoCubicSmoothRel = SVGPathSegCurvetoCubicSmoothRel { unSVGPathSegCurvetoCubicSmoothRel :: JSVal }
-
-instance PToJSVal SVGPathSegCurvetoCubicSmoothRel where
-  pToJSVal = unSVGPathSegCurvetoCubicSmoothRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegCurvetoCubicSmoothRel where
-  pFromJSVal = SVGPathSegCurvetoCubicSmoothRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegCurvetoCubicSmoothRel where
-  toJSVal = return . unSVGPathSegCurvetoCubicSmoothRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegCurvetoCubicSmoothRel where
-  fromJSVal v = fmap SVGPathSegCurvetoCubicSmoothRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegCurvetoCubicSmoothRel where
-  makeObject = makeObject . unSVGPathSegCurvetoCubicSmoothRel
-
-instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothRel
-instance IsGObject SVGPathSegCurvetoCubicSmoothRel where
-  toGObject = GObject . unSVGPathSegCurvetoCubicSmoothRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegCurvetoCubicSmoothRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegCurvetoCubicSmoothRel :: IsGObject obj => obj -> JSM SVGPathSegCurvetoCubicSmoothRel
-castToSVGPathSegCurvetoCubicSmoothRel = castTo gTypeSVGPathSegCurvetoCubicSmoothRel "SVGPathSegCurvetoCubicSmoothRel"
-
-gTypeSVGPathSegCurvetoCubicSmoothRel :: JSM GType
-gTypeSVGPathSegCurvetoCubicSmoothRel = GType . Object <$> jsg "SVGPathSegCurvetoCubicSmoothRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoQuadraticAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs Mozilla SVGPathSegCurvetoQuadraticAbs documentation>
-newtype SVGPathSegCurvetoQuadraticAbs = SVGPathSegCurvetoQuadraticAbs { unSVGPathSegCurvetoQuadraticAbs :: JSVal }
-
-instance PToJSVal SVGPathSegCurvetoQuadraticAbs where
-  pToJSVal = unSVGPathSegCurvetoQuadraticAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegCurvetoQuadraticAbs where
-  pFromJSVal = SVGPathSegCurvetoQuadraticAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegCurvetoQuadraticAbs where
-  toJSVal = return . unSVGPathSegCurvetoQuadraticAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegCurvetoQuadraticAbs where
-  fromJSVal v = fmap SVGPathSegCurvetoQuadraticAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegCurvetoQuadraticAbs where
-  makeObject = makeObject . unSVGPathSegCurvetoQuadraticAbs
-
-instance IsSVGPathSeg SVGPathSegCurvetoQuadraticAbs
-instance IsGObject SVGPathSegCurvetoQuadraticAbs where
-  toGObject = GObject . unSVGPathSegCurvetoQuadraticAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegCurvetoQuadraticAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegCurvetoQuadraticAbs :: IsGObject obj => obj -> JSM SVGPathSegCurvetoQuadraticAbs
-castToSVGPathSegCurvetoQuadraticAbs = castTo gTypeSVGPathSegCurvetoQuadraticAbs "SVGPathSegCurvetoQuadraticAbs"
-
-gTypeSVGPathSegCurvetoQuadraticAbs :: JSM GType
-gTypeSVGPathSegCurvetoQuadraticAbs = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoQuadraticRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel Mozilla SVGPathSegCurvetoQuadraticRel documentation>
-newtype SVGPathSegCurvetoQuadraticRel = SVGPathSegCurvetoQuadraticRel { unSVGPathSegCurvetoQuadraticRel :: JSVal }
-
-instance PToJSVal SVGPathSegCurvetoQuadraticRel where
-  pToJSVal = unSVGPathSegCurvetoQuadraticRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegCurvetoQuadraticRel where
-  pFromJSVal = SVGPathSegCurvetoQuadraticRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegCurvetoQuadraticRel where
-  toJSVal = return . unSVGPathSegCurvetoQuadraticRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegCurvetoQuadraticRel where
-  fromJSVal v = fmap SVGPathSegCurvetoQuadraticRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegCurvetoQuadraticRel where
-  makeObject = makeObject . unSVGPathSegCurvetoQuadraticRel
-
-instance IsSVGPathSeg SVGPathSegCurvetoQuadraticRel
-instance IsGObject SVGPathSegCurvetoQuadraticRel where
-  toGObject = GObject . unSVGPathSegCurvetoQuadraticRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegCurvetoQuadraticRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegCurvetoQuadraticRel :: IsGObject obj => obj -> JSM SVGPathSegCurvetoQuadraticRel
-castToSVGPathSegCurvetoQuadraticRel = castTo gTypeSVGPathSegCurvetoQuadraticRel "SVGPathSegCurvetoQuadraticRel"
-
-gTypeSVGPathSegCurvetoQuadraticRel :: JSM GType
-gTypeSVGPathSegCurvetoQuadraticRel = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoQuadraticSmoothAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathSegCurvetoQuadraticSmoothAbs documentation>
-newtype SVGPathSegCurvetoQuadraticSmoothAbs = SVGPathSegCurvetoQuadraticSmoothAbs { unSVGPathSegCurvetoQuadraticSmoothAbs :: JSVal }
-
-instance PToJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
-  pToJSVal = unSVGPathSegCurvetoQuadraticSmoothAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
-  pFromJSVal = SVGPathSegCurvetoQuadraticSmoothAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
-  toJSVal = return . unSVGPathSegCurvetoQuadraticSmoothAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
-  fromJSVal v = fmap SVGPathSegCurvetoQuadraticSmoothAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegCurvetoQuadraticSmoothAbs where
-  makeObject = makeObject . unSVGPathSegCurvetoQuadraticSmoothAbs
-
-instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothAbs
-instance IsGObject SVGPathSegCurvetoQuadraticSmoothAbs where
-  toGObject = GObject . unSVGPathSegCurvetoQuadraticSmoothAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegCurvetoQuadraticSmoothAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegCurvetoQuadraticSmoothAbs :: IsGObject obj => obj -> JSM SVGPathSegCurvetoQuadraticSmoothAbs
-castToSVGPathSegCurvetoQuadraticSmoothAbs = castTo gTypeSVGPathSegCurvetoQuadraticSmoothAbs "SVGPathSegCurvetoQuadraticSmoothAbs"
-
-gTypeSVGPathSegCurvetoQuadraticSmoothAbs :: JSM GType
-gTypeSVGPathSegCurvetoQuadraticSmoothAbs = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticSmoothAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoQuadraticSmoothRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathSegCurvetoQuadraticSmoothRel documentation>
-newtype SVGPathSegCurvetoQuadraticSmoothRel = SVGPathSegCurvetoQuadraticSmoothRel { unSVGPathSegCurvetoQuadraticSmoothRel :: JSVal }
-
-instance PToJSVal SVGPathSegCurvetoQuadraticSmoothRel where
-  pToJSVal = unSVGPathSegCurvetoQuadraticSmoothRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegCurvetoQuadraticSmoothRel where
-  pFromJSVal = SVGPathSegCurvetoQuadraticSmoothRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegCurvetoQuadraticSmoothRel where
-  toJSVal = return . unSVGPathSegCurvetoQuadraticSmoothRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegCurvetoQuadraticSmoothRel where
-  fromJSVal v = fmap SVGPathSegCurvetoQuadraticSmoothRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegCurvetoQuadraticSmoothRel where
-  makeObject = makeObject . unSVGPathSegCurvetoQuadraticSmoothRel
-
-instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothRel
-instance IsGObject SVGPathSegCurvetoQuadraticSmoothRel where
-  toGObject = GObject . unSVGPathSegCurvetoQuadraticSmoothRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegCurvetoQuadraticSmoothRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegCurvetoQuadraticSmoothRel :: IsGObject obj => obj -> JSM SVGPathSegCurvetoQuadraticSmoothRel
-castToSVGPathSegCurvetoQuadraticSmoothRel = castTo gTypeSVGPathSegCurvetoQuadraticSmoothRel "SVGPathSegCurvetoQuadraticSmoothRel"
-
-gTypeSVGPathSegCurvetoQuadraticSmoothRel :: JSM GType
-gTypeSVGPathSegCurvetoQuadraticSmoothRel = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticSmoothRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs Mozilla SVGPathSegLinetoAbs documentation>
-newtype SVGPathSegLinetoAbs = SVGPathSegLinetoAbs { unSVGPathSegLinetoAbs :: JSVal }
-
-instance PToJSVal SVGPathSegLinetoAbs where
-  pToJSVal = unSVGPathSegLinetoAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegLinetoAbs where
-  pFromJSVal = SVGPathSegLinetoAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegLinetoAbs where
-  toJSVal = return . unSVGPathSegLinetoAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegLinetoAbs where
-  fromJSVal v = fmap SVGPathSegLinetoAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegLinetoAbs where
-  makeObject = makeObject . unSVGPathSegLinetoAbs
-
-instance IsSVGPathSeg SVGPathSegLinetoAbs
-instance IsGObject SVGPathSegLinetoAbs where
-  toGObject = GObject . unSVGPathSegLinetoAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegLinetoAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegLinetoAbs :: IsGObject obj => obj -> JSM SVGPathSegLinetoAbs
-castToSVGPathSegLinetoAbs = castTo gTypeSVGPathSegLinetoAbs "SVGPathSegLinetoAbs"
-
-gTypeSVGPathSegLinetoAbs :: JSM GType
-gTypeSVGPathSegLinetoAbs = GType . Object <$> jsg "SVGPathSegLinetoAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoHorizontalAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs Mozilla SVGPathSegLinetoHorizontalAbs documentation>
-newtype SVGPathSegLinetoHorizontalAbs = SVGPathSegLinetoHorizontalAbs { unSVGPathSegLinetoHorizontalAbs :: JSVal }
-
-instance PToJSVal SVGPathSegLinetoHorizontalAbs where
-  pToJSVal = unSVGPathSegLinetoHorizontalAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegLinetoHorizontalAbs where
-  pFromJSVal = SVGPathSegLinetoHorizontalAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegLinetoHorizontalAbs where
-  toJSVal = return . unSVGPathSegLinetoHorizontalAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegLinetoHorizontalAbs where
-  fromJSVal v = fmap SVGPathSegLinetoHorizontalAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegLinetoHorizontalAbs where
-  makeObject = makeObject . unSVGPathSegLinetoHorizontalAbs
-
-instance IsSVGPathSeg SVGPathSegLinetoHorizontalAbs
-instance IsGObject SVGPathSegLinetoHorizontalAbs where
-  toGObject = GObject . unSVGPathSegLinetoHorizontalAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegLinetoHorizontalAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegLinetoHorizontalAbs :: IsGObject obj => obj -> JSM SVGPathSegLinetoHorizontalAbs
-castToSVGPathSegLinetoHorizontalAbs = castTo gTypeSVGPathSegLinetoHorizontalAbs "SVGPathSegLinetoHorizontalAbs"
-
-gTypeSVGPathSegLinetoHorizontalAbs :: JSM GType
-gTypeSVGPathSegLinetoHorizontalAbs = GType . Object <$> jsg "SVGPathSegLinetoHorizontalAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoHorizontalRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel Mozilla SVGPathSegLinetoHorizontalRel documentation>
-newtype SVGPathSegLinetoHorizontalRel = SVGPathSegLinetoHorizontalRel { unSVGPathSegLinetoHorizontalRel :: JSVal }
-
-instance PToJSVal SVGPathSegLinetoHorizontalRel where
-  pToJSVal = unSVGPathSegLinetoHorizontalRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegLinetoHorizontalRel where
-  pFromJSVal = SVGPathSegLinetoHorizontalRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegLinetoHorizontalRel where
-  toJSVal = return . unSVGPathSegLinetoHorizontalRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegLinetoHorizontalRel where
-  fromJSVal v = fmap SVGPathSegLinetoHorizontalRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegLinetoHorizontalRel where
-  makeObject = makeObject . unSVGPathSegLinetoHorizontalRel
-
-instance IsSVGPathSeg SVGPathSegLinetoHorizontalRel
-instance IsGObject SVGPathSegLinetoHorizontalRel where
-  toGObject = GObject . unSVGPathSegLinetoHorizontalRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegLinetoHorizontalRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegLinetoHorizontalRel :: IsGObject obj => obj -> JSM SVGPathSegLinetoHorizontalRel
-castToSVGPathSegLinetoHorizontalRel = castTo gTypeSVGPathSegLinetoHorizontalRel "SVGPathSegLinetoHorizontalRel"
-
-gTypeSVGPathSegLinetoHorizontalRel :: JSM GType
-gTypeSVGPathSegLinetoHorizontalRel = GType . Object <$> jsg "SVGPathSegLinetoHorizontalRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel Mozilla SVGPathSegLinetoRel documentation>
-newtype SVGPathSegLinetoRel = SVGPathSegLinetoRel { unSVGPathSegLinetoRel :: JSVal }
-
-instance PToJSVal SVGPathSegLinetoRel where
-  pToJSVal = unSVGPathSegLinetoRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegLinetoRel where
-  pFromJSVal = SVGPathSegLinetoRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegLinetoRel where
-  toJSVal = return . unSVGPathSegLinetoRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegLinetoRel where
-  fromJSVal v = fmap SVGPathSegLinetoRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegLinetoRel where
-  makeObject = makeObject . unSVGPathSegLinetoRel
-
-instance IsSVGPathSeg SVGPathSegLinetoRel
-instance IsGObject SVGPathSegLinetoRel where
-  toGObject = GObject . unSVGPathSegLinetoRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegLinetoRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegLinetoRel :: IsGObject obj => obj -> JSM SVGPathSegLinetoRel
-castToSVGPathSegLinetoRel = castTo gTypeSVGPathSegLinetoRel "SVGPathSegLinetoRel"
-
-gTypeSVGPathSegLinetoRel :: JSM GType
-gTypeSVGPathSegLinetoRel = GType . Object <$> jsg "SVGPathSegLinetoRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoVerticalAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs Mozilla SVGPathSegLinetoVerticalAbs documentation>
-newtype SVGPathSegLinetoVerticalAbs = SVGPathSegLinetoVerticalAbs { unSVGPathSegLinetoVerticalAbs :: JSVal }
-
-instance PToJSVal SVGPathSegLinetoVerticalAbs where
-  pToJSVal = unSVGPathSegLinetoVerticalAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegLinetoVerticalAbs where
-  pFromJSVal = SVGPathSegLinetoVerticalAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegLinetoVerticalAbs where
-  toJSVal = return . unSVGPathSegLinetoVerticalAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegLinetoVerticalAbs where
-  fromJSVal v = fmap SVGPathSegLinetoVerticalAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegLinetoVerticalAbs where
-  makeObject = makeObject . unSVGPathSegLinetoVerticalAbs
-
-instance IsSVGPathSeg SVGPathSegLinetoVerticalAbs
-instance IsGObject SVGPathSegLinetoVerticalAbs where
-  toGObject = GObject . unSVGPathSegLinetoVerticalAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegLinetoVerticalAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegLinetoVerticalAbs :: IsGObject obj => obj -> JSM SVGPathSegLinetoVerticalAbs
-castToSVGPathSegLinetoVerticalAbs = castTo gTypeSVGPathSegLinetoVerticalAbs "SVGPathSegLinetoVerticalAbs"
-
-gTypeSVGPathSegLinetoVerticalAbs :: JSM GType
-gTypeSVGPathSegLinetoVerticalAbs = GType . Object <$> jsg "SVGPathSegLinetoVerticalAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoVerticalRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel Mozilla SVGPathSegLinetoVerticalRel documentation>
-newtype SVGPathSegLinetoVerticalRel = SVGPathSegLinetoVerticalRel { unSVGPathSegLinetoVerticalRel :: JSVal }
-
-instance PToJSVal SVGPathSegLinetoVerticalRel where
-  pToJSVal = unSVGPathSegLinetoVerticalRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegLinetoVerticalRel where
-  pFromJSVal = SVGPathSegLinetoVerticalRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegLinetoVerticalRel where
-  toJSVal = return . unSVGPathSegLinetoVerticalRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegLinetoVerticalRel where
-  fromJSVal v = fmap SVGPathSegLinetoVerticalRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegLinetoVerticalRel where
-  makeObject = makeObject . unSVGPathSegLinetoVerticalRel
-
-instance IsSVGPathSeg SVGPathSegLinetoVerticalRel
-instance IsGObject SVGPathSegLinetoVerticalRel where
-  toGObject = GObject . unSVGPathSegLinetoVerticalRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegLinetoVerticalRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegLinetoVerticalRel :: IsGObject obj => obj -> JSM SVGPathSegLinetoVerticalRel
-castToSVGPathSegLinetoVerticalRel = castTo gTypeSVGPathSegLinetoVerticalRel "SVGPathSegLinetoVerticalRel"
-
-gTypeSVGPathSegLinetoVerticalRel :: JSM GType
-gTypeSVGPathSegLinetoVerticalRel = GType . Object <$> jsg "SVGPathSegLinetoVerticalRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList Mozilla SVGPathSegList documentation>
-newtype SVGPathSegList = SVGPathSegList { unSVGPathSegList :: JSVal }
-
-instance PToJSVal SVGPathSegList where
-  pToJSVal = unSVGPathSegList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegList where
-  pFromJSVal = SVGPathSegList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegList where
-  toJSVal = return . unSVGPathSegList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegList where
-  fromJSVal v = fmap SVGPathSegList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegList where
-  makeObject = makeObject . unSVGPathSegList
-
-instance IsGObject SVGPathSegList where
-  toGObject = GObject . unSVGPathSegList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegList :: IsGObject obj => obj -> JSM SVGPathSegList
-castToSVGPathSegList = castTo gTypeSVGPathSegList "SVGPathSegList"
-
-gTypeSVGPathSegList :: JSM GType
-gTypeSVGPathSegList = GType . Object <$> jsg "SVGPathSegList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegMovetoAbs".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs Mozilla SVGPathSegMovetoAbs documentation>
-newtype SVGPathSegMovetoAbs = SVGPathSegMovetoAbs { unSVGPathSegMovetoAbs :: JSVal }
-
-instance PToJSVal SVGPathSegMovetoAbs where
-  pToJSVal = unSVGPathSegMovetoAbs
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegMovetoAbs where
-  pFromJSVal = SVGPathSegMovetoAbs
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegMovetoAbs where
-  toJSVal = return . unSVGPathSegMovetoAbs
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegMovetoAbs where
-  fromJSVal v = fmap SVGPathSegMovetoAbs <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegMovetoAbs where
-  makeObject = makeObject . unSVGPathSegMovetoAbs
-
-instance IsSVGPathSeg SVGPathSegMovetoAbs
-instance IsGObject SVGPathSegMovetoAbs where
-  toGObject = GObject . unSVGPathSegMovetoAbs
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegMovetoAbs . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegMovetoAbs :: IsGObject obj => obj -> JSM SVGPathSegMovetoAbs
-castToSVGPathSegMovetoAbs = castTo gTypeSVGPathSegMovetoAbs "SVGPathSegMovetoAbs"
-
-gTypeSVGPathSegMovetoAbs :: JSM GType
-gTypeSVGPathSegMovetoAbs = GType . Object <$> jsg "SVGPathSegMovetoAbs"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPathSegMovetoRel".
--- Base interface functions are in:
---
---     * "JSDOM.SVGPathSeg"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel Mozilla SVGPathSegMovetoRel documentation>
-newtype SVGPathSegMovetoRel = SVGPathSegMovetoRel { unSVGPathSegMovetoRel :: JSVal }
-
-instance PToJSVal SVGPathSegMovetoRel where
-  pToJSVal = unSVGPathSegMovetoRel
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPathSegMovetoRel where
-  pFromJSVal = SVGPathSegMovetoRel
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPathSegMovetoRel where
-  toJSVal = return . unSVGPathSegMovetoRel
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPathSegMovetoRel where
-  fromJSVal v = fmap SVGPathSegMovetoRel <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPathSegMovetoRel where
-  makeObject = makeObject . unSVGPathSegMovetoRel
-
-instance IsSVGPathSeg SVGPathSegMovetoRel
-instance IsGObject SVGPathSegMovetoRel where
-  toGObject = GObject . unSVGPathSegMovetoRel
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPathSegMovetoRel . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPathSegMovetoRel :: IsGObject obj => obj -> JSM SVGPathSegMovetoRel
-castToSVGPathSegMovetoRel = castTo gTypeSVGPathSegMovetoRel "SVGPathSegMovetoRel"
-
-gTypeSVGPathSegMovetoRel :: JSM GType
-gTypeSVGPathSegMovetoRel = GType . Object <$> jsg "SVGPathSegMovetoRel"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPatternElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement Mozilla SVGPatternElement documentation>
-newtype SVGPatternElement = SVGPatternElement { unSVGPatternElement :: JSVal }
-
-instance PToJSVal SVGPatternElement where
-  pToJSVal = unSVGPatternElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPatternElement where
-  pFromJSVal = SVGPatternElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPatternElement where
-  toJSVal = return . unSVGPatternElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPatternElement where
-  fromJSVal v = fmap SVGPatternElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPatternElement where
-  makeObject = makeObject . unSVGPatternElement
-
-instance IsSVGElement SVGPatternElement
-instance IsElement SVGPatternElement
-instance IsNode SVGPatternElement
-instance IsEventTarget SVGPatternElement
-instance IsGObject SVGPatternElement where
-  toGObject = GObject . unSVGPatternElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPatternElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPatternElement :: IsGObject obj => obj -> JSM SVGPatternElement
-castToSVGPatternElement = castTo gTypeSVGPatternElement "SVGPatternElement"
-
-gTypeSVGPatternElement :: JSM GType
-gTypeSVGPatternElement = GType . Object <$> jsg "SVGPatternElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPoint".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint Mozilla SVGPoint documentation>
-newtype SVGPoint = SVGPoint { unSVGPoint :: JSVal }
-
-instance PToJSVal SVGPoint where
-  pToJSVal = unSVGPoint
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPoint where
-  pFromJSVal = SVGPoint
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPoint where
-  toJSVal = return . unSVGPoint
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPoint where
-  fromJSVal v = fmap SVGPoint <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPoint where
-  makeObject = makeObject . unSVGPoint
-
-instance IsGObject SVGPoint where
-  toGObject = GObject . unSVGPoint
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPoint . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPoint :: IsGObject obj => obj -> JSM SVGPoint
-castToSVGPoint = castTo gTypeSVGPoint "SVGPoint"
-
-gTypeSVGPoint :: JSM GType
-gTypeSVGPoint = GType . Object <$> jsg "SVGPoint"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPointList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList Mozilla SVGPointList documentation>
-newtype SVGPointList = SVGPointList { unSVGPointList :: JSVal }
-
-instance PToJSVal SVGPointList where
-  pToJSVal = unSVGPointList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPointList where
-  pFromJSVal = SVGPointList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPointList where
-  toJSVal = return . unSVGPointList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPointList where
-  fromJSVal v = fmap SVGPointList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPointList where
-  makeObject = makeObject . unSVGPointList
-
-instance IsGObject SVGPointList where
-  toGObject = GObject . unSVGPointList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPointList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPointList :: IsGObject obj => obj -> JSM SVGPointList
-castToSVGPointList = castTo gTypeSVGPointList "SVGPointList"
-
-gTypeSVGPointList :: JSM GType
-gTypeSVGPointList = GType . Object <$> jsg "SVGPointList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPolygonElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement Mozilla SVGPolygonElement documentation>
-newtype SVGPolygonElement = SVGPolygonElement { unSVGPolygonElement :: JSVal }
-
-instance PToJSVal SVGPolygonElement where
-  pToJSVal = unSVGPolygonElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPolygonElement where
-  pFromJSVal = SVGPolygonElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPolygonElement where
-  toJSVal = return . unSVGPolygonElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPolygonElement where
-  fromJSVal v = fmap SVGPolygonElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPolygonElement where
-  makeObject = makeObject . unSVGPolygonElement
-
-instance IsSVGGraphicsElement SVGPolygonElement
-instance IsSVGElement SVGPolygonElement
-instance IsElement SVGPolygonElement
-instance IsNode SVGPolygonElement
-instance IsEventTarget SVGPolygonElement
-instance IsGObject SVGPolygonElement where
-  toGObject = GObject . unSVGPolygonElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPolygonElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPolygonElement :: IsGObject obj => obj -> JSM SVGPolygonElement
-castToSVGPolygonElement = castTo gTypeSVGPolygonElement "SVGPolygonElement"
-
-gTypeSVGPolygonElement :: JSM GType
-gTypeSVGPolygonElement = GType . Object <$> jsg "SVGPolygonElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPolylineElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement Mozilla SVGPolylineElement documentation>
-newtype SVGPolylineElement = SVGPolylineElement { unSVGPolylineElement :: JSVal }
-
-instance PToJSVal SVGPolylineElement where
-  pToJSVal = unSVGPolylineElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPolylineElement where
-  pFromJSVal = SVGPolylineElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPolylineElement where
-  toJSVal = return . unSVGPolylineElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPolylineElement where
-  fromJSVal v = fmap SVGPolylineElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPolylineElement where
-  makeObject = makeObject . unSVGPolylineElement
-
-instance IsSVGGraphicsElement SVGPolylineElement
-instance IsSVGElement SVGPolylineElement
-instance IsElement SVGPolylineElement
-instance IsNode SVGPolylineElement
-instance IsEventTarget SVGPolylineElement
-instance IsGObject SVGPolylineElement where
-  toGObject = GObject . unSVGPolylineElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPolylineElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPolylineElement :: IsGObject obj => obj -> JSM SVGPolylineElement
-castToSVGPolylineElement = castTo gTypeSVGPolylineElement "SVGPolylineElement"
-
-gTypeSVGPolylineElement :: JSM GType
-gTypeSVGPolylineElement = GType . Object <$> jsg "SVGPolylineElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGPreserveAspectRatio".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio Mozilla SVGPreserveAspectRatio documentation>
-newtype SVGPreserveAspectRatio = SVGPreserveAspectRatio { unSVGPreserveAspectRatio :: JSVal }
-
-instance PToJSVal SVGPreserveAspectRatio where
-  pToJSVal = unSVGPreserveAspectRatio
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGPreserveAspectRatio where
-  pFromJSVal = SVGPreserveAspectRatio
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGPreserveAspectRatio where
-  toJSVal = return . unSVGPreserveAspectRatio
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGPreserveAspectRatio where
-  fromJSVal v = fmap SVGPreserveAspectRatio <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGPreserveAspectRatio where
-  makeObject = makeObject . unSVGPreserveAspectRatio
-
-instance IsGObject SVGPreserveAspectRatio where
-  toGObject = GObject . unSVGPreserveAspectRatio
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGPreserveAspectRatio . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGPreserveAspectRatio :: IsGObject obj => obj -> JSM SVGPreserveAspectRatio
-castToSVGPreserveAspectRatio = castTo gTypeSVGPreserveAspectRatio "SVGPreserveAspectRatio"
-
-gTypeSVGPreserveAspectRatio :: JSM GType
-gTypeSVGPreserveAspectRatio = GType . Object <$> jsg "SVGPreserveAspectRatio"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGRadialGradientElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGradientElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement Mozilla SVGRadialGradientElement documentation>
-newtype SVGRadialGradientElement = SVGRadialGradientElement { unSVGRadialGradientElement :: JSVal }
-
-instance PToJSVal SVGRadialGradientElement where
-  pToJSVal = unSVGRadialGradientElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGRadialGradientElement where
-  pFromJSVal = SVGRadialGradientElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGRadialGradientElement where
-  toJSVal = return . unSVGRadialGradientElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGRadialGradientElement where
-  fromJSVal v = fmap SVGRadialGradientElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGRadialGradientElement where
-  makeObject = makeObject . unSVGRadialGradientElement
-
-instance IsSVGGradientElement SVGRadialGradientElement
-instance IsSVGElement SVGRadialGradientElement
-instance IsElement SVGRadialGradientElement
-instance IsNode SVGRadialGradientElement
-instance IsEventTarget SVGRadialGradientElement
-instance IsGObject SVGRadialGradientElement where
-  toGObject = GObject . unSVGRadialGradientElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGRadialGradientElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGRadialGradientElement :: IsGObject obj => obj -> JSM SVGRadialGradientElement
-castToSVGRadialGradientElement = castTo gTypeSVGRadialGradientElement "SVGRadialGradientElement"
-
-gTypeSVGRadialGradientElement :: JSM GType
-gTypeSVGRadialGradientElement = GType . Object <$> jsg "SVGRadialGradientElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGRect".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect Mozilla SVGRect documentation>
-newtype SVGRect = SVGRect { unSVGRect :: JSVal }
-
-instance PToJSVal SVGRect where
-  pToJSVal = unSVGRect
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGRect where
-  pFromJSVal = SVGRect
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGRect where
-  toJSVal = return . unSVGRect
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGRect where
-  fromJSVal v = fmap SVGRect <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGRect where
-  makeObject = makeObject . unSVGRect
-
-instance IsGObject SVGRect where
-  toGObject = GObject . unSVGRect
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGRect . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGRect :: IsGObject obj => obj -> JSM SVGRect
-castToSVGRect = castTo gTypeSVGRect "SVGRect"
-
-gTypeSVGRect :: JSM GType
-gTypeSVGRect = GType . Object <$> jsg "SVGRect"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGRectElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement Mozilla SVGRectElement documentation>
-newtype SVGRectElement = SVGRectElement { unSVGRectElement :: JSVal }
-
-instance PToJSVal SVGRectElement where
-  pToJSVal = unSVGRectElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGRectElement where
-  pFromJSVal = SVGRectElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGRectElement where
-  toJSVal = return . unSVGRectElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGRectElement where
-  fromJSVal v = fmap SVGRectElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGRectElement where
-  makeObject = makeObject . unSVGRectElement
-
-instance IsSVGGraphicsElement SVGRectElement
-instance IsSVGElement SVGRectElement
-instance IsElement SVGRectElement
-instance IsNode SVGRectElement
-instance IsEventTarget SVGRectElement
-instance IsGObject SVGRectElement where
-  toGObject = GObject . unSVGRectElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGRectElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGRectElement :: IsGObject obj => obj -> JSM SVGRectElement
-castToSVGRectElement = castTo gTypeSVGRectElement "SVGRectElement"
-
-gTypeSVGRectElement :: JSM GType
-gTypeSVGRectElement = GType . Object <$> jsg "SVGRectElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGRenderingIntent".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRenderingIntent Mozilla SVGRenderingIntent documentation>
-newtype SVGRenderingIntent = SVGRenderingIntent { unSVGRenderingIntent :: JSVal }
-
-instance PToJSVal SVGRenderingIntent where
-  pToJSVal = unSVGRenderingIntent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGRenderingIntent where
-  pFromJSVal = SVGRenderingIntent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGRenderingIntent where
-  toJSVal = return . unSVGRenderingIntent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGRenderingIntent where
-  fromJSVal v = fmap SVGRenderingIntent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGRenderingIntent where
-  makeObject = makeObject . unSVGRenderingIntent
-
-instance IsGObject SVGRenderingIntent where
-  toGObject = GObject . unSVGRenderingIntent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGRenderingIntent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGRenderingIntent :: IsGObject obj => obj -> JSM SVGRenderingIntent
-castToSVGRenderingIntent = castTo gTypeSVGRenderingIntent "SVGRenderingIntent"
-
-gTypeSVGRenderingIntent :: JSM GType
-gTypeSVGRenderingIntent = GType . Object <$> jsg "SVGRenderingIntent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGSVGElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement Mozilla SVGSVGElement documentation>
-newtype SVGSVGElement = SVGSVGElement { unSVGSVGElement :: JSVal }
-
-instance PToJSVal SVGSVGElement where
-  pToJSVal = unSVGSVGElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGSVGElement where
-  pFromJSVal = SVGSVGElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGSVGElement where
-  toJSVal = return . unSVGSVGElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGSVGElement where
-  fromJSVal v = fmap SVGSVGElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGSVGElement where
-  makeObject = makeObject . unSVGSVGElement
-
-instance IsSVGGraphicsElement SVGSVGElement
-instance IsSVGElement SVGSVGElement
-instance IsElement SVGSVGElement
-instance IsNode SVGSVGElement
-instance IsEventTarget SVGSVGElement
-instance IsGObject SVGSVGElement where
-  toGObject = GObject . unSVGSVGElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGSVGElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGSVGElement :: IsGObject obj => obj -> JSM SVGSVGElement
-castToSVGSVGElement = castTo gTypeSVGSVGElement "SVGSVGElement"
-
-gTypeSVGSVGElement :: JSM GType
-gTypeSVGSVGElement = GType . Object <$> jsg "SVGSVGElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGScriptElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement Mozilla SVGScriptElement documentation>
-newtype SVGScriptElement = SVGScriptElement { unSVGScriptElement :: JSVal }
-
-instance PToJSVal SVGScriptElement where
-  pToJSVal = unSVGScriptElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGScriptElement where
-  pFromJSVal = SVGScriptElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGScriptElement where
-  toJSVal = return . unSVGScriptElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGScriptElement where
-  fromJSVal v = fmap SVGScriptElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGScriptElement where
-  makeObject = makeObject . unSVGScriptElement
-
-instance IsSVGElement SVGScriptElement
-instance IsElement SVGScriptElement
-instance IsNode SVGScriptElement
-instance IsEventTarget SVGScriptElement
-instance IsGObject SVGScriptElement where
-  toGObject = GObject . unSVGScriptElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGScriptElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGScriptElement :: IsGObject obj => obj -> JSM SVGScriptElement
-castToSVGScriptElement = castTo gTypeSVGScriptElement "SVGScriptElement"
-
-gTypeSVGScriptElement :: JSM GType
-gTypeSVGScriptElement = GType . Object <$> jsg "SVGScriptElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGSetElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGAnimationElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSetElement Mozilla SVGSetElement documentation>
-newtype SVGSetElement = SVGSetElement { unSVGSetElement :: JSVal }
-
-instance PToJSVal SVGSetElement where
-  pToJSVal = unSVGSetElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGSetElement where
-  pFromJSVal = SVGSetElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGSetElement where
-  toJSVal = return . unSVGSetElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGSetElement where
-  fromJSVal v = fmap SVGSetElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGSetElement where
-  makeObject = makeObject . unSVGSetElement
-
-instance IsSVGAnimationElement SVGSetElement
-instance IsSVGElement SVGSetElement
-instance IsElement SVGSetElement
-instance IsNode SVGSetElement
-instance IsEventTarget SVGSetElement
-instance IsGObject SVGSetElement where
-  toGObject = GObject . unSVGSetElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGSetElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGSetElement :: IsGObject obj => obj -> JSM SVGSetElement
-castToSVGSetElement = castTo gTypeSVGSetElement "SVGSetElement"
-
-gTypeSVGSetElement :: JSM GType
-gTypeSVGSetElement = GType . Object <$> jsg "SVGSetElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGStopElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement Mozilla SVGStopElement documentation>
-newtype SVGStopElement = SVGStopElement { unSVGStopElement :: JSVal }
-
-instance PToJSVal SVGStopElement where
-  pToJSVal = unSVGStopElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGStopElement where
-  pFromJSVal = SVGStopElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGStopElement where
-  toJSVal = return . unSVGStopElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGStopElement where
-  fromJSVal v = fmap SVGStopElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGStopElement where
-  makeObject = makeObject . unSVGStopElement
-
-instance IsSVGElement SVGStopElement
-instance IsElement SVGStopElement
-instance IsNode SVGStopElement
-instance IsEventTarget SVGStopElement
-instance IsGObject SVGStopElement where
-  toGObject = GObject . unSVGStopElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGStopElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGStopElement :: IsGObject obj => obj -> JSM SVGStopElement
-castToSVGStopElement = castTo gTypeSVGStopElement "SVGStopElement"
-
-gTypeSVGStopElement :: JSM GType
-gTypeSVGStopElement = GType . Object <$> jsg "SVGStopElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGStringList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList Mozilla SVGStringList documentation>
-newtype SVGStringList = SVGStringList { unSVGStringList :: JSVal }
-
-instance PToJSVal SVGStringList where
-  pToJSVal = unSVGStringList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGStringList where
-  pFromJSVal = SVGStringList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGStringList where
-  toJSVal = return . unSVGStringList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGStringList where
-  fromJSVal v = fmap SVGStringList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGStringList where
-  makeObject = makeObject . unSVGStringList
-
-instance IsGObject SVGStringList where
-  toGObject = GObject . unSVGStringList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGStringList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGStringList :: IsGObject obj => obj -> JSM SVGStringList
-castToSVGStringList = castTo gTypeSVGStringList "SVGStringList"
-
-gTypeSVGStringList :: JSM GType
-gTypeSVGStringList = GType . Object <$> jsg "SVGStringList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGStyleElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement Mozilla SVGStyleElement documentation>
-newtype SVGStyleElement = SVGStyleElement { unSVGStyleElement :: JSVal }
-
-instance PToJSVal SVGStyleElement where
-  pToJSVal = unSVGStyleElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGStyleElement where
-  pFromJSVal = SVGStyleElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGStyleElement where
-  toJSVal = return . unSVGStyleElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGStyleElement where
-  fromJSVal v = fmap SVGStyleElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGStyleElement where
-  makeObject = makeObject . unSVGStyleElement
-
-instance IsSVGElement SVGStyleElement
-instance IsElement SVGStyleElement
-instance IsNode SVGStyleElement
-instance IsEventTarget SVGStyleElement
-instance IsGObject SVGStyleElement where
-  toGObject = GObject . unSVGStyleElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGStyleElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGStyleElement :: IsGObject obj => obj -> JSM SVGStyleElement
-castToSVGStyleElement = castTo gTypeSVGStyleElement "SVGStyleElement"
-
-gTypeSVGStyleElement :: JSM GType
-gTypeSVGStyleElement = GType . Object <$> jsg "SVGStyleElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGSwitchElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSwitchElement Mozilla SVGSwitchElement documentation>
-newtype SVGSwitchElement = SVGSwitchElement { unSVGSwitchElement :: JSVal }
-
-instance PToJSVal SVGSwitchElement where
-  pToJSVal = unSVGSwitchElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGSwitchElement where
-  pFromJSVal = SVGSwitchElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGSwitchElement where
-  toJSVal = return . unSVGSwitchElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGSwitchElement where
-  fromJSVal v = fmap SVGSwitchElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGSwitchElement where
-  makeObject = makeObject . unSVGSwitchElement
-
-instance IsSVGGraphicsElement SVGSwitchElement
-instance IsSVGElement SVGSwitchElement
-instance IsElement SVGSwitchElement
-instance IsNode SVGSwitchElement
-instance IsEventTarget SVGSwitchElement
-instance IsGObject SVGSwitchElement where
-  toGObject = GObject . unSVGSwitchElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGSwitchElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGSwitchElement :: IsGObject obj => obj -> JSM SVGSwitchElement
-castToSVGSwitchElement = castTo gTypeSVGSwitchElement "SVGSwitchElement"
-
-gTypeSVGSwitchElement :: JSM GType
-gTypeSVGSwitchElement = GType . Object <$> jsg "SVGSwitchElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGSymbolElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSymbolElement Mozilla SVGSymbolElement documentation>
-newtype SVGSymbolElement = SVGSymbolElement { unSVGSymbolElement :: JSVal }
-
-instance PToJSVal SVGSymbolElement where
-  pToJSVal = unSVGSymbolElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGSymbolElement where
-  pFromJSVal = SVGSymbolElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGSymbolElement where
-  toJSVal = return . unSVGSymbolElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGSymbolElement where
-  fromJSVal v = fmap SVGSymbolElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGSymbolElement where
-  makeObject = makeObject . unSVGSymbolElement
-
-instance IsSVGElement SVGSymbolElement
-instance IsElement SVGSymbolElement
-instance IsNode SVGSymbolElement
-instance IsEventTarget SVGSymbolElement
-instance IsGObject SVGSymbolElement where
-  toGObject = GObject . unSVGSymbolElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGSymbolElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGSymbolElement :: IsGObject obj => obj -> JSM SVGSymbolElement
-castToSVGSymbolElement = castTo gTypeSVGSymbolElement "SVGSymbolElement"
-
-gTypeSVGSymbolElement :: JSM GType
-gTypeSVGSymbolElement = GType . Object <$> jsg "SVGSymbolElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTRefElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGTextPositioningElement"
---     * "JSDOM.SVGTextContentElement"
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTRefElement Mozilla SVGTRefElement documentation>
-newtype SVGTRefElement = SVGTRefElement { unSVGTRefElement :: JSVal }
-
-instance PToJSVal SVGTRefElement where
-  pToJSVal = unSVGTRefElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTRefElement where
-  pFromJSVal = SVGTRefElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTRefElement where
-  toJSVal = return . unSVGTRefElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTRefElement where
-  fromJSVal v = fmap SVGTRefElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTRefElement where
-  makeObject = makeObject . unSVGTRefElement
-
-instance IsSVGTextPositioningElement SVGTRefElement
-instance IsSVGTextContentElement SVGTRefElement
-instance IsSVGGraphicsElement SVGTRefElement
-instance IsSVGElement SVGTRefElement
-instance IsElement SVGTRefElement
-instance IsNode SVGTRefElement
-instance IsEventTarget SVGTRefElement
-instance IsGObject SVGTRefElement where
-  toGObject = GObject . unSVGTRefElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTRefElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTRefElement :: IsGObject obj => obj -> JSM SVGTRefElement
-castToSVGTRefElement = castTo gTypeSVGTRefElement "SVGTRefElement"
-
-gTypeSVGTRefElement :: JSM GType
-gTypeSVGTRefElement = GType . Object <$> jsg "SVGTRefElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTSpanElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGTextPositioningElement"
---     * "JSDOM.SVGTextContentElement"
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTSpanElement Mozilla SVGTSpanElement documentation>
-newtype SVGTSpanElement = SVGTSpanElement { unSVGTSpanElement :: JSVal }
-
-instance PToJSVal SVGTSpanElement where
-  pToJSVal = unSVGTSpanElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTSpanElement where
-  pFromJSVal = SVGTSpanElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTSpanElement where
-  toJSVal = return . unSVGTSpanElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTSpanElement where
-  fromJSVal v = fmap SVGTSpanElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTSpanElement where
-  makeObject = makeObject . unSVGTSpanElement
-
-instance IsSVGTextPositioningElement SVGTSpanElement
-instance IsSVGTextContentElement SVGTSpanElement
-instance IsSVGGraphicsElement SVGTSpanElement
-instance IsSVGElement SVGTSpanElement
-instance IsElement SVGTSpanElement
-instance IsNode SVGTSpanElement
-instance IsEventTarget SVGTSpanElement
-instance IsGObject SVGTSpanElement where
-  toGObject = GObject . unSVGTSpanElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTSpanElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTSpanElement :: IsGObject obj => obj -> JSM SVGTSpanElement
-castToSVGTSpanElement = castTo gTypeSVGTSpanElement "SVGTSpanElement"
-
-gTypeSVGTSpanElement :: JSM GType
-gTypeSVGTSpanElement = GType . Object <$> jsg "SVGTSpanElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTests".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests Mozilla SVGTests documentation>
-newtype SVGTests = SVGTests { unSVGTests :: JSVal }
-
-instance PToJSVal SVGTests where
-  pToJSVal = unSVGTests
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTests where
-  pFromJSVal = SVGTests
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTests where
-  toJSVal = return . unSVGTests
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTests where
-  fromJSVal v = fmap SVGTests <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTests where
-  makeObject = makeObject . unSVGTests
-
-instance IsGObject SVGTests where
-  toGObject = GObject . unSVGTests
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTests . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTests :: IsGObject obj => obj -> JSM SVGTests
-castToSVGTests = castTo gTypeSVGTests "SVGTests"
-
-gTypeSVGTests :: JSM GType
-gTypeSVGTests = GType . Object <$> jsg "SVGTests"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTextContentElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement Mozilla SVGTextContentElement documentation>
-newtype SVGTextContentElement = SVGTextContentElement { unSVGTextContentElement :: JSVal }
-
-instance PToJSVal SVGTextContentElement where
-  pToJSVal = unSVGTextContentElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTextContentElement where
-  pFromJSVal = SVGTextContentElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTextContentElement where
-  toJSVal = return . unSVGTextContentElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTextContentElement where
-  fromJSVal v = fmap SVGTextContentElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTextContentElement where
-  makeObject = makeObject . unSVGTextContentElement
-
-class IsSVGGraphicsElement o => IsSVGTextContentElement o
-toSVGTextContentElement :: IsSVGTextContentElement o => o -> SVGTextContentElement
-toSVGTextContentElement = unsafeCastGObject . toGObject
-
-instance IsSVGTextContentElement SVGTextContentElement
-instance IsSVGGraphicsElement SVGTextContentElement
-instance IsSVGElement SVGTextContentElement
-instance IsElement SVGTextContentElement
-instance IsNode SVGTextContentElement
-instance IsEventTarget SVGTextContentElement
-instance IsGObject SVGTextContentElement where
-  toGObject = GObject . unSVGTextContentElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTextContentElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTextContentElement :: IsGObject obj => obj -> JSM SVGTextContentElement
-castToSVGTextContentElement = castTo gTypeSVGTextContentElement "SVGTextContentElement"
-
-gTypeSVGTextContentElement :: JSM GType
-gTypeSVGTextContentElement = GType . Object <$> jsg "SVGTextContentElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTextElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGTextPositioningElement"
---     * "JSDOM.SVGTextContentElement"
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextElement Mozilla SVGTextElement documentation>
-newtype SVGTextElement = SVGTextElement { unSVGTextElement :: JSVal }
-
-instance PToJSVal SVGTextElement where
-  pToJSVal = unSVGTextElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTextElement where
-  pFromJSVal = SVGTextElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTextElement where
-  toJSVal = return . unSVGTextElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTextElement where
-  fromJSVal v = fmap SVGTextElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTextElement where
-  makeObject = makeObject . unSVGTextElement
-
-instance IsSVGTextPositioningElement SVGTextElement
-instance IsSVGTextContentElement SVGTextElement
-instance IsSVGGraphicsElement SVGTextElement
-instance IsSVGElement SVGTextElement
-instance IsElement SVGTextElement
-instance IsNode SVGTextElement
-instance IsEventTarget SVGTextElement
-instance IsGObject SVGTextElement where
-  toGObject = GObject . unSVGTextElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTextElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTextElement :: IsGObject obj => obj -> JSM SVGTextElement
-castToSVGTextElement = castTo gTypeSVGTextElement "SVGTextElement"
-
-gTypeSVGTextElement :: JSM GType
-gTypeSVGTextElement = GType . Object <$> jsg "SVGTextElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTextPathElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGTextContentElement"
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement Mozilla SVGTextPathElement documentation>
-newtype SVGTextPathElement = SVGTextPathElement { unSVGTextPathElement :: JSVal }
-
-instance PToJSVal SVGTextPathElement where
-  pToJSVal = unSVGTextPathElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTextPathElement where
-  pFromJSVal = SVGTextPathElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTextPathElement where
-  toJSVal = return . unSVGTextPathElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTextPathElement where
-  fromJSVal v = fmap SVGTextPathElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTextPathElement where
-  makeObject = makeObject . unSVGTextPathElement
-
-instance IsSVGTextContentElement SVGTextPathElement
-instance IsSVGGraphicsElement SVGTextPathElement
-instance IsSVGElement SVGTextPathElement
-instance IsElement SVGTextPathElement
-instance IsNode SVGTextPathElement
-instance IsEventTarget SVGTextPathElement
-instance IsGObject SVGTextPathElement where
-  toGObject = GObject . unSVGTextPathElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTextPathElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTextPathElement :: IsGObject obj => obj -> JSM SVGTextPathElement
-castToSVGTextPathElement = castTo gTypeSVGTextPathElement "SVGTextPathElement"
-
-gTypeSVGTextPathElement :: JSM GType
-gTypeSVGTextPathElement = GType . Object <$> jsg "SVGTextPathElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTextPositioningElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGTextContentElement"
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement Mozilla SVGTextPositioningElement documentation>
-newtype SVGTextPositioningElement = SVGTextPositioningElement { unSVGTextPositioningElement :: JSVal }
-
-instance PToJSVal SVGTextPositioningElement where
-  pToJSVal = unSVGTextPositioningElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTextPositioningElement where
-  pFromJSVal = SVGTextPositioningElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTextPositioningElement where
-  toJSVal = return . unSVGTextPositioningElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTextPositioningElement where
-  fromJSVal v = fmap SVGTextPositioningElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTextPositioningElement where
-  makeObject = makeObject . unSVGTextPositioningElement
-
-class IsSVGTextContentElement o => IsSVGTextPositioningElement o
-toSVGTextPositioningElement :: IsSVGTextPositioningElement o => o -> SVGTextPositioningElement
-toSVGTextPositioningElement = unsafeCastGObject . toGObject
-
-instance IsSVGTextPositioningElement SVGTextPositioningElement
-instance IsSVGTextContentElement SVGTextPositioningElement
-instance IsSVGGraphicsElement SVGTextPositioningElement
-instance IsSVGElement SVGTextPositioningElement
-instance IsElement SVGTextPositioningElement
-instance IsNode SVGTextPositioningElement
-instance IsEventTarget SVGTextPositioningElement
-instance IsGObject SVGTextPositioningElement where
-  toGObject = GObject . unSVGTextPositioningElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTextPositioningElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTextPositioningElement :: IsGObject obj => obj -> JSM SVGTextPositioningElement
-castToSVGTextPositioningElement = castTo gTypeSVGTextPositioningElement "SVGTextPositioningElement"
-
-gTypeSVGTextPositioningElement :: JSM GType
-gTypeSVGTextPositioningElement = GType . Object <$> jsg "SVGTextPositioningElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTitleElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTitleElement Mozilla SVGTitleElement documentation>
-newtype SVGTitleElement = SVGTitleElement { unSVGTitleElement :: JSVal }
-
-instance PToJSVal SVGTitleElement where
-  pToJSVal = unSVGTitleElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTitleElement where
-  pFromJSVal = SVGTitleElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTitleElement where
-  toJSVal = return . unSVGTitleElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTitleElement where
-  fromJSVal v = fmap SVGTitleElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTitleElement where
-  makeObject = makeObject . unSVGTitleElement
-
-instance IsSVGElement SVGTitleElement
-instance IsElement SVGTitleElement
-instance IsNode SVGTitleElement
-instance IsEventTarget SVGTitleElement
-instance IsGObject SVGTitleElement where
-  toGObject = GObject . unSVGTitleElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTitleElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTitleElement :: IsGObject obj => obj -> JSM SVGTitleElement
-castToSVGTitleElement = castTo gTypeSVGTitleElement "SVGTitleElement"
-
-gTypeSVGTitleElement :: JSM GType
-gTypeSVGTitleElement = GType . Object <$> jsg "SVGTitleElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTransform".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform Mozilla SVGTransform documentation>
-newtype SVGTransform = SVGTransform { unSVGTransform :: JSVal }
-
-instance PToJSVal SVGTransform where
-  pToJSVal = unSVGTransform
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTransform where
-  pFromJSVal = SVGTransform
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTransform where
-  toJSVal = return . unSVGTransform
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTransform where
-  fromJSVal v = fmap SVGTransform <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTransform where
-  makeObject = makeObject . unSVGTransform
-
-instance IsGObject SVGTransform where
-  toGObject = GObject . unSVGTransform
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTransform . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTransform :: IsGObject obj => obj -> JSM SVGTransform
-castToSVGTransform = castTo gTypeSVGTransform "SVGTransform"
-
-gTypeSVGTransform :: JSM GType
-gTypeSVGTransform = GType . Object <$> jsg "SVGTransform"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGTransformList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList Mozilla SVGTransformList documentation>
-newtype SVGTransformList = SVGTransformList { unSVGTransformList :: JSVal }
-
-instance PToJSVal SVGTransformList where
-  pToJSVal = unSVGTransformList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGTransformList where
-  pFromJSVal = SVGTransformList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGTransformList where
-  toJSVal = return . unSVGTransformList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGTransformList where
-  fromJSVal v = fmap SVGTransformList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGTransformList where
-  makeObject = makeObject . unSVGTransformList
-
-instance IsGObject SVGTransformList where
-  toGObject = GObject . unSVGTransformList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGTransformList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGTransformList :: IsGObject obj => obj -> JSM SVGTransformList
-castToSVGTransformList = castTo gTypeSVGTransformList "SVGTransformList"
-
-gTypeSVGTransformList :: JSM GType
-gTypeSVGTransformList = GType . Object <$> jsg "SVGTransformList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGURIReference".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference Mozilla SVGURIReference documentation>
-newtype SVGURIReference = SVGURIReference { unSVGURIReference :: JSVal }
-
-instance PToJSVal SVGURIReference where
-  pToJSVal = unSVGURIReference
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGURIReference where
-  pFromJSVal = SVGURIReference
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGURIReference where
-  toJSVal = return . unSVGURIReference
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGURIReference where
-  fromJSVal v = fmap SVGURIReference <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGURIReference where
-  makeObject = makeObject . unSVGURIReference
-
-instance IsGObject SVGURIReference where
-  toGObject = GObject . unSVGURIReference
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGURIReference . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGURIReference :: IsGObject obj => obj -> JSM SVGURIReference
-castToSVGURIReference = castTo gTypeSVGURIReference "SVGURIReference"
-
-gTypeSVGURIReference :: JSM GType
-gTypeSVGURIReference = GType . Object <$> jsg "SVGURIReference"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGUnitTypes".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGUnitTypes Mozilla SVGUnitTypes documentation>
-newtype SVGUnitTypes = SVGUnitTypes { unSVGUnitTypes :: JSVal }
-
-instance PToJSVal SVGUnitTypes where
-  pToJSVal = unSVGUnitTypes
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGUnitTypes where
-  pFromJSVal = SVGUnitTypes
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGUnitTypes where
-  toJSVal = return . unSVGUnitTypes
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGUnitTypes where
-  fromJSVal v = fmap SVGUnitTypes <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGUnitTypes where
-  makeObject = makeObject . unSVGUnitTypes
-
-instance IsGObject SVGUnitTypes where
-  toGObject = GObject . unSVGUnitTypes
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGUnitTypes . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGUnitTypes :: IsGObject obj => obj -> JSM SVGUnitTypes
-castToSVGUnitTypes = castTo gTypeSVGUnitTypes "SVGUnitTypes"
-
-gTypeSVGUnitTypes :: JSM GType
-gTypeSVGUnitTypes = GType . Object <$> jsg "SVGUnitTypes"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGUseElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGGraphicsElement"
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement Mozilla SVGUseElement documentation>
-newtype SVGUseElement = SVGUseElement { unSVGUseElement :: JSVal }
-
-instance PToJSVal SVGUseElement where
-  pToJSVal = unSVGUseElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGUseElement where
-  pFromJSVal = SVGUseElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGUseElement where
-  toJSVal = return . unSVGUseElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGUseElement where
-  fromJSVal v = fmap SVGUseElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGUseElement where
-  makeObject = makeObject . unSVGUseElement
-
-instance IsSVGGraphicsElement SVGUseElement
-instance IsSVGElement SVGUseElement
-instance IsElement SVGUseElement
-instance IsNode SVGUseElement
-instance IsEventTarget SVGUseElement
-instance IsGObject SVGUseElement where
-  toGObject = GObject . unSVGUseElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGUseElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGUseElement :: IsGObject obj => obj -> JSM SVGUseElement
-castToSVGUseElement = castTo gTypeSVGUseElement "SVGUseElement"
-
-gTypeSVGUseElement :: JSM GType
-gTypeSVGUseElement = GType . Object <$> jsg "SVGUseElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGVKernElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGVKernElement Mozilla SVGVKernElement documentation>
-newtype SVGVKernElement = SVGVKernElement { unSVGVKernElement :: JSVal }
-
-instance PToJSVal SVGVKernElement where
-  pToJSVal = unSVGVKernElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGVKernElement where
-  pFromJSVal = SVGVKernElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGVKernElement where
-  toJSVal = return . unSVGVKernElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGVKernElement where
-  fromJSVal v = fmap SVGVKernElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGVKernElement where
-  makeObject = makeObject . unSVGVKernElement
-
-instance IsSVGElement SVGVKernElement
-instance IsElement SVGVKernElement
-instance IsNode SVGVKernElement
-instance IsEventTarget SVGVKernElement
-instance IsGObject SVGVKernElement where
-  toGObject = GObject . unSVGVKernElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGVKernElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGVKernElement :: IsGObject obj => obj -> JSM SVGVKernElement
-castToSVGVKernElement = castTo gTypeSVGVKernElement "SVGVKernElement"
-
-gTypeSVGVKernElement :: JSM GType
-gTypeSVGVKernElement = GType . Object <$> jsg "SVGVKernElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGViewElement".
--- Base interface functions are in:
---
---     * "JSDOM.SVGElement"
---     * "JSDOM.Element"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement Mozilla SVGViewElement documentation>
-newtype SVGViewElement = SVGViewElement { unSVGViewElement :: JSVal }
-
-instance PToJSVal SVGViewElement where
-  pToJSVal = unSVGViewElement
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGViewElement where
-  pFromJSVal = SVGViewElement
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGViewElement where
-  toJSVal = return . unSVGViewElement
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGViewElement where
-  fromJSVal v = fmap SVGViewElement <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGViewElement where
-  makeObject = makeObject . unSVGViewElement
-
-instance IsSVGElement SVGViewElement
-instance IsElement SVGViewElement
-instance IsNode SVGViewElement
-instance IsEventTarget SVGViewElement
-instance IsGObject SVGViewElement where
-  toGObject = GObject . unSVGViewElement
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGViewElement . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGViewElement :: IsGObject obj => obj -> JSM SVGViewElement
-castToSVGViewElement = castTo gTypeSVGViewElement "SVGViewElement"
-
-gTypeSVGViewElement :: JSM GType
-gTypeSVGViewElement = GType . Object <$> jsg "SVGViewElement"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGViewSpec".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec Mozilla SVGViewSpec documentation>
-newtype SVGViewSpec = SVGViewSpec { unSVGViewSpec :: JSVal }
-
-instance PToJSVal SVGViewSpec where
-  pToJSVal = unSVGViewSpec
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGViewSpec where
-  pFromJSVal = SVGViewSpec
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGViewSpec where
-  toJSVal = return . unSVGViewSpec
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGViewSpec where
-  fromJSVal v = fmap SVGViewSpec <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGViewSpec where
-  makeObject = makeObject . unSVGViewSpec
-
-instance IsGObject SVGViewSpec where
-  toGObject = GObject . unSVGViewSpec
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGViewSpec . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGViewSpec :: IsGObject obj => obj -> JSM SVGViewSpec
-castToSVGViewSpec = castTo gTypeSVGViewSpec "SVGViewSpec"
-
-gTypeSVGViewSpec :: JSM GType
-gTypeSVGViewSpec = GType . Object <$> jsg "SVGViewSpec"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGZoomAndPan".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan Mozilla SVGZoomAndPan documentation>
-newtype SVGZoomAndPan = SVGZoomAndPan { unSVGZoomAndPan :: JSVal }
-
-instance PToJSVal SVGZoomAndPan where
-  pToJSVal = unSVGZoomAndPan
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGZoomAndPan where
-  pFromJSVal = SVGZoomAndPan
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGZoomAndPan where
-  toJSVal = return . unSVGZoomAndPan
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGZoomAndPan where
-  fromJSVal v = fmap SVGZoomAndPan <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGZoomAndPan where
-  makeObject = makeObject . unSVGZoomAndPan
-
-instance IsGObject SVGZoomAndPan where
-  toGObject = GObject . unSVGZoomAndPan
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGZoomAndPan . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGZoomAndPan :: IsGObject obj => obj -> JSM SVGZoomAndPan
-castToSVGZoomAndPan = castTo gTypeSVGZoomAndPan "SVGZoomAndPan"
-
-gTypeSVGZoomAndPan :: JSM GType
-gTypeSVGZoomAndPan = GType . Object <$> jsg "SVGZoomAndPan"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SVGZoomEvent".
--- Base interface functions are in:
---
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent Mozilla SVGZoomEvent documentation>
-newtype SVGZoomEvent = SVGZoomEvent { unSVGZoomEvent :: JSVal }
-
-instance PToJSVal SVGZoomEvent where
-  pToJSVal = unSVGZoomEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SVGZoomEvent where
-  pFromJSVal = SVGZoomEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SVGZoomEvent where
-  toJSVal = return . unSVGZoomEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SVGZoomEvent where
-  fromJSVal v = fmap SVGZoomEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SVGZoomEvent where
-  makeObject = makeObject . unSVGZoomEvent
-
-instance IsUIEvent SVGZoomEvent
-instance IsEvent SVGZoomEvent
-instance IsGObject SVGZoomEvent where
-  toGObject = GObject . unSVGZoomEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SVGZoomEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSVGZoomEvent :: IsGObject obj => obj -> JSM SVGZoomEvent
-castToSVGZoomEvent = castTo gTypeSVGZoomEvent "SVGZoomEvent"
-
-gTypeSVGZoomEvent :: JSM GType
-gTypeSVGZoomEvent = GType . Object <$> jsg "SVGZoomEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Screen".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Screen Mozilla Screen documentation>
-newtype Screen = Screen { unScreen :: JSVal }
-
-instance PToJSVal Screen where
-  pToJSVal = unScreen
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Screen where
-  pFromJSVal = Screen
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Screen where
-  toJSVal = return . unScreen
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Screen where
-  fromJSVal v = fmap Screen <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Screen where
-  makeObject = makeObject . unScreen
-
-instance IsGObject Screen where
-  toGObject = GObject . unScreen
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Screen . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToScreen :: IsGObject obj => obj -> JSM Screen
-castToScreen = castTo gTypeScreen "Screen"
-
-gTypeScreen :: JSM GType
-gTypeScreen = GType . Object <$> jsg "Screen"
-#else
-type IsScreen o = ScreenClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ScriptProcessorNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode Mozilla ScriptProcessorNode documentation>
-newtype ScriptProcessorNode = ScriptProcessorNode { unScriptProcessorNode :: JSVal }
-
-instance PToJSVal ScriptProcessorNode where
-  pToJSVal = unScriptProcessorNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ScriptProcessorNode where
-  pFromJSVal = ScriptProcessorNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ScriptProcessorNode where
-  toJSVal = return . unScriptProcessorNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ScriptProcessorNode where
-  fromJSVal v = fmap ScriptProcessorNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ScriptProcessorNode where
-  makeObject = makeObject . unScriptProcessorNode
-
-instance IsAudioNode ScriptProcessorNode
-instance IsEventTarget ScriptProcessorNode
-instance IsGObject ScriptProcessorNode where
-  toGObject = GObject . unScriptProcessorNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ScriptProcessorNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToScriptProcessorNode :: IsGObject obj => obj -> JSM ScriptProcessorNode
-castToScriptProcessorNode = castTo gTypeScriptProcessorNode "ScriptProcessorNode"
-
-gTypeScriptProcessorNode :: JSM GType
-gTypeScriptProcessorNode = GType . Object <$> jsg "ScriptProcessorNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ScriptProfile".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile Mozilla ScriptProfile documentation>
-newtype ScriptProfile = ScriptProfile { unScriptProfile :: JSVal }
-
-instance PToJSVal ScriptProfile where
-  pToJSVal = unScriptProfile
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ScriptProfile where
-  pFromJSVal = ScriptProfile
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ScriptProfile where
-  toJSVal = return . unScriptProfile
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ScriptProfile where
-  fromJSVal v = fmap ScriptProfile <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ScriptProfile where
-  makeObject = makeObject . unScriptProfile
-
-instance IsGObject ScriptProfile where
-  toGObject = GObject . unScriptProfile
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ScriptProfile . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToScriptProfile :: IsGObject obj => obj -> JSM ScriptProfile
-castToScriptProfile = castTo gTypeScriptProfile "ScriptProfile"
-
-gTypeScriptProfile :: JSM GType
-gTypeScriptProfile = GType . Object <$> jsg "ScriptProfile"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ScriptProfileNode".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode Mozilla ScriptProfileNode documentation>
-newtype ScriptProfileNode = ScriptProfileNode { unScriptProfileNode :: JSVal }
-
-instance PToJSVal ScriptProfileNode where
-  pToJSVal = unScriptProfileNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ScriptProfileNode where
-  pFromJSVal = ScriptProfileNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ScriptProfileNode where
-  toJSVal = return . unScriptProfileNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ScriptProfileNode where
-  fromJSVal v = fmap ScriptProfileNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ScriptProfileNode where
-  makeObject = makeObject . unScriptProfileNode
-
-instance IsGObject ScriptProfileNode where
-  toGObject = GObject . unScriptProfileNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ScriptProfileNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToScriptProfileNode :: IsGObject obj => obj -> JSM ScriptProfileNode
-castToScriptProfileNode = castTo gTypeScriptProfileNode "ScriptProfileNode"
-
-gTypeScriptProfileNode :: JSM GType
-gTypeScriptProfileNode = GType . Object <$> jsg "ScriptProfileNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SecurityPolicy".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy Mozilla SecurityPolicy documentation>
-newtype SecurityPolicy = SecurityPolicy { unSecurityPolicy :: JSVal }
-
-instance PToJSVal SecurityPolicy where
-  pToJSVal = unSecurityPolicy
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SecurityPolicy where
-  pFromJSVal = SecurityPolicy
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SecurityPolicy where
-  toJSVal = return . unSecurityPolicy
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SecurityPolicy where
-  fromJSVal v = fmap SecurityPolicy <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SecurityPolicy where
-  makeObject = makeObject . unSecurityPolicy
-
-instance IsGObject SecurityPolicy where
-  toGObject = GObject . unSecurityPolicy
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SecurityPolicy . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSecurityPolicy :: IsGObject obj => obj -> JSM SecurityPolicy
-castToSecurityPolicy = castTo gTypeSecurityPolicy "SecurityPolicy"
-
-gTypeSecurityPolicy :: JSM GType
-gTypeSecurityPolicy = GType . Object <$> jsg "SecurityPolicy"
-#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 "JSDOM.SecurityPolicyViolationEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent Mozilla SecurityPolicyViolationEvent documentation>
-newtype SecurityPolicyViolationEvent = SecurityPolicyViolationEvent { unSecurityPolicyViolationEvent :: JSVal }
-
-instance PToJSVal SecurityPolicyViolationEvent where
-  pToJSVal = unSecurityPolicyViolationEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SecurityPolicyViolationEvent where
-  pFromJSVal = SecurityPolicyViolationEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SecurityPolicyViolationEvent where
-  toJSVal = return . unSecurityPolicyViolationEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SecurityPolicyViolationEvent where
-  fromJSVal v = fmap SecurityPolicyViolationEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SecurityPolicyViolationEvent where
-  makeObject = makeObject . unSecurityPolicyViolationEvent
-
-instance IsEvent SecurityPolicyViolationEvent
-instance IsGObject SecurityPolicyViolationEvent where
-  toGObject = GObject . unSecurityPolicyViolationEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SecurityPolicyViolationEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSecurityPolicyViolationEvent :: IsGObject obj => obj -> JSM SecurityPolicyViolationEvent
-castToSecurityPolicyViolationEvent = castTo gTypeSecurityPolicyViolationEvent "SecurityPolicyViolationEvent"
-
-gTypeSecurityPolicyViolationEvent :: JSM GType
-gTypeSecurityPolicyViolationEvent = GType . Object <$> jsg "SecurityPolicyViolationEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Selection".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Selection Mozilla Selection documentation>
-newtype Selection = Selection { unSelection :: JSVal }
-
-instance PToJSVal Selection where
-  pToJSVal = unSelection
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Selection where
-  pFromJSVal = Selection
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Selection where
-  toJSVal = return . unSelection
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Selection where
-  fromJSVal v = fmap Selection <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Selection where
-  makeObject = makeObject . unSelection
-
-instance IsGObject Selection where
-  toGObject = GObject . unSelection
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Selection . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSelection :: IsGObject obj => obj -> JSM Selection
-castToSelection = castTo gTypeSelection "Selection"
-
-gTypeSelection :: JSM GType
-gTypeSelection = GType . Object <$> jsg "Selection"
-#else
-type IsSelection o = SelectionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SourceBuffer".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer Mozilla SourceBuffer documentation>
-newtype SourceBuffer = SourceBuffer { unSourceBuffer :: JSVal }
-
-instance PToJSVal SourceBuffer where
-  pToJSVal = unSourceBuffer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SourceBuffer where
-  pFromJSVal = SourceBuffer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SourceBuffer where
-  toJSVal = return . unSourceBuffer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SourceBuffer where
-  fromJSVal v = fmap SourceBuffer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SourceBuffer where
-  makeObject = makeObject . unSourceBuffer
-
-instance IsEventTarget SourceBuffer
-instance IsGObject SourceBuffer where
-  toGObject = GObject . unSourceBuffer
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SourceBuffer . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSourceBuffer :: IsGObject obj => obj -> JSM SourceBuffer
-castToSourceBuffer = castTo gTypeSourceBuffer "SourceBuffer"
-
-gTypeSourceBuffer :: JSM GType
-gTypeSourceBuffer = GType . Object <$> jsg "SourceBuffer"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SourceBufferList".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList Mozilla SourceBufferList documentation>
-newtype SourceBufferList = SourceBufferList { unSourceBufferList :: JSVal }
-
-instance PToJSVal SourceBufferList where
-  pToJSVal = unSourceBufferList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SourceBufferList where
-  pFromJSVal = SourceBufferList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SourceBufferList where
-  toJSVal = return . unSourceBufferList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SourceBufferList where
-  fromJSVal v = fmap SourceBufferList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SourceBufferList where
-  makeObject = makeObject . unSourceBufferList
-
-instance IsEventTarget SourceBufferList
-instance IsGObject SourceBufferList where
-  toGObject = GObject . unSourceBufferList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SourceBufferList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSourceBufferList :: IsGObject obj => obj -> JSM SourceBufferList
-castToSourceBufferList = castTo gTypeSourceBufferList "SourceBufferList"
-
-gTypeSourceBufferList :: JSM GType
-gTypeSourceBufferList = GType . Object <$> jsg "SourceBufferList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SourceInfo".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo Mozilla SourceInfo documentation>
-newtype SourceInfo = SourceInfo { unSourceInfo :: JSVal }
-
-instance PToJSVal SourceInfo where
-  pToJSVal = unSourceInfo
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SourceInfo where
-  pFromJSVal = SourceInfo
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SourceInfo where
-  toJSVal = return . unSourceInfo
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SourceInfo where
-  fromJSVal v = fmap SourceInfo <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SourceInfo where
-  makeObject = makeObject . unSourceInfo
-
-instance IsGObject SourceInfo where
-  toGObject = GObject . unSourceInfo
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SourceInfo . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSourceInfo :: IsGObject obj => obj -> JSM SourceInfo
-castToSourceInfo = castTo gTypeSourceInfo "SourceInfo"
-
-gTypeSourceInfo :: JSM GType
-gTypeSourceInfo = GType . Object <$> jsg "SourceInfo"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SpeechSynthesis".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis Mozilla SpeechSynthesis documentation>
-newtype SpeechSynthesis = SpeechSynthesis { unSpeechSynthesis :: JSVal }
-
-instance PToJSVal SpeechSynthesis where
-  pToJSVal = unSpeechSynthesis
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SpeechSynthesis where
-  pFromJSVal = SpeechSynthesis
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SpeechSynthesis where
-  toJSVal = return . unSpeechSynthesis
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SpeechSynthesis where
-  fromJSVal v = fmap SpeechSynthesis <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SpeechSynthesis where
-  makeObject = makeObject . unSpeechSynthesis
-
-instance IsGObject SpeechSynthesis where
-  toGObject = GObject . unSpeechSynthesis
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SpeechSynthesis . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSpeechSynthesis :: IsGObject obj => obj -> JSM SpeechSynthesis
-castToSpeechSynthesis = castTo gTypeSpeechSynthesis "SpeechSynthesis"
-
-gTypeSpeechSynthesis :: JSM GType
-gTypeSpeechSynthesis = GType . Object <$> jsg "SpeechSynthesis"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SpeechSynthesisEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent Mozilla SpeechSynthesisEvent documentation>
-newtype SpeechSynthesisEvent = SpeechSynthesisEvent { unSpeechSynthesisEvent :: JSVal }
-
-instance PToJSVal SpeechSynthesisEvent where
-  pToJSVal = unSpeechSynthesisEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SpeechSynthesisEvent where
-  pFromJSVal = SpeechSynthesisEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SpeechSynthesisEvent where
-  toJSVal = return . unSpeechSynthesisEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SpeechSynthesisEvent where
-  fromJSVal v = fmap SpeechSynthesisEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SpeechSynthesisEvent where
-  makeObject = makeObject . unSpeechSynthesisEvent
-
-instance IsEvent SpeechSynthesisEvent
-instance IsGObject SpeechSynthesisEvent where
-  toGObject = GObject . unSpeechSynthesisEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SpeechSynthesisEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSpeechSynthesisEvent :: IsGObject obj => obj -> JSM SpeechSynthesisEvent
-castToSpeechSynthesisEvent = castTo gTypeSpeechSynthesisEvent "SpeechSynthesisEvent"
-
-gTypeSpeechSynthesisEvent :: JSM GType
-gTypeSpeechSynthesisEvent = GType . Object <$> jsg "SpeechSynthesisEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SpeechSynthesisUtterance".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation>
-newtype SpeechSynthesisUtterance = SpeechSynthesisUtterance { unSpeechSynthesisUtterance :: JSVal }
-
-instance PToJSVal SpeechSynthesisUtterance where
-  pToJSVal = unSpeechSynthesisUtterance
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SpeechSynthesisUtterance where
-  pFromJSVal = SpeechSynthesisUtterance
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SpeechSynthesisUtterance where
-  toJSVal = return . unSpeechSynthesisUtterance
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SpeechSynthesisUtterance where
-  fromJSVal v = fmap SpeechSynthesisUtterance <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SpeechSynthesisUtterance where
-  makeObject = makeObject . unSpeechSynthesisUtterance
-
-instance IsEventTarget SpeechSynthesisUtterance
-instance IsGObject SpeechSynthesisUtterance where
-  toGObject = GObject . unSpeechSynthesisUtterance
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SpeechSynthesisUtterance . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSpeechSynthesisUtterance :: IsGObject obj => obj -> JSM SpeechSynthesisUtterance
-castToSpeechSynthesisUtterance = castTo gTypeSpeechSynthesisUtterance "SpeechSynthesisUtterance"
-
-gTypeSpeechSynthesisUtterance :: JSM GType
-gTypeSpeechSynthesisUtterance = GType . Object <$> jsg "SpeechSynthesisUtterance"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SpeechSynthesisVoice".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice Mozilla SpeechSynthesisVoice documentation>
-newtype SpeechSynthesisVoice = SpeechSynthesisVoice { unSpeechSynthesisVoice :: JSVal }
-
-instance PToJSVal SpeechSynthesisVoice where
-  pToJSVal = unSpeechSynthesisVoice
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SpeechSynthesisVoice where
-  pFromJSVal = SpeechSynthesisVoice
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SpeechSynthesisVoice where
-  toJSVal = return . unSpeechSynthesisVoice
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SpeechSynthesisVoice where
-  fromJSVal v = fmap SpeechSynthesisVoice <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SpeechSynthesisVoice where
-  makeObject = makeObject . unSpeechSynthesisVoice
-
-instance IsGObject SpeechSynthesisVoice where
-  toGObject = GObject . unSpeechSynthesisVoice
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SpeechSynthesisVoice . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSpeechSynthesisVoice :: IsGObject obj => obj -> JSM SpeechSynthesisVoice
-castToSpeechSynthesisVoice = castTo gTypeSpeechSynthesisVoice "SpeechSynthesisVoice"
-
-gTypeSpeechSynthesisVoice :: JSM GType
-gTypeSpeechSynthesisVoice = GType . Object <$> jsg "SpeechSynthesisVoice"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Storage".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Storage Mozilla Storage documentation>
-newtype Storage = Storage { unStorage :: JSVal }
-
-instance PToJSVal Storage where
-  pToJSVal = unStorage
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Storage where
-  pFromJSVal = Storage
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Storage where
-  toJSVal = return . unStorage
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Storage where
-  fromJSVal v = fmap Storage <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Storage where
-  makeObject = makeObject . unStorage
-
-instance IsGObject Storage where
-  toGObject = GObject . unStorage
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Storage . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToStorage :: IsGObject obj => obj -> JSM Storage
-castToStorage = castTo gTypeStorage "Storage"
-
-gTypeStorage :: JSM GType
-gTypeStorage = GType . Object <$> jsg "Storage"
-#else
-type IsStorage o = StorageClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.StorageEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent Mozilla StorageEvent documentation>
-newtype StorageEvent = StorageEvent { unStorageEvent :: JSVal }
-
-instance PToJSVal StorageEvent where
-  pToJSVal = unStorageEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal StorageEvent where
-  pFromJSVal = StorageEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal StorageEvent where
-  toJSVal = return . unStorageEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal StorageEvent where
-  fromJSVal v = fmap StorageEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject StorageEvent where
-  makeObject = makeObject . unStorageEvent
-
-instance IsEvent StorageEvent
-instance IsGObject StorageEvent where
-  toGObject = GObject . unStorageEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = StorageEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToStorageEvent :: IsGObject obj => obj -> JSM StorageEvent
-castToStorageEvent = castTo gTypeStorageEvent "StorageEvent"
-
-gTypeStorageEvent :: JSM GType
-gTypeStorageEvent = GType . Object <$> jsg "StorageEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.StorageInfo".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo Mozilla StorageInfo documentation>
-newtype StorageInfo = StorageInfo { unStorageInfo :: JSVal }
-
-instance PToJSVal StorageInfo where
-  pToJSVal = unStorageInfo
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal StorageInfo where
-  pFromJSVal = StorageInfo
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal StorageInfo where
-  toJSVal = return . unStorageInfo
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal StorageInfo where
-  fromJSVal v = fmap StorageInfo <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject StorageInfo where
-  makeObject = makeObject . unStorageInfo
-
-instance IsGObject StorageInfo where
-  toGObject = GObject . unStorageInfo
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = StorageInfo . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToStorageInfo :: IsGObject obj => obj -> JSM StorageInfo
-castToStorageInfo = castTo gTypeStorageInfo "StorageInfo"
-
-gTypeStorageInfo :: JSM GType
-gTypeStorageInfo = GType . Object <$> jsg "StorageInfo"
-#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 "JSDOM.StorageQuota".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota Mozilla StorageQuota documentation>
-newtype StorageQuota = StorageQuota { unStorageQuota :: JSVal }
-
-instance PToJSVal StorageQuota where
-  pToJSVal = unStorageQuota
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal StorageQuota where
-  pFromJSVal = StorageQuota
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal StorageQuota where
-  toJSVal = return . unStorageQuota
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal StorageQuota where
-  fromJSVal v = fmap StorageQuota <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject StorageQuota where
-  makeObject = makeObject . unStorageQuota
-
-instance IsGObject StorageQuota where
-  toGObject = GObject . unStorageQuota
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = StorageQuota . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToStorageQuota :: IsGObject obj => obj -> JSM StorageQuota
-castToStorageQuota = castTo gTypeStorageQuota "StorageQuota"
-
-gTypeStorageQuota :: JSM GType
-gTypeStorageQuota = GType . Object <$> jsg "StorageQuota"
-#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 "JSDOM.StyleMedia".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia Mozilla StyleMedia documentation>
-newtype StyleMedia = StyleMedia { unStyleMedia :: JSVal }
-
-instance PToJSVal StyleMedia where
-  pToJSVal = unStyleMedia
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal StyleMedia where
-  pFromJSVal = StyleMedia
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal StyleMedia where
-  toJSVal = return . unStyleMedia
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal StyleMedia where
-  fromJSVal v = fmap StyleMedia <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject StyleMedia where
-  makeObject = makeObject . unStyleMedia
-
-instance IsGObject StyleMedia where
-  toGObject = GObject . unStyleMedia
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = StyleMedia . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToStyleMedia :: IsGObject obj => obj -> JSM StyleMedia
-castToStyleMedia = castTo gTypeStyleMedia "StyleMedia"
-
-gTypeStyleMedia :: JSM GType
-gTypeStyleMedia = GType . Object <$> jsg "StyleMedia"
-#else
-type IsStyleMedia o = StyleMediaClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.StyleSheet".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet Mozilla StyleSheet documentation>
-newtype StyleSheet = StyleSheet { unStyleSheet :: JSVal }
-
-instance PToJSVal StyleSheet where
-  pToJSVal = unStyleSheet
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal StyleSheet where
-  pFromJSVal = StyleSheet
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal StyleSheet where
-  toJSVal = return . unStyleSheet
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal StyleSheet where
-  fromJSVal v = fmap StyleSheet <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject StyleSheet where
-  makeObject = makeObject . unStyleSheet
-
-class IsGObject o => IsStyleSheet o
-toStyleSheet :: IsStyleSheet o => o -> StyleSheet
-toStyleSheet = unsafeCastGObject . toGObject
-
-instance IsStyleSheet StyleSheet
-instance IsGObject StyleSheet where
-  toGObject = GObject . unStyleSheet
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = StyleSheet . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToStyleSheet :: IsGObject obj => obj -> JSM StyleSheet
-castToStyleSheet = castTo gTypeStyleSheet "StyleSheet"
-
-gTypeStyleSheet :: JSM GType
-gTypeStyleSheet = GType . Object <$> jsg "StyleSheet"
-#else
-type IsStyleSheet o = StyleSheetClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.StyleSheetList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList Mozilla StyleSheetList documentation>
-newtype StyleSheetList = StyleSheetList { unStyleSheetList :: JSVal }
-
-instance PToJSVal StyleSheetList where
-  pToJSVal = unStyleSheetList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal StyleSheetList where
-  pFromJSVal = StyleSheetList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal StyleSheetList where
-  toJSVal = return . unStyleSheetList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal StyleSheetList where
-  fromJSVal v = fmap StyleSheetList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject StyleSheetList where
-  makeObject = makeObject . unStyleSheetList
-
-instance IsGObject StyleSheetList where
-  toGObject = GObject . unStyleSheetList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = StyleSheetList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToStyleSheetList :: IsGObject obj => obj -> JSM StyleSheetList
-castToStyleSheetList = castTo gTypeStyleSheetList "StyleSheetList"
-
-gTypeStyleSheetList :: JSM GType
-gTypeStyleSheetList = GType . Object <$> jsg "StyleSheetList"
-#else
-type IsStyleSheetList o = StyleSheetListClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.SubtleCrypto".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto Mozilla WebKitSubtleCrypto documentation>
-newtype SubtleCrypto = SubtleCrypto { unSubtleCrypto :: JSVal }
-
-instance PToJSVal SubtleCrypto where
-  pToJSVal = unSubtleCrypto
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal SubtleCrypto where
-  pFromJSVal = SubtleCrypto
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal SubtleCrypto where
-  toJSVal = return . unSubtleCrypto
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal SubtleCrypto where
-  fromJSVal v = fmap SubtleCrypto <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject SubtleCrypto where
-  makeObject = makeObject . unSubtleCrypto
-
-instance IsGObject SubtleCrypto where
-  toGObject = GObject . unSubtleCrypto
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = SubtleCrypto . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToSubtleCrypto :: IsGObject obj => obj -> JSM SubtleCrypto
-castToSubtleCrypto = castTo gTypeSubtleCrypto "SubtleCrypto"
-
-gTypeSubtleCrypto :: JSM GType
-gTypeSubtleCrypto = GType . Object <$> jsg "WebKitSubtleCrypto"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Text".
--- Base interface functions are in:
---
---     * "JSDOM.CharacterData"
---     * "JSDOM.Node"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation>
-newtype Text = Text { unText :: JSVal }
-
-instance PToJSVal Text where
-  pToJSVal = unText
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Text where
-  pFromJSVal = Text
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Text where
-  toJSVal = return . unText
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Text where
-  fromJSVal v = fmap Text <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Text where
-  makeObject = makeObject . unText
-
-class IsCharacterData o => IsText o
-toText :: IsText o => o -> Text
-toText = unsafeCastGObject . toGObject
-
-instance IsText Text
-instance IsCharacterData Text
-instance IsNode Text
-instance IsEventTarget Text
-instance IsGObject Text where
-  toGObject = GObject . unText
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Text . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToText :: IsGObject obj => obj -> JSM Text
-castToText = castTo gTypeText "Text"
-
-gTypeText :: JSM GType
-gTypeText = GType . Object <$> jsg "Text"
-#else
-type IsText o = TextClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.TextEvent".
--- Base interface functions are in:
---
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent Mozilla TextEvent documentation>
-newtype TextEvent = TextEvent { unTextEvent :: JSVal }
-
-instance PToJSVal TextEvent where
-  pToJSVal = unTextEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TextEvent where
-  pFromJSVal = TextEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TextEvent where
-  toJSVal = return . unTextEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TextEvent where
-  fromJSVal v = fmap TextEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TextEvent where
-  makeObject = makeObject . unTextEvent
-
-instance IsUIEvent TextEvent
-instance IsEvent TextEvent
-instance IsGObject TextEvent where
-  toGObject = GObject . unTextEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TextEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTextEvent :: IsGObject obj => obj -> JSM TextEvent
-castToTextEvent = castTo gTypeTextEvent "TextEvent"
-
-gTypeTextEvent :: JSM GType
-gTypeTextEvent = GType . Object <$> jsg "TextEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.TextMetrics".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics Mozilla TextMetrics documentation>
-newtype TextMetrics = TextMetrics { unTextMetrics :: JSVal }
-
-instance PToJSVal TextMetrics where
-  pToJSVal = unTextMetrics
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TextMetrics where
-  pFromJSVal = TextMetrics
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TextMetrics where
-  toJSVal = return . unTextMetrics
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TextMetrics where
-  fromJSVal v = fmap TextMetrics <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TextMetrics where
-  makeObject = makeObject . unTextMetrics
-
-instance IsGObject TextMetrics where
-  toGObject = GObject . unTextMetrics
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TextMetrics . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTextMetrics :: IsGObject obj => obj -> JSM TextMetrics
-castToTextMetrics = castTo gTypeTextMetrics "TextMetrics"
-
-gTypeTextMetrics :: JSM GType
-gTypeTextMetrics = GType . Object <$> jsg "TextMetrics"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.TextTrack".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack Mozilla TextTrack documentation>
-newtype TextTrack = TextTrack { unTextTrack :: JSVal }
-
-instance PToJSVal TextTrack where
-  pToJSVal = unTextTrack
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TextTrack where
-  pFromJSVal = TextTrack
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TextTrack where
-  toJSVal = return . unTextTrack
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TextTrack where
-  fromJSVal v = fmap TextTrack <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TextTrack where
-  makeObject = makeObject . unTextTrack
-
-instance IsEventTarget TextTrack
-instance IsGObject TextTrack where
-  toGObject = GObject . unTextTrack
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TextTrack . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTextTrack :: IsGObject obj => obj -> JSM TextTrack
-castToTextTrack = castTo gTypeTextTrack "TextTrack"
-
-gTypeTextTrack :: JSM GType
-gTypeTextTrack = GType . Object <$> jsg "TextTrack"
-#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 "JSDOM.TextTrackCue".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue Mozilla TextTrackCue documentation>
-newtype TextTrackCue = TextTrackCue { unTextTrackCue :: JSVal }
-
-instance PToJSVal TextTrackCue where
-  pToJSVal = unTextTrackCue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TextTrackCue where
-  pFromJSVal = TextTrackCue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TextTrackCue where
-  toJSVal = return . unTextTrackCue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TextTrackCue where
-  fromJSVal v = fmap TextTrackCue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TextTrackCue where
-  makeObject = makeObject . unTextTrackCue
-
-class IsEventTarget o => IsTextTrackCue o
-toTextTrackCue :: IsTextTrackCue o => o -> TextTrackCue
-toTextTrackCue = unsafeCastGObject . toGObject
-
-instance IsTextTrackCue TextTrackCue
-instance IsEventTarget TextTrackCue
-instance IsGObject TextTrackCue where
-  toGObject = GObject . unTextTrackCue
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TextTrackCue . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTextTrackCue :: IsGObject obj => obj -> JSM TextTrackCue
-castToTextTrackCue = castTo gTypeTextTrackCue "TextTrackCue"
-
-gTypeTextTrackCue :: JSM GType
-gTypeTextTrackCue = GType . Object <$> jsg "TextTrackCue"
-#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 "JSDOM.TextTrackCueList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList Mozilla TextTrackCueList documentation>
-newtype TextTrackCueList = TextTrackCueList { unTextTrackCueList :: JSVal }
-
-instance PToJSVal TextTrackCueList where
-  pToJSVal = unTextTrackCueList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TextTrackCueList where
-  pFromJSVal = TextTrackCueList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TextTrackCueList where
-  toJSVal = return . unTextTrackCueList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TextTrackCueList where
-  fromJSVal v = fmap TextTrackCueList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TextTrackCueList where
-  makeObject = makeObject . unTextTrackCueList
-
-instance IsGObject TextTrackCueList where
-  toGObject = GObject . unTextTrackCueList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TextTrackCueList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTextTrackCueList :: IsGObject obj => obj -> JSM TextTrackCueList
-castToTextTrackCueList = castTo gTypeTextTrackCueList "TextTrackCueList"
-
-gTypeTextTrackCueList :: JSM GType
-gTypeTextTrackCueList = GType . Object <$> jsg "TextTrackCueList"
-#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 "JSDOM.TextTrackList".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList Mozilla TextTrackList documentation>
-newtype TextTrackList = TextTrackList { unTextTrackList :: JSVal }
-
-instance PToJSVal TextTrackList where
-  pToJSVal = unTextTrackList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TextTrackList where
-  pFromJSVal = TextTrackList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TextTrackList where
-  toJSVal = return . unTextTrackList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TextTrackList where
-  fromJSVal v = fmap TextTrackList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TextTrackList where
-  makeObject = makeObject . unTextTrackList
-
-instance IsEventTarget TextTrackList
-instance IsGObject TextTrackList where
-  toGObject = GObject . unTextTrackList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TextTrackList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTextTrackList :: IsGObject obj => obj -> JSM TextTrackList
-castToTextTrackList = castTo gTypeTextTrackList "TextTrackList"
-
-gTypeTextTrackList :: JSM GType
-gTypeTextTrackList = GType . Object <$> jsg "TextTrackList"
-#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 "JSDOM.TimeRanges".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges Mozilla TimeRanges documentation>
-newtype TimeRanges = TimeRanges { unTimeRanges :: JSVal }
-
-instance PToJSVal TimeRanges where
-  pToJSVal = unTimeRanges
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TimeRanges where
-  pFromJSVal = TimeRanges
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TimeRanges where
-  toJSVal = return . unTimeRanges
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TimeRanges where
-  fromJSVal v = fmap TimeRanges <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TimeRanges where
-  makeObject = makeObject . unTimeRanges
-
-instance IsGObject TimeRanges where
-  toGObject = GObject . unTimeRanges
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TimeRanges . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTimeRanges :: IsGObject obj => obj -> JSM TimeRanges
-castToTimeRanges = castTo gTypeTimeRanges "TimeRanges"
-
-gTypeTimeRanges :: JSM GType
-gTypeTimeRanges = GType . Object <$> jsg "TimeRanges"
-#else
-type IsTimeRanges o = TimeRangesClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Touch".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Touch Mozilla Touch documentation>
-newtype Touch = Touch { unTouch :: JSVal }
-
-instance PToJSVal Touch where
-  pToJSVal = unTouch
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Touch where
-  pFromJSVal = Touch
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Touch where
-  toJSVal = return . unTouch
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Touch where
-  fromJSVal v = fmap Touch <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Touch where
-  makeObject = makeObject . unTouch
-
-instance IsGObject Touch where
-  toGObject = GObject . unTouch
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Touch . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTouch :: IsGObject obj => obj -> JSM Touch
-castToTouch = castTo gTypeTouch "Touch"
-
-gTypeTouch :: JSM GType
-gTypeTouch = GType . Object <$> jsg "Touch"
-#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 "JSDOM.TouchEvent".
--- Base interface functions are in:
---
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent Mozilla TouchEvent documentation>
-newtype TouchEvent = TouchEvent { unTouchEvent :: JSVal }
-
-instance PToJSVal TouchEvent where
-  pToJSVal = unTouchEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TouchEvent where
-  pFromJSVal = TouchEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TouchEvent where
-  toJSVal = return . unTouchEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TouchEvent where
-  fromJSVal v = fmap TouchEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TouchEvent where
-  makeObject = makeObject . unTouchEvent
-
-instance IsUIEvent TouchEvent
-instance IsEvent TouchEvent
-instance IsGObject TouchEvent where
-  toGObject = GObject . unTouchEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TouchEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTouchEvent :: IsGObject obj => obj -> JSM TouchEvent
-castToTouchEvent = castTo gTypeTouchEvent "TouchEvent"
-
-gTypeTouchEvent :: JSM GType
-gTypeTouchEvent = GType . Object <$> jsg "TouchEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.TouchList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TouchList Mozilla TouchList documentation>
-newtype TouchList = TouchList { unTouchList :: JSVal }
-
-instance PToJSVal TouchList where
-  pToJSVal = unTouchList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TouchList where
-  pFromJSVal = TouchList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TouchList where
-  toJSVal = return . unTouchList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TouchList where
-  fromJSVal v = fmap TouchList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TouchList where
-  makeObject = makeObject . unTouchList
-
-instance IsGObject TouchList where
-  toGObject = GObject . unTouchList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TouchList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTouchList :: IsGObject obj => obj -> JSM TouchList
-castToTouchList = castTo gTypeTouchList "TouchList"
-
-gTypeTouchList :: JSM GType
-gTypeTouchList = GType . Object <$> jsg "TouchList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.TrackEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent Mozilla TrackEvent documentation>
-newtype TrackEvent = TrackEvent { unTrackEvent :: JSVal }
-
-instance PToJSVal TrackEvent where
-  pToJSVal = unTrackEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TrackEvent where
-  pFromJSVal = TrackEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TrackEvent where
-  toJSVal = return . unTrackEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TrackEvent where
-  fromJSVal v = fmap TrackEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TrackEvent where
-  makeObject = makeObject . unTrackEvent
-
-instance IsEvent TrackEvent
-instance IsGObject TrackEvent where
-  toGObject = GObject . unTrackEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TrackEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTrackEvent :: IsGObject obj => obj -> JSM TrackEvent
-castToTrackEvent = castTo gTypeTrackEvent "TrackEvent"
-
-gTypeTrackEvent :: JSM GType
-gTypeTrackEvent = GType . Object <$> jsg "TrackEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.TransitionEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent Mozilla TransitionEvent documentation>
-newtype TransitionEvent = TransitionEvent { unTransitionEvent :: JSVal }
-
-instance PToJSVal TransitionEvent where
-  pToJSVal = unTransitionEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TransitionEvent where
-  pFromJSVal = TransitionEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TransitionEvent where
-  toJSVal = return . unTransitionEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TransitionEvent where
-  fromJSVal v = fmap TransitionEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TransitionEvent where
-  makeObject = makeObject . unTransitionEvent
-
-instance IsEvent TransitionEvent
-instance IsGObject TransitionEvent where
-  toGObject = GObject . unTransitionEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TransitionEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTransitionEvent :: IsGObject obj => obj -> JSM TransitionEvent
-castToTransitionEvent = castTo gTypeTransitionEvent "TransitionEvent"
-
-gTypeTransitionEvent :: JSM GType
-gTypeTransitionEvent = GType . Object <$> jsg "TransitionEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.TreeWalker".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker Mozilla TreeWalker documentation>
-newtype TreeWalker = TreeWalker { unTreeWalker :: JSVal }
-
-instance PToJSVal TreeWalker where
-  pToJSVal = unTreeWalker
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TreeWalker where
-  pFromJSVal = TreeWalker
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TreeWalker where
-  toJSVal = return . unTreeWalker
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TreeWalker where
-  fromJSVal v = fmap TreeWalker <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TreeWalker where
-  makeObject = makeObject . unTreeWalker
-
-instance IsGObject TreeWalker where
-  toGObject = GObject . unTreeWalker
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TreeWalker . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTreeWalker :: IsGObject obj => obj -> JSM TreeWalker
-castToTreeWalker = castTo gTypeTreeWalker "TreeWalker"
-
-gTypeTreeWalker :: JSM GType
-gTypeTreeWalker = GType . Object <$> jsg "TreeWalker"
-#else
-type IsTreeWalker o = TreeWalkerClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.TypeConversions".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions Mozilla TypeConversions documentation>
-newtype TypeConversions = TypeConversions { unTypeConversions :: JSVal }
-
-instance PToJSVal TypeConversions where
-  pToJSVal = unTypeConversions
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal TypeConversions where
-  pFromJSVal = TypeConversions
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal TypeConversions where
-  toJSVal = return . unTypeConversions
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal TypeConversions where
-  fromJSVal v = fmap TypeConversions <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject TypeConversions where
-  makeObject = makeObject . unTypeConversions
-
-instance IsGObject TypeConversions where
-  toGObject = GObject . unTypeConversions
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = TypeConversions . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToTypeConversions :: IsGObject obj => obj -> JSM TypeConversions
-castToTypeConversions = castTo gTypeTypeConversions "TypeConversions"
-
-gTypeTypeConversions :: JSM GType
-gTypeTypeConversions = GType . Object <$> jsg "TypeConversions"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.UIEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent Mozilla UIEvent documentation>
-newtype UIEvent = UIEvent { unUIEvent :: JSVal }
-
-instance PToJSVal UIEvent where
-  pToJSVal = unUIEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal UIEvent where
-  pFromJSVal = UIEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal UIEvent where
-  toJSVal = return . unUIEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal UIEvent where
-  fromJSVal v = fmap UIEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject UIEvent where
-  makeObject = makeObject . unUIEvent
-
-class IsEvent o => IsUIEvent o
-toUIEvent :: IsUIEvent o => o -> UIEvent
-toUIEvent = unsafeCastGObject . toGObject
-
-instance IsUIEvent UIEvent
-instance IsEvent UIEvent
-instance IsGObject UIEvent where
-  toGObject = GObject . unUIEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = UIEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToUIEvent :: IsGObject obj => obj -> JSM UIEvent
-castToUIEvent = castTo gTypeUIEvent "UIEvent"
-
-gTypeUIEvent :: JSM GType
-gTypeUIEvent = GType . Object <$> jsg "UIEvent"
-#else
-type IsUIEvent o = UIEventClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.UIRequestEvent".
--- Base interface functions are in:
---
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent Mozilla UIRequestEvent documentation>
-newtype UIRequestEvent = UIRequestEvent { unUIRequestEvent :: JSVal }
-
-instance PToJSVal UIRequestEvent where
-  pToJSVal = unUIRequestEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal UIRequestEvent where
-  pFromJSVal = UIRequestEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal UIRequestEvent where
-  toJSVal = return . unUIRequestEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal UIRequestEvent where
-  fromJSVal v = fmap UIRequestEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject UIRequestEvent where
-  makeObject = makeObject . unUIRequestEvent
-
-instance IsUIEvent UIRequestEvent
-instance IsEvent UIRequestEvent
-instance IsGObject UIRequestEvent where
-  toGObject = GObject . unUIRequestEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = UIRequestEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToUIRequestEvent :: IsGObject obj => obj -> JSM UIRequestEvent
-castToUIRequestEvent = castTo gTypeUIRequestEvent "UIRequestEvent"
-
-gTypeUIRequestEvent :: JSM GType
-gTypeUIRequestEvent = GType . Object <$> jsg "UIRequestEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.URL".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation>
-newtype URL = URL { unURL :: JSVal }
-
-instance PToJSVal URL where
-  pToJSVal = unURL
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal URL where
-  pFromJSVal = URL
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal URL where
-  toJSVal = return . unURL
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal URL where
-  fromJSVal v = fmap URL <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject URL where
-  makeObject = makeObject . unURL
-
-instance IsGObject URL where
-  toGObject = GObject . unURL
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = URL . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToURL :: IsGObject obj => obj -> JSM URL
-castToURL = castTo gTypeURL "URL"
-
-gTypeURL :: JSM GType
-gTypeURL = GType . Object <$> jsg "URL"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.URLUtils".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils Mozilla URLUtils documentation>
-newtype URLUtils = URLUtils { unURLUtils :: JSVal }
-
-instance PToJSVal URLUtils where
-  pToJSVal = unURLUtils
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal URLUtils where
-  pFromJSVal = URLUtils
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal URLUtils where
-  toJSVal = return . unURLUtils
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal URLUtils where
-  fromJSVal v = fmap URLUtils <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject URLUtils where
-  makeObject = makeObject . unURLUtils
-
-instance IsGObject URLUtils where
-  toGObject = GObject . unURLUtils
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = URLUtils . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToURLUtils :: IsGObject obj => obj -> JSM URLUtils
-castToURLUtils = castTo gTypeURLUtils "URLUtils"
-
-gTypeURLUtils :: JSM GType
-gTypeURLUtils = GType . Object <$> jsg "URLUtils"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.UserMessageHandler".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler Mozilla UserMessageHandler documentation>
-newtype UserMessageHandler = UserMessageHandler { unUserMessageHandler :: JSVal }
-
-instance PToJSVal UserMessageHandler where
-  pToJSVal = unUserMessageHandler
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal UserMessageHandler where
-  pFromJSVal = UserMessageHandler
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal UserMessageHandler where
-  toJSVal = return . unUserMessageHandler
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal UserMessageHandler where
-  fromJSVal v = fmap UserMessageHandler <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject UserMessageHandler where
-  makeObject = makeObject . unUserMessageHandler
-
-instance IsGObject UserMessageHandler where
-  toGObject = GObject . unUserMessageHandler
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = UserMessageHandler . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToUserMessageHandler :: IsGObject obj => obj -> JSM UserMessageHandler
-castToUserMessageHandler = castTo gTypeUserMessageHandler "UserMessageHandler"
-
-gTypeUserMessageHandler :: JSM GType
-gTypeUserMessageHandler = GType . Object <$> jsg "UserMessageHandler"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.UserMessageHandlersNamespace".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandlersNamespace Mozilla UserMessageHandlersNamespace documentation>
-newtype UserMessageHandlersNamespace = UserMessageHandlersNamespace { unUserMessageHandlersNamespace :: JSVal }
-
-instance PToJSVal UserMessageHandlersNamespace where
-  pToJSVal = unUserMessageHandlersNamespace
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal UserMessageHandlersNamespace where
-  pFromJSVal = UserMessageHandlersNamespace
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal UserMessageHandlersNamespace where
-  toJSVal = return . unUserMessageHandlersNamespace
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal UserMessageHandlersNamespace where
-  fromJSVal v = fmap UserMessageHandlersNamespace <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject UserMessageHandlersNamespace where
-  makeObject = makeObject . unUserMessageHandlersNamespace
-
-instance IsGObject UserMessageHandlersNamespace where
-  toGObject = GObject . unUserMessageHandlersNamespace
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = UserMessageHandlersNamespace . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToUserMessageHandlersNamespace :: IsGObject obj => obj -> JSM UserMessageHandlersNamespace
-castToUserMessageHandlersNamespace = castTo gTypeUserMessageHandlersNamespace "UserMessageHandlersNamespace"
-
-gTypeUserMessageHandlersNamespace :: JSM GType
-gTypeUserMessageHandlersNamespace = GType . Object <$> jsg "UserMessageHandlersNamespace"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.VTTCue".
--- Base interface functions are in:
---
---     * "JSDOM.TextTrackCue"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation>
-newtype VTTCue = VTTCue { unVTTCue :: JSVal }
-
-instance PToJSVal VTTCue where
-  pToJSVal = unVTTCue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal VTTCue where
-  pFromJSVal = VTTCue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal VTTCue where
-  toJSVal = return . unVTTCue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal VTTCue where
-  fromJSVal v = fmap VTTCue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject VTTCue where
-  makeObject = makeObject . unVTTCue
-
-instance IsTextTrackCue VTTCue
-instance IsEventTarget VTTCue
-instance IsGObject VTTCue where
-  toGObject = GObject . unVTTCue
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = VTTCue . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToVTTCue :: IsGObject obj => obj -> JSM VTTCue
-castToVTTCue = castTo gTypeVTTCue "VTTCue"
-
-gTypeVTTCue :: JSM GType
-gTypeVTTCue = GType . Object <$> jsg "VTTCue"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.VTTRegion".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation>
-newtype VTTRegion = VTTRegion { unVTTRegion :: JSVal }
-
-instance PToJSVal VTTRegion where
-  pToJSVal = unVTTRegion
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal VTTRegion where
-  pFromJSVal = VTTRegion
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal VTTRegion where
-  toJSVal = return . unVTTRegion
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal VTTRegion where
-  fromJSVal v = fmap VTTRegion <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject VTTRegion where
-  makeObject = makeObject . unVTTRegion
-
-instance IsGObject VTTRegion where
-  toGObject = GObject . unVTTRegion
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = VTTRegion . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToVTTRegion :: IsGObject obj => obj -> JSM VTTRegion
-castToVTTRegion = castTo gTypeVTTRegion "VTTRegion"
-
-gTypeVTTRegion :: JSM GType
-gTypeVTTRegion = GType . Object <$> jsg "VTTRegion"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.VTTRegionList".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList Mozilla VTTRegionList documentation>
-newtype VTTRegionList = VTTRegionList { unVTTRegionList :: JSVal }
-
-instance PToJSVal VTTRegionList where
-  pToJSVal = unVTTRegionList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal VTTRegionList where
-  pFromJSVal = VTTRegionList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal VTTRegionList where
-  toJSVal = return . unVTTRegionList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal VTTRegionList where
-  fromJSVal v = fmap VTTRegionList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject VTTRegionList where
-  makeObject = makeObject . unVTTRegionList
-
-instance IsGObject VTTRegionList where
-  toGObject = GObject . unVTTRegionList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = VTTRegionList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToVTTRegionList :: IsGObject obj => obj -> JSM VTTRegionList
-castToVTTRegionList = castTo gTypeVTTRegionList "VTTRegionList"
-
-gTypeVTTRegionList :: JSM GType
-gTypeVTTRegionList = GType . Object <$> jsg "VTTRegionList"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.ValidityState".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState Mozilla ValidityState documentation>
-newtype ValidityState = ValidityState { unValidityState :: JSVal }
-
-instance PToJSVal ValidityState where
-  pToJSVal = unValidityState
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal ValidityState where
-  pFromJSVal = ValidityState
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal ValidityState where
-  toJSVal = return . unValidityState
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal ValidityState where
-  fromJSVal v = fmap ValidityState <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject ValidityState where
-  makeObject = makeObject . unValidityState
-
-instance IsGObject ValidityState where
-  toGObject = GObject . unValidityState
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = ValidityState . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToValidityState :: IsGObject obj => obj -> JSM ValidityState
-castToValidityState = castTo gTypeValidityState "ValidityState"
-
-gTypeValidityState :: JSM GType
-gTypeValidityState = GType . Object <$> jsg "ValidityState"
-#else
-type IsValidityState o = ValidityStateClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.VideoPlaybackQuality".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality Mozilla VideoPlaybackQuality documentation>
-newtype VideoPlaybackQuality = VideoPlaybackQuality { unVideoPlaybackQuality :: JSVal }
-
-instance PToJSVal VideoPlaybackQuality where
-  pToJSVal = unVideoPlaybackQuality
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal VideoPlaybackQuality where
-  pFromJSVal = VideoPlaybackQuality
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal VideoPlaybackQuality where
-  toJSVal = return . unVideoPlaybackQuality
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal VideoPlaybackQuality where
-  fromJSVal v = fmap VideoPlaybackQuality <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject VideoPlaybackQuality where
-  makeObject = makeObject . unVideoPlaybackQuality
-
-instance IsGObject VideoPlaybackQuality where
-  toGObject = GObject . unVideoPlaybackQuality
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = VideoPlaybackQuality . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToVideoPlaybackQuality :: IsGObject obj => obj -> JSM VideoPlaybackQuality
-castToVideoPlaybackQuality = castTo gTypeVideoPlaybackQuality "VideoPlaybackQuality"
-
-gTypeVideoPlaybackQuality :: JSM GType
-gTypeVideoPlaybackQuality = GType . Object <$> jsg "VideoPlaybackQuality"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.VideoStreamTrack".
--- Base interface functions are in:
---
---     * "JSDOM.MediaStreamTrack"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/VideoStreamTrack Mozilla VideoStreamTrack documentation>
-newtype VideoStreamTrack = VideoStreamTrack { unVideoStreamTrack :: JSVal }
-
-instance PToJSVal VideoStreamTrack where
-  pToJSVal = unVideoStreamTrack
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal VideoStreamTrack where
-  pFromJSVal = VideoStreamTrack
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal VideoStreamTrack where
-  toJSVal = return . unVideoStreamTrack
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal VideoStreamTrack where
-  fromJSVal v = fmap VideoStreamTrack <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject VideoStreamTrack where
-  makeObject = makeObject . unVideoStreamTrack
-
-instance IsMediaStreamTrack VideoStreamTrack
-instance IsEventTarget VideoStreamTrack
-instance IsGObject VideoStreamTrack where
-  toGObject = GObject . unVideoStreamTrack
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = VideoStreamTrack . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToVideoStreamTrack :: IsGObject obj => obj -> JSM VideoStreamTrack
-castToVideoStreamTrack = castTo gTypeVideoStreamTrack "VideoStreamTrack"
-
-gTypeVideoStreamTrack :: JSM GType
-gTypeVideoStreamTrack = GType . Object <$> jsg "VideoStreamTrack"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.VideoTrack".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack Mozilla VideoTrack documentation>
-newtype VideoTrack = VideoTrack { unVideoTrack :: JSVal }
-
-instance PToJSVal VideoTrack where
-  pToJSVal = unVideoTrack
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal VideoTrack where
-  pFromJSVal = VideoTrack
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal VideoTrack where
-  toJSVal = return . unVideoTrack
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal VideoTrack where
-  fromJSVal v = fmap VideoTrack <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject VideoTrack where
-  makeObject = makeObject . unVideoTrack
-
-instance IsGObject VideoTrack where
-  toGObject = GObject . unVideoTrack
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = VideoTrack . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToVideoTrack :: IsGObject obj => obj -> JSM VideoTrack
-castToVideoTrack = castTo gTypeVideoTrack "VideoTrack"
-
-gTypeVideoTrack :: JSM GType
-gTypeVideoTrack = GType . Object <$> jsg "VideoTrack"
-#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 "JSDOM.VideoTrackList".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList Mozilla VideoTrackList documentation>
-newtype VideoTrackList = VideoTrackList { unVideoTrackList :: JSVal }
-
-instance PToJSVal VideoTrackList where
-  pToJSVal = unVideoTrackList
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal VideoTrackList where
-  pFromJSVal = VideoTrackList
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal VideoTrackList where
-  toJSVal = return . unVideoTrackList
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal VideoTrackList where
-  fromJSVal v = fmap VideoTrackList <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject VideoTrackList where
-  makeObject = makeObject . unVideoTrackList
-
-instance IsEventTarget VideoTrackList
-instance IsGObject VideoTrackList where
-  toGObject = GObject . unVideoTrackList
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = VideoTrackList . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToVideoTrackList :: IsGObject obj => obj -> JSM VideoTrackList
-castToVideoTrackList = castTo gTypeVideoTrackList "VideoTrackList"
-
-gTypeVideoTrackList :: JSM GType
-gTypeVideoTrackList = GType . Object <$> jsg "VideoTrackList"
-#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 "JSDOM.WaveShaperNode".
--- Base interface functions are in:
---
---     * "JSDOM.AudioNode"
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode Mozilla WaveShaperNode documentation>
-newtype WaveShaperNode = WaveShaperNode { unWaveShaperNode :: JSVal }
-
-instance PToJSVal WaveShaperNode where
-  pToJSVal = unWaveShaperNode
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WaveShaperNode where
-  pFromJSVal = WaveShaperNode
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WaveShaperNode where
-  toJSVal = return . unWaveShaperNode
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WaveShaperNode where
-  fromJSVal v = fmap WaveShaperNode <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WaveShaperNode where
-  makeObject = makeObject . unWaveShaperNode
-
-instance IsAudioNode WaveShaperNode
-instance IsEventTarget WaveShaperNode
-instance IsGObject WaveShaperNode where
-  toGObject = GObject . unWaveShaperNode
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WaveShaperNode . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWaveShaperNode :: IsGObject obj => obj -> JSM WaveShaperNode
-castToWaveShaperNode = castTo gTypeWaveShaperNode "WaveShaperNode"
-
-gTypeWaveShaperNode :: JSM GType
-gTypeWaveShaperNode = GType . Object <$> jsg "WaveShaperNode"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGL2RenderingContext".
--- Base interface functions are in:
---
---     * "JSDOM.WebGLRenderingContextBase"
---     * "JSDOM.CanvasRenderingContext"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext Mozilla WebGL2RenderingContext documentation>
-newtype WebGL2RenderingContext = WebGL2RenderingContext { unWebGL2RenderingContext :: JSVal }
-
-instance PToJSVal WebGL2RenderingContext where
-  pToJSVal = unWebGL2RenderingContext
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGL2RenderingContext where
-  pFromJSVal = WebGL2RenderingContext
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGL2RenderingContext where
-  toJSVal = return . unWebGL2RenderingContext
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGL2RenderingContext where
-  fromJSVal v = fmap WebGL2RenderingContext <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGL2RenderingContext where
-  makeObject = makeObject . unWebGL2RenderingContext
-
-instance IsWebGLRenderingContextBase WebGL2RenderingContext
-instance IsCanvasRenderingContext WebGL2RenderingContext
-instance IsGObject WebGL2RenderingContext where
-  toGObject = GObject . unWebGL2RenderingContext
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGL2RenderingContext . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGL2RenderingContext :: IsGObject obj => obj -> JSM WebGL2RenderingContext
-castToWebGL2RenderingContext = castTo gTypeWebGL2RenderingContext "WebGL2RenderingContext"
-
-gTypeWebGL2RenderingContext :: JSM GType
-gTypeWebGL2RenderingContext = GType . Object <$> jsg "WebGL2RenderingContext"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLActiveInfo".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo Mozilla WebGLActiveInfo documentation>
-newtype WebGLActiveInfo = WebGLActiveInfo { unWebGLActiveInfo :: JSVal }
-
-instance PToJSVal WebGLActiveInfo where
-  pToJSVal = unWebGLActiveInfo
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLActiveInfo where
-  pFromJSVal = WebGLActiveInfo
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLActiveInfo where
-  toJSVal = return . unWebGLActiveInfo
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLActiveInfo where
-  fromJSVal v = fmap WebGLActiveInfo <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLActiveInfo where
-  makeObject = makeObject . unWebGLActiveInfo
-
-instance IsGObject WebGLActiveInfo where
-  toGObject = GObject . unWebGLActiveInfo
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLActiveInfo . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLActiveInfo :: IsGObject obj => obj -> JSM WebGLActiveInfo
-castToWebGLActiveInfo = castTo gTypeWebGLActiveInfo "WebGLActiveInfo"
-
-gTypeWebGLActiveInfo :: JSM GType
-gTypeWebGLActiveInfo = GType . Object <$> jsg "WebGLActiveInfo"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLBuffer".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer Mozilla WebGLBuffer documentation>
-newtype WebGLBuffer = WebGLBuffer { unWebGLBuffer :: JSVal }
-
-instance PToJSVal WebGLBuffer where
-  pToJSVal = unWebGLBuffer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLBuffer where
-  pFromJSVal = WebGLBuffer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLBuffer where
-  toJSVal = return . unWebGLBuffer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLBuffer where
-  fromJSVal v = fmap WebGLBuffer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLBuffer where
-  makeObject = makeObject . unWebGLBuffer
-
-instance IsGObject WebGLBuffer where
-  toGObject = GObject . unWebGLBuffer
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLBuffer . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLBuffer :: IsGObject obj => obj -> JSM WebGLBuffer
-castToWebGLBuffer = castTo gTypeWebGLBuffer "WebGLBuffer"
-
-gTypeWebGLBuffer :: JSM GType
-gTypeWebGLBuffer = GType . Object <$> jsg "WebGLBuffer"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLCompressedTextureATC".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTextureATC Mozilla WebGLCompressedTextureATC documentation>
-newtype WebGLCompressedTextureATC = WebGLCompressedTextureATC { unWebGLCompressedTextureATC :: JSVal }
-
-instance PToJSVal WebGLCompressedTextureATC where
-  pToJSVal = unWebGLCompressedTextureATC
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLCompressedTextureATC where
-  pFromJSVal = WebGLCompressedTextureATC
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLCompressedTextureATC where
-  toJSVal = return . unWebGLCompressedTextureATC
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLCompressedTextureATC where
-  fromJSVal v = fmap WebGLCompressedTextureATC <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLCompressedTextureATC where
-  makeObject = makeObject . unWebGLCompressedTextureATC
-
-instance IsGObject WebGLCompressedTextureATC where
-  toGObject = GObject . unWebGLCompressedTextureATC
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLCompressedTextureATC . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLCompressedTextureATC :: IsGObject obj => obj -> JSM WebGLCompressedTextureATC
-castToWebGLCompressedTextureATC = castTo gTypeWebGLCompressedTextureATC "WebGLCompressedTextureATC"
-
-gTypeWebGLCompressedTextureATC :: JSM GType
-gTypeWebGLCompressedTextureATC = GType . Object <$> jsg "WebGLCompressedTextureATC"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLCompressedTexturePVRTC".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTexturePVRTC Mozilla WebGLCompressedTexturePVRTC documentation>
-newtype WebGLCompressedTexturePVRTC = WebGLCompressedTexturePVRTC { unWebGLCompressedTexturePVRTC :: JSVal }
-
-instance PToJSVal WebGLCompressedTexturePVRTC where
-  pToJSVal = unWebGLCompressedTexturePVRTC
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLCompressedTexturePVRTC where
-  pFromJSVal = WebGLCompressedTexturePVRTC
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLCompressedTexturePVRTC where
-  toJSVal = return . unWebGLCompressedTexturePVRTC
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLCompressedTexturePVRTC where
-  fromJSVal v = fmap WebGLCompressedTexturePVRTC <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLCompressedTexturePVRTC where
-  makeObject = makeObject . unWebGLCompressedTexturePVRTC
-
-instance IsGObject WebGLCompressedTexturePVRTC where
-  toGObject = GObject . unWebGLCompressedTexturePVRTC
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLCompressedTexturePVRTC . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLCompressedTexturePVRTC :: IsGObject obj => obj -> JSM WebGLCompressedTexturePVRTC
-castToWebGLCompressedTexturePVRTC = castTo gTypeWebGLCompressedTexturePVRTC "WebGLCompressedTexturePVRTC"
-
-gTypeWebGLCompressedTexturePVRTC :: JSM GType
-gTypeWebGLCompressedTexturePVRTC = GType . Object <$> jsg "WebGLCompressedTexturePVRTC"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLCompressedTextureS3TC".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTextureS3TC Mozilla WebGLCompressedTextureS3TC documentation>
-newtype WebGLCompressedTextureS3TC = WebGLCompressedTextureS3TC { unWebGLCompressedTextureS3TC :: JSVal }
-
-instance PToJSVal WebGLCompressedTextureS3TC where
-  pToJSVal = unWebGLCompressedTextureS3TC
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLCompressedTextureS3TC where
-  pFromJSVal = WebGLCompressedTextureS3TC
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLCompressedTextureS3TC where
-  toJSVal = return . unWebGLCompressedTextureS3TC
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLCompressedTextureS3TC where
-  fromJSVal v = fmap WebGLCompressedTextureS3TC <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLCompressedTextureS3TC where
-  makeObject = makeObject . unWebGLCompressedTextureS3TC
-
-instance IsGObject WebGLCompressedTextureS3TC where
-  toGObject = GObject . unWebGLCompressedTextureS3TC
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLCompressedTextureS3TC . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLCompressedTextureS3TC :: IsGObject obj => obj -> JSM WebGLCompressedTextureS3TC
-castToWebGLCompressedTextureS3TC = castTo gTypeWebGLCompressedTextureS3TC "WebGLCompressedTextureS3TC"
-
-gTypeWebGLCompressedTextureS3TC :: JSM GType
-gTypeWebGLCompressedTextureS3TC = GType . Object <$> jsg "WebGLCompressedTextureS3TC"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLContextAttributes".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes Mozilla WebGLContextAttributes documentation>
-newtype WebGLContextAttributes = WebGLContextAttributes { unWebGLContextAttributes :: JSVal }
-
-instance PToJSVal WebGLContextAttributes where
-  pToJSVal = unWebGLContextAttributes
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLContextAttributes where
-  pFromJSVal = WebGLContextAttributes
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLContextAttributes where
-  toJSVal = return . unWebGLContextAttributes
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLContextAttributes where
-  fromJSVal v = fmap WebGLContextAttributes <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLContextAttributes where
-  makeObject = makeObject . unWebGLContextAttributes
-
-instance IsGObject WebGLContextAttributes where
-  toGObject = GObject . unWebGLContextAttributes
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLContextAttributes . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLContextAttributes :: IsGObject obj => obj -> JSM WebGLContextAttributes
-castToWebGLContextAttributes = castTo gTypeWebGLContextAttributes "WebGLContextAttributes"
-
-gTypeWebGLContextAttributes :: JSM GType
-gTypeWebGLContextAttributes = GType . Object <$> jsg "WebGLContextAttributes"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLContextEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent Mozilla WebGLContextEvent documentation>
-newtype WebGLContextEvent = WebGLContextEvent { unWebGLContextEvent :: JSVal }
-
-instance PToJSVal WebGLContextEvent where
-  pToJSVal = unWebGLContextEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLContextEvent where
-  pFromJSVal = WebGLContextEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLContextEvent where
-  toJSVal = return . unWebGLContextEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLContextEvent where
-  fromJSVal v = fmap WebGLContextEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLContextEvent where
-  makeObject = makeObject . unWebGLContextEvent
-
-instance IsEvent WebGLContextEvent
-instance IsGObject WebGLContextEvent where
-  toGObject = GObject . unWebGLContextEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLContextEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLContextEvent :: IsGObject obj => obj -> JSM WebGLContextEvent
-castToWebGLContextEvent = castTo gTypeWebGLContextEvent "WebGLContextEvent"
-
-gTypeWebGLContextEvent :: JSM GType
-gTypeWebGLContextEvent = GType . Object <$> jsg "WebGLContextEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLDebugRendererInfo".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugRendererInfo Mozilla WebGLDebugRendererInfo documentation>
-newtype WebGLDebugRendererInfo = WebGLDebugRendererInfo { unWebGLDebugRendererInfo :: JSVal }
-
-instance PToJSVal WebGLDebugRendererInfo where
-  pToJSVal = unWebGLDebugRendererInfo
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLDebugRendererInfo where
-  pFromJSVal = WebGLDebugRendererInfo
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLDebugRendererInfo where
-  toJSVal = return . unWebGLDebugRendererInfo
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLDebugRendererInfo where
-  fromJSVal v = fmap WebGLDebugRendererInfo <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLDebugRendererInfo where
-  makeObject = makeObject . unWebGLDebugRendererInfo
-
-instance IsGObject WebGLDebugRendererInfo where
-  toGObject = GObject . unWebGLDebugRendererInfo
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLDebugRendererInfo . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLDebugRendererInfo :: IsGObject obj => obj -> JSM WebGLDebugRendererInfo
-castToWebGLDebugRendererInfo = castTo gTypeWebGLDebugRendererInfo "WebGLDebugRendererInfo"
-
-gTypeWebGLDebugRendererInfo :: JSM GType
-gTypeWebGLDebugRendererInfo = GType . Object <$> jsg "WebGLDebugRendererInfo"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLDebugShaders".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders Mozilla WebGLDebugShaders documentation>
-newtype WebGLDebugShaders = WebGLDebugShaders { unWebGLDebugShaders :: JSVal }
-
-instance PToJSVal WebGLDebugShaders where
-  pToJSVal = unWebGLDebugShaders
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLDebugShaders where
-  pFromJSVal = WebGLDebugShaders
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLDebugShaders where
-  toJSVal = return . unWebGLDebugShaders
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLDebugShaders where
-  fromJSVal v = fmap WebGLDebugShaders <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLDebugShaders where
-  makeObject = makeObject . unWebGLDebugShaders
-
-instance IsGObject WebGLDebugShaders where
-  toGObject = GObject . unWebGLDebugShaders
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLDebugShaders . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLDebugShaders :: IsGObject obj => obj -> JSM WebGLDebugShaders
-castToWebGLDebugShaders = castTo gTypeWebGLDebugShaders "WebGLDebugShaders"
-
-gTypeWebGLDebugShaders :: JSM GType
-gTypeWebGLDebugShaders = GType . Object <$> jsg "WebGLDebugShaders"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLDepthTexture".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDepthTexture Mozilla WebGLDepthTexture documentation>
-newtype WebGLDepthTexture = WebGLDepthTexture { unWebGLDepthTexture :: JSVal }
-
-instance PToJSVal WebGLDepthTexture where
-  pToJSVal = unWebGLDepthTexture
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLDepthTexture where
-  pFromJSVal = WebGLDepthTexture
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLDepthTexture where
-  toJSVal = return . unWebGLDepthTexture
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLDepthTexture where
-  fromJSVal v = fmap WebGLDepthTexture <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLDepthTexture where
-  makeObject = makeObject . unWebGLDepthTexture
-
-instance IsGObject WebGLDepthTexture where
-  toGObject = GObject . unWebGLDepthTexture
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLDepthTexture . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLDepthTexture :: IsGObject obj => obj -> JSM WebGLDepthTexture
-castToWebGLDepthTexture = castTo gTypeWebGLDepthTexture "WebGLDepthTexture"
-
-gTypeWebGLDepthTexture :: JSM GType
-gTypeWebGLDepthTexture = GType . Object <$> jsg "WebGLDepthTexture"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLDrawBuffers".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers Mozilla WebGLDrawBuffers documentation>
-newtype WebGLDrawBuffers = WebGLDrawBuffers { unWebGLDrawBuffers :: JSVal }
-
-instance PToJSVal WebGLDrawBuffers where
-  pToJSVal = unWebGLDrawBuffers
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLDrawBuffers where
-  pFromJSVal = WebGLDrawBuffers
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLDrawBuffers where
-  toJSVal = return . unWebGLDrawBuffers
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLDrawBuffers where
-  fromJSVal v = fmap WebGLDrawBuffers <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLDrawBuffers where
-  makeObject = makeObject . unWebGLDrawBuffers
-
-instance IsGObject WebGLDrawBuffers where
-  toGObject = GObject . unWebGLDrawBuffers
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLDrawBuffers . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLDrawBuffers :: IsGObject obj => obj -> JSM WebGLDrawBuffers
-castToWebGLDrawBuffers = castTo gTypeWebGLDrawBuffers "WebGLDrawBuffers"
-
-gTypeWebGLDrawBuffers :: JSM GType
-gTypeWebGLDrawBuffers = GType . Object <$> jsg "WebGLDrawBuffers"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLFramebuffer".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLFramebuffer Mozilla WebGLFramebuffer documentation>
-newtype WebGLFramebuffer = WebGLFramebuffer { unWebGLFramebuffer :: JSVal }
-
-instance PToJSVal WebGLFramebuffer where
-  pToJSVal = unWebGLFramebuffer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLFramebuffer where
-  pFromJSVal = WebGLFramebuffer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLFramebuffer where
-  toJSVal = return . unWebGLFramebuffer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLFramebuffer where
-  fromJSVal v = fmap WebGLFramebuffer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLFramebuffer where
-  makeObject = makeObject . unWebGLFramebuffer
-
-instance IsGObject WebGLFramebuffer where
-  toGObject = GObject . unWebGLFramebuffer
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLFramebuffer . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLFramebuffer :: IsGObject obj => obj -> JSM WebGLFramebuffer
-castToWebGLFramebuffer = castTo gTypeWebGLFramebuffer "WebGLFramebuffer"
-
-gTypeWebGLFramebuffer :: JSM GType
-gTypeWebGLFramebuffer = GType . Object <$> jsg "WebGLFramebuffer"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLLoseContext".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext Mozilla WebGLLoseContext documentation>
-newtype WebGLLoseContext = WebGLLoseContext { unWebGLLoseContext :: JSVal }
-
-instance PToJSVal WebGLLoseContext where
-  pToJSVal = unWebGLLoseContext
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLLoseContext where
-  pFromJSVal = WebGLLoseContext
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLLoseContext where
-  toJSVal = return . unWebGLLoseContext
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLLoseContext where
-  fromJSVal v = fmap WebGLLoseContext <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLLoseContext where
-  makeObject = makeObject . unWebGLLoseContext
-
-instance IsGObject WebGLLoseContext where
-  toGObject = GObject . unWebGLLoseContext
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLLoseContext . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLLoseContext :: IsGObject obj => obj -> JSM WebGLLoseContext
-castToWebGLLoseContext = castTo gTypeWebGLLoseContext "WebGLLoseContext"
-
-gTypeWebGLLoseContext :: JSM GType
-gTypeWebGLLoseContext = GType . Object <$> jsg "WebGLLoseContext"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLProgram".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLProgram Mozilla WebGLProgram documentation>
-newtype WebGLProgram = WebGLProgram { unWebGLProgram :: JSVal }
-
-instance PToJSVal WebGLProgram where
-  pToJSVal = unWebGLProgram
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLProgram where
-  pFromJSVal = WebGLProgram
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLProgram where
-  toJSVal = return . unWebGLProgram
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLProgram where
-  fromJSVal v = fmap WebGLProgram <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLProgram where
-  makeObject = makeObject . unWebGLProgram
-
-instance IsGObject WebGLProgram where
-  toGObject = GObject . unWebGLProgram
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLProgram . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLProgram :: IsGObject obj => obj -> JSM WebGLProgram
-castToWebGLProgram = castTo gTypeWebGLProgram "WebGLProgram"
-
-gTypeWebGLProgram :: JSM GType
-gTypeWebGLProgram = GType . Object <$> jsg "WebGLProgram"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLQuery".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLQuery Mozilla WebGLQuery documentation>
-newtype WebGLQuery = WebGLQuery { unWebGLQuery :: JSVal }
-
-instance PToJSVal WebGLQuery where
-  pToJSVal = unWebGLQuery
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLQuery where
-  pFromJSVal = WebGLQuery
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLQuery where
-  toJSVal = return . unWebGLQuery
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLQuery where
-  fromJSVal v = fmap WebGLQuery <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLQuery where
-  makeObject = makeObject . unWebGLQuery
-
-instance IsGObject WebGLQuery where
-  toGObject = GObject . unWebGLQuery
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLQuery . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLQuery :: IsGObject obj => obj -> JSM WebGLQuery
-castToWebGLQuery = castTo gTypeWebGLQuery "WebGLQuery"
-
-gTypeWebGLQuery :: JSM GType
-gTypeWebGLQuery = GType . Object <$> jsg "WebGLQuery"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLRenderbuffer".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderbuffer Mozilla WebGLRenderbuffer documentation>
-newtype WebGLRenderbuffer = WebGLRenderbuffer { unWebGLRenderbuffer :: JSVal }
-
-instance PToJSVal WebGLRenderbuffer where
-  pToJSVal = unWebGLRenderbuffer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLRenderbuffer where
-  pFromJSVal = WebGLRenderbuffer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLRenderbuffer where
-  toJSVal = return . unWebGLRenderbuffer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLRenderbuffer where
-  fromJSVal v = fmap WebGLRenderbuffer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLRenderbuffer where
-  makeObject = makeObject . unWebGLRenderbuffer
-
-instance IsGObject WebGLRenderbuffer where
-  toGObject = GObject . unWebGLRenderbuffer
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLRenderbuffer . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLRenderbuffer :: IsGObject obj => obj -> JSM WebGLRenderbuffer
-castToWebGLRenderbuffer = castTo gTypeWebGLRenderbuffer "WebGLRenderbuffer"
-
-gTypeWebGLRenderbuffer :: JSM GType
-gTypeWebGLRenderbuffer = GType . Object <$> jsg "WebGLRenderbuffer"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLRenderingContext".
--- Base interface functions are in:
---
---     * "JSDOM.WebGLRenderingContextBase"
---     * "JSDOM.CanvasRenderingContext"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext Mozilla WebGLRenderingContext documentation>
-newtype WebGLRenderingContext = WebGLRenderingContext { unWebGLRenderingContext :: JSVal }
-
-instance PToJSVal WebGLRenderingContext where
-  pToJSVal = unWebGLRenderingContext
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLRenderingContext where
-  pFromJSVal = WebGLRenderingContext
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLRenderingContext where
-  toJSVal = return . unWebGLRenderingContext
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLRenderingContext where
-  fromJSVal v = fmap WebGLRenderingContext <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLRenderingContext where
-  makeObject = makeObject . unWebGLRenderingContext
-
-instance IsWebGLRenderingContextBase WebGLRenderingContext
-instance IsCanvasRenderingContext WebGLRenderingContext
-instance IsGObject WebGLRenderingContext where
-  toGObject = GObject . unWebGLRenderingContext
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLRenderingContext . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLRenderingContext :: IsGObject obj => obj -> JSM WebGLRenderingContext
-castToWebGLRenderingContext = castTo gTypeWebGLRenderingContext "WebGLRenderingContext"
-
-gTypeWebGLRenderingContext :: JSM GType
-gTypeWebGLRenderingContext = GType . Object <$> jsg "WebGLRenderingContext"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLRenderingContextBase".
--- Base interface functions are in:
---
---     * "JSDOM.CanvasRenderingContext"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase Mozilla WebGLRenderingContextBase documentation>
-newtype WebGLRenderingContextBase = WebGLRenderingContextBase { unWebGLRenderingContextBase :: JSVal }
-
-instance PToJSVal WebGLRenderingContextBase where
-  pToJSVal = unWebGLRenderingContextBase
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLRenderingContextBase where
-  pFromJSVal = WebGLRenderingContextBase
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLRenderingContextBase where
-  toJSVal = return . unWebGLRenderingContextBase
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLRenderingContextBase where
-  fromJSVal v = fmap WebGLRenderingContextBase <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLRenderingContextBase where
-  makeObject = makeObject . unWebGLRenderingContextBase
-
-class IsCanvasRenderingContext o => IsWebGLRenderingContextBase o
-toWebGLRenderingContextBase :: IsWebGLRenderingContextBase o => o -> WebGLRenderingContextBase
-toWebGLRenderingContextBase = unsafeCastGObject . toGObject
-
-instance IsWebGLRenderingContextBase WebGLRenderingContextBase
-instance IsCanvasRenderingContext WebGLRenderingContextBase
-instance IsGObject WebGLRenderingContextBase where
-  toGObject = GObject . unWebGLRenderingContextBase
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLRenderingContextBase . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLRenderingContextBase :: IsGObject obj => obj -> JSM WebGLRenderingContextBase
-castToWebGLRenderingContextBase = castTo gTypeWebGLRenderingContextBase "WebGLRenderingContextBase"
-
-gTypeWebGLRenderingContextBase :: JSM GType
-gTypeWebGLRenderingContextBase = GType . Object <$> jsg "WebGLRenderingContextBase"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLSampler".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLSampler Mozilla WebGLSampler documentation>
-newtype WebGLSampler = WebGLSampler { unWebGLSampler :: JSVal }
-
-instance PToJSVal WebGLSampler where
-  pToJSVal = unWebGLSampler
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLSampler where
-  pFromJSVal = WebGLSampler
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLSampler where
-  toJSVal = return . unWebGLSampler
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLSampler where
-  fromJSVal v = fmap WebGLSampler <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLSampler where
-  makeObject = makeObject . unWebGLSampler
-
-instance IsGObject WebGLSampler where
-  toGObject = GObject . unWebGLSampler
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLSampler . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLSampler :: IsGObject obj => obj -> JSM WebGLSampler
-castToWebGLSampler = castTo gTypeWebGLSampler "WebGLSampler"
-
-gTypeWebGLSampler :: JSM GType
-gTypeWebGLSampler = GType . Object <$> jsg "WebGLSampler"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLShader".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShader Mozilla WebGLShader documentation>
-newtype WebGLShader = WebGLShader { unWebGLShader :: JSVal }
-
-instance PToJSVal WebGLShader where
-  pToJSVal = unWebGLShader
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLShader where
-  pFromJSVal = WebGLShader
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLShader where
-  toJSVal = return . unWebGLShader
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLShader where
-  fromJSVal v = fmap WebGLShader <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLShader where
-  makeObject = makeObject . unWebGLShader
-
-instance IsGObject WebGLShader where
-  toGObject = GObject . unWebGLShader
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLShader . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLShader :: IsGObject obj => obj -> JSM WebGLShader
-castToWebGLShader = castTo gTypeWebGLShader "WebGLShader"
-
-gTypeWebGLShader :: JSM GType
-gTypeWebGLShader = GType . Object <$> jsg "WebGLShader"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLShaderPrecisionFormat".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat Mozilla WebGLShaderPrecisionFormat documentation>
-newtype WebGLShaderPrecisionFormat = WebGLShaderPrecisionFormat { unWebGLShaderPrecisionFormat :: JSVal }
-
-instance PToJSVal WebGLShaderPrecisionFormat where
-  pToJSVal = unWebGLShaderPrecisionFormat
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLShaderPrecisionFormat where
-  pFromJSVal = WebGLShaderPrecisionFormat
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLShaderPrecisionFormat where
-  toJSVal = return . unWebGLShaderPrecisionFormat
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLShaderPrecisionFormat where
-  fromJSVal v = fmap WebGLShaderPrecisionFormat <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLShaderPrecisionFormat where
-  makeObject = makeObject . unWebGLShaderPrecisionFormat
-
-instance IsGObject WebGLShaderPrecisionFormat where
-  toGObject = GObject . unWebGLShaderPrecisionFormat
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLShaderPrecisionFormat . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLShaderPrecisionFormat :: IsGObject obj => obj -> JSM WebGLShaderPrecisionFormat
-castToWebGLShaderPrecisionFormat = castTo gTypeWebGLShaderPrecisionFormat "WebGLShaderPrecisionFormat"
-
-gTypeWebGLShaderPrecisionFormat :: JSM GType
-gTypeWebGLShaderPrecisionFormat = GType . Object <$> jsg "WebGLShaderPrecisionFormat"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLSync".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLSync Mozilla WebGLSync documentation>
-newtype WebGLSync = WebGLSync { unWebGLSync :: JSVal }
-
-instance PToJSVal WebGLSync where
-  pToJSVal = unWebGLSync
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLSync where
-  pFromJSVal = WebGLSync
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLSync where
-  toJSVal = return . unWebGLSync
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLSync where
-  fromJSVal v = fmap WebGLSync <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLSync where
-  makeObject = makeObject . unWebGLSync
-
-instance IsGObject WebGLSync where
-  toGObject = GObject . unWebGLSync
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLSync . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLSync :: IsGObject obj => obj -> JSM WebGLSync
-castToWebGLSync = castTo gTypeWebGLSync "WebGLSync"
-
-gTypeWebGLSync :: JSM GType
-gTypeWebGLSync = GType . Object <$> jsg "WebGLSync"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLTexture".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLTexture Mozilla WebGLTexture documentation>
-newtype WebGLTexture = WebGLTexture { unWebGLTexture :: JSVal }
-
-instance PToJSVal WebGLTexture where
-  pToJSVal = unWebGLTexture
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLTexture where
-  pFromJSVal = WebGLTexture
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLTexture where
-  toJSVal = return . unWebGLTexture
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLTexture where
-  fromJSVal v = fmap WebGLTexture <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLTexture where
-  makeObject = makeObject . unWebGLTexture
-
-instance IsGObject WebGLTexture where
-  toGObject = GObject . unWebGLTexture
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLTexture . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLTexture :: IsGObject obj => obj -> JSM WebGLTexture
-castToWebGLTexture = castTo gTypeWebGLTexture "WebGLTexture"
-
-gTypeWebGLTexture :: JSM GType
-gTypeWebGLTexture = GType . Object <$> jsg "WebGLTexture"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLTransformFeedback".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLTransformFeedback Mozilla WebGLTransformFeedback documentation>
-newtype WebGLTransformFeedback = WebGLTransformFeedback { unWebGLTransformFeedback :: JSVal }
-
-instance PToJSVal WebGLTransformFeedback where
-  pToJSVal = unWebGLTransformFeedback
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLTransformFeedback where
-  pFromJSVal = WebGLTransformFeedback
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLTransformFeedback where
-  toJSVal = return . unWebGLTransformFeedback
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLTransformFeedback where
-  fromJSVal v = fmap WebGLTransformFeedback <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLTransformFeedback where
-  makeObject = makeObject . unWebGLTransformFeedback
-
-instance IsGObject WebGLTransformFeedback where
-  toGObject = GObject . unWebGLTransformFeedback
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLTransformFeedback . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLTransformFeedback :: IsGObject obj => obj -> JSM WebGLTransformFeedback
-castToWebGLTransformFeedback = castTo gTypeWebGLTransformFeedback "WebGLTransformFeedback"
-
-gTypeWebGLTransformFeedback :: JSM GType
-gTypeWebGLTransformFeedback = GType . Object <$> jsg "WebGLTransformFeedback"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLUniformLocation".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLUniformLocation Mozilla WebGLUniformLocation documentation>
-newtype WebGLUniformLocation = WebGLUniformLocation { unWebGLUniformLocation :: JSVal }
-
-instance PToJSVal WebGLUniformLocation where
-  pToJSVal = unWebGLUniformLocation
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLUniformLocation where
-  pFromJSVal = WebGLUniformLocation
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLUniformLocation where
-  toJSVal = return . unWebGLUniformLocation
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLUniformLocation where
-  fromJSVal v = fmap WebGLUniformLocation <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLUniformLocation where
-  makeObject = makeObject . unWebGLUniformLocation
-
-instance IsGObject WebGLUniformLocation where
-  toGObject = GObject . unWebGLUniformLocation
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLUniformLocation . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLUniformLocation :: IsGObject obj => obj -> JSM WebGLUniformLocation
-castToWebGLUniformLocation = castTo gTypeWebGLUniformLocation "WebGLUniformLocation"
-
-gTypeWebGLUniformLocation :: JSM GType
-gTypeWebGLUniformLocation = GType . Object <$> jsg "WebGLUniformLocation"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLVertexArrayObject".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLVertexArrayObject Mozilla WebGLVertexArrayObject documentation>
-newtype WebGLVertexArrayObject = WebGLVertexArrayObject { unWebGLVertexArrayObject :: JSVal }
-
-instance PToJSVal WebGLVertexArrayObject where
-  pToJSVal = unWebGLVertexArrayObject
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLVertexArrayObject where
-  pFromJSVal = WebGLVertexArrayObject
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLVertexArrayObject where
-  toJSVal = return . unWebGLVertexArrayObject
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLVertexArrayObject where
-  fromJSVal v = fmap WebGLVertexArrayObject <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLVertexArrayObject where
-  makeObject = makeObject . unWebGLVertexArrayObject
-
-instance IsGObject WebGLVertexArrayObject where
-  toGObject = GObject . unWebGLVertexArrayObject
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLVertexArrayObject . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLVertexArrayObject :: IsGObject obj => obj -> JSM WebGLVertexArrayObject
-castToWebGLVertexArrayObject = castTo gTypeWebGLVertexArrayObject "WebGLVertexArrayObject"
-
-gTypeWebGLVertexArrayObject :: JSM GType
-gTypeWebGLVertexArrayObject = GType . Object <$> jsg "WebGLVertexArrayObject"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebGLVertexArrayObjectOES".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLVertexArrayObjectOES Mozilla WebGLVertexArrayObjectOES documentation>
-newtype WebGLVertexArrayObjectOES = WebGLVertexArrayObjectOES { unWebGLVertexArrayObjectOES :: JSVal }
-
-instance PToJSVal WebGLVertexArrayObjectOES where
-  pToJSVal = unWebGLVertexArrayObjectOES
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebGLVertexArrayObjectOES where
-  pFromJSVal = WebGLVertexArrayObjectOES
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebGLVertexArrayObjectOES where
-  toJSVal = return . unWebGLVertexArrayObjectOES
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebGLVertexArrayObjectOES where
-  fromJSVal v = fmap WebGLVertexArrayObjectOES <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebGLVertexArrayObjectOES where
-  makeObject = makeObject . unWebGLVertexArrayObjectOES
-
-instance IsGObject WebGLVertexArrayObjectOES where
-  toGObject = GObject . unWebGLVertexArrayObjectOES
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebGLVertexArrayObjectOES . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebGLVertexArrayObjectOES :: IsGObject obj => obj -> JSM WebGLVertexArrayObjectOES
-castToWebGLVertexArrayObjectOES = castTo gTypeWebGLVertexArrayObjectOES "WebGLVertexArrayObjectOES"
-
-gTypeWebGLVertexArrayObjectOES :: JSM GType
-gTypeWebGLVertexArrayObjectOES = GType . Object <$> jsg "WebGLVertexArrayObjectOES"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitAnimationEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent Mozilla WebKitAnimationEvent documentation>
-newtype WebKitAnimationEvent = WebKitAnimationEvent { unWebKitAnimationEvent :: JSVal }
-
-instance PToJSVal WebKitAnimationEvent where
-  pToJSVal = unWebKitAnimationEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitAnimationEvent where
-  pFromJSVal = WebKitAnimationEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitAnimationEvent where
-  toJSVal = return . unWebKitAnimationEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitAnimationEvent where
-  fromJSVal v = fmap WebKitAnimationEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitAnimationEvent where
-  makeObject = makeObject . unWebKitAnimationEvent
-
-instance IsEvent WebKitAnimationEvent
-instance IsGObject WebKitAnimationEvent where
-  toGObject = GObject . unWebKitAnimationEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitAnimationEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitAnimationEvent :: IsGObject obj => obj -> JSM WebKitAnimationEvent
-castToWebKitAnimationEvent = castTo gTypeWebKitAnimationEvent "WebKitAnimationEvent"
-
-gTypeWebKitAnimationEvent :: JSM GType
-gTypeWebKitAnimationEvent = GType . Object <$> jsg "WebKitAnimationEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitCSSFilterValue".
--- Base interface functions are in:
---
---     * "JSDOM.CSSValueList"
---     * "JSDOM.CSSValue"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue Mozilla WebKitCSSFilterValue documentation>
-newtype WebKitCSSFilterValue = WebKitCSSFilterValue { unWebKitCSSFilterValue :: JSVal }
-
-instance PToJSVal WebKitCSSFilterValue where
-  pToJSVal = unWebKitCSSFilterValue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitCSSFilterValue where
-  pFromJSVal = WebKitCSSFilterValue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitCSSFilterValue where
-  toJSVal = return . unWebKitCSSFilterValue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitCSSFilterValue where
-  fromJSVal v = fmap WebKitCSSFilterValue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitCSSFilterValue where
-  makeObject = makeObject . unWebKitCSSFilterValue
-
-instance IsCSSValueList WebKitCSSFilterValue
-instance IsCSSValue WebKitCSSFilterValue
-instance IsGObject WebKitCSSFilterValue where
-  toGObject = GObject . unWebKitCSSFilterValue
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitCSSFilterValue . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitCSSFilterValue :: IsGObject obj => obj -> JSM WebKitCSSFilterValue
-castToWebKitCSSFilterValue = castTo gTypeWebKitCSSFilterValue "WebKitCSSFilterValue"
-
-gTypeWebKitCSSFilterValue :: JSM GType
-gTypeWebKitCSSFilterValue = GType . Object <$> jsg "WebKitCSSFilterValue"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitCSSMatrix".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation>
-newtype WebKitCSSMatrix = WebKitCSSMatrix { unWebKitCSSMatrix :: JSVal }
-
-instance PToJSVal WebKitCSSMatrix where
-  pToJSVal = unWebKitCSSMatrix
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitCSSMatrix where
-  pFromJSVal = WebKitCSSMatrix
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitCSSMatrix where
-  toJSVal = return . unWebKitCSSMatrix
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitCSSMatrix where
-  fromJSVal v = fmap WebKitCSSMatrix <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitCSSMatrix where
-  makeObject = makeObject . unWebKitCSSMatrix
-
-instance IsGObject WebKitCSSMatrix where
-  toGObject = GObject . unWebKitCSSMatrix
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitCSSMatrix . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitCSSMatrix :: IsGObject obj => obj -> JSM WebKitCSSMatrix
-castToWebKitCSSMatrix = castTo gTypeWebKitCSSMatrix "WebKitCSSMatrix"
-
-gTypeWebKitCSSMatrix :: JSM GType
-gTypeWebKitCSSMatrix = GType . Object <$> jsg "WebKitCSSMatrix"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitCSSRegionRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule Mozilla WebKitCSSRegionRule documentation>
-newtype WebKitCSSRegionRule = WebKitCSSRegionRule { unWebKitCSSRegionRule :: JSVal }
-
-instance PToJSVal WebKitCSSRegionRule where
-  pToJSVal = unWebKitCSSRegionRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitCSSRegionRule where
-  pFromJSVal = WebKitCSSRegionRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitCSSRegionRule where
-  toJSVal = return . unWebKitCSSRegionRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitCSSRegionRule where
-  fromJSVal v = fmap WebKitCSSRegionRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitCSSRegionRule where
-  makeObject = makeObject . unWebKitCSSRegionRule
-
-instance IsCSSRule WebKitCSSRegionRule
-instance IsGObject WebKitCSSRegionRule where
-  toGObject = GObject . unWebKitCSSRegionRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitCSSRegionRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitCSSRegionRule :: IsGObject obj => obj -> JSM WebKitCSSRegionRule
-castToWebKitCSSRegionRule = castTo gTypeWebKitCSSRegionRule "WebKitCSSRegionRule"
-
-gTypeWebKitCSSRegionRule :: JSM GType
-gTypeWebKitCSSRegionRule = GType . Object <$> jsg "WebKitCSSRegionRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitCSSTransformValue".
--- Base interface functions are in:
---
---     * "JSDOM.CSSValueList"
---     * "JSDOM.CSSValue"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue Mozilla WebKitCSSTransformValue documentation>
-newtype WebKitCSSTransformValue = WebKitCSSTransformValue { unWebKitCSSTransformValue :: JSVal }
-
-instance PToJSVal WebKitCSSTransformValue where
-  pToJSVal = unWebKitCSSTransformValue
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitCSSTransformValue where
-  pFromJSVal = WebKitCSSTransformValue
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitCSSTransformValue where
-  toJSVal = return . unWebKitCSSTransformValue
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitCSSTransformValue where
-  fromJSVal v = fmap WebKitCSSTransformValue <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitCSSTransformValue where
-  makeObject = makeObject . unWebKitCSSTransformValue
-
-instance IsCSSValueList WebKitCSSTransformValue
-instance IsCSSValue WebKitCSSTransformValue
-instance IsGObject WebKitCSSTransformValue where
-  toGObject = GObject . unWebKitCSSTransformValue
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitCSSTransformValue . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitCSSTransformValue :: IsGObject obj => obj -> JSM WebKitCSSTransformValue
-castToWebKitCSSTransformValue = castTo gTypeWebKitCSSTransformValue "WebKitCSSTransformValue"
-
-gTypeWebKitCSSTransformValue :: JSM GType
-gTypeWebKitCSSTransformValue = GType . Object <$> jsg "WebKitCSSTransformValue"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitCSSViewportRule".
--- Base interface functions are in:
---
---     * "JSDOM.CSSRule"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule Mozilla WebKitCSSViewportRule documentation>
-newtype WebKitCSSViewportRule = WebKitCSSViewportRule { unWebKitCSSViewportRule :: JSVal }
-
-instance PToJSVal WebKitCSSViewportRule where
-  pToJSVal = unWebKitCSSViewportRule
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitCSSViewportRule where
-  pFromJSVal = WebKitCSSViewportRule
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitCSSViewportRule where
-  toJSVal = return . unWebKitCSSViewportRule
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitCSSViewportRule where
-  fromJSVal v = fmap WebKitCSSViewportRule <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitCSSViewportRule where
-  makeObject = makeObject . unWebKitCSSViewportRule
-
-instance IsCSSRule WebKitCSSViewportRule
-instance IsGObject WebKitCSSViewportRule where
-  toGObject = GObject . unWebKitCSSViewportRule
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitCSSViewportRule . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitCSSViewportRule :: IsGObject obj => obj -> JSM WebKitCSSViewportRule
-castToWebKitCSSViewportRule = castTo gTypeWebKitCSSViewportRule "WebKitCSSViewportRule"
-
-gTypeWebKitCSSViewportRule :: JSM GType
-gTypeWebKitCSSViewportRule = GType . Object <$> jsg "WebKitCSSViewportRule"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitNamedFlow".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow Mozilla WebKitNamedFlow documentation>
-newtype WebKitNamedFlow = WebKitNamedFlow { unWebKitNamedFlow :: JSVal }
-
-instance PToJSVal WebKitNamedFlow where
-  pToJSVal = unWebKitNamedFlow
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitNamedFlow where
-  pFromJSVal = WebKitNamedFlow
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitNamedFlow where
-  toJSVal = return . unWebKitNamedFlow
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitNamedFlow where
-  fromJSVal v = fmap WebKitNamedFlow <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitNamedFlow where
-  makeObject = makeObject . unWebKitNamedFlow
-
-instance IsEventTarget WebKitNamedFlow
-instance IsGObject WebKitNamedFlow where
-  toGObject = GObject . unWebKitNamedFlow
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitNamedFlow . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitNamedFlow :: IsGObject obj => obj -> JSM WebKitNamedFlow
-castToWebKitNamedFlow = castTo gTypeWebKitNamedFlow "WebKitNamedFlow"
-
-gTypeWebKitNamedFlow :: JSM GType
-gTypeWebKitNamedFlow = GType . Object <$> jsg "WebKitNamedFlow"
-#else
-type IsWebKitNamedFlow o = WebKitNamedFlowClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitNamespace".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace Mozilla WebKitNamespace documentation>
-newtype WebKitNamespace = WebKitNamespace { unWebKitNamespace :: JSVal }
-
-instance PToJSVal WebKitNamespace where
-  pToJSVal = unWebKitNamespace
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitNamespace where
-  pFromJSVal = WebKitNamespace
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitNamespace where
-  toJSVal = return . unWebKitNamespace
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitNamespace where
-  fromJSVal v = fmap WebKitNamespace <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitNamespace where
-  makeObject = makeObject . unWebKitNamespace
-
-instance IsGObject WebKitNamespace where
-  toGObject = GObject . unWebKitNamespace
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitNamespace . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitNamespace :: IsGObject obj => obj -> JSM WebKitNamespace
-castToWebKitNamespace = castTo gTypeWebKitNamespace "WebKitNamespace"
-
-gTypeWebKitNamespace :: JSM GType
-gTypeWebKitNamespace = GType . Object <$> jsg "WebKitNamespace"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitPlaybackTargetAvailabilityEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent Mozilla WebKitPlaybackTargetAvailabilityEvent documentation>
-newtype WebKitPlaybackTargetAvailabilityEvent = WebKitPlaybackTargetAvailabilityEvent { unWebKitPlaybackTargetAvailabilityEvent :: JSVal }
-
-instance PToJSVal WebKitPlaybackTargetAvailabilityEvent where
-  pToJSVal = unWebKitPlaybackTargetAvailabilityEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitPlaybackTargetAvailabilityEvent where
-  pFromJSVal = WebKitPlaybackTargetAvailabilityEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitPlaybackTargetAvailabilityEvent where
-  toJSVal = return . unWebKitPlaybackTargetAvailabilityEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitPlaybackTargetAvailabilityEvent where
-  fromJSVal v = fmap WebKitPlaybackTargetAvailabilityEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitPlaybackTargetAvailabilityEvent where
-  makeObject = makeObject . unWebKitPlaybackTargetAvailabilityEvent
-
-instance IsEvent WebKitPlaybackTargetAvailabilityEvent
-instance IsGObject WebKitPlaybackTargetAvailabilityEvent where
-  toGObject = GObject . unWebKitPlaybackTargetAvailabilityEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitPlaybackTargetAvailabilityEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitPlaybackTargetAvailabilityEvent :: IsGObject obj => obj -> JSM WebKitPlaybackTargetAvailabilityEvent
-castToWebKitPlaybackTargetAvailabilityEvent = castTo gTypeWebKitPlaybackTargetAvailabilityEvent "WebKitPlaybackTargetAvailabilityEvent"
-
-gTypeWebKitPlaybackTargetAvailabilityEvent :: JSM GType
-gTypeWebKitPlaybackTargetAvailabilityEvent = GType . Object <$> jsg "WebKitPlaybackTargetAvailabilityEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitPoint".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation>
-newtype WebKitPoint = WebKitPoint { unWebKitPoint :: JSVal }
-
-instance PToJSVal WebKitPoint where
-  pToJSVal = unWebKitPoint
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitPoint where
-  pFromJSVal = WebKitPoint
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitPoint where
-  toJSVal = return . unWebKitPoint
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitPoint where
-  fromJSVal v = fmap WebKitPoint <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitPoint where
-  makeObject = makeObject . unWebKitPoint
-
-instance IsGObject WebKitPoint where
-  toGObject = GObject . unWebKitPoint
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitPoint . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitPoint :: IsGObject obj => obj -> JSM WebKitPoint
-castToWebKitPoint = castTo gTypeWebKitPoint "WebKitPoint"
-
-gTypeWebKitPoint :: JSM GType
-gTypeWebKitPoint = GType . Object <$> jsg "WebKitPoint"
-#else
-type IsWebKitPoint o = WebKitPointClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebKitTransitionEvent".
--- Base interface functions are in:
---
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent Mozilla WebKitTransitionEvent documentation>
-newtype WebKitTransitionEvent = WebKitTransitionEvent { unWebKitTransitionEvent :: JSVal }
-
-instance PToJSVal WebKitTransitionEvent where
-  pToJSVal = unWebKitTransitionEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebKitTransitionEvent where
-  pFromJSVal = WebKitTransitionEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebKitTransitionEvent where
-  toJSVal = return . unWebKitTransitionEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebKitTransitionEvent where
-  fromJSVal v = fmap WebKitTransitionEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebKitTransitionEvent where
-  makeObject = makeObject . unWebKitTransitionEvent
-
-instance IsEvent WebKitTransitionEvent
-instance IsGObject WebKitTransitionEvent where
-  toGObject = GObject . unWebKitTransitionEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebKitTransitionEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebKitTransitionEvent :: IsGObject obj => obj -> JSM WebKitTransitionEvent
-castToWebKitTransitionEvent = castTo gTypeWebKitTransitionEvent "WebKitTransitionEvent"
-
-gTypeWebKitTransitionEvent :: JSM GType
-gTypeWebKitTransitionEvent = GType . Object <$> jsg "WebKitTransitionEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WebSocket".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation>
-newtype WebSocket = WebSocket { unWebSocket :: JSVal }
-
-instance PToJSVal WebSocket where
-  pToJSVal = unWebSocket
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WebSocket where
-  pFromJSVal = WebSocket
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WebSocket where
-  toJSVal = return . unWebSocket
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WebSocket where
-  fromJSVal v = fmap WebSocket <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WebSocket where
-  makeObject = makeObject . unWebSocket
-
-instance IsEventTarget WebSocket
-instance IsGObject WebSocket where
-  toGObject = GObject . unWebSocket
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WebSocket . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWebSocket :: IsGObject obj => obj -> JSM WebSocket
-castToWebSocket = castTo gTypeWebSocket "WebSocket"
-
-gTypeWebSocket :: JSM GType
-gTypeWebSocket = GType . Object <$> jsg "WebSocket"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WheelEvent".
--- Base interface functions are in:
---
---     * "JSDOM.MouseEvent"
---     * "JSDOM.UIEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent Mozilla WheelEvent documentation>
-newtype WheelEvent = WheelEvent { unWheelEvent :: JSVal }
-
-instance PToJSVal WheelEvent where
-  pToJSVal = unWheelEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WheelEvent where
-  pFromJSVal = WheelEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WheelEvent where
-  toJSVal = return . unWheelEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WheelEvent where
-  fromJSVal v = fmap WheelEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WheelEvent where
-  makeObject = makeObject . unWheelEvent
-
-instance IsMouseEvent WheelEvent
-instance IsUIEvent WheelEvent
-instance IsEvent WheelEvent
-instance IsGObject WheelEvent where
-  toGObject = GObject . unWheelEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WheelEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWheelEvent :: IsGObject obj => obj -> JSM WheelEvent
-castToWheelEvent = castTo gTypeWheelEvent "WheelEvent"
-
-gTypeWheelEvent :: JSM GType
-gTypeWheelEvent = GType . Object <$> jsg "WheelEvent"
-#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 "JSDOM.Window".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Window Mozilla Window documentation>
-newtype Window = Window { unWindow :: JSVal }
-
-instance PToJSVal Window where
-  pToJSVal = unWindow
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Window where
-  pFromJSVal = Window
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Window where
-  toJSVal = return . unWindow
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Window where
-  fromJSVal v = fmap Window <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Window where
-  makeObject = makeObject . unWindow
-
-instance IsEventTarget Window
-instance IsGObject Window where
-  toGObject = GObject . unWindow
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Window . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWindow :: IsGObject obj => obj -> JSM Window
-castToWindow = castTo gTypeWindow "Window"
-
-gTypeWindow :: JSM GType
-gTypeWindow = GType . Object <$> jsg "Window"
-#else
-type IsWindow o = WindowClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WindowBase64".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64 Mozilla WindowBase64 documentation>
-newtype WindowBase64 = WindowBase64 { unWindowBase64 :: JSVal }
-
-instance PToJSVal WindowBase64 where
-  pToJSVal = unWindowBase64
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WindowBase64 where
-  pFromJSVal = WindowBase64
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WindowBase64 where
-  toJSVal = return . unWindowBase64
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WindowBase64 where
-  fromJSVal v = fmap WindowBase64 <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WindowBase64 where
-  makeObject = makeObject . unWindowBase64
-
-instance IsGObject WindowBase64 where
-  toGObject = GObject . unWindowBase64
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WindowBase64 . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWindowBase64 :: IsGObject obj => obj -> JSM WindowBase64
-castToWindowBase64 = castTo gTypeWindowBase64 "WindowBase64"
-
-gTypeWindowBase64 :: JSM GType
-gTypeWindowBase64 = GType . Object <$> jsg "WindowBase64"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WindowTimers".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers Mozilla WindowTimers documentation>
-newtype WindowTimers = WindowTimers { unWindowTimers :: JSVal }
-
-instance PToJSVal WindowTimers where
-  pToJSVal = unWindowTimers
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WindowTimers where
-  pFromJSVal = WindowTimers
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WindowTimers where
-  toJSVal = return . unWindowTimers
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WindowTimers where
-  fromJSVal v = fmap WindowTimers <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WindowTimers where
-  makeObject = makeObject . unWindowTimers
-
-instance IsGObject WindowTimers where
-  toGObject = GObject . unWindowTimers
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WindowTimers . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWindowTimers :: IsGObject obj => obj -> JSM WindowTimers
-castToWindowTimers = castTo gTypeWindowTimers "WindowTimers"
-
-gTypeWindowTimers :: JSM GType
-gTypeWindowTimers = GType . Object <$> jsg "WindowTimers"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.Worker".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation>
-newtype Worker = Worker { unWorker :: JSVal }
-
-instance PToJSVal Worker where
-  pToJSVal = unWorker
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal Worker where
-  pFromJSVal = Worker
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal Worker where
-  toJSVal = return . unWorker
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal Worker where
-  fromJSVal v = fmap Worker <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject Worker where
-  makeObject = makeObject . unWorker
-
-instance IsEventTarget Worker
-instance IsGObject Worker where
-  toGObject = GObject . unWorker
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = Worker . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWorker :: IsGObject obj => obj -> JSM Worker
-castToWorker = castTo gTypeWorker "Worker"
-
-gTypeWorker :: JSM GType
-gTypeWorker = GType . Object <$> jsg "Worker"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WorkerGlobalScope".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope Mozilla WorkerGlobalScope documentation>
-newtype WorkerGlobalScope = WorkerGlobalScope { unWorkerGlobalScope :: JSVal }
-
-instance PToJSVal WorkerGlobalScope where
-  pToJSVal = unWorkerGlobalScope
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WorkerGlobalScope where
-  pFromJSVal = WorkerGlobalScope
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WorkerGlobalScope where
-  toJSVal = return . unWorkerGlobalScope
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WorkerGlobalScope where
-  fromJSVal v = fmap WorkerGlobalScope <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WorkerGlobalScope where
-  makeObject = makeObject . unWorkerGlobalScope
-
-class IsEventTarget o => IsWorkerGlobalScope o
-toWorkerGlobalScope :: IsWorkerGlobalScope o => o -> WorkerGlobalScope
-toWorkerGlobalScope = unsafeCastGObject . toGObject
-
-instance IsWorkerGlobalScope WorkerGlobalScope
-instance IsEventTarget WorkerGlobalScope
-instance IsGObject WorkerGlobalScope where
-  toGObject = GObject . unWorkerGlobalScope
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WorkerGlobalScope . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWorkerGlobalScope :: IsGObject obj => obj -> JSM WorkerGlobalScope
-castToWorkerGlobalScope = castTo gTypeWorkerGlobalScope "WorkerGlobalScope"
-
-gTypeWorkerGlobalScope :: JSM GType
-gTypeWorkerGlobalScope = GType . Object <$> jsg "WorkerGlobalScope"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WorkerLocation".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation Mozilla WorkerLocation documentation>
-newtype WorkerLocation = WorkerLocation { unWorkerLocation :: JSVal }
-
-instance PToJSVal WorkerLocation where
-  pToJSVal = unWorkerLocation
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WorkerLocation where
-  pFromJSVal = WorkerLocation
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WorkerLocation where
-  toJSVal = return . unWorkerLocation
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WorkerLocation where
-  fromJSVal v = fmap WorkerLocation <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WorkerLocation where
-  makeObject = makeObject . unWorkerLocation
-
-instance IsGObject WorkerLocation where
-  toGObject = GObject . unWorkerLocation
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WorkerLocation . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWorkerLocation :: IsGObject obj => obj -> JSM WorkerLocation
-castToWorkerLocation = castTo gTypeWorkerLocation "WorkerLocation"
-
-gTypeWorkerLocation :: JSM GType
-gTypeWorkerLocation = GType . Object <$> jsg "WorkerLocation"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.WorkerNavigator".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator Mozilla WorkerNavigator documentation>
-newtype WorkerNavigator = WorkerNavigator { unWorkerNavigator :: JSVal }
-
-instance PToJSVal WorkerNavigator where
-  pToJSVal = unWorkerNavigator
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal WorkerNavigator where
-  pFromJSVal = WorkerNavigator
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal WorkerNavigator where
-  toJSVal = return . unWorkerNavigator
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal WorkerNavigator where
-  fromJSVal v = fmap WorkerNavigator <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject WorkerNavigator where
-  makeObject = makeObject . unWorkerNavigator
-
-instance IsGObject WorkerNavigator where
-  toGObject = GObject . unWorkerNavigator
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = WorkerNavigator . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToWorkerNavigator :: IsGObject obj => obj -> JSM WorkerNavigator
-castToWorkerNavigator = castTo gTypeWorkerNavigator "WorkerNavigator"
-
-gTypeWorkerNavigator :: JSM GType
-gTypeWorkerNavigator = GType . Object <$> jsg "WorkerNavigator"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XMLHttpRequest".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation>
-newtype XMLHttpRequest = XMLHttpRequest { unXMLHttpRequest :: JSVal }
-
-instance PToJSVal XMLHttpRequest where
-  pToJSVal = unXMLHttpRequest
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XMLHttpRequest where
-  pFromJSVal = XMLHttpRequest
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XMLHttpRequest where
-  toJSVal = return . unXMLHttpRequest
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XMLHttpRequest where
-  fromJSVal v = fmap XMLHttpRequest <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XMLHttpRequest where
-  makeObject = makeObject . unXMLHttpRequest
-
-instance IsEventTarget XMLHttpRequest
-instance IsGObject XMLHttpRequest where
-  toGObject = GObject . unXMLHttpRequest
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XMLHttpRequest . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXMLHttpRequest :: IsGObject obj => obj -> JSM XMLHttpRequest
-castToXMLHttpRequest = castTo gTypeXMLHttpRequest "XMLHttpRequest"
-
-gTypeXMLHttpRequest :: JSM GType
-gTypeXMLHttpRequest = GType . Object <$> jsg "XMLHttpRequest"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XMLHttpRequestProgressEvent".
--- Base interface functions are in:
---
---     * "JSDOM.ProgressEvent"
---     * "JSDOM.Event"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent Mozilla XMLHttpRequestProgressEvent documentation>
-newtype XMLHttpRequestProgressEvent = XMLHttpRequestProgressEvent { unXMLHttpRequestProgressEvent :: JSVal }
-
-instance PToJSVal XMLHttpRequestProgressEvent where
-  pToJSVal = unXMLHttpRequestProgressEvent
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XMLHttpRequestProgressEvent where
-  pFromJSVal = XMLHttpRequestProgressEvent
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XMLHttpRequestProgressEvent where
-  toJSVal = return . unXMLHttpRequestProgressEvent
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XMLHttpRequestProgressEvent where
-  fromJSVal v = fmap XMLHttpRequestProgressEvent <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XMLHttpRequestProgressEvent where
-  makeObject = makeObject . unXMLHttpRequestProgressEvent
-
-instance IsProgressEvent XMLHttpRequestProgressEvent
-instance IsEvent XMLHttpRequestProgressEvent
-instance IsGObject XMLHttpRequestProgressEvent where
-  toGObject = GObject . unXMLHttpRequestProgressEvent
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XMLHttpRequestProgressEvent . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXMLHttpRequestProgressEvent :: IsGObject obj => obj -> JSM XMLHttpRequestProgressEvent
-castToXMLHttpRequestProgressEvent = castTo gTypeXMLHttpRequestProgressEvent "XMLHttpRequestProgressEvent"
-
-gTypeXMLHttpRequestProgressEvent :: JSM GType
-gTypeXMLHttpRequestProgressEvent = GType . Object <$> jsg "XMLHttpRequestProgressEvent"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XMLHttpRequestUpload".
--- Base interface functions are in:
---
---     * "JSDOM.EventTarget"
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload Mozilla XMLHttpRequestUpload documentation>
-newtype XMLHttpRequestUpload = XMLHttpRequestUpload { unXMLHttpRequestUpload :: JSVal }
-
-instance PToJSVal XMLHttpRequestUpload where
-  pToJSVal = unXMLHttpRequestUpload
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XMLHttpRequestUpload where
-  pFromJSVal = XMLHttpRequestUpload
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XMLHttpRequestUpload where
-  toJSVal = return . unXMLHttpRequestUpload
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XMLHttpRequestUpload where
-  fromJSVal v = fmap XMLHttpRequestUpload <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XMLHttpRequestUpload where
-  makeObject = makeObject . unXMLHttpRequestUpload
-
-instance IsEventTarget XMLHttpRequestUpload
-instance IsGObject XMLHttpRequestUpload where
-  toGObject = GObject . unXMLHttpRequestUpload
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XMLHttpRequestUpload . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXMLHttpRequestUpload :: IsGObject obj => obj -> JSM XMLHttpRequestUpload
-castToXMLHttpRequestUpload = castTo gTypeXMLHttpRequestUpload "XMLHttpRequestUpload"
-
-gTypeXMLHttpRequestUpload :: JSM GType
-gTypeXMLHttpRequestUpload = GType . Object <$> jsg "XMLHttpRequestUpload"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XMLSerializer".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation>
-newtype XMLSerializer = XMLSerializer { unXMLSerializer :: JSVal }
-
-instance PToJSVal XMLSerializer where
-  pToJSVal = unXMLSerializer
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XMLSerializer where
-  pFromJSVal = XMLSerializer
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XMLSerializer where
-  toJSVal = return . unXMLSerializer
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XMLSerializer where
-  fromJSVal v = fmap XMLSerializer <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XMLSerializer where
-  makeObject = makeObject . unXMLSerializer
-
-instance IsGObject XMLSerializer where
-  toGObject = GObject . unXMLSerializer
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XMLSerializer . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXMLSerializer :: IsGObject obj => obj -> JSM XMLSerializer
-castToXMLSerializer = castTo gTypeXMLSerializer "XMLSerializer"
-
-gTypeXMLSerializer :: JSM GType
-gTypeXMLSerializer = GType . Object <$> jsg "XMLSerializer"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XPathEvaluator".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation>
-newtype XPathEvaluator = XPathEvaluator { unXPathEvaluator :: JSVal }
-
-instance PToJSVal XPathEvaluator where
-  pToJSVal = unXPathEvaluator
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XPathEvaluator where
-  pFromJSVal = XPathEvaluator
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XPathEvaluator where
-  toJSVal = return . unXPathEvaluator
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XPathEvaluator where
-  fromJSVal v = fmap XPathEvaluator <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XPathEvaluator where
-  makeObject = makeObject . unXPathEvaluator
-
-instance IsGObject XPathEvaluator where
-  toGObject = GObject . unXPathEvaluator
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XPathEvaluator . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXPathEvaluator :: IsGObject obj => obj -> JSM XPathEvaluator
-castToXPathEvaluator = castTo gTypeXPathEvaluator "XPathEvaluator"
-
-gTypeXPathEvaluator :: JSM GType
-gTypeXPathEvaluator = GType . Object <$> jsg "XPathEvaluator"
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XPathExpression".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression Mozilla XPathExpression documentation>
-newtype XPathExpression = XPathExpression { unXPathExpression :: JSVal }
-
-instance PToJSVal XPathExpression where
-  pToJSVal = unXPathExpression
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XPathExpression where
-  pFromJSVal = XPathExpression
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XPathExpression where
-  toJSVal = return . unXPathExpression
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XPathExpression where
-  fromJSVal v = fmap XPathExpression <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XPathExpression where
-  makeObject = makeObject . unXPathExpression
-
-instance IsGObject XPathExpression where
-  toGObject = GObject . unXPathExpression
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XPathExpression . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXPathExpression :: IsGObject obj => obj -> JSM XPathExpression
-castToXPathExpression = castTo gTypeXPathExpression "XPathExpression"
-
-gTypeXPathExpression :: JSM GType
-gTypeXPathExpression = GType . Object <$> jsg "XPathExpression"
-#else
-type IsXPathExpression o = XPathExpressionClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XPathNSResolver".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver Mozilla XPathNSResolver documentation>
-newtype XPathNSResolver = XPathNSResolver { unXPathNSResolver :: JSVal }
-
-instance PToJSVal XPathNSResolver where
-  pToJSVal = unXPathNSResolver
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XPathNSResolver where
-  pFromJSVal = XPathNSResolver
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XPathNSResolver where
-  toJSVal = return . unXPathNSResolver
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XPathNSResolver where
-  fromJSVal v = fmap XPathNSResolver <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XPathNSResolver where
-  makeObject = makeObject . unXPathNSResolver
-
-instance IsGObject XPathNSResolver where
-  toGObject = GObject . unXPathNSResolver
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XPathNSResolver . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXPathNSResolver :: IsGObject obj => obj -> JSM XPathNSResolver
-castToXPathNSResolver = castTo gTypeXPathNSResolver "XPathNSResolver"
-
-gTypeXPathNSResolver :: JSM GType
-gTypeXPathNSResolver = GType . Object <$> jsg "XPathNSResolver"
-#else
-type IsXPathNSResolver o = XPathNSResolverClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XPathResult".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult Mozilla XPathResult documentation>
-newtype XPathResult = XPathResult { unXPathResult :: JSVal }
-
-instance PToJSVal XPathResult where
-  pToJSVal = unXPathResult
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XPathResult where
-  pFromJSVal = XPathResult
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XPathResult where
-  toJSVal = return . unXPathResult
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XPathResult where
-  fromJSVal v = fmap XPathResult <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XPathResult where
-  makeObject = makeObject . unXPathResult
-
-instance IsGObject XPathResult where
-  toGObject = GObject . unXPathResult
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XPathResult . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXPathResult :: IsGObject obj => obj -> JSM XPathResult
-castToXPathResult = castTo gTypeXPathResult "XPathResult"
-
-gTypeXPathResult :: JSM GType
-gTypeXPathResult = GType . Object <$> jsg "XPathResult"
-#else
-type IsXPathResult o = XPathResultClass o
-#endif
-
-
-#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
--- | Functions for this inteface are in "JSDOM.XSLTProcessor".
---
--- <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation>
-newtype XSLTProcessor = XSLTProcessor { unXSLTProcessor :: JSVal }
-
-instance PToJSVal XSLTProcessor where
-  pToJSVal = unXSLTProcessor
-  {-# INLINE pToJSVal #-}
-
-instance PFromJSVal XSLTProcessor where
-  pFromJSVal = XSLTProcessor
-  {-# INLINE pFromJSVal #-}
-
-instance ToJSVal XSLTProcessor where
-  toJSVal = return . unXSLTProcessor
-  {-# INLINE toJSVal #-}
-
-instance FromJSVal XSLTProcessor where
-  fromJSVal v = fmap XSLTProcessor <$> maybeNullOrUndefined v
-  {-# INLINE fromJSVal #-}
-
-instance MakeObject XSLTProcessor where
-  makeObject = makeObject . unXSLTProcessor
-
-instance IsGObject XSLTProcessor where
-  toGObject = GObject . unXSLTProcessor
-  {-# INLINE toGObject #-}
-  unsafeCastGObject = XSLTProcessor . unGObject
-  {-# INLINE unsafeCastGObject #-}
-
-castToXSLTProcessor :: IsGObject obj => obj -> JSM XSLTProcessor
-castToXSLTProcessor = castTo gTypeXSLTProcessor "XSLTProcessor"
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE RankNTypes #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+module JSDOM.Types (
+  -- * JavaScript Context and Monad
+    JSContextRef(..), JSM, askJSM, runJSM, MonadJSM(..), liftJSM
+
+  -- * DOM Context and Monad
+  , DOMContext(..), DOM, askDOM, runDOM, MonadDOM(..), liftDOM
+
+  -- * JavaScript Value
+  , JSVal(..), ToJSVal(..), FromJSVal(..), PToJSVal(..), PFromJSVal(..)
+
+  -- * JavaScript String
+  , JSString(..), ToJSString(..), FromJSString(..)
+  , toMaybeJSString, fromMaybeJSString
+
+  -- * JavaScript Array
+  , fromJSArray, fromJSArrayUnchecked
+
+  -- * JavaScript Object
+  , Object(..)
+
+  -- * Nullable
+  , Nullable(..), nullableToMaybe, maybeToNullable
+
+  -- * DOM String
+  , DOMString(..), ToDOMString(..), FromDOMString(..), IsDOMString
+
+  -- * Object
+  , maybeNullOrUndefined, maybeNullOrUndefined', GType(..)
+  , GObject(..), IsGObject, toGObject, gTypeGObject, isA, objectToString
+  , castTo, unsafeCastTo, uncheckedCastTo
+  , strictEqual
+
+  -- * Callbacks
+  , Callback(..)
+  , withCallback
+  , 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, gTypePromise
+
+  -- * Date
+  , Date(Date), unDate, IsDate, toDate, gTypeDate
+
+  -- * Arrays
+  , Array(Array), unArray, IsArray, toArray, gTypeArray
+  , ObjectArray(ObjectArray), unObjectArray, IsObjectArray, toObjectArray
+  , ArrayBuffer(ArrayBuffer), unArrayBuffer, IsArrayBuffer, toArrayBuffer, gTypeArrayBuffer
+  , ArrayBufferView(ArrayBufferView), unArrayBufferView, IsArrayBufferView, toArrayBufferView
+  , Float32Array(Float32Array), unFloat32Array, IsFloat32Array, toFloat32Array, gTypeFloat32Array
+  , Float64Array(Float64Array), unFloat64Array, IsFloat64Array, toFloat64Array, gTypeFloat64Array
+  , Uint8Array(Uint8Array), unUint8Array, IsUint8Array, toUint8Array, gTypeUint8Array
+  , Uint8ClampedArray(Uint8ClampedArray), unUint8ClampedArray, IsUint8ClampedArray, toUint8ClampedArray, gTypeUint8ClampedArray
+  , Uint16Array(Uint16Array), unUint16Array, IsUint16Array, toUint16Array, gTypeUint16Array
+  , Uint32Array(Uint32Array), unUint32Array, IsUint32Array, toUint32Array, gTypeUint32Array
+  , Int8Array(Int8Array), unInt8Array, IsInt8Array, toInt8Array, gTypeInt8Array
+  , Int16Array(Int16Array), unInt16Array, IsInt16Array, toInt16Array, gTypeInt16Array
+  , Int32Array(Int32Array), unInt32Array, IsInt32Array, toInt32Array, 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, gTypeANGLEInstancedArrays
+  , AbstractView(AbstractView), unAbstractView, gTypeAbstractView
+  , AbstractWorker(AbstractWorker), unAbstractWorker, gTypeAbstractWorker
+  , AllAudioCapabilities(AllAudioCapabilities), unAllAudioCapabilities, gTypeAllAudioCapabilities
+  , AllVideoCapabilities(AllVideoCapabilities), unAllVideoCapabilities, gTypeAllVideoCapabilities
+  , AnalyserNode(AnalyserNode), unAnalyserNode, gTypeAnalyserNode
+  , AnimationEvent(AnimationEvent), unAnimationEvent, gTypeAnimationEvent
+  , ApplicationCache(ApplicationCache), unApplicationCache, gTypeApplicationCache
+  , Attr(Attr), unAttr, gTypeAttr
+  , AudioBuffer(AudioBuffer), unAudioBuffer, gTypeAudioBuffer
+  , AudioBufferSourceNode(AudioBufferSourceNode), unAudioBufferSourceNode, gTypeAudioBufferSourceNode
+  , AudioContext(AudioContext), unAudioContext, IsAudioContext, toAudioContext, gTypeAudioContext
+  , AudioDestinationNode(AudioDestinationNode), unAudioDestinationNode, gTypeAudioDestinationNode
+  , AudioListener(AudioListener), unAudioListener, gTypeAudioListener
+  , AudioNode(AudioNode), unAudioNode, IsAudioNode, toAudioNode, gTypeAudioNode
+  , AudioParam(AudioParam), unAudioParam, gTypeAudioParam
+  , AudioProcessingEvent(AudioProcessingEvent), unAudioProcessingEvent, gTypeAudioProcessingEvent
+  , AudioStreamTrack(AudioStreamTrack), unAudioStreamTrack, gTypeAudioStreamTrack
+  , AudioTrack(AudioTrack), unAudioTrack, gTypeAudioTrack
+  , AudioTrackList(AudioTrackList), unAudioTrackList, gTypeAudioTrackList
+  , AutocompleteErrorEvent(AutocompleteErrorEvent), unAutocompleteErrorEvent, gTypeAutocompleteErrorEvent
+  , BarProp(BarProp), unBarProp, gTypeBarProp
+  , BatteryManager(BatteryManager), unBatteryManager, gTypeBatteryManager
+  , BeforeLoadEvent(BeforeLoadEvent), unBeforeLoadEvent, gTypeBeforeLoadEvent
+  , BeforeUnloadEvent(BeforeUnloadEvent), unBeforeUnloadEvent, gTypeBeforeUnloadEvent
+  , BiquadFilterNode(BiquadFilterNode), unBiquadFilterNode, gTypeBiquadFilterNode
+  , Blob(Blob), unBlob, IsBlob, toBlob, gTypeBlob
+  , CDATASection(CDATASection), unCDATASection, gTypeCDATASection
+  , CSS(CSS), unCSS, gTypeCSS
+  , CSSCharsetRule(CSSCharsetRule), unCSSCharsetRule, gTypeCSSCharsetRule
+  , CSSFontFaceLoadEvent(CSSFontFaceLoadEvent), unCSSFontFaceLoadEvent, gTypeCSSFontFaceLoadEvent
+  , CSSFontFaceRule(CSSFontFaceRule), unCSSFontFaceRule, gTypeCSSFontFaceRule
+  , CSSImportRule(CSSImportRule), unCSSImportRule, gTypeCSSImportRule
+  , CSSKeyframeRule(CSSKeyframeRule), unCSSKeyframeRule, gTypeCSSKeyframeRule
+  , CSSKeyframesRule(CSSKeyframesRule), unCSSKeyframesRule, gTypeCSSKeyframesRule
+  , CSSMediaRule(CSSMediaRule), unCSSMediaRule, gTypeCSSMediaRule
+  , CSSPageRule(CSSPageRule), unCSSPageRule, gTypeCSSPageRule
+  , CSSPrimitiveValue(CSSPrimitiveValue), unCSSPrimitiveValue, gTypeCSSPrimitiveValue
+  , CSSRule(CSSRule), unCSSRule, IsCSSRule, toCSSRule, gTypeCSSRule
+  , CSSRuleList(CSSRuleList), unCSSRuleList, gTypeCSSRuleList
+  , CSSStyleDeclaration(CSSStyleDeclaration), unCSSStyleDeclaration, gTypeCSSStyleDeclaration
+  , CSSStyleRule(CSSStyleRule), unCSSStyleRule, gTypeCSSStyleRule
+  , CSSStyleSheet(CSSStyleSheet), unCSSStyleSheet, gTypeCSSStyleSheet
+  , CSSSupportsRule(CSSSupportsRule), unCSSSupportsRule, gTypeCSSSupportsRule
+  , CSSUnknownRule(CSSUnknownRule), unCSSUnknownRule, gTypeCSSUnknownRule
+  , CSSValue(CSSValue), unCSSValue, IsCSSValue, toCSSValue, gTypeCSSValue
+  , CSSValueList(CSSValueList), unCSSValueList, IsCSSValueList, toCSSValueList, gTypeCSSValueList
+  , CanvasGradient(CanvasGradient), unCanvasGradient, gTypeCanvasGradient
+  , CanvasPattern(CanvasPattern), unCanvasPattern, gTypeCanvasPattern
+  , CanvasProxy(CanvasProxy), unCanvasProxy, gTypeCanvasProxy
+  , CanvasRenderingContext(CanvasRenderingContext), unCanvasRenderingContext, IsCanvasRenderingContext, toCanvasRenderingContext, gTypeCanvasRenderingContext
+  , CanvasRenderingContext2D(CanvasRenderingContext2D), unCanvasRenderingContext2D, gTypeCanvasRenderingContext2D
+  , CapabilityRange(CapabilityRange), unCapabilityRange, gTypeCapabilityRange
+  , ChannelMergerNode(ChannelMergerNode), unChannelMergerNode, gTypeChannelMergerNode
+  , ChannelSplitterNode(ChannelSplitterNode), unChannelSplitterNode, gTypeChannelSplitterNode
+  , CharacterData(CharacterData), unCharacterData, IsCharacterData, toCharacterData, gTypeCharacterData
+  , ChildNode(ChildNode), unChildNode, gTypeChildNode
+  , ClientRect(ClientRect), unClientRect, gTypeClientRect
+  , ClientRectList(ClientRectList), unClientRectList, gTypeClientRectList
+  , CloseEvent(CloseEvent), unCloseEvent, gTypeCloseEvent
+  , CommandLineAPIHost(CommandLineAPIHost), unCommandLineAPIHost, gTypeCommandLineAPIHost
+  , Comment(Comment), unComment, gTypeComment
+  , CompositionEvent(CompositionEvent), unCompositionEvent, gTypeCompositionEvent
+  , ConvolverNode(ConvolverNode), unConvolverNode, gTypeConvolverNode
+  , Coordinates(Coordinates), unCoordinates, gTypeCoordinates
+  , Counter(Counter), unCounter, gTypeCounter
+  , Crypto(Crypto), unCrypto, gTypeCrypto
+  , CryptoKey(CryptoKey), unCryptoKey, gTypeCryptoKey
+  , CryptoKeyPair(CryptoKeyPair), unCryptoKeyPair, gTypeCryptoKeyPair
+  , CustomEvent(CustomEvent), unCustomEvent, gTypeCustomEvent
+  , DOMError(DOMError), unDOMError, IsDOMError, toDOMError, gTypeDOMError
+  , DOMImplementation(DOMImplementation), unDOMImplementation, gTypeDOMImplementation
+  , DOMNamedFlowCollection(DOMNamedFlowCollection), unDOMNamedFlowCollection, gTypeDOMNamedFlowCollection
+  , DOMParser(DOMParser), unDOMParser, gTypeDOMParser
+  , DOMSettableTokenList(DOMSettableTokenList), unDOMSettableTokenList, gTypeDOMSettableTokenList
+  , DOMStringList(DOMStringList), unDOMStringList, gTypeDOMStringList
+  , DOMStringMap(DOMStringMap), unDOMStringMap, gTypeDOMStringMap
+  , DOMTokenList(DOMTokenList), unDOMTokenList, IsDOMTokenList, toDOMTokenList, gTypeDOMTokenList
+  , DataCue(DataCue), unDataCue, gTypeDataCue
+  , DataTransfer(DataTransfer), unDataTransfer, gTypeDataTransfer
+  , DataTransferItem(DataTransferItem), unDataTransferItem, gTypeDataTransferItem
+  , DataTransferItemList(DataTransferItemList), unDataTransferItemList, gTypeDataTransferItemList
+  , Database(Database), unDatabase, gTypeDatabase
+  , DedicatedWorkerGlobalScope(DedicatedWorkerGlobalScope), unDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope
+  , DelayNode(DelayNode), unDelayNode, gTypeDelayNode
+  , DeviceMotionEvent(DeviceMotionEvent), unDeviceMotionEvent, gTypeDeviceMotionEvent
+  , DeviceOrientationEvent(DeviceOrientationEvent), unDeviceOrientationEvent, gTypeDeviceOrientationEvent
+  , DeviceProximityEvent(DeviceProximityEvent), unDeviceProximityEvent, gTypeDeviceProximityEvent
+  , Document(Document), unDocument, IsDocument, toDocument, gTypeDocument
+  , DocumentFragment(DocumentFragment), unDocumentFragment, gTypeDocumentFragment
+  , DocumentType(DocumentType), unDocumentType, gTypeDocumentType
+  , DynamicsCompressorNode(DynamicsCompressorNode), unDynamicsCompressorNode, gTypeDynamicsCompressorNode
+  , EXTBlendMinMax(EXTBlendMinMax), unEXTBlendMinMax, gTypeEXTBlendMinMax
+  , EXTFragDepth(EXTFragDepth), unEXTFragDepth, gTypeEXTFragDepth
+  , EXTShaderTextureLOD(EXTShaderTextureLOD), unEXTShaderTextureLOD, gTypeEXTShaderTextureLOD
+  , EXTTextureFilterAnisotropic(EXTTextureFilterAnisotropic), unEXTTextureFilterAnisotropic, gTypeEXTTextureFilterAnisotropic
+  , EXTsRGB(EXTsRGB), unEXTsRGB, gTypeEXTsRGB
+  , Element(Element), unElement, IsElement, toElement, gTypeElement
+  , Entity(Entity), unEntity, gTypeEntity
+  , EntityReference(EntityReference), unEntityReference, gTypeEntityReference
+  , ErrorEvent(ErrorEvent), unErrorEvent, gTypeErrorEvent
+  , Event(Event), unEvent, IsEvent, toEvent, gTypeEvent
+  , EventListener(EventListener), unEventListener, gTypeEventListener
+  , EventSource(EventSource), unEventSource, gTypeEventSource
+  , EventTarget(EventTarget), unEventTarget, IsEventTarget, toEventTarget, gTypeEventTarget
+  , File(File), unFile, gTypeFile
+  , FileError(FileError), unFileError, gTypeFileError
+  , FileList(FileList), unFileList, gTypeFileList
+  , FileReader(FileReader), unFileReader, gTypeFileReader
+  , FileReaderSync(FileReaderSync), unFileReaderSync, gTypeFileReaderSync
+  , FocusEvent(FocusEvent), unFocusEvent, gTypeFocusEvent
+  , FontLoader(FontLoader), unFontLoader, gTypeFontLoader
+  , FormData(FormData), unFormData, gTypeFormData
+  , GainNode(GainNode), unGainNode, gTypeGainNode
+  , Gamepad(Gamepad), unGamepad, gTypeGamepad
+  , GamepadButton(GamepadButton), unGamepadButton, gTypeGamepadButton
+  , GamepadEvent(GamepadEvent), unGamepadEvent, gTypeGamepadEvent
+  , Geolocation(Geolocation), unGeolocation, gTypeGeolocation
+  , Geoposition(Geoposition), unGeoposition, gTypeGeoposition
+  , HTMLAllCollection(HTMLAllCollection), unHTMLAllCollection, gTypeHTMLAllCollection
+  , HTMLAnchorElement(HTMLAnchorElement), unHTMLAnchorElement, gTypeHTMLAnchorElement
+  , HTMLAppletElement(HTMLAppletElement), unHTMLAppletElement, gTypeHTMLAppletElement
+  , HTMLAreaElement(HTMLAreaElement), unHTMLAreaElement, gTypeHTMLAreaElement
+  , HTMLAudioElement(HTMLAudioElement), unHTMLAudioElement, gTypeHTMLAudioElement
+  , HTMLBRElement(HTMLBRElement), unHTMLBRElement, gTypeHTMLBRElement
+  , HTMLBaseElement(HTMLBaseElement), unHTMLBaseElement, gTypeHTMLBaseElement
+  , HTMLBaseFontElement(HTMLBaseFontElement), unHTMLBaseFontElement, gTypeHTMLBaseFontElement
+  , HTMLBodyElement(HTMLBodyElement), unHTMLBodyElement, gTypeHTMLBodyElement
+  , HTMLButtonElement(HTMLButtonElement), unHTMLButtonElement, gTypeHTMLButtonElement
+  , HTMLCanvasElement(HTMLCanvasElement), unHTMLCanvasElement, gTypeHTMLCanvasElement
+  , HTMLCollection(HTMLCollection), unHTMLCollection, IsHTMLCollection, toHTMLCollection, gTypeHTMLCollection
+  , HTMLDListElement(HTMLDListElement), unHTMLDListElement, gTypeHTMLDListElement
+  , HTMLDataListElement(HTMLDataListElement), unHTMLDataListElement, gTypeHTMLDataListElement
+  , HTMLDetailsElement(HTMLDetailsElement), unHTMLDetailsElement, gTypeHTMLDetailsElement
+  , HTMLDirectoryElement(HTMLDirectoryElement), unHTMLDirectoryElement, gTypeHTMLDirectoryElement
+  , HTMLDivElement(HTMLDivElement), unHTMLDivElement, gTypeHTMLDivElement
+  , HTMLDocument(HTMLDocument), unHTMLDocument, gTypeHTMLDocument
+  , HTMLElement(HTMLElement), unHTMLElement, IsHTMLElement, toHTMLElement, gTypeHTMLElement
+  , HTMLEmbedElement(HTMLEmbedElement), unHTMLEmbedElement, gTypeHTMLEmbedElement
+  , HTMLFieldSetElement(HTMLFieldSetElement), unHTMLFieldSetElement, gTypeHTMLFieldSetElement
+  , HTMLFontElement(HTMLFontElement), unHTMLFontElement, gTypeHTMLFontElement
+  , HTMLFormControlsCollection(HTMLFormControlsCollection), unHTMLFormControlsCollection, gTypeHTMLFormControlsCollection
+  , HTMLFormElement(HTMLFormElement), unHTMLFormElement, gTypeHTMLFormElement
+  , HTMLFrameElement(HTMLFrameElement), unHTMLFrameElement, gTypeHTMLFrameElement
+  , HTMLFrameSetElement(HTMLFrameSetElement), unHTMLFrameSetElement, gTypeHTMLFrameSetElement
+  , HTMLHRElement(HTMLHRElement), unHTMLHRElement, gTypeHTMLHRElement
+  , HTMLHeadElement(HTMLHeadElement), unHTMLHeadElement, gTypeHTMLHeadElement
+  , HTMLHeadingElement(HTMLHeadingElement), unHTMLHeadingElement, gTypeHTMLHeadingElement
+  , HTMLHtmlElement(HTMLHtmlElement), unHTMLHtmlElement, gTypeHTMLHtmlElement
+  , HTMLIFrameElement(HTMLIFrameElement), unHTMLIFrameElement, gTypeHTMLIFrameElement
+  , HTMLImageElement(HTMLImageElement), unHTMLImageElement, gTypeHTMLImageElement
+  , HTMLInputElement(HTMLInputElement), unHTMLInputElement, gTypeHTMLInputElement
+  , HTMLKeygenElement(HTMLKeygenElement), unHTMLKeygenElement, gTypeHTMLKeygenElement
+  , HTMLLIElement(HTMLLIElement), unHTMLLIElement, gTypeHTMLLIElement
+  , HTMLLabelElement(HTMLLabelElement), unHTMLLabelElement, gTypeHTMLLabelElement
+  , HTMLLegendElement(HTMLLegendElement), unHTMLLegendElement, gTypeHTMLLegendElement
+  , HTMLLinkElement(HTMLLinkElement), unHTMLLinkElement, gTypeHTMLLinkElement
+  , HTMLMapElement(HTMLMapElement), unHTMLMapElement, gTypeHTMLMapElement
+  , HTMLMarqueeElement(HTMLMarqueeElement), unHTMLMarqueeElement, gTypeHTMLMarqueeElement
+  , HTMLMediaElement(HTMLMediaElement), unHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement, gTypeHTMLMediaElement
+  , HTMLMenuElement(HTMLMenuElement), unHTMLMenuElement, gTypeHTMLMenuElement
+  , HTMLMetaElement(HTMLMetaElement), unHTMLMetaElement, gTypeHTMLMetaElement
+  , HTMLMeterElement(HTMLMeterElement), unHTMLMeterElement, gTypeHTMLMeterElement
+  , HTMLModElement(HTMLModElement), unHTMLModElement, gTypeHTMLModElement
+  , HTMLOListElement(HTMLOListElement), unHTMLOListElement, gTypeHTMLOListElement
+  , HTMLObjectElement(HTMLObjectElement), unHTMLObjectElement, gTypeHTMLObjectElement
+  , HTMLOptGroupElement(HTMLOptGroupElement), unHTMLOptGroupElement, gTypeHTMLOptGroupElement
+  , HTMLOptionElement(HTMLOptionElement), unHTMLOptionElement, gTypeHTMLOptionElement
+  , HTMLOptionsCollection(HTMLOptionsCollection), unHTMLOptionsCollection, gTypeHTMLOptionsCollection
+  , HTMLOutputElement(HTMLOutputElement), unHTMLOutputElement, gTypeHTMLOutputElement
+  , HTMLParagraphElement(HTMLParagraphElement), unHTMLParagraphElement, gTypeHTMLParagraphElement
+  , HTMLParamElement(HTMLParamElement), unHTMLParamElement, gTypeHTMLParamElement
+  , HTMLPreElement(HTMLPreElement), unHTMLPreElement, gTypeHTMLPreElement
+  , HTMLProgressElement(HTMLProgressElement), unHTMLProgressElement, gTypeHTMLProgressElement
+  , HTMLQuoteElement(HTMLQuoteElement), unHTMLQuoteElement, gTypeHTMLQuoteElement
+  , HTMLScriptElement(HTMLScriptElement), unHTMLScriptElement, gTypeHTMLScriptElement
+  , HTMLSelectElement(HTMLSelectElement), unHTMLSelectElement, gTypeHTMLSelectElement
+  , HTMLSourceElement(HTMLSourceElement), unHTMLSourceElement, gTypeHTMLSourceElement
+  , HTMLSpanElement(HTMLSpanElement), unHTMLSpanElement, gTypeHTMLSpanElement
+  , HTMLStyleElement(HTMLStyleElement), unHTMLStyleElement, gTypeHTMLStyleElement
+  , HTMLTableCaptionElement(HTMLTableCaptionElement), unHTMLTableCaptionElement, gTypeHTMLTableCaptionElement
+  , HTMLTableCellElement(HTMLTableCellElement), unHTMLTableCellElement, gTypeHTMLTableCellElement
+  , HTMLTableColElement(HTMLTableColElement), unHTMLTableColElement, gTypeHTMLTableColElement
+  , HTMLTableElement(HTMLTableElement), unHTMLTableElement, gTypeHTMLTableElement
+  , HTMLTableRowElement(HTMLTableRowElement), unHTMLTableRowElement, gTypeHTMLTableRowElement
+  , HTMLTableSectionElement(HTMLTableSectionElement), unHTMLTableSectionElement, gTypeHTMLTableSectionElement
+  , HTMLTemplateElement(HTMLTemplateElement), unHTMLTemplateElement, gTypeHTMLTemplateElement
+  , HTMLTextAreaElement(HTMLTextAreaElement), unHTMLTextAreaElement, gTypeHTMLTextAreaElement
+  , HTMLTitleElement(HTMLTitleElement), unHTMLTitleElement, gTypeHTMLTitleElement
+  , HTMLTrackElement(HTMLTrackElement), unHTMLTrackElement, gTypeHTMLTrackElement
+  , HTMLUListElement(HTMLUListElement), unHTMLUListElement, gTypeHTMLUListElement
+  , HTMLUnknownElement(HTMLUnknownElement), unHTMLUnknownElement, gTypeHTMLUnknownElement
+  , HTMLVideoElement(HTMLVideoElement), unHTMLVideoElement, gTypeHTMLVideoElement
+  , HashChangeEvent(HashChangeEvent), unHashChangeEvent, gTypeHashChangeEvent
+  , History(History), unHistory, gTypeHistory
+  , IDBAny(IDBAny), unIDBAny, gTypeIDBAny
+  , IDBCursor(IDBCursor), unIDBCursor, IsIDBCursor, toIDBCursor, gTypeIDBCursor
+  , IDBCursorWithValue(IDBCursorWithValue), unIDBCursorWithValue, gTypeIDBCursorWithValue
+  , IDBDatabase(IDBDatabase), unIDBDatabase, gTypeIDBDatabase
+  , IDBFactory(IDBFactory), unIDBFactory, gTypeIDBFactory
+  , IDBIndex(IDBIndex), unIDBIndex, gTypeIDBIndex
+  , IDBKeyRange(IDBKeyRange), unIDBKeyRange, gTypeIDBKeyRange
+  , IDBObjectStore(IDBObjectStore), unIDBObjectStore, gTypeIDBObjectStore
+  , IDBOpenDBRequest(IDBOpenDBRequest), unIDBOpenDBRequest, gTypeIDBOpenDBRequest
+  , IDBRequest(IDBRequest), unIDBRequest, IsIDBRequest, toIDBRequest, gTypeIDBRequest
+  , IDBTransaction(IDBTransaction), unIDBTransaction, gTypeIDBTransaction
+  , IDBVersionChangeEvent(IDBVersionChangeEvent), unIDBVersionChangeEvent, gTypeIDBVersionChangeEvent
+  , ImageData(ImageData), unImageData, gTypeImageData
+  , InspectorFrontendHost(InspectorFrontendHost), unInspectorFrontendHost, gTypeInspectorFrontendHost
+  , InternalSettings(InternalSettings), unInternalSettings, gTypeInternalSettings
+  , Internals(Internals), unInternals, gTypeInternals
+  , KeyboardEvent(KeyboardEvent), unKeyboardEvent, gTypeKeyboardEvent
+  , Location(Location), unLocation, gTypeLocation
+  , MallocStatistics(MallocStatistics), unMallocStatistics, gTypeMallocStatistics
+  , MediaController(MediaController), unMediaController, gTypeMediaController
+  , MediaControlsHost(MediaControlsHost), unMediaControlsHost, gTypeMediaControlsHost
+  , MediaElementAudioSourceNode(MediaElementAudioSourceNode), unMediaElementAudioSourceNode, gTypeMediaElementAudioSourceNode
+  , MediaError(MediaError), unMediaError, gTypeMediaError
+  , MediaKeyError(MediaKeyError), unMediaKeyError, gTypeMediaKeyError
+  , MediaKeyEvent(MediaKeyEvent), unMediaKeyEvent, gTypeMediaKeyEvent
+  , MediaKeyMessageEvent(MediaKeyMessageEvent), unMediaKeyMessageEvent, gTypeMediaKeyMessageEvent
+  , MediaKeyNeededEvent(MediaKeyNeededEvent), unMediaKeyNeededEvent, gTypeMediaKeyNeededEvent
+  , MediaKeySession(MediaKeySession), unMediaKeySession, gTypeMediaKeySession
+  , MediaKeys(MediaKeys), unMediaKeys, gTypeMediaKeys
+  , MediaList(MediaList), unMediaList, gTypeMediaList
+  , MediaQueryList(MediaQueryList), unMediaQueryList, gTypeMediaQueryList
+  , MediaSource(MediaSource), unMediaSource, gTypeMediaSource
+  , MediaSourceStates(MediaSourceStates), unMediaSourceStates, gTypeMediaSourceStates
+  , MediaStream(MediaStream), unMediaStream, gTypeMediaStream
+  , MediaStreamAudioDestinationNode(MediaStreamAudioDestinationNode), unMediaStreamAudioDestinationNode, gTypeMediaStreamAudioDestinationNode
+  , MediaStreamAudioSourceNode(MediaStreamAudioSourceNode), unMediaStreamAudioSourceNode, gTypeMediaStreamAudioSourceNode
+  , MediaStreamCapabilities(MediaStreamCapabilities), unMediaStreamCapabilities, IsMediaStreamCapabilities, toMediaStreamCapabilities, gTypeMediaStreamCapabilities
+  , MediaStreamEvent(MediaStreamEvent), unMediaStreamEvent, gTypeMediaStreamEvent
+  , MediaStreamTrack(MediaStreamTrack), unMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack, gTypeMediaStreamTrack
+  , MediaStreamTrackEvent(MediaStreamTrackEvent), unMediaStreamTrackEvent, gTypeMediaStreamTrackEvent
+  , MediaTrackConstraint(MediaTrackConstraint), unMediaTrackConstraint, gTypeMediaTrackConstraint
+  , MediaTrackConstraintSet(MediaTrackConstraintSet), unMediaTrackConstraintSet, gTypeMediaTrackConstraintSet
+  , MediaTrackConstraints(MediaTrackConstraints), unMediaTrackConstraints, gTypeMediaTrackConstraints
+  , MemoryInfo(MemoryInfo), unMemoryInfo, gTypeMemoryInfo
+  , MessageChannel(MessageChannel), unMessageChannel, gTypeMessageChannel
+  , MessageEvent(MessageEvent), unMessageEvent, gTypeMessageEvent
+  , MessagePort(MessagePort), unMessagePort, gTypeMessagePort
+  , MimeType(MimeType), unMimeType, gTypeMimeType
+  , MimeTypeArray(MimeTypeArray), unMimeTypeArray, gTypeMimeTypeArray
+  , MouseEvent(MouseEvent), unMouseEvent, IsMouseEvent, toMouseEvent, gTypeMouseEvent
+  , MutationEvent(MutationEvent), unMutationEvent, gTypeMutationEvent
+  , MutationObserver(MutationObserver), unMutationObserver, gTypeMutationObserver
+  , MutationRecord(MutationRecord), unMutationRecord, gTypeMutationRecord
+  , NamedNodeMap(NamedNodeMap), unNamedNodeMap, gTypeNamedNodeMap
+  , Navigator(Navigator), unNavigator, gTypeNavigator
+  , NavigatorUserMediaError(NavigatorUserMediaError), unNavigatorUserMediaError, gTypeNavigatorUserMediaError
+  , Node(Node), unNode, IsNode, toNode, gTypeNode
+  , NodeFilter(NodeFilter), unNodeFilter, gTypeNodeFilter
+  , NodeIterator(NodeIterator), unNodeIterator, gTypeNodeIterator
+  , NodeList(NodeList), unNodeList, IsNodeList, toNodeList, gTypeNodeList
+  , Notification(Notification), unNotification, gTypeNotification
+  , NotificationCenter(NotificationCenter), unNotificationCenter, gTypeNotificationCenter
+  , OESElementIndexUint(OESElementIndexUint), unOESElementIndexUint, gTypeOESElementIndexUint
+  , OESStandardDerivatives(OESStandardDerivatives), unOESStandardDerivatives, gTypeOESStandardDerivatives
+  , OESTextureFloat(OESTextureFloat), unOESTextureFloat, gTypeOESTextureFloat
+  , OESTextureFloatLinear(OESTextureFloatLinear), unOESTextureFloatLinear, gTypeOESTextureFloatLinear
+  , OESTextureHalfFloat(OESTextureHalfFloat), unOESTextureHalfFloat, gTypeOESTextureHalfFloat
+  , OESTextureHalfFloatLinear(OESTextureHalfFloatLinear), unOESTextureHalfFloatLinear, gTypeOESTextureHalfFloatLinear
+  , OESVertexArrayObject(OESVertexArrayObject), unOESVertexArrayObject, gTypeOESVertexArrayObject
+  , OfflineAudioCompletionEvent(OfflineAudioCompletionEvent), unOfflineAudioCompletionEvent, gTypeOfflineAudioCompletionEvent
+  , OfflineAudioContext(OfflineAudioContext), unOfflineAudioContext, gTypeOfflineAudioContext
+  , OscillatorNode(OscillatorNode), unOscillatorNode, gTypeOscillatorNode
+  , OverflowEvent(OverflowEvent), unOverflowEvent, gTypeOverflowEvent
+  , PageTransitionEvent(PageTransitionEvent), unPageTransitionEvent, gTypePageTransitionEvent
+  , PannerNode(PannerNode), unPannerNode, gTypePannerNode
+  , Path2D(Path2D), unPath2D, gTypePath2D
+  , Performance(Performance), unPerformance, gTypePerformance
+  , PerformanceEntry(PerformanceEntry), unPerformanceEntry, IsPerformanceEntry, toPerformanceEntry, gTypePerformanceEntry
+  , PerformanceEntryList(PerformanceEntryList), unPerformanceEntryList, gTypePerformanceEntryList
+  , PerformanceMark(PerformanceMark), unPerformanceMark, gTypePerformanceMark
+  , PerformanceMeasure(PerformanceMeasure), unPerformanceMeasure, gTypePerformanceMeasure
+  , PerformanceNavigation(PerformanceNavigation), unPerformanceNavigation, gTypePerformanceNavigation
+  , PerformanceResourceTiming(PerformanceResourceTiming), unPerformanceResourceTiming, gTypePerformanceResourceTiming
+  , PerformanceTiming(PerformanceTiming), unPerformanceTiming, gTypePerformanceTiming
+  , PeriodicWave(PeriodicWave), unPeriodicWave, gTypePeriodicWave
+  , Plugin(Plugin), unPlugin, gTypePlugin
+  , PluginArray(PluginArray), unPluginArray, gTypePluginArray
+  , PopStateEvent(PopStateEvent), unPopStateEvent, gTypePopStateEvent
+  , PositionError(PositionError), unPositionError, gTypePositionError
+  , ProcessingInstruction(ProcessingInstruction), unProcessingInstruction, gTypeProcessingInstruction
+  , ProgressEvent(ProgressEvent), unProgressEvent, IsProgressEvent, toProgressEvent, gTypeProgressEvent
+  , QuickTimePluginReplacement(QuickTimePluginReplacement), unQuickTimePluginReplacement, gTypeQuickTimePluginReplacement
+  , RGBColor(RGBColor), unRGBColor, gTypeRGBColor
+  , RTCConfiguration(RTCConfiguration), unRTCConfiguration, gTypeRTCConfiguration
+  , RTCDTMFSender(RTCDTMFSender), unRTCDTMFSender, gTypeRTCDTMFSender
+  , RTCDTMFToneChangeEvent(RTCDTMFToneChangeEvent), unRTCDTMFToneChangeEvent, gTypeRTCDTMFToneChangeEvent
+  , RTCDataChannel(RTCDataChannel), unRTCDataChannel, gTypeRTCDataChannel
+  , RTCDataChannelEvent(RTCDataChannelEvent), unRTCDataChannelEvent, gTypeRTCDataChannelEvent
+  , RTCIceCandidate(RTCIceCandidate), unRTCIceCandidate, gTypeRTCIceCandidate
+  , RTCIceCandidateEvent(RTCIceCandidateEvent), unRTCIceCandidateEvent, gTypeRTCIceCandidateEvent
+  , RTCIceServer(RTCIceServer), unRTCIceServer, gTypeRTCIceServer
+  , RTCPeerConnection(RTCPeerConnection), unRTCPeerConnection, gTypeRTCPeerConnection
+  , RTCSessionDescription(RTCSessionDescription), unRTCSessionDescription, gTypeRTCSessionDescription
+  , RTCStatsReport(RTCStatsReport), unRTCStatsReport, gTypeRTCStatsReport
+  , RTCStatsResponse(RTCStatsResponse), unRTCStatsResponse, gTypeRTCStatsResponse
+  , RadioNodeList(RadioNodeList), unRadioNodeList, gTypeRadioNodeList
+  , Range(Range), unRange, gTypeRange
+  , ReadableStream(ReadableStream), unReadableStream, gTypeReadableStream
+  , Rect(Rect), unRect, gTypeRect
+  , SQLError(SQLError), unSQLError, gTypeSQLError
+  , SQLResultSet(SQLResultSet), unSQLResultSet, gTypeSQLResultSet
+  , SQLResultSetRowList(SQLResultSetRowList), unSQLResultSetRowList, gTypeSQLResultSetRowList
+  , SQLTransaction(SQLTransaction), unSQLTransaction, gTypeSQLTransaction
+  , SVGAElement(SVGAElement), unSVGAElement, gTypeSVGAElement
+  , SVGAltGlyphDefElement(SVGAltGlyphDefElement), unSVGAltGlyphDefElement, gTypeSVGAltGlyphDefElement
+  , SVGAltGlyphElement(SVGAltGlyphElement), unSVGAltGlyphElement, gTypeSVGAltGlyphElement
+  , SVGAltGlyphItemElement(SVGAltGlyphItemElement), unSVGAltGlyphItemElement, gTypeSVGAltGlyphItemElement
+  , SVGAngle(SVGAngle), unSVGAngle, gTypeSVGAngle
+  , SVGAnimateColorElement(SVGAnimateColorElement), unSVGAnimateColorElement, gTypeSVGAnimateColorElement
+  , SVGAnimateElement(SVGAnimateElement), unSVGAnimateElement, gTypeSVGAnimateElement
+  , SVGAnimateMotionElement(SVGAnimateMotionElement), unSVGAnimateMotionElement, gTypeSVGAnimateMotionElement
+  , SVGAnimateTransformElement(SVGAnimateTransformElement), unSVGAnimateTransformElement, gTypeSVGAnimateTransformElement
+  , SVGAnimatedAngle(SVGAnimatedAngle), unSVGAnimatedAngle, gTypeSVGAnimatedAngle
+  , SVGAnimatedBoolean(SVGAnimatedBoolean), unSVGAnimatedBoolean, gTypeSVGAnimatedBoolean
+  , SVGAnimatedEnumeration(SVGAnimatedEnumeration), unSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration
+  , SVGAnimatedInteger(SVGAnimatedInteger), unSVGAnimatedInteger, gTypeSVGAnimatedInteger
+  , SVGAnimatedLength(SVGAnimatedLength), unSVGAnimatedLength, gTypeSVGAnimatedLength
+  , SVGAnimatedLengthList(SVGAnimatedLengthList), unSVGAnimatedLengthList, gTypeSVGAnimatedLengthList
+  , SVGAnimatedNumber(SVGAnimatedNumber), unSVGAnimatedNumber, gTypeSVGAnimatedNumber
+  , SVGAnimatedNumberList(SVGAnimatedNumberList), unSVGAnimatedNumberList, gTypeSVGAnimatedNumberList
+  , SVGAnimatedPreserveAspectRatio(SVGAnimatedPreserveAspectRatio), unSVGAnimatedPreserveAspectRatio, gTypeSVGAnimatedPreserveAspectRatio
+  , SVGAnimatedRect(SVGAnimatedRect), unSVGAnimatedRect, gTypeSVGAnimatedRect
+  , SVGAnimatedString(SVGAnimatedString), unSVGAnimatedString, gTypeSVGAnimatedString
+  , SVGAnimatedTransformList(SVGAnimatedTransformList), unSVGAnimatedTransformList, gTypeSVGAnimatedTransformList
+  , SVGAnimationElement(SVGAnimationElement), unSVGAnimationElement, IsSVGAnimationElement, toSVGAnimationElement, gTypeSVGAnimationElement
+  , SVGCircleElement(SVGCircleElement), unSVGCircleElement, gTypeSVGCircleElement
+  , SVGClipPathElement(SVGClipPathElement), unSVGClipPathElement, gTypeSVGClipPathElement
+  , SVGColor(SVGColor), unSVGColor, IsSVGColor, toSVGColor, gTypeSVGColor
+  , SVGComponentTransferFunctionElement(SVGComponentTransferFunctionElement), unSVGComponentTransferFunctionElement, IsSVGComponentTransferFunctionElement, toSVGComponentTransferFunctionElement, gTypeSVGComponentTransferFunctionElement
+  , SVGCursorElement(SVGCursorElement), unSVGCursorElement, gTypeSVGCursorElement
+  , SVGDefsElement(SVGDefsElement), unSVGDefsElement, gTypeSVGDefsElement
+  , SVGDescElement(SVGDescElement), unSVGDescElement, gTypeSVGDescElement
+  , SVGDocument(SVGDocument), unSVGDocument, gTypeSVGDocument
+  , SVGElement(SVGElement), unSVGElement, IsSVGElement, toSVGElement, gTypeSVGElement
+  , SVGEllipseElement(SVGEllipseElement), unSVGEllipseElement, gTypeSVGEllipseElement
+  , SVGExternalResourcesRequired(SVGExternalResourcesRequired), unSVGExternalResourcesRequired, gTypeSVGExternalResourcesRequired
+  , SVGFEBlendElement(SVGFEBlendElement), unSVGFEBlendElement, gTypeSVGFEBlendElement
+  , SVGFEColorMatrixElement(SVGFEColorMatrixElement), unSVGFEColorMatrixElement, gTypeSVGFEColorMatrixElement
+  , SVGFEComponentTransferElement(SVGFEComponentTransferElement), unSVGFEComponentTransferElement, gTypeSVGFEComponentTransferElement
+  , SVGFECompositeElement(SVGFECompositeElement), unSVGFECompositeElement, gTypeSVGFECompositeElement
+  , SVGFEConvolveMatrixElement(SVGFEConvolveMatrixElement), unSVGFEConvolveMatrixElement, gTypeSVGFEConvolveMatrixElement
+  , SVGFEDiffuseLightingElement(SVGFEDiffuseLightingElement), unSVGFEDiffuseLightingElement, gTypeSVGFEDiffuseLightingElement
+  , SVGFEDisplacementMapElement(SVGFEDisplacementMapElement), unSVGFEDisplacementMapElement, gTypeSVGFEDisplacementMapElement
+  , SVGFEDistantLightElement(SVGFEDistantLightElement), unSVGFEDistantLightElement, gTypeSVGFEDistantLightElement
+  , SVGFEDropShadowElement(SVGFEDropShadowElement), unSVGFEDropShadowElement, gTypeSVGFEDropShadowElement
+  , SVGFEFloodElement(SVGFEFloodElement), unSVGFEFloodElement, gTypeSVGFEFloodElement
+  , SVGFEFuncAElement(SVGFEFuncAElement), unSVGFEFuncAElement, gTypeSVGFEFuncAElement
+  , SVGFEFuncBElement(SVGFEFuncBElement), unSVGFEFuncBElement, gTypeSVGFEFuncBElement
+  , SVGFEFuncGElement(SVGFEFuncGElement), unSVGFEFuncGElement, gTypeSVGFEFuncGElement
+  , SVGFEFuncRElement(SVGFEFuncRElement), unSVGFEFuncRElement, gTypeSVGFEFuncRElement
+  , SVGFEGaussianBlurElement(SVGFEGaussianBlurElement), unSVGFEGaussianBlurElement, gTypeSVGFEGaussianBlurElement
+  , SVGFEImageElement(SVGFEImageElement), unSVGFEImageElement, gTypeSVGFEImageElement
+  , SVGFEMergeElement(SVGFEMergeElement), unSVGFEMergeElement, gTypeSVGFEMergeElement
+  , SVGFEMergeNodeElement(SVGFEMergeNodeElement), unSVGFEMergeNodeElement, gTypeSVGFEMergeNodeElement
+  , SVGFEMorphologyElement(SVGFEMorphologyElement), unSVGFEMorphologyElement, gTypeSVGFEMorphologyElement
+  , SVGFEOffsetElement(SVGFEOffsetElement), unSVGFEOffsetElement, gTypeSVGFEOffsetElement
+  , SVGFEPointLightElement(SVGFEPointLightElement), unSVGFEPointLightElement, gTypeSVGFEPointLightElement
+  , SVGFESpecularLightingElement(SVGFESpecularLightingElement), unSVGFESpecularLightingElement, gTypeSVGFESpecularLightingElement
+  , SVGFESpotLightElement(SVGFESpotLightElement), unSVGFESpotLightElement, gTypeSVGFESpotLightElement
+  , SVGFETileElement(SVGFETileElement), unSVGFETileElement, gTypeSVGFETileElement
+  , SVGFETurbulenceElement(SVGFETurbulenceElement), unSVGFETurbulenceElement, gTypeSVGFETurbulenceElement
+  , SVGFilterElement(SVGFilterElement), unSVGFilterElement, gTypeSVGFilterElement
+  , SVGFilterPrimitiveStandardAttributes(SVGFilterPrimitiveStandardAttributes), unSVGFilterPrimitiveStandardAttributes, gTypeSVGFilterPrimitiveStandardAttributes
+  , SVGFitToViewBox(SVGFitToViewBox), unSVGFitToViewBox, gTypeSVGFitToViewBox
+  , SVGFontElement(SVGFontElement), unSVGFontElement, gTypeSVGFontElement
+  , SVGFontFaceElement(SVGFontFaceElement), unSVGFontFaceElement, gTypeSVGFontFaceElement
+  , SVGFontFaceFormatElement(SVGFontFaceFormatElement), unSVGFontFaceFormatElement, gTypeSVGFontFaceFormatElement
+  , SVGFontFaceNameElement(SVGFontFaceNameElement), unSVGFontFaceNameElement, gTypeSVGFontFaceNameElement
+  , SVGFontFaceSrcElement(SVGFontFaceSrcElement), unSVGFontFaceSrcElement, gTypeSVGFontFaceSrcElement
+  , SVGFontFaceUriElement(SVGFontFaceUriElement), unSVGFontFaceUriElement, gTypeSVGFontFaceUriElement
+  , SVGForeignObjectElement(SVGForeignObjectElement), unSVGForeignObjectElement, gTypeSVGForeignObjectElement
+  , SVGGElement(SVGGElement), unSVGGElement, gTypeSVGGElement
+  , SVGGlyphElement(SVGGlyphElement), unSVGGlyphElement, gTypeSVGGlyphElement
+  , SVGGlyphRefElement(SVGGlyphRefElement), unSVGGlyphRefElement, gTypeSVGGlyphRefElement
+  , SVGGradientElement(SVGGradientElement), unSVGGradientElement, IsSVGGradientElement, toSVGGradientElement, gTypeSVGGradientElement
+  , SVGGraphicsElement(SVGGraphicsElement), unSVGGraphicsElement, IsSVGGraphicsElement, toSVGGraphicsElement, gTypeSVGGraphicsElement
+  , SVGHKernElement(SVGHKernElement), unSVGHKernElement, gTypeSVGHKernElement
+  , SVGImageElement(SVGImageElement), unSVGImageElement, gTypeSVGImageElement
+  , SVGLength(SVGLength), unSVGLength, gTypeSVGLength
+  , SVGLengthList(SVGLengthList), unSVGLengthList, gTypeSVGLengthList
+  , SVGLineElement(SVGLineElement), unSVGLineElement, gTypeSVGLineElement
+  , SVGLinearGradientElement(SVGLinearGradientElement), unSVGLinearGradientElement, gTypeSVGLinearGradientElement
+  , SVGMPathElement(SVGMPathElement), unSVGMPathElement, gTypeSVGMPathElement
+  , SVGMarkerElement(SVGMarkerElement), unSVGMarkerElement, gTypeSVGMarkerElement
+  , SVGMaskElement(SVGMaskElement), unSVGMaskElement, gTypeSVGMaskElement
+  , SVGMatrix(SVGMatrix), unSVGMatrix, gTypeSVGMatrix
+  , SVGMetadataElement(SVGMetadataElement), unSVGMetadataElement, gTypeSVGMetadataElement
+  , SVGMissingGlyphElement(SVGMissingGlyphElement), unSVGMissingGlyphElement, gTypeSVGMissingGlyphElement
+  , SVGNumber(SVGNumber), unSVGNumber, gTypeSVGNumber
+  , SVGNumberList(SVGNumberList), unSVGNumberList, gTypeSVGNumberList
+  , SVGPaint(SVGPaint), unSVGPaint, gTypeSVGPaint
+  , SVGPathElement(SVGPathElement), unSVGPathElement, gTypeSVGPathElement
+  , SVGPathSeg(SVGPathSeg), unSVGPathSeg, IsSVGPathSeg, toSVGPathSeg, gTypeSVGPathSeg
+  , SVGPathSegArcAbs(SVGPathSegArcAbs), unSVGPathSegArcAbs, gTypeSVGPathSegArcAbs
+  , SVGPathSegArcRel(SVGPathSegArcRel), unSVGPathSegArcRel, gTypeSVGPathSegArcRel
+  , SVGPathSegClosePath(SVGPathSegClosePath), unSVGPathSegClosePath, gTypeSVGPathSegClosePath
+  , SVGPathSegCurvetoCubicAbs(SVGPathSegCurvetoCubicAbs), unSVGPathSegCurvetoCubicAbs, gTypeSVGPathSegCurvetoCubicAbs
+  , SVGPathSegCurvetoCubicRel(SVGPathSegCurvetoCubicRel), unSVGPathSegCurvetoCubicRel, gTypeSVGPathSegCurvetoCubicRel
+  , SVGPathSegCurvetoCubicSmoothAbs(SVGPathSegCurvetoCubicSmoothAbs), unSVGPathSegCurvetoCubicSmoothAbs, gTypeSVGPathSegCurvetoCubicSmoothAbs
+  , SVGPathSegCurvetoCubicSmoothRel(SVGPathSegCurvetoCubicSmoothRel), unSVGPathSegCurvetoCubicSmoothRel, gTypeSVGPathSegCurvetoCubicSmoothRel
+  , SVGPathSegCurvetoQuadraticAbs(SVGPathSegCurvetoQuadraticAbs), unSVGPathSegCurvetoQuadraticAbs, gTypeSVGPathSegCurvetoQuadraticAbs
+  , SVGPathSegCurvetoQuadraticRel(SVGPathSegCurvetoQuadraticRel), unSVGPathSegCurvetoQuadraticRel, gTypeSVGPathSegCurvetoQuadraticRel
+  , SVGPathSegCurvetoQuadraticSmoothAbs(SVGPathSegCurvetoQuadraticSmoothAbs), unSVGPathSegCurvetoQuadraticSmoothAbs, gTypeSVGPathSegCurvetoQuadraticSmoothAbs
+  , SVGPathSegCurvetoQuadraticSmoothRel(SVGPathSegCurvetoQuadraticSmoothRel), unSVGPathSegCurvetoQuadraticSmoothRel, gTypeSVGPathSegCurvetoQuadraticSmoothRel
+  , SVGPathSegLinetoAbs(SVGPathSegLinetoAbs), unSVGPathSegLinetoAbs, gTypeSVGPathSegLinetoAbs
+  , SVGPathSegLinetoHorizontalAbs(SVGPathSegLinetoHorizontalAbs), unSVGPathSegLinetoHorizontalAbs, gTypeSVGPathSegLinetoHorizontalAbs
+  , SVGPathSegLinetoHorizontalRel(SVGPathSegLinetoHorizontalRel), unSVGPathSegLinetoHorizontalRel, gTypeSVGPathSegLinetoHorizontalRel
+  , SVGPathSegLinetoRel(SVGPathSegLinetoRel), unSVGPathSegLinetoRel, gTypeSVGPathSegLinetoRel
+  , SVGPathSegLinetoVerticalAbs(SVGPathSegLinetoVerticalAbs), unSVGPathSegLinetoVerticalAbs, gTypeSVGPathSegLinetoVerticalAbs
+  , SVGPathSegLinetoVerticalRel(SVGPathSegLinetoVerticalRel), unSVGPathSegLinetoVerticalRel, gTypeSVGPathSegLinetoVerticalRel
+  , SVGPathSegList(SVGPathSegList), unSVGPathSegList, gTypeSVGPathSegList
+  , SVGPathSegMovetoAbs(SVGPathSegMovetoAbs), unSVGPathSegMovetoAbs, gTypeSVGPathSegMovetoAbs
+  , SVGPathSegMovetoRel(SVGPathSegMovetoRel), unSVGPathSegMovetoRel, gTypeSVGPathSegMovetoRel
+  , SVGPatternElement(SVGPatternElement), unSVGPatternElement, gTypeSVGPatternElement
+  , SVGPoint(SVGPoint), unSVGPoint, gTypeSVGPoint
+  , SVGPointList(SVGPointList), unSVGPointList, gTypeSVGPointList
+  , SVGPolygonElement(SVGPolygonElement), unSVGPolygonElement, gTypeSVGPolygonElement
+  , SVGPolylineElement(SVGPolylineElement), unSVGPolylineElement, gTypeSVGPolylineElement
+  , SVGPreserveAspectRatio(SVGPreserveAspectRatio), unSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio
+  , SVGRadialGradientElement(SVGRadialGradientElement), unSVGRadialGradientElement, gTypeSVGRadialGradientElement
+  , SVGRect(SVGRect), unSVGRect, gTypeSVGRect
+  , SVGRectElement(SVGRectElement), unSVGRectElement, gTypeSVGRectElement
+  , SVGRenderingIntent(SVGRenderingIntent), unSVGRenderingIntent, gTypeSVGRenderingIntent
+  , SVGSVGElement(SVGSVGElement), unSVGSVGElement, gTypeSVGSVGElement
+  , SVGScriptElement(SVGScriptElement), unSVGScriptElement, gTypeSVGScriptElement
+  , SVGSetElement(SVGSetElement), unSVGSetElement, gTypeSVGSetElement
+  , SVGStopElement(SVGStopElement), unSVGStopElement, gTypeSVGStopElement
+  , SVGStringList(SVGStringList), unSVGStringList, gTypeSVGStringList
+  , SVGStyleElement(SVGStyleElement), unSVGStyleElement, gTypeSVGStyleElement
+  , SVGSwitchElement(SVGSwitchElement), unSVGSwitchElement, gTypeSVGSwitchElement
+  , SVGSymbolElement(SVGSymbolElement), unSVGSymbolElement, gTypeSVGSymbolElement
+  , SVGTRefElement(SVGTRefElement), unSVGTRefElement, gTypeSVGTRefElement
+  , SVGTSpanElement(SVGTSpanElement), unSVGTSpanElement, gTypeSVGTSpanElement
+  , SVGTests(SVGTests), unSVGTests, gTypeSVGTests
+  , SVGTextContentElement(SVGTextContentElement), unSVGTextContentElement, IsSVGTextContentElement, toSVGTextContentElement, gTypeSVGTextContentElement
+  , SVGTextElement(SVGTextElement), unSVGTextElement, gTypeSVGTextElement
+  , SVGTextPathElement(SVGTextPathElement), unSVGTextPathElement, gTypeSVGTextPathElement
+  , SVGTextPositioningElement(SVGTextPositioningElement), unSVGTextPositioningElement, IsSVGTextPositioningElement, toSVGTextPositioningElement, gTypeSVGTextPositioningElement
+  , SVGTitleElement(SVGTitleElement), unSVGTitleElement, gTypeSVGTitleElement
+  , SVGTransform(SVGTransform), unSVGTransform, gTypeSVGTransform
+  , SVGTransformList(SVGTransformList), unSVGTransformList, gTypeSVGTransformList
+  , SVGURIReference(SVGURIReference), unSVGURIReference, gTypeSVGURIReference
+  , SVGUnitTypes(SVGUnitTypes), unSVGUnitTypes, gTypeSVGUnitTypes
+  , SVGUseElement(SVGUseElement), unSVGUseElement, gTypeSVGUseElement
+  , SVGVKernElement(SVGVKernElement), unSVGVKernElement, gTypeSVGVKernElement
+  , SVGViewElement(SVGViewElement), unSVGViewElement, gTypeSVGViewElement
+  , SVGViewSpec(SVGViewSpec), unSVGViewSpec, gTypeSVGViewSpec
+  , SVGZoomAndPan(SVGZoomAndPan), unSVGZoomAndPan, gTypeSVGZoomAndPan
+  , SVGZoomEvent(SVGZoomEvent), unSVGZoomEvent, gTypeSVGZoomEvent
+  , Screen(Screen), unScreen, gTypeScreen
+  , ScriptProcessorNode(ScriptProcessorNode), unScriptProcessorNode, gTypeScriptProcessorNode
+  , ScriptProfile(ScriptProfile), unScriptProfile, gTypeScriptProfile
+  , ScriptProfileNode(ScriptProfileNode), unScriptProfileNode, gTypeScriptProfileNode
+  , SecurityPolicy(SecurityPolicy), unSecurityPolicy, gTypeSecurityPolicy
+  , SecurityPolicyViolationEvent(SecurityPolicyViolationEvent), unSecurityPolicyViolationEvent, gTypeSecurityPolicyViolationEvent
+  , Selection(Selection), unSelection, gTypeSelection
+  , SourceBuffer(SourceBuffer), unSourceBuffer, gTypeSourceBuffer
+  , SourceBufferList(SourceBufferList), unSourceBufferList, gTypeSourceBufferList
+  , SourceInfo(SourceInfo), unSourceInfo, gTypeSourceInfo
+  , SpeechSynthesis(SpeechSynthesis), unSpeechSynthesis, gTypeSpeechSynthesis
+  , SpeechSynthesisEvent(SpeechSynthesisEvent), unSpeechSynthesisEvent, gTypeSpeechSynthesisEvent
+  , SpeechSynthesisUtterance(SpeechSynthesisUtterance), unSpeechSynthesisUtterance, gTypeSpeechSynthesisUtterance
+  , SpeechSynthesisVoice(SpeechSynthesisVoice), unSpeechSynthesisVoice, gTypeSpeechSynthesisVoice
+  , Storage(Storage), unStorage, gTypeStorage
+  , StorageEvent(StorageEvent), unStorageEvent, gTypeStorageEvent
+  , StorageInfo(StorageInfo), unStorageInfo, gTypeStorageInfo
+  , StorageQuota(StorageQuota), unStorageQuota, gTypeStorageQuota
+  , StyleMedia(StyleMedia), unStyleMedia, gTypeStyleMedia
+  , StyleSheet(StyleSheet), unStyleSheet, IsStyleSheet, toStyleSheet, gTypeStyleSheet
+  , StyleSheetList(StyleSheetList), unStyleSheetList, gTypeStyleSheetList
+  , SubtleCrypto(SubtleCrypto), unSubtleCrypto, gTypeSubtleCrypto
+  , Text(Text), unText, IsText, toText, gTypeText
+  , TextEvent(TextEvent), unTextEvent, gTypeTextEvent
+  , TextMetrics(TextMetrics), unTextMetrics, gTypeTextMetrics
+  , TextTrack(TextTrack), unTextTrack, gTypeTextTrack
+  , TextTrackCue(TextTrackCue), unTextTrackCue, IsTextTrackCue, toTextTrackCue, gTypeTextTrackCue
+  , TextTrackCueList(TextTrackCueList), unTextTrackCueList, gTypeTextTrackCueList
+  , TextTrackList(TextTrackList), unTextTrackList, gTypeTextTrackList
+  , TimeRanges(TimeRanges), unTimeRanges, gTypeTimeRanges
+  , Touch(Touch), unTouch, gTypeTouch
+  , TouchEvent(TouchEvent), unTouchEvent, gTypeTouchEvent
+  , TouchList(TouchList), unTouchList, gTypeTouchList
+  , TrackEvent(TrackEvent), unTrackEvent, gTypeTrackEvent
+  , TransitionEvent(TransitionEvent), unTransitionEvent, gTypeTransitionEvent
+  , TreeWalker(TreeWalker), unTreeWalker, gTypeTreeWalker
+  , TypeConversions(TypeConversions), unTypeConversions, gTypeTypeConversions
+  , UIEvent(UIEvent), unUIEvent, IsUIEvent, toUIEvent, gTypeUIEvent
+  , UIRequestEvent(UIRequestEvent), unUIRequestEvent, gTypeUIRequestEvent
+  , URL(URL), unURL, gTypeURL
+  , URLUtils(URLUtils), unURLUtils, gTypeURLUtils
+  , UserMessageHandler(UserMessageHandler), unUserMessageHandler, gTypeUserMessageHandler
+  , UserMessageHandlersNamespace(UserMessageHandlersNamespace), unUserMessageHandlersNamespace, gTypeUserMessageHandlersNamespace
+  , VTTCue(VTTCue), unVTTCue, gTypeVTTCue
+  , VTTRegion(VTTRegion), unVTTRegion, gTypeVTTRegion
+  , VTTRegionList(VTTRegionList), unVTTRegionList, gTypeVTTRegionList
+  , ValidityState(ValidityState), unValidityState, gTypeValidityState
+  , VideoPlaybackQuality(VideoPlaybackQuality), unVideoPlaybackQuality, gTypeVideoPlaybackQuality
+  , VideoStreamTrack(VideoStreamTrack), unVideoStreamTrack, gTypeVideoStreamTrack
+  , VideoTrack(VideoTrack), unVideoTrack, gTypeVideoTrack
+  , VideoTrackList(VideoTrackList), unVideoTrackList, gTypeVideoTrackList
+  , WaveShaperNode(WaveShaperNode), unWaveShaperNode, gTypeWaveShaperNode
+  , WebGL2RenderingContext(WebGL2RenderingContext), unWebGL2RenderingContext, gTypeWebGL2RenderingContext
+  , WebGLActiveInfo(WebGLActiveInfo), unWebGLActiveInfo, gTypeWebGLActiveInfo
+  , WebGLBuffer(WebGLBuffer), unWebGLBuffer, gTypeWebGLBuffer
+  , WebGLCompressedTextureATC(WebGLCompressedTextureATC), unWebGLCompressedTextureATC, gTypeWebGLCompressedTextureATC
+  , WebGLCompressedTexturePVRTC(WebGLCompressedTexturePVRTC), unWebGLCompressedTexturePVRTC, gTypeWebGLCompressedTexturePVRTC
+  , WebGLCompressedTextureS3TC(WebGLCompressedTextureS3TC), unWebGLCompressedTextureS3TC, gTypeWebGLCompressedTextureS3TC
+  , WebGLContextAttributes(WebGLContextAttributes), unWebGLContextAttributes, gTypeWebGLContextAttributes
+  , WebGLContextEvent(WebGLContextEvent), unWebGLContextEvent, gTypeWebGLContextEvent
+  , WebGLDebugRendererInfo(WebGLDebugRendererInfo), unWebGLDebugRendererInfo, gTypeWebGLDebugRendererInfo
+  , WebGLDebugShaders(WebGLDebugShaders), unWebGLDebugShaders, gTypeWebGLDebugShaders
+  , WebGLDepthTexture(WebGLDepthTexture), unWebGLDepthTexture, gTypeWebGLDepthTexture
+  , WebGLDrawBuffers(WebGLDrawBuffers), unWebGLDrawBuffers, gTypeWebGLDrawBuffers
+  , WebGLFramebuffer(WebGLFramebuffer), unWebGLFramebuffer, gTypeWebGLFramebuffer
+  , WebGLLoseContext(WebGLLoseContext), unWebGLLoseContext, gTypeWebGLLoseContext
+  , WebGLProgram(WebGLProgram), unWebGLProgram, gTypeWebGLProgram
+  , WebGLQuery(WebGLQuery), unWebGLQuery, gTypeWebGLQuery
+  , WebGLRenderbuffer(WebGLRenderbuffer), unWebGLRenderbuffer, gTypeWebGLRenderbuffer
+  , WebGLRenderingContext(WebGLRenderingContext), unWebGLRenderingContext, gTypeWebGLRenderingContext
+  , WebGLRenderingContextBase(WebGLRenderingContextBase), unWebGLRenderingContextBase, IsWebGLRenderingContextBase, toWebGLRenderingContextBase, gTypeWebGLRenderingContextBase
+  , WebGLSampler(WebGLSampler), unWebGLSampler, gTypeWebGLSampler
+  , WebGLShader(WebGLShader), unWebGLShader, gTypeWebGLShader
+  , WebGLShaderPrecisionFormat(WebGLShaderPrecisionFormat), unWebGLShaderPrecisionFormat, gTypeWebGLShaderPrecisionFormat
+  , WebGLSync(WebGLSync), unWebGLSync, gTypeWebGLSync
+  , WebGLTexture(WebGLTexture), unWebGLTexture, gTypeWebGLTexture
+  , WebGLTransformFeedback(WebGLTransformFeedback), unWebGLTransformFeedback, gTypeWebGLTransformFeedback
+  , WebGLUniformLocation(WebGLUniformLocation), unWebGLUniformLocation, gTypeWebGLUniformLocation
+  , WebGLVertexArrayObject(WebGLVertexArrayObject), unWebGLVertexArrayObject, gTypeWebGLVertexArrayObject
+  , WebGLVertexArrayObjectOES(WebGLVertexArrayObjectOES), unWebGLVertexArrayObjectOES, gTypeWebGLVertexArrayObjectOES
+  , WebKitAnimationEvent(WebKitAnimationEvent), unWebKitAnimationEvent, gTypeWebKitAnimationEvent
+  , WebKitCSSFilterValue(WebKitCSSFilterValue), unWebKitCSSFilterValue, gTypeWebKitCSSFilterValue
+  , WebKitCSSMatrix(WebKitCSSMatrix), unWebKitCSSMatrix, gTypeWebKitCSSMatrix
+  , WebKitCSSRegionRule(WebKitCSSRegionRule), unWebKitCSSRegionRule, gTypeWebKitCSSRegionRule
+  , WebKitCSSTransformValue(WebKitCSSTransformValue), unWebKitCSSTransformValue, gTypeWebKitCSSTransformValue
+  , WebKitCSSViewportRule(WebKitCSSViewportRule), unWebKitCSSViewportRule, gTypeWebKitCSSViewportRule
+  , WebKitNamedFlow(WebKitNamedFlow), unWebKitNamedFlow, gTypeWebKitNamedFlow
+  , WebKitNamespace(WebKitNamespace), unWebKitNamespace, gTypeWebKitNamespace
+  , WebKitPlaybackTargetAvailabilityEvent(WebKitPlaybackTargetAvailabilityEvent), unWebKitPlaybackTargetAvailabilityEvent, gTypeWebKitPlaybackTargetAvailabilityEvent
+  , WebKitPoint(WebKitPoint), unWebKitPoint, gTypeWebKitPoint
+  , WebKitTransitionEvent(WebKitTransitionEvent), unWebKitTransitionEvent, gTypeWebKitTransitionEvent
+  , WebSocket(WebSocket), unWebSocket, gTypeWebSocket
+  , WheelEvent(WheelEvent), unWheelEvent, gTypeWheelEvent
+  , Window(Window), unWindow, gTypeWindow
+  , WindowBase64(WindowBase64), unWindowBase64, gTypeWindowBase64
+  , WindowTimers(WindowTimers), unWindowTimers, gTypeWindowTimers
+  , Worker(Worker), unWorker, gTypeWorker
+  , WorkerGlobalScope(WorkerGlobalScope), unWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope, gTypeWorkerGlobalScope
+  , WorkerLocation(WorkerLocation), unWorkerLocation, gTypeWorkerLocation
+  , WorkerNavigator(WorkerNavigator), unWorkerNavigator, gTypeWorkerNavigator
+  , XMLHttpRequest(XMLHttpRequest), unXMLHttpRequest, gTypeXMLHttpRequest
+  , XMLHttpRequestProgressEvent(XMLHttpRequestProgressEvent), unXMLHttpRequestProgressEvent, gTypeXMLHttpRequestProgressEvent
+  , XMLHttpRequestUpload(XMLHttpRequestUpload), unXMLHttpRequestUpload, gTypeXMLHttpRequestUpload
+  , XMLSerializer(XMLSerializer), unXMLSerializer, gTypeXMLSerializer
+  , XPathEvaluator(XPathEvaluator), unXPathEvaluator, gTypeXPathEvaluator
+  , XPathExpression(XPathExpression), unXPathExpression, gTypeXPathExpression
+  , XPathNSResolver(XPathNSResolver), unXPathNSResolver, gTypeXPathNSResolver
+  , XPathResult(XPathResult), unXPathResult, gTypeXPathResult
+  , XSLTProcessor(XSLTProcessor), unXSLTProcessor, gTypeXSLTProcessor
+-- AUTO GENERATION ENDS HERE
+  ) where
+
+import Prelude ()
+import Prelude.Compat hiding((!!))
+import qualified Data.Text as T (unpack, Text)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int8, Int16, Int32, Int64)
+import Data.Word (Word8, Word16, Word32, Word64)
+import Data.Monoid ((<>))
+import Language.Javascript.JSaddle
+       (Object(..), valToBool, valNull, valToNumber, (!!), js, valToText,
+        JSVal, JSString, JSM, maybeNullOrUndefined, maybeNullOrUndefined',
+        valToStr, jsg, ToJSString(..), strToText, MakeObject(..),
+        Nullable(..), Function(..), freeFunction, instanceOf, JSContextRef,
+        askJSM, runJSM, MonadJSM(..), liftJSM, strictEqual)
+import Foreign.Ptr (nullPtr)
+import Control.Lens.Operators ((^.))
+import Data.Maybe (catMaybes)
+import Language.Javascript.JSaddle.Classes (ToJSVal(..))
+import Control.Monad ((>=>))
+import Data.Coerce (coerce, Coercible)
+import Control.Monad.Trans.Reader (ReaderT(..), ask)
+import Control.Exception (bracket)
+#ifdef ghcjs_HOST_OS
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+#endif
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#elif MIN_VERSION_base(4,8,0)
+import GHC.Stack (CallStack)
+import GHC.Exts (Constraint)
+type HasCallStack = ((?callStack :: CallStack) :: Constraint)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
+
+-- | This is the same as 'JSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+type DOM = JSM
+-- | This is the same as 'JSContextRef' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+type DOMContext = JSContextRef
+-- | This is the same as 'MonadJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+type MonadDOM = MonadJSM
+
+-- | This is the same as 'liftJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+liftDOM :: MonadDOM m => DOM a -> m a
+liftDOM = liftJSM
+
+-- | This is the same as 'askJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+askDOM :: MonadDOM m => m DOMContext
+askDOM = askJSM
+
+-- | This is the same as 'runJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+runDOM :: MonadIO m => DOM a -> DOMContext -> m a
+runDOM = runJSM
+
+newtype GType = GType Object
+
+typeInstanceIsA :: ToJSVal value => value -> GType -> JSM Bool
+typeInstanceIsA o (GType t) = o `instanceOf` t
+
+-- | Safe but slow way to cast
+--
+-- > castTo Element x >>= \case
+-- >     Nothing      -> error "Was not an element"
+-- >     Just element -> ...
+castTo :: forall obj obj' m. (IsGObject obj, IsGObject obj', MonadJSM m) => (JSVal -> obj') -> obj -> m (Maybe obj')
+castTo constructor obj = liftJSM $ do
+  GType gtype <- typeGType (undefined :: obj')
+  let jsval = coerce obj
+  jsval `instanceOf` gtype >>= \case
+    True  -> return . Just $ constructor jsval
+    False -> return Nothing
+
+-- | Unsafe way to cast.  Slow but if it fails an error message will
+--   result and the message should be clear (uses HasCallStack).
+--
+-- > element <- unsafeCastTo Element x
+unsafeCastTo :: forall obj obj' m. (HasCallStack, IsGObject obj, IsGObject obj', MonadJSM m) => (JSVal -> obj') -> obj -> m obj'
+unsafeCastTo constructor obj = liftJSM $ do
+  GType gtype <- typeGType (undefined :: obj')
+  let jsval = coerce obj
+  jsval `instanceOf` gtype >>= \case
+    True  -> return $ constructor jsval
+    False -> do
+      srcType <- typeGType obj >>= \(GType t) -> valToText (t ^. js "name")
+      destType <- valToText (gtype ^. js "name")
+      error $ "unsafeCastTo :: invalid conversion from " <> T.unpack srcType <> " to "
+        <> T.unpack destType <> " requested."
+
+-- | Unsafe way to cast.  Fast but if it fails you program
+--   will probably crash later on in some unpredictable way.
+--
+-- > element <- uncheckedCastTo Element x
+uncheckedCastTo :: (IsGObject obj, IsGObject obj') => (JSVal -> obj') -> obj -> obj'
+uncheckedCastTo constructor = constructor . coerce
+
+-- | Determine if this is an instance of a particular type
+--
+isA :: IsGObject o => o -> GType -> JSM Bool
+isA obj = typeInstanceIsA (unGObject $ toGObject obj)
+
+newtype GObject = GObject { unGObject :: JSVal }
+
+class (ToJSVal o, FromJSVal o, Coercible o JSVal) => IsGObject o where
+  -- | Given object get the GType of the type.  The actual argument
+  --   passed in is ignored.
+  typeGType :: o -> JSM GType
+
+-- | Safe upcast.
+toGObject :: IsGObject o => o -> GObject
+toGObject = GObject . coerce
+
+#ifndef ghcjs_HOST_OS
+class PToJSVal o where
+  pToJSVal :: o -> JSVal
+
+class PFromJSVal o where
+  pFromJSVal :: JSVal -> o
+#endif
+
+--class ToJSVal o where
+--  toJSVal :: o -> JSM JSVal
+
+class FromJSVal o where
+    fromJSVal :: JSVal -> JSM (Maybe o)
+    fromJSVal = maybeNullOrUndefined' fromJSValUnchecked
+
+    fromJSValUnchecked :: JSVal -> JSM o
+    fromJSValUnchecked v =
+        fromJSVal v >>= \case
+            Nothing -> error "fromJSValUnchecked"
+            Just r  -> return r
+
+fromJSArray :: FromJSVal o => JSVal -> JSM [Maybe o]
+fromJSArray a = do
+    l <- a ^. js "length" >>= valToNumber
+    mapM (\i -> a !! i >>= fromJSVal) [0..round l - 1]
+
+fromJSArrayUnchecked :: FromJSVal o => JSVal -> JSM [o]
+fromJSArrayUnchecked a = do
+    l <- a ^. js "length" >>= valToNumber
+    mapM (\i -> a !! i >>= fromJSValUnchecked) [0..round l - 1]
+
+-- newtype Nullable a = Nullable JSVal
+
+nullableToMaybe :: FromJSVal a => JSVal -> JSM (Maybe a)
+nullableToMaybe = fromJSVal
+{-# INLINE nullableToMaybe #-}
+--
+maybeToNullable :: ToJSVal a => Maybe a -> JSM JSVal
+maybeToNullable Nothing = return valNull
+maybeToNullable (Just a) = toJSVal a
+{-# INLINE maybeToNullable #-}
+
+instance PToJSVal GObject where
+  pToJSVal = unGObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GObject where
+  pFromJSVal = GObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GObject where
+  toJSVal = return . unGObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GObject where
+  fromJSVal val = fmap GObject <$> maybeNullOrUndefined val
+  {-# INLINE fromJSVal #-}
+
+--instance IsGObject o => PToJSVal o where
+--  pToJSVal = unGObject . toGObject
+--  {-# INLINE pToJSVal #-}
+--
+--instance IsGObject o => PFromJSVal o where
+--  pFromJSVal = unsafeCastGObject . GObject . castRef
+--  {-# INLINE pFromJSVal #-}
+--
+--instance IsGObject o => ToJSVal o where
+--  toJSVal = return . unGObject . toGObject
+--  {-# INLINE toJSVal #-}
+--
+--instance IsGObject o => FromJSVal o where
+--  fromJSVal = return . fmap (unsafeCastGObject . GObject . castRef) . maybeJSNullOrUndefined
+--  {-# INLINE fromJSVal #-}
+
+instance IsGObject GObject where
+  typeGType _ = gTypeGObject
+  {-# INLINE typeGType #-}
+
+#ifdef ghcjs_HOST_OS
+foreign import javascript unsafe "Object" gTypeGObject :: IO GType
+#else
+gTypeGObject :: JSM GType
+gTypeGObject = GType . Object <$> jsg "Object"
+#endif
+
+objectToString :: (IsGObject self, FromJSString result) => self -> JSM result
+objectToString self = fromJSValUnchecked (unGObject $ toGObject self)
+
+-- | Fastest string type to use when you just
+--   want to take a string from the DOM then
+--   give it back as is.
+type DOMString = JSString
+
+class FromJSVal s => FromJSString s where
+    fromJSString :: JSString -> JSM s
+
+fromJSStringArray :: FromJSString s => JSVal -> JSM [s]
+fromJSStringArray a = do
+    l <- a ^. js "length" >>= valToNumber
+    mapM (\i -> a !! i >>= valToStr >>= fromJSString) [0..round l - 1]
+
+--fromJSString :: FromJSString a => JSString -> a
+--fromJSString a = pFromJSVal . pToJSVal
+--{-# INLINE fromJSString #-}
+
+toMaybeJSString :: ToJSString a => Maybe a -> JSM JSVal
+toMaybeJSString Nothing = return valNull
+toMaybeJSString (Just a) = toJSVal (toJSString a)
+{-# INLINE toMaybeJSString #-}
+
+fromMaybeJSString :: FromJSString a => JSVal -> JSM (Maybe a)
+fromMaybeJSString = maybeNullOrUndefined' (valToStr >=> fromJSString)
+{-# INLINE fromMaybeJSString #-}
+
+instance FromJSVal JSVal where
+    fromJSValUnchecked = return
+instance FromJSVal Double where
+    fromJSValUnchecked = valToNumber
+instance FromJSVal Float where
+    fromJSValUnchecked v = realToFrac <$> valToNumber v
+instance FromJSVal Int where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Int32 where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Int64 where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Word where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Word32 where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Word64 where
+    fromJSValUnchecked v = round <$> valToNumber v
+instance FromJSVal Bool where
+    fromJSValUnchecked = valToBool
+instance FromJSVal T.Text where
+    fromJSValUnchecked v = strToText <$> valToStr v
+instance FromJSString T.Text where
+    fromJSString = return . strToText
+instance FromJSVal String where
+    fromJSValUnchecked v = T.unpack . strToText <$> valToStr v
+instance FromJSString String where
+    fromJSString v = return . T.unpack $ strToText v
+instance FromJSVal JSString where
+    fromJSValUnchecked = valToStr
+instance FromJSString JSString where
+    fromJSString = return
+
+type ToDOMString s = ToJSString s
+type FromDOMString s = FromJSString s
+type IsDOMString s = (ToDOMString s, FromDOMString s)
+
+-- Callbacks
+newtype Callback a = Callback Function
+
+withCallback :: (MonadDOM m, Coercible c Function)
+             => JSM c -> (c -> JSM a) -> m a
+withCallback aquire f = do
+    jsCtx <- askJSM
+    liftIO $ bracket
+        (runJSM aquire jsCtx)
+        ((`runJSM` jsCtx) . freeFunction . coerce)
+        (\t -> runJSM (f t) jsCtx)
+
+newtype AudioBufferCallback = AudioBufferCallback (Callback (JSVal -> IO ()))
+instance ToJSVal AudioBufferCallback where toJSVal (AudioBufferCallback (Callback r)) = toJSVal r
+newtype DatabaseCallback = DatabaseCallback (Callback (JSVal -> IO ()))
+instance ToJSVal DatabaseCallback where toJSVal (DatabaseCallback (Callback r)) = toJSVal r
+newtype MediaQueryListListener = MediaQueryListListener (Callback (JSVal -> IO ()))
+instance ToJSVal MediaQueryListListener where toJSVal (MediaQueryListListener (Callback r)) = toJSVal r
+newtype MediaStreamTrackSourcesCallback = MediaStreamTrackSourcesCallback (Callback (JSVal -> IO ()))
+instance ToJSVal MediaStreamTrackSourcesCallback where toJSVal (MediaStreamTrackSourcesCallback (Callback r)) = toJSVal r
+newtype NavigatorUserMediaErrorCallback = NavigatorUserMediaErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal NavigatorUserMediaErrorCallback where toJSVal (NavigatorUserMediaErrorCallback (Callback r)) = toJSVal r
+newtype NavigatorUserMediaSuccessCallback = NavigatorUserMediaSuccessCallback (Callback (JSVal -> IO ()))
+instance ToJSVal NavigatorUserMediaSuccessCallback where toJSVal (NavigatorUserMediaSuccessCallback (Callback r)) = toJSVal r
+newtype NotificationPermissionCallback permissions = NotificationPermissionCallback (Callback (JSVal -> IO ()))
+instance ToJSVal (NotificationPermissionCallback permissions) where toJSVal (NotificationPermissionCallback (Callback r)) = toJSVal r
+newtype PositionCallback = PositionCallback (Callback (JSVal -> IO ()))
+instance ToJSVal PositionCallback where toJSVal (PositionCallback (Callback r)) = toJSVal r
+newtype PositionErrorCallback = PositionErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal PositionErrorCallback where toJSVal (PositionErrorCallback (Callback r)) = toJSVal r
+newtype RequestAnimationFrameCallback = RequestAnimationFrameCallback (Callback (JSVal -> IO ()))
+instance ToJSVal RequestAnimationFrameCallback where toJSVal (RequestAnimationFrameCallback (Callback r)) = toJSVal r
+newtype RTCPeerConnectionErrorCallback = RTCPeerConnectionErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal RTCPeerConnectionErrorCallback where toJSVal (RTCPeerConnectionErrorCallback (Callback r)) = toJSVal r
+newtype RTCSessionDescriptionCallback = RTCSessionDescriptionCallback (Callback (JSVal -> IO ()))
+instance ToJSVal RTCSessionDescriptionCallback where toJSVal (RTCSessionDescriptionCallback (Callback r)) = toJSVal r
+newtype RTCStatsCallback = RTCStatsCallback (Callback (JSVal -> IO ()))
+instance ToJSVal RTCStatsCallback where toJSVal (RTCStatsCallback (Callback r)) = toJSVal r
+newtype SQLStatementCallback = SQLStatementCallback (Callback (JSVal -> JSVal -> IO ()))
+instance ToJSVal SQLStatementCallback where toJSVal (SQLStatementCallback (Callback r)) = toJSVal r
+newtype SQLStatementErrorCallback = SQLStatementErrorCallback (Callback (JSVal -> JSVal -> IO ()))
+instance ToJSVal SQLStatementErrorCallback where toJSVal (SQLStatementErrorCallback (Callback r)) = toJSVal r
+newtype SQLTransactionCallback = SQLTransactionCallback (Callback (JSVal -> IO ()))
+instance ToJSVal SQLTransactionCallback where toJSVal (SQLTransactionCallback (Callback r)) = toJSVal r
+newtype SQLTransactionErrorCallback = SQLTransactionErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal SQLTransactionErrorCallback where toJSVal (SQLTransactionErrorCallback (Callback r)) = toJSVal r
+newtype StorageErrorCallback = StorageErrorCallback (Callback (JSVal -> IO ()))
+instance ToJSVal StorageErrorCallback where toJSVal (StorageErrorCallback (Callback r)) = toJSVal r
+newtype StorageQuotaCallback = StorageQuotaCallback (Callback (JSVal -> IO ()))
+instance ToJSVal StorageQuotaCallback where toJSVal (StorageQuotaCallback (Callback r)) = toJSVal r
+newtype StorageUsageCallback = StorageUsageCallback (Callback (JSVal -> JSVal -> IO ()))
+instance ToJSVal StorageUsageCallback where toJSVal (StorageUsageCallback (Callback r)) = toJSVal r
+newtype StringCallback s = StringCallback (Callback (JSVal -> IO ()))
+instance ToJSVal (StringCallback s) where toJSVal (StringCallback (Callback r)) = toJSVal r
+newtype VoidCallback = VoidCallback (Callback (IO ()))
+instance ToJSVal VoidCallback where toJSVal (VoidCallback (Callback r)) = toJSVal r
+
+-- Custom types
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+newtype SerializedScriptValue = SerializedScriptValue { unSerializedScriptValue :: JSVal }
+
+instance PToJSVal SerializedScriptValue where
+  pToJSVal = unSerializedScriptValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SerializedScriptValue where
+  pFromJSVal = SerializedScriptValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SerializedScriptValue where
+  toJSVal = return . unSerializedScriptValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SerializedScriptValue where
+  fromJSVal v = fmap SerializedScriptValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsSerializedScriptValue o
+toSerializedScriptValue :: IsSerializedScriptValue o => o -> SerializedScriptValue
+toSerializedScriptValue = SerializedScriptValue . coerce
+
+instance IsSerializedScriptValue SerializedScriptValue
+instance IsGObject SerializedScriptValue where
+  typeGType _ = error "Unable to get the JavaScript type of SerializedScriptValue"
+#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 :: JSVal }
+
+instance PToJSVal PositionOptions where
+  pToJSVal = unPositionOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PositionOptions where
+  pFromJSVal = PositionOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PositionOptions where
+  toJSVal = return . unPositionOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PositionOptions where
+  fromJSVal v = fmap PositionOptions <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsPositionOptions o
+toPositionOptions :: IsPositionOptions o => o -> PositionOptions
+toPositionOptions = PositionOptions . coerce
+
+instance IsPositionOptions PositionOptions
+instance IsGObject PositionOptions where
+  typeGType _ = error "Unable to get the JavaScript type of PositionOptions"
+#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 :: JSVal }
+
+instance PToJSVal Dictionary where
+  pToJSVal = unDictionary
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Dictionary where
+  pFromJSVal = Dictionary
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Dictionary where
+  toJSVal = return . unDictionary
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Dictionary where
+  fromJSVal v = fmap Dictionary <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsDictionary o
+toDictionary :: IsDictionary o => o -> Dictionary
+toDictionary = Dictionary . coerce
+
+instance IsDictionary Dictionary
+instance IsGObject Dictionary where
+  typeGType _ = error "Unable to get the JavaScript type of Dictionary"
+#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 :: JSVal }
+
+instance PToJSVal BlobPropertyBag where
+  pToJSVal = unBlobPropertyBag
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BlobPropertyBag where
+  pFromJSVal = BlobPropertyBag
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BlobPropertyBag where
+  toJSVal = return . unBlobPropertyBag
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BlobPropertyBag where
+  fromJSVal v = fmap BlobPropertyBag <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsBlobPropertyBag o
+toBlobPropertyBag :: IsBlobPropertyBag o => o -> BlobPropertyBag
+toBlobPropertyBag = BlobPropertyBag . coerce
+
+instance IsBlobPropertyBag BlobPropertyBag
+instance IsGObject BlobPropertyBag where
+  typeGType _ = error "Unable to get the JavaScript type of BlobPropertyBag"
+#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 :: JSVal }
+
+instance PToJSVal MutationCallback where
+  pToJSVal = unMutationCallback
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationCallback where
+  pFromJSVal = MutationCallback
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationCallback where
+  toJSVal = return . unMutationCallback
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationCallback where
+  fromJSVal v = fmap MutationCallback <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsMutationCallback o
+toMutationCallback :: IsMutationCallback o => o -> MutationCallback
+toMutationCallback = MutationCallback . coerce
+
+instance IsMutationCallback MutationCallback
+instance IsGObject MutationCallback where
+  typeGType _ = error "Unable to get the JavaScript type of MutationCallback"
+#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 :: JSVal }
+
+instance PToJSVal Promise where
+  pToJSVal = unPromise
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Promise where
+  pFromJSVal = Promise
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Promise where
+  toJSVal = return . unPromise
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Promise where
+  fromJSVal v = fmap Promise <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsPromise o
+toPromise :: IsPromise o => o -> Promise
+toPromise = Promise . coerce
+
+instance IsPromise Promise
+instance IsGObject Promise where
+    typeGType _ = gTypePromise
+
+gTypePromise :: JSM GType
+gTypePromise = GType . Object <$> jsg "Promise"
+#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 :: JSVal }
+
+instance PToJSVal ArrayBuffer where
+  pToJSVal = unArrayBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ArrayBuffer where
+  pFromJSVal = ArrayBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ArrayBuffer where
+  toJSVal = return . unArrayBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ArrayBuffer where
+  fromJSVal v = fmap ArrayBuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArrayBuffer o
+toArrayBuffer :: IsArrayBuffer o => o -> ArrayBuffer
+toArrayBuffer = ArrayBuffer . coerce
+
+instance IsArrayBuffer ArrayBuffer
+instance IsGObject ArrayBuffer where
+    typeGType _ = gTypeArrayBuffer
+
+gTypeArrayBuffer :: JSM GType
+gTypeArrayBuffer = GType . Object <$> jsg "ArrayBuffer"
+#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 :: JSVal }
+
+instance PToJSVal Float32Array where
+  pToJSVal = unFloat32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Float32Array where
+  pFromJSVal = Float32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Float32Array where
+  toJSVal = return . unFloat32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Float32Array where
+  fromJSVal v = fmap Float32Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsFloat32Array o
+toFloat32Array :: IsFloat32Array o => o -> Float32Array
+toFloat32Array = Float32Array . coerce
+
+instance IsFloat32Array Float32Array
+instance IsGObject Float32Array where
+        typeGType _ = gTypeFloat32Array
+
+gTypeFloat32Array :: JSM GType
+gTypeFloat32Array = GType . Object <$> jsg "Float32Array"
+#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 :: JSVal }
+
+instance PToJSVal Float64Array where
+  pToJSVal = unFloat64Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Float64Array where
+  pFromJSVal = Float64Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Float64Array where
+  toJSVal = return . unFloat64Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Float64Array where
+  fromJSVal v = fmap Float64Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsFloat64Array o
+toFloat64Array :: IsFloat64Array o => o -> Float64Array
+toFloat64Array = Float64Array . coerce
+
+instance IsFloat64Array Float64Array
+instance IsGObject Float64Array where
+    typeGType _ = gTypeFloat64Array
+
+gTypeFloat64Array :: JSM GType
+gTypeFloat64Array = GType . Object <$> jsg "Float64Array"
+#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 :: JSVal }
+
+instance PToJSVal Uint8Array where
+  pToJSVal = unUint8Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint8Array where
+  pFromJSVal = Uint8Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint8Array where
+  toJSVal = return . unUint8Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint8Array where
+  fromJSVal v = fmap Uint8Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint8Array o
+toUint8Array :: IsUint8Array o => o -> Uint8Array
+toUint8Array = Uint8Array . coerce
+
+instance IsUint8Array Uint8Array
+instance IsGObject Uint8Array where
+    typeGType _ = gTypeUint8Array
+
+gTypeUint8Array :: JSM GType
+gTypeUint8Array = GType . Object <$> jsg "Uint8Array"
+#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 :: JSVal }
+
+instance PToJSVal Uint8ClampedArray where
+  pToJSVal = unUint8ClampedArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint8ClampedArray where
+  pFromJSVal = Uint8ClampedArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint8ClampedArray where
+  toJSVal = return . unUint8ClampedArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint8ClampedArray where
+  fromJSVal v = fmap Uint8ClampedArray <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint8ClampedArray o
+toUint8ClampedArray :: IsUint8ClampedArray o => o -> Uint8ClampedArray
+toUint8ClampedArray = Uint8ClampedArray . coerce
+
+instance IsUint8ClampedArray Uint8ClampedArray
+instance IsGObject Uint8ClampedArray where
+    typeGType _ = gTypeUint8ClampedArray
+
+gTypeUint8ClampedArray :: JSM GType
+gTypeUint8ClampedArray = GType . Object <$> jsg "Uint8ClampedArray"
+#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 :: JSVal }
+
+instance PToJSVal Uint16Array where
+  pToJSVal = unUint16Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint16Array where
+  pFromJSVal = Uint16Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint16Array where
+  toJSVal = return . unUint16Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint16Array where
+  fromJSVal v = fmap Uint16Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint16Array o
+toUint16Array :: IsUint16Array o => o -> Uint16Array
+toUint16Array = Uint16Array . coerce
+
+instance IsUint16Array Uint16Array
+instance IsGObject Uint16Array where
+    typeGType _ = gTypeUint16Array
+
+gTypeUint16Array :: JSM GType
+gTypeUint16Array = GType . Object <$> jsg "Uint16Array"
+#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 :: JSVal }
+
+instance PToJSVal Uint32Array where
+  pToJSVal = unUint32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint32Array where
+  pFromJSVal = Uint32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint32Array where
+  toJSVal = return . unUint32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint32Array where
+  fromJSVal v = fmap Uint32Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint32Array o
+toUint32Array :: IsUint32Array o => o -> Uint32Array
+toUint32Array = Uint32Array . coerce
+
+instance IsUint32Array Uint32Array
+instance IsGObject Uint32Array where
+    typeGType _ = gTypeUint32Array
+
+gTypeUint32Array :: JSM GType
+gTypeUint32Array = GType . Object <$> jsg "Uint32Array"
+#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 :: JSVal }
+
+instance PToJSVal Int8Array where
+  pToJSVal = unInt8Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int8Array where
+  pFromJSVal = Int8Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int8Array where
+  toJSVal = return . unInt8Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int8Array where
+  fromJSVal v = fmap Int8Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt8Array o
+toInt8Array :: IsInt8Array o => o -> Int8Array
+toInt8Array = Int8Array . coerce
+
+instance IsInt8Array Int8Array
+instance IsGObject Int8Array where
+    typeGType _ = gTypeInt8Array
+
+gTypeInt8Array :: JSM GType
+gTypeInt8Array = GType . Object <$> jsg "Int8Array"
+#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 :: JSVal }
+
+instance PToJSVal Int16Array where
+  pToJSVal = unInt16Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int16Array where
+  pFromJSVal = Int16Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int16Array where
+  toJSVal = return . unInt16Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int16Array where
+  fromJSVal v = fmap Int16Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt16Array o
+toInt16Array :: IsInt16Array o => o -> Int16Array
+toInt16Array = Int16Array . coerce
+
+instance IsInt16Array Int16Array
+instance IsGObject Int16Array where
+    typeGType _ = gTypeInt16Array
+
+gTypeInt16Array :: JSM GType
+gTypeInt16Array = GType . Object <$> jsg "Int16Array"
+#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 :: JSVal }
+
+instance PToJSVal Int32Array where
+  pToJSVal = unInt32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int32Array where
+  pFromJSVal = Int32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int32Array where
+  toJSVal = return . unInt32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int32Array where
+  fromJSVal v = fmap Int32Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt32Array o
+toInt32Array :: IsInt32Array o => o -> Int32Array
+toInt32Array = Int32Array . coerce
+
+instance IsInt32Array Int32Array
+instance IsGObject Int32Array where
+    typeGType _ = gTypeInt32Array
+
+gTypeInt32Array :: JSM GType
+gTypeInt32Array = GType . Object <$> jsg "Int32Array"
+#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 :: JSVal }
+
+instance PToJSVal ObjectArray where
+  pToJSVal = unObjectArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ObjectArray where
+  pFromJSVal = ObjectArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ObjectArray where
+  toJSVal = return . unObjectArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ObjectArray where
+  fromJSVal v = fmap ObjectArray <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsObjectArray o
+toObjectArray :: IsObjectArray o => o -> ObjectArray
+toObjectArray = ObjectArray . coerce
+
+instance IsObjectArray ObjectArray
+instance IsGObject ObjectArray where
+  typeGType _ = error "Unable to get the JavaScript type of ObjectArray"
+#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 :: JSVal }
+
+instance PToJSVal ArrayBufferView where
+  pToJSVal = unArrayBufferView
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ArrayBufferView where
+  pFromJSVal = ArrayBufferView
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ArrayBufferView where
+  toJSVal = return . unArrayBufferView
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ArrayBufferView where
+  fromJSVal v = fmap ArrayBufferView <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArrayBufferView o
+toArrayBufferView :: IsArrayBufferView o => o -> ArrayBufferView
+toArrayBufferView = ArrayBufferView . coerce
+
+instance IsArrayBufferView ArrayBufferView
+instance IsGObject ArrayBufferView where
+  typeGType _ = error "Unable to get the JavaScript type of ArrayBufferView"
+#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 :: JSVal }
+
+instance PToJSVal Array where
+  pToJSVal = unArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Array where
+  pFromJSVal = Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Array where
+  toJSVal = return . unArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Array where
+  fromJSVal v = fmap Array <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArray o
+toArray :: IsArray o => o -> Array
+toArray = Array . coerce
+
+instance IsArray Array
+instance IsGObject Array where
+    typeGType _ = gTypeArray
+
+gTypeArray :: JSM GType
+gTypeArray = GType . Object <$> jsg "Array"
+#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 :: JSVal }
+
+instance PToJSVal Date where
+  pToJSVal = unDate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Date where
+  pFromJSVal = Date
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Date where
+  toJSVal = return . unDate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Date where
+  fromJSVal v = fmap Date <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsDate o
+toDate :: IsDate o => o -> Date
+toDate = Date . coerce
+
+instance IsDate Date
+instance IsGObject Date where
+    typeGType _ = gTypeDate
+
+gTypeDate :: JSM GType
+gTypeDate = GType . Object <$> jsg "Date"
+#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 :: JSVal }
+
+instance PToJSVal Acceleration where
+  pToJSVal = unAcceleration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Acceleration where
+  pFromJSVal = Acceleration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Acceleration where
+  toJSVal = return . unAcceleration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Acceleration where
+  fromJSVal v = fmap Acceleration <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsAcceleration o
+toAcceleration :: IsAcceleration o => o -> Acceleration
+toAcceleration = Acceleration . coerce
+
+instance IsAcceleration Acceleration
+instance IsGObject Acceleration where
+  typeGType _ = error "Unable to get the JavaScript type of Acceleration"
+#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 :: JSVal }
+
+instance PToJSVal RotationRate where
+  pToJSVal = unRotationRate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RotationRate where
+  pFromJSVal = RotationRate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RotationRate where
+  toJSVal = return . unRotationRate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RotationRate where
+  fromJSVal v = fmap RotationRate <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsRotationRate o
+toRotationRate :: IsRotationRate o => o -> RotationRate
+toRotationRate = RotationRate . coerce
+
+instance IsRotationRate RotationRate
+instance IsGObject RotationRate where
+  typeGType _ = error "Unable to get the JavaScript type of RotationRate"
+#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 :: JSVal }
+
+instance PToJSVal Algorithm where
+  pToJSVal = unAlgorithm
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Algorithm where
+  pFromJSVal = Algorithm
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Algorithm where
+  toJSVal = return . unAlgorithm
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Algorithm where
+  fromJSVal v = fmap Algorithm <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsAlgorithm o
+toAlgorithm :: IsAlgorithm o => o -> Algorithm
+toAlgorithm = Algorithm . coerce
+
+instance IsAlgorithm Algorithm
+instance IsGObject Algorithm where
+  typeGType _ = error "Unable to get the JavaScript type of Algorithm"
+#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 :: JSVal }
+
+instance PToJSVal CryptoOperationData where
+  pToJSVal = unCryptoOperationData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoOperationData where
+  pFromJSVal = CryptoOperationData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoOperationData where
+  toJSVal = return . unCryptoOperationData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoOperationData where
+  fromJSVal v = fmap CryptoOperationData <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsCryptoOperationData o
+toCryptoOperationData :: IsCryptoOperationData o => o -> CryptoOperationData
+toCryptoOperationData = CryptoOperationData . coerce
+
+instance IsCryptoOperationData CryptoOperationData
+instance IsGObject CryptoOperationData where
+  typeGType _ = error "Unable to get the JavaScript type of CryptoOperationData"
+instance IsCryptoOperationData ArrayBuffer
+instance IsCryptoOperationData ArrayBufferView
+#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 :: JSVal }
+
+instance PToJSVal CanvasStyle where
+  pToJSVal = unCanvasStyle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasStyle where
+  pFromJSVal = CanvasStyle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasStyle where
+  toJSVal = return . unCanvasStyle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasStyle where
+  fromJSVal v = fmap CanvasStyle <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsCanvasStyle o
+toCanvasStyle :: IsCanvasStyle o => o -> CanvasStyle
+toCanvasStyle = CanvasStyle . coerce
+
+instance IsCanvasStyle CanvasStyle
+instance IsGObject CanvasStyle where
+  typeGType _ = error "Unable to get the JavaScript type of CanvasStyle"
+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 :: JSVal }
+
+instance PToJSVal DOMException where
+  pToJSVal = unDOMException
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMException where
+  pFromJSVal = DOMException
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMException where
+  toJSVal = return . unDOMException
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMException where
+  fromJSVal v = fmap DOMException <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsDOMException o
+toDOMException :: IsDOMException o => o -> DOMException
+toDOMException = DOMException . coerce
+
+instance IsDOMException DOMException
+instance IsGObject DOMException where
+  typeGType _ = error "Unable to get the JavaScript type of DOMException"
+#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 "JSDOM.ANGLEInstancedArrays".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays Mozilla ANGLEInstancedArrays documentation>
+newtype ANGLEInstancedArrays = ANGLEInstancedArrays { unANGLEInstancedArrays :: JSVal }
+
+instance PToJSVal ANGLEInstancedArrays where
+  pToJSVal = unANGLEInstancedArrays
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ANGLEInstancedArrays where
+  pFromJSVal = ANGLEInstancedArrays
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ANGLEInstancedArrays where
+  toJSVal = return . unANGLEInstancedArrays
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ANGLEInstancedArrays where
+  fromJSVal v = fmap ANGLEInstancedArrays <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ANGLEInstancedArrays where
+  makeObject = makeObject . unANGLEInstancedArrays
+
+instance IsGObject ANGLEInstancedArrays where
+  typeGType _ = gTypeANGLEInstancedArrays
+  {-# INLINE typeGType #-}
+
+gTypeANGLEInstancedArrays :: JSM GType
+gTypeANGLEInstancedArrays = GType . Object <$> jsg "ANGLEInstancedArrays"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AbstractView".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AbstractView Mozilla AbstractView documentation>
+newtype AbstractView = AbstractView { unAbstractView :: JSVal }
+
+instance PToJSVal AbstractView where
+  pToJSVal = unAbstractView
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AbstractView where
+  pFromJSVal = AbstractView
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AbstractView where
+  toJSVal = return . unAbstractView
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AbstractView where
+  fromJSVal v = fmap AbstractView <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AbstractView where
+  makeObject = makeObject . unAbstractView
+
+instance IsGObject AbstractView where
+  typeGType _ = gTypeAbstractView
+  {-# INLINE typeGType #-}
+
+gTypeAbstractView :: JSM GType
+gTypeAbstractView = GType . Object <$> jsg "AbstractView"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AbstractWorker".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker Mozilla AbstractWorker documentation>
+newtype AbstractWorker = AbstractWorker { unAbstractWorker :: JSVal }
+
+instance PToJSVal AbstractWorker where
+  pToJSVal = unAbstractWorker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AbstractWorker where
+  pFromJSVal = AbstractWorker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AbstractWorker where
+  toJSVal = return . unAbstractWorker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AbstractWorker where
+  fromJSVal v = fmap AbstractWorker <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AbstractWorker where
+  makeObject = makeObject . unAbstractWorker
+
+instance IsGObject AbstractWorker where
+  typeGType _ = gTypeAbstractWorker
+  {-# INLINE typeGType #-}
+
+gTypeAbstractWorker :: JSM GType
+gTypeAbstractWorker = GType . Object <$> jsg "AbstractWorker"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AllAudioCapabilities".
+-- Base interface functions are in:
+--
+--     * "JSDOM.MediaStreamCapabilities"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AllAudioCapabilities Mozilla AllAudioCapabilities documentation>
+newtype AllAudioCapabilities = AllAudioCapabilities { unAllAudioCapabilities :: JSVal }
+
+instance PToJSVal AllAudioCapabilities where
+  pToJSVal = unAllAudioCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AllAudioCapabilities where
+  pFromJSVal = AllAudioCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AllAudioCapabilities where
+  toJSVal = return . unAllAudioCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AllAudioCapabilities where
+  fromJSVal v = fmap AllAudioCapabilities <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AllAudioCapabilities where
+  makeObject = makeObject . unAllAudioCapabilities
+
+instance IsMediaStreamCapabilities AllAudioCapabilities
+instance IsGObject AllAudioCapabilities where
+  typeGType _ = gTypeAllAudioCapabilities
+  {-# INLINE typeGType #-}
+
+gTypeAllAudioCapabilities :: JSM GType
+gTypeAllAudioCapabilities = GType . Object <$> jsg "AllAudioCapabilities"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AllVideoCapabilities".
+-- Base interface functions are in:
+--
+--     * "JSDOM.MediaStreamCapabilities"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AllVideoCapabilities Mozilla AllVideoCapabilities documentation>
+newtype AllVideoCapabilities = AllVideoCapabilities { unAllVideoCapabilities :: JSVal }
+
+instance PToJSVal AllVideoCapabilities where
+  pToJSVal = unAllVideoCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AllVideoCapabilities where
+  pFromJSVal = AllVideoCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AllVideoCapabilities where
+  toJSVal = return . unAllVideoCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AllVideoCapabilities where
+  fromJSVal v = fmap AllVideoCapabilities <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AllVideoCapabilities where
+  makeObject = makeObject . unAllVideoCapabilities
+
+instance IsMediaStreamCapabilities AllVideoCapabilities
+instance IsGObject AllVideoCapabilities where
+  typeGType _ = gTypeAllVideoCapabilities
+  {-# INLINE typeGType #-}
+
+gTypeAllVideoCapabilities :: JSM GType
+gTypeAllVideoCapabilities = GType . Object <$> jsg "AllVideoCapabilities"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AnalyserNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode Mozilla AnalyserNode documentation>
+newtype AnalyserNode = AnalyserNode { unAnalyserNode :: JSVal }
+
+instance PToJSVal AnalyserNode where
+  pToJSVal = unAnalyserNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnalyserNode where
+  pFromJSVal = AnalyserNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnalyserNode where
+  toJSVal = return . unAnalyserNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnalyserNode where
+  fromJSVal v = fmap AnalyserNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AnalyserNode where
+  makeObject = makeObject . unAnalyserNode
+
+instance IsAudioNode AnalyserNode
+instance IsEventTarget AnalyserNode
+instance IsGObject AnalyserNode where
+  typeGType _ = gTypeAnalyserNode
+  {-# INLINE typeGType #-}
+
+gTypeAnalyserNode :: JSM GType
+gTypeAnalyserNode = GType . Object <$> jsg "AnalyserNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AnimationEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent Mozilla AnimationEvent documentation>
+newtype AnimationEvent = AnimationEvent { unAnimationEvent :: JSVal }
+
+instance PToJSVal AnimationEvent where
+  pToJSVal = unAnimationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnimationEvent where
+  pFromJSVal = AnimationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnimationEvent where
+  toJSVal = return . unAnimationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnimationEvent where
+  fromJSVal v = fmap AnimationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AnimationEvent where
+  makeObject = makeObject . unAnimationEvent
+
+instance IsEvent AnimationEvent
+instance IsGObject AnimationEvent where
+  typeGType _ = gTypeAnimationEvent
+  {-# INLINE typeGType #-}
+
+gTypeAnimationEvent :: JSM GType
+gTypeAnimationEvent = GType . Object <$> jsg "AnimationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ApplicationCache".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache Mozilla ApplicationCache documentation>
+newtype ApplicationCache = ApplicationCache { unApplicationCache :: JSVal }
+
+instance PToJSVal ApplicationCache where
+  pToJSVal = unApplicationCache
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplicationCache where
+  pFromJSVal = ApplicationCache
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplicationCache where
+  toJSVal = return . unApplicationCache
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplicationCache where
+  fromJSVal v = fmap ApplicationCache <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ApplicationCache where
+  makeObject = makeObject . unApplicationCache
+
+instance IsEventTarget ApplicationCache
+instance IsGObject ApplicationCache where
+  typeGType _ = gTypeApplicationCache
+  {-# INLINE typeGType #-}
+
+gTypeApplicationCache :: JSM GType
+gTypeApplicationCache = GType . Object <$> jsg "ApplicationCache"
+#else
+type IsApplicationCache o = ApplicationCacheClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Attr".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Attr Mozilla Attr documentation>
+newtype Attr = Attr { unAttr :: JSVal }
+
+instance PToJSVal Attr where
+  pToJSVal = unAttr
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Attr where
+  pFromJSVal = Attr
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Attr where
+  toJSVal = return . unAttr
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Attr where
+  fromJSVal v = fmap Attr <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Attr where
+  makeObject = makeObject . unAttr
+
+instance IsNode Attr
+instance IsEventTarget Attr
+instance IsGObject Attr where
+  typeGType _ = gTypeAttr
+  {-# INLINE typeGType #-}
+
+gTypeAttr :: JSM GType
+gTypeAttr = GType . Object <$> jsg "Attr"
+#else
+type IsAttr o = AttrClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioBuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer Mozilla AudioBuffer documentation>
+newtype AudioBuffer = AudioBuffer { unAudioBuffer :: JSVal }
+
+instance PToJSVal AudioBuffer where
+  pToJSVal = unAudioBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioBuffer where
+  pFromJSVal = AudioBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioBuffer where
+  toJSVal = return . unAudioBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioBuffer where
+  fromJSVal v = fmap AudioBuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioBuffer where
+  makeObject = makeObject . unAudioBuffer
+
+instance IsGObject AudioBuffer where
+  typeGType _ = gTypeAudioBuffer
+  {-# INLINE typeGType #-}
+
+gTypeAudioBuffer :: JSM GType
+gTypeAudioBuffer = GType . Object <$> jsg "AudioBuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioBufferSourceNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode Mozilla AudioBufferSourceNode documentation>
+newtype AudioBufferSourceNode = AudioBufferSourceNode { unAudioBufferSourceNode :: JSVal }
+
+instance PToJSVal AudioBufferSourceNode where
+  pToJSVal = unAudioBufferSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioBufferSourceNode where
+  pFromJSVal = AudioBufferSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioBufferSourceNode where
+  toJSVal = return . unAudioBufferSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioBufferSourceNode where
+  fromJSVal v = fmap AudioBufferSourceNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioBufferSourceNode where
+  makeObject = makeObject . unAudioBufferSourceNode
+
+instance IsAudioNode AudioBufferSourceNode
+instance IsEventTarget AudioBufferSourceNode
+instance IsGObject AudioBufferSourceNode where
+  typeGType _ = gTypeAudioBufferSourceNode
+  {-# INLINE typeGType #-}
+
+gTypeAudioBufferSourceNode :: JSM GType
+gTypeAudioBufferSourceNode = GType . Object <$> jsg "AudioBufferSourceNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioContext".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation>
+newtype AudioContext = AudioContext { unAudioContext :: JSVal }
+
+instance PToJSVal AudioContext where
+  pToJSVal = unAudioContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioContext where
+  pFromJSVal = AudioContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioContext where
+  toJSVal = return . unAudioContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioContext where
+  fromJSVal v = fmap AudioContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioContext where
+  makeObject = makeObject . unAudioContext
+
+class IsEventTarget o => IsAudioContext o
+toAudioContext :: IsAudioContext o => o -> AudioContext
+toAudioContext = AudioContext . coerce
+
+instance IsAudioContext AudioContext
+instance IsEventTarget AudioContext
+instance IsGObject AudioContext where
+  typeGType _ = gTypeAudioContext
+  {-# INLINE typeGType #-}
+
+gTypeAudioContext :: JSM GType
+gTypeAudioContext = GType . Object <$> jsg "AudioContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioDestinationNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode Mozilla AudioDestinationNode documentation>
+newtype AudioDestinationNode = AudioDestinationNode { unAudioDestinationNode :: JSVal }
+
+instance PToJSVal AudioDestinationNode where
+  pToJSVal = unAudioDestinationNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioDestinationNode where
+  pFromJSVal = AudioDestinationNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioDestinationNode where
+  toJSVal = return . unAudioDestinationNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioDestinationNode where
+  fromJSVal v = fmap AudioDestinationNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioDestinationNode where
+  makeObject = makeObject . unAudioDestinationNode
+
+instance IsAudioNode AudioDestinationNode
+instance IsEventTarget AudioDestinationNode
+instance IsGObject AudioDestinationNode where
+  typeGType _ = gTypeAudioDestinationNode
+  {-# INLINE typeGType #-}
+
+gTypeAudioDestinationNode :: JSM GType
+gTypeAudioDestinationNode = GType . Object <$> jsg "AudioDestinationNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioListener".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener Mozilla AudioListener documentation>
+newtype AudioListener = AudioListener { unAudioListener :: JSVal }
+
+instance PToJSVal AudioListener where
+  pToJSVal = unAudioListener
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioListener where
+  pFromJSVal = AudioListener
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioListener where
+  toJSVal = return . unAudioListener
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioListener where
+  fromJSVal v = fmap AudioListener <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioListener where
+  makeObject = makeObject . unAudioListener
+
+instance IsGObject AudioListener where
+  typeGType _ = gTypeAudioListener
+  {-# INLINE typeGType #-}
+
+gTypeAudioListener :: JSM GType
+gTypeAudioListener = GType . Object <$> jsg "AudioListener"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode Mozilla AudioNode documentation>
+newtype AudioNode = AudioNode { unAudioNode :: JSVal }
+
+instance PToJSVal AudioNode where
+  pToJSVal = unAudioNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioNode where
+  pFromJSVal = AudioNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioNode where
+  toJSVal = return . unAudioNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioNode where
+  fromJSVal v = fmap AudioNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioNode where
+  makeObject = makeObject . unAudioNode
+
+class IsEventTarget o => IsAudioNode o
+toAudioNode :: IsAudioNode o => o -> AudioNode
+toAudioNode = AudioNode . coerce
+
+instance IsAudioNode AudioNode
+instance IsEventTarget AudioNode
+instance IsGObject AudioNode where
+  typeGType _ = gTypeAudioNode
+  {-# INLINE typeGType #-}
+
+gTypeAudioNode :: JSM GType
+gTypeAudioNode = GType . Object <$> jsg "AudioNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioParam".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam Mozilla AudioParam documentation>
+newtype AudioParam = AudioParam { unAudioParam :: JSVal }
+
+instance PToJSVal AudioParam where
+  pToJSVal = unAudioParam
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioParam where
+  pFromJSVal = AudioParam
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioParam where
+  toJSVal = return . unAudioParam
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioParam where
+  fromJSVal v = fmap AudioParam <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioParam where
+  makeObject = makeObject . unAudioParam
+
+instance IsGObject AudioParam where
+  typeGType _ = gTypeAudioParam
+  {-# INLINE typeGType #-}
+
+gTypeAudioParam :: JSM GType
+gTypeAudioParam = GType . Object <$> jsg "AudioParam"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioProcessingEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent Mozilla AudioProcessingEvent documentation>
+newtype AudioProcessingEvent = AudioProcessingEvent { unAudioProcessingEvent :: JSVal }
+
+instance PToJSVal AudioProcessingEvent where
+  pToJSVal = unAudioProcessingEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioProcessingEvent where
+  pFromJSVal = AudioProcessingEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioProcessingEvent where
+  toJSVal = return . unAudioProcessingEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioProcessingEvent where
+  fromJSVal v = fmap AudioProcessingEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioProcessingEvent where
+  makeObject = makeObject . unAudioProcessingEvent
+
+instance IsEvent AudioProcessingEvent
+instance IsGObject AudioProcessingEvent where
+  typeGType _ = gTypeAudioProcessingEvent
+  {-# INLINE typeGType #-}
+
+gTypeAudioProcessingEvent :: JSM GType
+gTypeAudioProcessingEvent = GType . Object <$> jsg "AudioProcessingEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioStreamTrack".
+-- Base interface functions are in:
+--
+--     * "JSDOM.MediaStreamTrack"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioStreamTrack Mozilla AudioStreamTrack documentation>
+newtype AudioStreamTrack = AudioStreamTrack { unAudioStreamTrack :: JSVal }
+
+instance PToJSVal AudioStreamTrack where
+  pToJSVal = unAudioStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioStreamTrack where
+  pFromJSVal = AudioStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioStreamTrack where
+  toJSVal = return . unAudioStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioStreamTrack where
+  fromJSVal v = fmap AudioStreamTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioStreamTrack where
+  makeObject = makeObject . unAudioStreamTrack
+
+instance IsMediaStreamTrack AudioStreamTrack
+instance IsEventTarget AudioStreamTrack
+instance IsGObject AudioStreamTrack where
+  typeGType _ = gTypeAudioStreamTrack
+  {-# INLINE typeGType #-}
+
+gTypeAudioStreamTrack :: JSM GType
+gTypeAudioStreamTrack = GType . Object <$> jsg "AudioStreamTrack"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.AudioTrack".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack Mozilla AudioTrack documentation>
+newtype AudioTrack = AudioTrack { unAudioTrack :: JSVal }
+
+instance PToJSVal AudioTrack where
+  pToJSVal = unAudioTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioTrack where
+  pFromJSVal = AudioTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioTrack where
+  toJSVal = return . unAudioTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioTrack where
+  fromJSVal v = fmap AudioTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioTrack where
+  makeObject = makeObject . unAudioTrack
+
+instance IsGObject AudioTrack where
+  typeGType _ = gTypeAudioTrack
+  {-# INLINE typeGType #-}
+
+gTypeAudioTrack :: JSM GType
+gTypeAudioTrack = GType . Object <$> jsg "AudioTrack"
+#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 "JSDOM.AudioTrackList".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList Mozilla AudioTrackList documentation>
+newtype AudioTrackList = AudioTrackList { unAudioTrackList :: JSVal }
+
+instance PToJSVal AudioTrackList where
+  pToJSVal = unAudioTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioTrackList where
+  pFromJSVal = AudioTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioTrackList where
+  toJSVal = return . unAudioTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioTrackList where
+  fromJSVal v = fmap AudioTrackList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AudioTrackList where
+  makeObject = makeObject . unAudioTrackList
+
+instance IsEventTarget AudioTrackList
+instance IsGObject AudioTrackList where
+  typeGType _ = gTypeAudioTrackList
+  {-# INLINE typeGType #-}
+
+gTypeAudioTrackList :: JSM GType
+gTypeAudioTrackList = GType . Object <$> jsg "AudioTrackList"
+#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 "JSDOM.AutocompleteErrorEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent Mozilla AutocompleteErrorEvent documentation>
+newtype AutocompleteErrorEvent = AutocompleteErrorEvent { unAutocompleteErrorEvent :: JSVal }
+
+instance PToJSVal AutocompleteErrorEvent where
+  pToJSVal = unAutocompleteErrorEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AutocompleteErrorEvent where
+  pFromJSVal = AutocompleteErrorEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AutocompleteErrorEvent where
+  toJSVal = return . unAutocompleteErrorEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AutocompleteErrorEvent where
+  fromJSVal v = fmap AutocompleteErrorEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject AutocompleteErrorEvent where
+  makeObject = makeObject . unAutocompleteErrorEvent
+
+instance IsEvent AutocompleteErrorEvent
+instance IsGObject AutocompleteErrorEvent where
+  typeGType _ = gTypeAutocompleteErrorEvent
+  {-# INLINE typeGType #-}
+
+gTypeAutocompleteErrorEvent :: JSM GType
+gTypeAutocompleteErrorEvent = GType . Object <$> jsg "AutocompleteErrorEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.BarProp".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BarProp Mozilla BarProp documentation>
+newtype BarProp = BarProp { unBarProp :: JSVal }
+
+instance PToJSVal BarProp where
+  pToJSVal = unBarProp
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BarProp where
+  pFromJSVal = BarProp
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BarProp where
+  toJSVal = return . unBarProp
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BarProp where
+  fromJSVal v = fmap BarProp <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BarProp where
+  makeObject = makeObject . unBarProp
+
+instance IsGObject BarProp where
+  typeGType _ = gTypeBarProp
+  {-# INLINE typeGType #-}
+
+gTypeBarProp :: JSM GType
+gTypeBarProp = GType . Object <$> jsg "BarProp"
+#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 "JSDOM.BatteryManager".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager Mozilla BatteryManager documentation>
+newtype BatteryManager = BatteryManager { unBatteryManager :: JSVal }
+
+instance PToJSVal BatteryManager where
+  pToJSVal = unBatteryManager
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BatteryManager where
+  pFromJSVal = BatteryManager
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BatteryManager where
+  toJSVal = return . unBatteryManager
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BatteryManager where
+  fromJSVal v = fmap BatteryManager <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BatteryManager where
+  makeObject = makeObject . unBatteryManager
+
+instance IsEventTarget BatteryManager
+instance IsGObject BatteryManager where
+  typeGType _ = gTypeBatteryManager
+  {-# INLINE typeGType #-}
+
+gTypeBatteryManager :: JSM GType
+gTypeBatteryManager = GType . Object <$> jsg "BatteryManager"
+#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 "JSDOM.BeforeLoadEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent Mozilla BeforeLoadEvent documentation>
+newtype BeforeLoadEvent = BeforeLoadEvent { unBeforeLoadEvent :: JSVal }
+
+instance PToJSVal BeforeLoadEvent where
+  pToJSVal = unBeforeLoadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BeforeLoadEvent where
+  pFromJSVal = BeforeLoadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BeforeLoadEvent where
+  toJSVal = return . unBeforeLoadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BeforeLoadEvent where
+  fromJSVal v = fmap BeforeLoadEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BeforeLoadEvent where
+  makeObject = makeObject . unBeforeLoadEvent
+
+instance IsEvent BeforeLoadEvent
+instance IsGObject BeforeLoadEvent where
+  typeGType _ = gTypeBeforeLoadEvent
+  {-# INLINE typeGType #-}
+
+gTypeBeforeLoadEvent :: JSM GType
+gTypeBeforeLoadEvent = GType . Object <$> jsg "BeforeLoadEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.BeforeUnloadEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent Mozilla BeforeUnloadEvent documentation>
+newtype BeforeUnloadEvent = BeforeUnloadEvent { unBeforeUnloadEvent :: JSVal }
+
+instance PToJSVal BeforeUnloadEvent where
+  pToJSVal = unBeforeUnloadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BeforeUnloadEvent where
+  pFromJSVal = BeforeUnloadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BeforeUnloadEvent where
+  toJSVal = return . unBeforeUnloadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BeforeUnloadEvent where
+  fromJSVal v = fmap BeforeUnloadEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BeforeUnloadEvent where
+  makeObject = makeObject . unBeforeUnloadEvent
+
+instance IsEvent BeforeUnloadEvent
+instance IsGObject BeforeUnloadEvent where
+  typeGType _ = gTypeBeforeUnloadEvent
+  {-# INLINE typeGType #-}
+
+gTypeBeforeUnloadEvent :: JSM GType
+gTypeBeforeUnloadEvent = GType . Object <$> jsg "BeforeUnloadEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.BiquadFilterNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode Mozilla BiquadFilterNode documentation>
+newtype BiquadFilterNode = BiquadFilterNode { unBiquadFilterNode :: JSVal }
+
+instance PToJSVal BiquadFilterNode where
+  pToJSVal = unBiquadFilterNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BiquadFilterNode where
+  pFromJSVal = BiquadFilterNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BiquadFilterNode where
+  toJSVal = return . unBiquadFilterNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BiquadFilterNode where
+  fromJSVal v = fmap BiquadFilterNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject BiquadFilterNode where
+  makeObject = makeObject . unBiquadFilterNode
+
+instance IsAudioNode BiquadFilterNode
+instance IsEventTarget BiquadFilterNode
+instance IsGObject BiquadFilterNode where
+  typeGType _ = gTypeBiquadFilterNode
+  {-# INLINE typeGType #-}
+
+gTypeBiquadFilterNode :: JSM GType
+gTypeBiquadFilterNode = GType . Object <$> jsg "BiquadFilterNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Blob".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation>
+newtype Blob = Blob { unBlob :: JSVal }
+
+instance PToJSVal Blob where
+  pToJSVal = unBlob
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Blob where
+  pFromJSVal = Blob
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Blob where
+  toJSVal = return . unBlob
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Blob where
+  fromJSVal v = fmap Blob <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Blob where
+  makeObject = makeObject . unBlob
+
+class IsGObject o => IsBlob o
+toBlob :: IsBlob o => o -> Blob
+toBlob = Blob . coerce
+
+instance IsBlob Blob
+instance IsGObject Blob where
+  typeGType _ = gTypeBlob
+  {-# INLINE typeGType #-}
+
+gTypeBlob :: JSM GType
+gTypeBlob = GType . Object <$> jsg "Blob"
+#else
+type IsBlob o = BlobClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CDATASection".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Text"
+--     * "JSDOM.CharacterData"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CDATASection Mozilla CDATASection documentation>
+newtype CDATASection = CDATASection { unCDATASection :: JSVal }
+
+instance PToJSVal CDATASection where
+  pToJSVal = unCDATASection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CDATASection where
+  pFromJSVal = CDATASection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CDATASection where
+  toJSVal = return . unCDATASection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CDATASection where
+  fromJSVal v = fmap CDATASection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CDATASection where
+  makeObject = makeObject . unCDATASection
+
+instance IsText CDATASection
+instance IsCharacterData CDATASection
+instance IsNode CDATASection
+instance IsEventTarget CDATASection
+instance IsGObject CDATASection where
+  typeGType _ = gTypeCDATASection
+  {-# INLINE typeGType #-}
+
+gTypeCDATASection :: JSM GType
+gTypeCDATASection = GType . Object <$> jsg "CDATASection"
+#else
+type IsCDATASection o = CDATASectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSS".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSS Mozilla CSS documentation>
+newtype CSS = CSS { unCSS :: JSVal }
+
+instance PToJSVal CSS where
+  pToJSVal = unCSS
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSS where
+  pFromJSVal = CSS
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSS where
+  toJSVal = return . unCSS
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSS where
+  fromJSVal v = fmap CSS <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSS where
+  makeObject = makeObject . unCSS
+
+instance IsGObject CSS where
+  typeGType _ = gTypeCSS
+  {-# INLINE typeGType #-}
+
+gTypeCSS :: JSM GType
+gTypeCSS = GType . Object <$> jsg "CSS"
+#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 "JSDOM.CSSCharsetRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSCharsetRule Mozilla CSSCharsetRule documentation>
+newtype CSSCharsetRule = CSSCharsetRule { unCSSCharsetRule :: JSVal }
+
+instance PToJSVal CSSCharsetRule where
+  pToJSVal = unCSSCharsetRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSCharsetRule where
+  pFromJSVal = CSSCharsetRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSCharsetRule where
+  toJSVal = return . unCSSCharsetRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSCharsetRule where
+  fromJSVal v = fmap CSSCharsetRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSCharsetRule where
+  makeObject = makeObject . unCSSCharsetRule
+
+instance IsCSSRule CSSCharsetRule
+instance IsGObject CSSCharsetRule where
+  typeGType _ = gTypeCSSCharsetRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSCharsetRule :: JSM GType
+gTypeCSSCharsetRule = GType . Object <$> jsg "CSSCharsetRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSFontFaceLoadEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent Mozilla CSSFontFaceLoadEvent documentation>
+newtype CSSFontFaceLoadEvent = CSSFontFaceLoadEvent { unCSSFontFaceLoadEvent :: JSVal }
+
+instance PToJSVal CSSFontFaceLoadEvent where
+  pToJSVal = unCSSFontFaceLoadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSFontFaceLoadEvent where
+  pFromJSVal = CSSFontFaceLoadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSFontFaceLoadEvent where
+  toJSVal = return . unCSSFontFaceLoadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSFontFaceLoadEvent where
+  fromJSVal v = fmap CSSFontFaceLoadEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSFontFaceLoadEvent where
+  makeObject = makeObject . unCSSFontFaceLoadEvent
+
+instance IsEvent CSSFontFaceLoadEvent
+instance IsGObject CSSFontFaceLoadEvent where
+  typeGType _ = gTypeCSSFontFaceLoadEvent
+  {-# INLINE typeGType #-}
+
+gTypeCSSFontFaceLoadEvent :: JSM GType
+gTypeCSSFontFaceLoadEvent = GType . Object <$> jsg "CSSFontFaceLoadEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSFontFaceRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule Mozilla CSSFontFaceRule documentation>
+newtype CSSFontFaceRule = CSSFontFaceRule { unCSSFontFaceRule :: JSVal }
+
+instance PToJSVal CSSFontFaceRule where
+  pToJSVal = unCSSFontFaceRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSFontFaceRule where
+  pFromJSVal = CSSFontFaceRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSFontFaceRule where
+  toJSVal = return . unCSSFontFaceRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSFontFaceRule where
+  fromJSVal v = fmap CSSFontFaceRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSFontFaceRule where
+  makeObject = makeObject . unCSSFontFaceRule
+
+instance IsCSSRule CSSFontFaceRule
+instance IsGObject CSSFontFaceRule where
+  typeGType _ = gTypeCSSFontFaceRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSFontFaceRule :: JSM GType
+gTypeCSSFontFaceRule = GType . Object <$> jsg "CSSFontFaceRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSImportRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule Mozilla CSSImportRule documentation>
+newtype CSSImportRule = CSSImportRule { unCSSImportRule :: JSVal }
+
+instance PToJSVal CSSImportRule where
+  pToJSVal = unCSSImportRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSImportRule where
+  pFromJSVal = CSSImportRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSImportRule where
+  toJSVal = return . unCSSImportRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSImportRule where
+  fromJSVal v = fmap CSSImportRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSImportRule where
+  makeObject = makeObject . unCSSImportRule
+
+instance IsCSSRule CSSImportRule
+instance IsGObject CSSImportRule where
+  typeGType _ = gTypeCSSImportRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSImportRule :: JSM GType
+gTypeCSSImportRule = GType . Object <$> jsg "CSSImportRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSKeyframeRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule Mozilla CSSKeyframeRule documentation>
+newtype CSSKeyframeRule = CSSKeyframeRule { unCSSKeyframeRule :: JSVal }
+
+instance PToJSVal CSSKeyframeRule where
+  pToJSVal = unCSSKeyframeRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSKeyframeRule where
+  pFromJSVal = CSSKeyframeRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSKeyframeRule where
+  toJSVal = return . unCSSKeyframeRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSKeyframeRule where
+  fromJSVal v = fmap CSSKeyframeRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSKeyframeRule where
+  makeObject = makeObject . unCSSKeyframeRule
+
+instance IsCSSRule CSSKeyframeRule
+instance IsGObject CSSKeyframeRule where
+  typeGType _ = gTypeCSSKeyframeRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSKeyframeRule :: JSM GType
+gTypeCSSKeyframeRule = GType . Object <$> jsg "CSSKeyframeRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSKeyframesRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule Mozilla CSSKeyframesRule documentation>
+newtype CSSKeyframesRule = CSSKeyframesRule { unCSSKeyframesRule :: JSVal }
+
+instance PToJSVal CSSKeyframesRule where
+  pToJSVal = unCSSKeyframesRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSKeyframesRule where
+  pFromJSVal = CSSKeyframesRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSKeyframesRule where
+  toJSVal = return . unCSSKeyframesRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSKeyframesRule where
+  fromJSVal v = fmap CSSKeyframesRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSKeyframesRule where
+  makeObject = makeObject . unCSSKeyframesRule
+
+instance IsCSSRule CSSKeyframesRule
+instance IsGObject CSSKeyframesRule where
+  typeGType _ = gTypeCSSKeyframesRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSKeyframesRule :: JSM GType
+gTypeCSSKeyframesRule = GType . Object <$> jsg "CSSKeyframesRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSMediaRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule Mozilla CSSMediaRule documentation>
+newtype CSSMediaRule = CSSMediaRule { unCSSMediaRule :: JSVal }
+
+instance PToJSVal CSSMediaRule where
+  pToJSVal = unCSSMediaRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSMediaRule where
+  pFromJSVal = CSSMediaRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSMediaRule where
+  toJSVal = return . unCSSMediaRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSMediaRule where
+  fromJSVal v = fmap CSSMediaRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSMediaRule where
+  makeObject = makeObject . unCSSMediaRule
+
+instance IsCSSRule CSSMediaRule
+instance IsGObject CSSMediaRule where
+  typeGType _ = gTypeCSSMediaRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSMediaRule :: JSM GType
+gTypeCSSMediaRule = GType . Object <$> jsg "CSSMediaRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSPageRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule Mozilla CSSPageRule documentation>
+newtype CSSPageRule = CSSPageRule { unCSSPageRule :: JSVal }
+
+instance PToJSVal CSSPageRule where
+  pToJSVal = unCSSPageRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSPageRule where
+  pFromJSVal = CSSPageRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSPageRule where
+  toJSVal = return . unCSSPageRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSPageRule where
+  fromJSVal v = fmap CSSPageRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSPageRule where
+  makeObject = makeObject . unCSSPageRule
+
+instance IsCSSRule CSSPageRule
+instance IsGObject CSSPageRule where
+  typeGType _ = gTypeCSSPageRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSPageRule :: JSM GType
+gTypeCSSPageRule = GType . Object <$> jsg "CSSPageRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSPrimitiveValue".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue Mozilla CSSPrimitiveValue documentation>
+newtype CSSPrimitiveValue = CSSPrimitiveValue { unCSSPrimitiveValue :: JSVal }
+
+instance PToJSVal CSSPrimitiveValue where
+  pToJSVal = unCSSPrimitiveValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSPrimitiveValue where
+  pFromJSVal = CSSPrimitiveValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSPrimitiveValue where
+  toJSVal = return . unCSSPrimitiveValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSPrimitiveValue where
+  fromJSVal v = fmap CSSPrimitiveValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSPrimitiveValue where
+  makeObject = makeObject . unCSSPrimitiveValue
+
+instance IsCSSValue CSSPrimitiveValue
+instance IsGObject CSSPrimitiveValue where
+  typeGType _ = gTypeCSSPrimitiveValue
+  {-# INLINE typeGType #-}
+
+gTypeCSSPrimitiveValue :: JSM GType
+gTypeCSSPrimitiveValue = GType . Object <$> jsg "CSSPrimitiveValue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSRule".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule Mozilla CSSRule documentation>
+newtype CSSRule = CSSRule { unCSSRule :: JSVal }
+
+instance PToJSVal CSSRule where
+  pToJSVal = unCSSRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSRule where
+  pFromJSVal = CSSRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSRule where
+  toJSVal = return . unCSSRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSRule where
+  fromJSVal v = fmap CSSRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSRule where
+  makeObject = makeObject . unCSSRule
+
+class IsGObject o => IsCSSRule o
+toCSSRule :: IsCSSRule o => o -> CSSRule
+toCSSRule = CSSRule . coerce
+
+instance IsCSSRule CSSRule
+instance IsGObject CSSRule where
+  typeGType _ = gTypeCSSRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSRule :: JSM GType
+gTypeCSSRule = GType . Object <$> jsg "CSSRule"
+#else
+type IsCSSRule o = CSSRuleClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSRuleList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList Mozilla CSSRuleList documentation>
+newtype CSSRuleList = CSSRuleList { unCSSRuleList :: JSVal }
+
+instance PToJSVal CSSRuleList where
+  pToJSVal = unCSSRuleList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSRuleList where
+  pFromJSVal = CSSRuleList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSRuleList where
+  toJSVal = return . unCSSRuleList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSRuleList where
+  fromJSVal v = fmap CSSRuleList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSRuleList where
+  makeObject = makeObject . unCSSRuleList
+
+instance IsGObject CSSRuleList where
+  typeGType _ = gTypeCSSRuleList
+  {-# INLINE typeGType #-}
+
+gTypeCSSRuleList :: JSM GType
+gTypeCSSRuleList = GType . Object <$> jsg "CSSRuleList"
+#else
+type IsCSSRuleList o = CSSRuleListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSStyleDeclaration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration Mozilla CSSStyleDeclaration documentation>
+newtype CSSStyleDeclaration = CSSStyleDeclaration { unCSSStyleDeclaration :: JSVal }
+
+instance PToJSVal CSSStyleDeclaration where
+  pToJSVal = unCSSStyleDeclaration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleDeclaration where
+  pFromJSVal = CSSStyleDeclaration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleDeclaration where
+  toJSVal = return . unCSSStyleDeclaration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleDeclaration where
+  fromJSVal v = fmap CSSStyleDeclaration <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSStyleDeclaration where
+  makeObject = makeObject . unCSSStyleDeclaration
+
+instance IsGObject CSSStyleDeclaration where
+  typeGType _ = gTypeCSSStyleDeclaration
+  {-# INLINE typeGType #-}
+
+gTypeCSSStyleDeclaration :: JSM GType
+gTypeCSSStyleDeclaration = GType . Object <$> jsg "CSSStyleDeclaration"
+#else
+type IsCSSStyleDeclaration o = CSSStyleDeclarationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSStyleRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule Mozilla CSSStyleRule documentation>
+newtype CSSStyleRule = CSSStyleRule { unCSSStyleRule :: JSVal }
+
+instance PToJSVal CSSStyleRule where
+  pToJSVal = unCSSStyleRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleRule where
+  pFromJSVal = CSSStyleRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleRule where
+  toJSVal = return . unCSSStyleRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleRule where
+  fromJSVal v = fmap CSSStyleRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSStyleRule where
+  makeObject = makeObject . unCSSStyleRule
+
+instance IsCSSRule CSSStyleRule
+instance IsGObject CSSStyleRule where
+  typeGType _ = gTypeCSSStyleRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSStyleRule :: JSM GType
+gTypeCSSStyleRule = GType . Object <$> jsg "CSSStyleRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSStyleSheet".
+-- Base interface functions are in:
+--
+--     * "JSDOM.StyleSheet"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet Mozilla CSSStyleSheet documentation>
+newtype CSSStyleSheet = CSSStyleSheet { unCSSStyleSheet :: JSVal }
+
+instance PToJSVal CSSStyleSheet where
+  pToJSVal = unCSSStyleSheet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleSheet where
+  pFromJSVal = CSSStyleSheet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleSheet where
+  toJSVal = return . unCSSStyleSheet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleSheet where
+  fromJSVal v = fmap CSSStyleSheet <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSStyleSheet where
+  makeObject = makeObject . unCSSStyleSheet
+
+instance IsStyleSheet CSSStyleSheet
+instance IsGObject CSSStyleSheet where
+  typeGType _ = gTypeCSSStyleSheet
+  {-# INLINE typeGType #-}
+
+gTypeCSSStyleSheet :: JSM GType
+gTypeCSSStyleSheet = GType . Object <$> jsg "CSSStyleSheet"
+#else
+type IsCSSStyleSheet o = CSSStyleSheetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSSupportsRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule Mozilla CSSSupportsRule documentation>
+newtype CSSSupportsRule = CSSSupportsRule { unCSSSupportsRule :: JSVal }
+
+instance PToJSVal CSSSupportsRule where
+  pToJSVal = unCSSSupportsRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSSupportsRule where
+  pFromJSVal = CSSSupportsRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSSupportsRule where
+  toJSVal = return . unCSSSupportsRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSSupportsRule where
+  fromJSVal v = fmap CSSSupportsRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSSupportsRule where
+  makeObject = makeObject . unCSSSupportsRule
+
+instance IsCSSRule CSSSupportsRule
+instance IsGObject CSSSupportsRule where
+  typeGType _ = gTypeCSSSupportsRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSSupportsRule :: JSM GType
+gTypeCSSSupportsRule = GType . Object <$> jsg "CSSSupportsRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSUnknownRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSUnknownRule Mozilla CSSUnknownRule documentation>
+newtype CSSUnknownRule = CSSUnknownRule { unCSSUnknownRule :: JSVal }
+
+instance PToJSVal CSSUnknownRule where
+  pToJSVal = unCSSUnknownRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSUnknownRule where
+  pFromJSVal = CSSUnknownRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSUnknownRule where
+  toJSVal = return . unCSSUnknownRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSUnknownRule where
+  fromJSVal v = fmap CSSUnknownRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSUnknownRule where
+  makeObject = makeObject . unCSSUnknownRule
+
+instance IsCSSRule CSSUnknownRule
+instance IsGObject CSSUnknownRule where
+  typeGType _ = gTypeCSSUnknownRule
+  {-# INLINE typeGType #-}
+
+gTypeCSSUnknownRule :: JSM GType
+gTypeCSSUnknownRule = GType . Object <$> jsg "CSSUnknownRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSValue".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue Mozilla CSSValue documentation>
+newtype CSSValue = CSSValue { unCSSValue :: JSVal }
+
+instance PToJSVal CSSValue where
+  pToJSVal = unCSSValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSValue where
+  pFromJSVal = CSSValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSValue where
+  toJSVal = return . unCSSValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSValue where
+  fromJSVal v = fmap CSSValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSValue where
+  makeObject = makeObject . unCSSValue
+
+class IsGObject o => IsCSSValue o
+toCSSValue :: IsCSSValue o => o -> CSSValue
+toCSSValue = CSSValue . coerce
+
+instance IsCSSValue CSSValue
+instance IsGObject CSSValue where
+  typeGType _ = gTypeCSSValue
+  {-# INLINE typeGType #-}
+
+gTypeCSSValue :: JSM GType
+gTypeCSSValue = GType . Object <$> jsg "CSSValue"
+#else
+type IsCSSValue o = CSSValueClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CSSValueList".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList Mozilla CSSValueList documentation>
+newtype CSSValueList = CSSValueList { unCSSValueList :: JSVal }
+
+instance PToJSVal CSSValueList where
+  pToJSVal = unCSSValueList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSValueList where
+  pFromJSVal = CSSValueList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSValueList where
+  toJSVal = return . unCSSValueList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSValueList where
+  fromJSVal v = fmap CSSValueList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CSSValueList where
+  makeObject = makeObject . unCSSValueList
+
+class IsCSSValue o => IsCSSValueList o
+toCSSValueList :: IsCSSValueList o => o -> CSSValueList
+toCSSValueList = CSSValueList . coerce
+
+instance IsCSSValueList CSSValueList
+instance IsCSSValue CSSValueList
+instance IsGObject CSSValueList where
+  typeGType _ = gTypeCSSValueList
+  {-# INLINE typeGType #-}
+
+gTypeCSSValueList :: JSM GType
+gTypeCSSValueList = GType . Object <$> jsg "CSSValueList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CanvasGradient".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient Mozilla CanvasGradient documentation>
+newtype CanvasGradient = CanvasGradient { unCanvasGradient :: JSVal }
+
+instance PToJSVal CanvasGradient where
+  pToJSVal = unCanvasGradient
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasGradient where
+  pFromJSVal = CanvasGradient
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasGradient where
+  toJSVal = return . unCanvasGradient
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasGradient where
+  fromJSVal v = fmap CanvasGradient <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasGradient where
+  makeObject = makeObject . unCanvasGradient
+
+instance IsGObject CanvasGradient where
+  typeGType _ = gTypeCanvasGradient
+  {-# INLINE typeGType #-}
+
+gTypeCanvasGradient :: JSM GType
+gTypeCanvasGradient = GType . Object <$> jsg "CanvasGradient"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CanvasPattern".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern Mozilla CanvasPattern documentation>
+newtype CanvasPattern = CanvasPattern { unCanvasPattern :: JSVal }
+
+instance PToJSVal CanvasPattern where
+  pToJSVal = unCanvasPattern
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasPattern where
+  pFromJSVal = CanvasPattern
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasPattern where
+  toJSVal = return . unCanvasPattern
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasPattern where
+  fromJSVal v = fmap CanvasPattern <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasPattern where
+  makeObject = makeObject . unCanvasPattern
+
+instance IsGObject CanvasPattern where
+  typeGType _ = gTypeCanvasPattern
+  {-# INLINE typeGType #-}
+
+gTypeCanvasPattern :: JSM GType
+gTypeCanvasPattern = GType . Object <$> jsg "CanvasPattern"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CanvasProxy".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasProxy Mozilla CanvasProxy documentation>
+newtype CanvasProxy = CanvasProxy { unCanvasProxy :: JSVal }
+
+instance PToJSVal CanvasProxy where
+  pToJSVal = unCanvasProxy
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasProxy where
+  pFromJSVal = CanvasProxy
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasProxy where
+  toJSVal = return . unCanvasProxy
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasProxy where
+  fromJSVal v = fmap CanvasProxy <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasProxy where
+  makeObject = makeObject . unCanvasProxy
+
+instance IsGObject CanvasProxy where
+  typeGType _ = gTypeCanvasProxy
+  {-# INLINE typeGType #-}
+
+gTypeCanvasProxy :: JSM GType
+gTypeCanvasProxy = GType . Object <$> jsg "CanvasProxy"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CanvasRenderingContext".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext Mozilla CanvasRenderingContext documentation>
+newtype CanvasRenderingContext = CanvasRenderingContext { unCanvasRenderingContext :: JSVal }
+
+instance PToJSVal CanvasRenderingContext where
+  pToJSVal = unCanvasRenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasRenderingContext where
+  pFromJSVal = CanvasRenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasRenderingContext where
+  toJSVal = return . unCanvasRenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasRenderingContext where
+  fromJSVal v = fmap CanvasRenderingContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasRenderingContext where
+  makeObject = makeObject . unCanvasRenderingContext
+
+class IsGObject o => IsCanvasRenderingContext o
+toCanvasRenderingContext :: IsCanvasRenderingContext o => o -> CanvasRenderingContext
+toCanvasRenderingContext = CanvasRenderingContext . coerce
+
+instance IsCanvasRenderingContext CanvasRenderingContext
+instance IsGObject CanvasRenderingContext where
+  typeGType _ = gTypeCanvasRenderingContext
+  {-# INLINE typeGType #-}
+
+gTypeCanvasRenderingContext :: JSM GType
+gTypeCanvasRenderingContext = GType . Object <$> jsg "CanvasRenderingContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CanvasRenderingContext2D".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CanvasRenderingContext"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D Mozilla CanvasRenderingContext2D documentation>
+newtype CanvasRenderingContext2D = CanvasRenderingContext2D { unCanvasRenderingContext2D :: JSVal }
+
+instance PToJSVal CanvasRenderingContext2D where
+  pToJSVal = unCanvasRenderingContext2D
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasRenderingContext2D where
+  pFromJSVal = CanvasRenderingContext2D
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasRenderingContext2D where
+  toJSVal = return . unCanvasRenderingContext2D
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasRenderingContext2D where
+  fromJSVal v = fmap CanvasRenderingContext2D <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CanvasRenderingContext2D where
+  makeObject = makeObject . unCanvasRenderingContext2D
+
+instance IsCanvasRenderingContext CanvasRenderingContext2D
+instance IsGObject CanvasRenderingContext2D where
+  typeGType _ = gTypeCanvasRenderingContext2D
+  {-# INLINE typeGType #-}
+
+gTypeCanvasRenderingContext2D :: JSM GType
+gTypeCanvasRenderingContext2D = GType . Object <$> jsg "CanvasRenderingContext2D"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CapabilityRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CapabilityRange Mozilla CapabilityRange documentation>
+newtype CapabilityRange = CapabilityRange { unCapabilityRange :: JSVal }
+
+instance PToJSVal CapabilityRange where
+  pToJSVal = unCapabilityRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CapabilityRange where
+  pFromJSVal = CapabilityRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CapabilityRange where
+  toJSVal = return . unCapabilityRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CapabilityRange where
+  fromJSVal v = fmap CapabilityRange <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CapabilityRange where
+  makeObject = makeObject . unCapabilityRange
+
+instance IsGObject CapabilityRange where
+  typeGType _ = gTypeCapabilityRange
+  {-# INLINE typeGType #-}
+
+gTypeCapabilityRange :: JSM GType
+gTypeCapabilityRange = GType . Object <$> jsg "CapabilityRange"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ChannelMergerNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChannelMergerNode Mozilla ChannelMergerNode documentation>
+newtype ChannelMergerNode = ChannelMergerNode { unChannelMergerNode :: JSVal }
+
+instance PToJSVal ChannelMergerNode where
+  pToJSVal = unChannelMergerNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChannelMergerNode where
+  pFromJSVal = ChannelMergerNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChannelMergerNode where
+  toJSVal = return . unChannelMergerNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChannelMergerNode where
+  fromJSVal v = fmap ChannelMergerNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ChannelMergerNode where
+  makeObject = makeObject . unChannelMergerNode
+
+instance IsAudioNode ChannelMergerNode
+instance IsEventTarget ChannelMergerNode
+instance IsGObject ChannelMergerNode where
+  typeGType _ = gTypeChannelMergerNode
+  {-# INLINE typeGType #-}
+
+gTypeChannelMergerNode :: JSM GType
+gTypeChannelMergerNode = GType . Object <$> jsg "ChannelMergerNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ChannelSplitterNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode Mozilla ChannelSplitterNode documentation>
+newtype ChannelSplitterNode = ChannelSplitterNode { unChannelSplitterNode :: JSVal }
+
+instance PToJSVal ChannelSplitterNode where
+  pToJSVal = unChannelSplitterNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChannelSplitterNode where
+  pFromJSVal = ChannelSplitterNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChannelSplitterNode where
+  toJSVal = return . unChannelSplitterNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChannelSplitterNode where
+  fromJSVal v = fmap ChannelSplitterNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ChannelSplitterNode where
+  makeObject = makeObject . unChannelSplitterNode
+
+instance IsAudioNode ChannelSplitterNode
+instance IsEventTarget ChannelSplitterNode
+instance IsGObject ChannelSplitterNode where
+  typeGType _ = gTypeChannelSplitterNode
+  {-# INLINE typeGType #-}
+
+gTypeChannelSplitterNode :: JSM GType
+gTypeChannelSplitterNode = GType . Object <$> jsg "ChannelSplitterNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CharacterData".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData Mozilla CharacterData documentation>
+newtype CharacterData = CharacterData { unCharacterData :: JSVal }
+
+instance PToJSVal CharacterData where
+  pToJSVal = unCharacterData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CharacterData where
+  pFromJSVal = CharacterData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CharacterData where
+  toJSVal = return . unCharacterData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CharacterData where
+  fromJSVal v = fmap CharacterData <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CharacterData where
+  makeObject = makeObject . unCharacterData
+
+class IsNode o => IsCharacterData o
+toCharacterData :: IsCharacterData o => o -> CharacterData
+toCharacterData = CharacterData . coerce
+
+instance IsCharacterData CharacterData
+instance IsNode CharacterData
+instance IsEventTarget CharacterData
+instance IsGObject CharacterData where
+  typeGType _ = gTypeCharacterData
+  {-# INLINE typeGType #-}
+
+gTypeCharacterData :: JSM GType
+gTypeCharacterData = GType . Object <$> jsg "CharacterData"
+#else
+type IsCharacterData o = CharacterDataClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ChildNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode Mozilla ChildNode documentation>
+newtype ChildNode = ChildNode { unChildNode :: JSVal }
+
+instance PToJSVal ChildNode where
+  pToJSVal = unChildNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChildNode where
+  pFromJSVal = ChildNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChildNode where
+  toJSVal = return . unChildNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChildNode where
+  fromJSVal v = fmap ChildNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ChildNode where
+  makeObject = makeObject . unChildNode
+
+instance IsGObject ChildNode where
+  typeGType _ = gTypeChildNode
+  {-# INLINE typeGType #-}
+
+gTypeChildNode :: JSM GType
+gTypeChildNode = GType . Object <$> jsg "ChildNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ClientRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ClientRect Mozilla ClientRect documentation>
+newtype ClientRect = ClientRect { unClientRect :: JSVal }
+
+instance PToJSVal ClientRect where
+  pToJSVal = unClientRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ClientRect where
+  pFromJSVal = ClientRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ClientRect where
+  toJSVal = return . unClientRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ClientRect where
+  fromJSVal v = fmap ClientRect <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ClientRect where
+  makeObject = makeObject . unClientRect
+
+instance IsGObject ClientRect where
+  typeGType _ = gTypeClientRect
+  {-# INLINE typeGType #-}
+
+gTypeClientRect :: JSM GType
+gTypeClientRect = GType . Object <$> jsg "ClientRect"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ClientRectList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ClientRectList Mozilla ClientRectList documentation>
+newtype ClientRectList = ClientRectList { unClientRectList :: JSVal }
+
+instance PToJSVal ClientRectList where
+  pToJSVal = unClientRectList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ClientRectList where
+  pFromJSVal = ClientRectList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ClientRectList where
+  toJSVal = return . unClientRectList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ClientRectList where
+  fromJSVal v = fmap ClientRectList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ClientRectList where
+  makeObject = makeObject . unClientRectList
+
+instance IsGObject ClientRectList where
+  typeGType _ = gTypeClientRectList
+  {-# INLINE typeGType #-}
+
+gTypeClientRectList :: JSM GType
+gTypeClientRectList = GType . Object <$> jsg "ClientRectList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CloseEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent Mozilla CloseEvent documentation>
+newtype CloseEvent = CloseEvent { unCloseEvent :: JSVal }
+
+instance PToJSVal CloseEvent where
+  pToJSVal = unCloseEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CloseEvent where
+  pFromJSVal = CloseEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CloseEvent where
+  toJSVal = return . unCloseEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CloseEvent where
+  fromJSVal v = fmap CloseEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CloseEvent where
+  makeObject = makeObject . unCloseEvent
+
+instance IsEvent CloseEvent
+instance IsGObject CloseEvent where
+  typeGType _ = gTypeCloseEvent
+  {-# INLINE typeGType #-}
+
+gTypeCloseEvent :: JSM GType
+gTypeCloseEvent = GType . Object <$> jsg "CloseEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CommandLineAPIHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost Mozilla CommandLineAPIHost documentation>
+newtype CommandLineAPIHost = CommandLineAPIHost { unCommandLineAPIHost :: JSVal }
+
+instance PToJSVal CommandLineAPIHost where
+  pToJSVal = unCommandLineAPIHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CommandLineAPIHost where
+  pFromJSVal = CommandLineAPIHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CommandLineAPIHost where
+  toJSVal = return . unCommandLineAPIHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CommandLineAPIHost where
+  fromJSVal v = fmap CommandLineAPIHost <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CommandLineAPIHost where
+  makeObject = makeObject . unCommandLineAPIHost
+
+instance IsGObject CommandLineAPIHost where
+  typeGType _ = gTypeCommandLineAPIHost
+  {-# INLINE typeGType #-}
+
+gTypeCommandLineAPIHost :: JSM GType
+gTypeCommandLineAPIHost = GType . Object <$> jsg "CommandLineAPIHost"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Comment".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CharacterData"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation>
+newtype Comment = Comment { unComment :: JSVal }
+
+instance PToJSVal Comment where
+  pToJSVal = unComment
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Comment where
+  pFromJSVal = Comment
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Comment where
+  toJSVal = return . unComment
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Comment where
+  fromJSVal v = fmap Comment <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Comment where
+  makeObject = makeObject . unComment
+
+instance IsCharacterData Comment
+instance IsNode Comment
+instance IsEventTarget Comment
+instance IsGObject Comment where
+  typeGType _ = gTypeComment
+  {-# INLINE typeGType #-}
+
+gTypeComment :: JSM GType
+gTypeComment = GType . Object <$> jsg "Comment"
+#else
+type IsComment o = CommentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CompositionEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent Mozilla CompositionEvent documentation>
+newtype CompositionEvent = CompositionEvent { unCompositionEvent :: JSVal }
+
+instance PToJSVal CompositionEvent where
+  pToJSVal = unCompositionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CompositionEvent where
+  pFromJSVal = CompositionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CompositionEvent where
+  toJSVal = return . unCompositionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CompositionEvent where
+  fromJSVal v = fmap CompositionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CompositionEvent where
+  makeObject = makeObject . unCompositionEvent
+
+instance IsUIEvent CompositionEvent
+instance IsEvent CompositionEvent
+instance IsGObject CompositionEvent where
+  typeGType _ = gTypeCompositionEvent
+  {-# INLINE typeGType #-}
+
+gTypeCompositionEvent :: JSM GType
+gTypeCompositionEvent = GType . Object <$> jsg "CompositionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ConvolverNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode Mozilla ConvolverNode documentation>
+newtype ConvolverNode = ConvolverNode { unConvolverNode :: JSVal }
+
+instance PToJSVal ConvolverNode where
+  pToJSVal = unConvolverNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ConvolverNode where
+  pFromJSVal = ConvolverNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ConvolverNode where
+  toJSVal = return . unConvolverNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ConvolverNode where
+  fromJSVal v = fmap ConvolverNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ConvolverNode where
+  makeObject = makeObject . unConvolverNode
+
+instance IsAudioNode ConvolverNode
+instance IsEventTarget ConvolverNode
+instance IsGObject ConvolverNode where
+  typeGType _ = gTypeConvolverNode
+  {-# INLINE typeGType #-}
+
+gTypeConvolverNode :: JSM GType
+gTypeConvolverNode = GType . Object <$> jsg "ConvolverNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Coordinates".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates Mozilla Coordinates documentation>
+newtype Coordinates = Coordinates { unCoordinates :: JSVal }
+
+instance PToJSVal Coordinates where
+  pToJSVal = unCoordinates
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Coordinates where
+  pFromJSVal = Coordinates
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Coordinates where
+  toJSVal = return . unCoordinates
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Coordinates where
+  fromJSVal v = fmap Coordinates <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Coordinates where
+  makeObject = makeObject . unCoordinates
+
+instance IsGObject Coordinates where
+  typeGType _ = gTypeCoordinates
+  {-# INLINE typeGType #-}
+
+gTypeCoordinates :: JSM GType
+gTypeCoordinates = GType . Object <$> jsg "Coordinates"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Counter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Counter Mozilla Counter documentation>
+newtype Counter = Counter { unCounter :: JSVal }
+
+instance PToJSVal Counter where
+  pToJSVal = unCounter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Counter where
+  pFromJSVal = Counter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Counter where
+  toJSVal = return . unCounter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Counter where
+  fromJSVal v = fmap Counter <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Counter where
+  makeObject = makeObject . unCounter
+
+instance IsGObject Counter where
+  typeGType _ = gTypeCounter
+  {-# INLINE typeGType #-}
+
+gTypeCounter :: JSM GType
+gTypeCounter = GType . Object <$> jsg "Counter"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Crypto".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Crypto Mozilla Crypto documentation>
+newtype Crypto = Crypto { unCrypto :: JSVal }
+
+instance PToJSVal Crypto where
+  pToJSVal = unCrypto
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Crypto where
+  pFromJSVal = Crypto
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Crypto where
+  toJSVal = return . unCrypto
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Crypto where
+  fromJSVal v = fmap Crypto <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Crypto where
+  makeObject = makeObject . unCrypto
+
+instance IsGObject Crypto where
+  typeGType _ = gTypeCrypto
+  {-# INLINE typeGType #-}
+
+gTypeCrypto :: JSM GType
+gTypeCrypto = GType . Object <$> jsg "Crypto"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CryptoKey".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey Mozilla CryptoKey documentation>
+newtype CryptoKey = CryptoKey { unCryptoKey :: JSVal }
+
+instance PToJSVal CryptoKey where
+  pToJSVal = unCryptoKey
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoKey where
+  pFromJSVal = CryptoKey
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoKey where
+  toJSVal = return . unCryptoKey
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoKey where
+  fromJSVal v = fmap CryptoKey <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CryptoKey where
+  makeObject = makeObject . unCryptoKey
+
+instance IsGObject CryptoKey where
+  typeGType _ = gTypeCryptoKey
+  {-# INLINE typeGType #-}
+
+gTypeCryptoKey :: JSM GType
+gTypeCryptoKey = GType . Object <$> jsg "CryptoKey"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CryptoKeyPair".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair Mozilla CryptoKeyPair documentation>
+newtype CryptoKeyPair = CryptoKeyPair { unCryptoKeyPair :: JSVal }
+
+instance PToJSVal CryptoKeyPair where
+  pToJSVal = unCryptoKeyPair
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoKeyPair where
+  pFromJSVal = CryptoKeyPair
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoKeyPair where
+  toJSVal = return . unCryptoKeyPair
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoKeyPair where
+  fromJSVal v = fmap CryptoKeyPair <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CryptoKeyPair where
+  makeObject = makeObject . unCryptoKeyPair
+
+instance IsGObject CryptoKeyPair where
+  typeGType _ = gTypeCryptoKeyPair
+  {-# INLINE typeGType #-}
+
+gTypeCryptoKeyPair :: JSM GType
+gTypeCryptoKeyPair = GType . Object <$> jsg "CryptoKeyPair"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.CustomEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent Mozilla CustomEvent documentation>
+newtype CustomEvent = CustomEvent { unCustomEvent :: JSVal }
+
+instance PToJSVal CustomEvent where
+  pToJSVal = unCustomEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CustomEvent where
+  pFromJSVal = CustomEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CustomEvent where
+  toJSVal = return . unCustomEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CustomEvent where
+  fromJSVal v = fmap CustomEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject CustomEvent where
+  makeObject = makeObject . unCustomEvent
+
+instance IsEvent CustomEvent
+instance IsGObject CustomEvent where
+  typeGType _ = gTypeCustomEvent
+  {-# INLINE typeGType #-}
+
+gTypeCustomEvent :: JSM GType
+gTypeCustomEvent = GType . Object <$> jsg "CustomEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DOMError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMError Mozilla DOMError documentation>
+newtype DOMError = DOMError { unDOMError :: JSVal }
+
+instance PToJSVal DOMError where
+  pToJSVal = unDOMError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMError where
+  pFromJSVal = DOMError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMError where
+  toJSVal = return . unDOMError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMError where
+  fromJSVal v = fmap DOMError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMError where
+  makeObject = makeObject . unDOMError
+
+class IsGObject o => IsDOMError o
+toDOMError :: IsDOMError o => o -> DOMError
+toDOMError = DOMError . coerce
+
+instance IsDOMError DOMError
+instance IsGObject DOMError where
+  typeGType _ = gTypeDOMError
+  {-# INLINE typeGType #-}
+
+gTypeDOMError :: JSM GType
+gTypeDOMError = GType . Object <$> jsg "DOMError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DOMImplementation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation Mozilla DOMImplementation documentation>
+newtype DOMImplementation = DOMImplementation { unDOMImplementation :: JSVal }
+
+instance PToJSVal DOMImplementation where
+  pToJSVal = unDOMImplementation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMImplementation where
+  pFromJSVal = DOMImplementation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMImplementation where
+  toJSVal = return . unDOMImplementation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMImplementation where
+  fromJSVal v = fmap DOMImplementation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMImplementation where
+  makeObject = makeObject . unDOMImplementation
+
+instance IsGObject DOMImplementation where
+  typeGType _ = gTypeDOMImplementation
+  {-# INLINE typeGType #-}
+
+gTypeDOMImplementation :: JSM GType
+gTypeDOMImplementation = GType . Object <$> jsg "DOMImplementation"
+#else
+type IsDOMImplementation o = DOMImplementationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DOMNamedFlowCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection Mozilla WebKitNamedFlowCollection documentation>
+newtype DOMNamedFlowCollection = DOMNamedFlowCollection { unDOMNamedFlowCollection :: JSVal }
+
+instance PToJSVal DOMNamedFlowCollection where
+  pToJSVal = unDOMNamedFlowCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMNamedFlowCollection where
+  pFromJSVal = DOMNamedFlowCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMNamedFlowCollection where
+  toJSVal = return . unDOMNamedFlowCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMNamedFlowCollection where
+  fromJSVal v = fmap DOMNamedFlowCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMNamedFlowCollection where
+  makeObject = makeObject . unDOMNamedFlowCollection
+
+instance IsGObject DOMNamedFlowCollection where
+  typeGType _ = gTypeDOMNamedFlowCollection
+  {-# INLINE typeGType #-}
+
+gTypeDOMNamedFlowCollection :: JSM GType
+gTypeDOMNamedFlowCollection = GType . Object <$> jsg "WebKitNamedFlowCollection"
+#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 "JSDOM.DOMParser".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation>
+newtype DOMParser = DOMParser { unDOMParser :: JSVal }
+
+instance PToJSVal DOMParser where
+  pToJSVal = unDOMParser
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMParser where
+  pFromJSVal = DOMParser
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMParser where
+  toJSVal = return . unDOMParser
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMParser where
+  fromJSVal v = fmap DOMParser <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMParser where
+  makeObject = makeObject . unDOMParser
+
+instance IsGObject DOMParser where
+  typeGType _ = gTypeDOMParser
+  {-# INLINE typeGType #-}
+
+gTypeDOMParser :: JSM GType
+gTypeDOMParser = GType . Object <$> jsg "DOMParser"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DOMSettableTokenList".
+-- Base interface functions are in:
+--
+--     * "JSDOM.DOMTokenList"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMSettableTokenList Mozilla DOMSettableTokenList documentation>
+newtype DOMSettableTokenList = DOMSettableTokenList { unDOMSettableTokenList :: JSVal }
+
+instance PToJSVal DOMSettableTokenList where
+  pToJSVal = unDOMSettableTokenList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMSettableTokenList where
+  pFromJSVal = DOMSettableTokenList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMSettableTokenList where
+  toJSVal = return . unDOMSettableTokenList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMSettableTokenList where
+  fromJSVal v = fmap DOMSettableTokenList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMSettableTokenList where
+  makeObject = makeObject . unDOMSettableTokenList
+
+instance IsDOMTokenList DOMSettableTokenList
+instance IsGObject DOMSettableTokenList where
+  typeGType _ = gTypeDOMSettableTokenList
+  {-# INLINE typeGType #-}
+
+gTypeDOMSettableTokenList :: JSM GType
+gTypeDOMSettableTokenList = GType . Object <$> jsg "DOMSettableTokenList"
+#else
+type IsDOMSettableTokenList o = DOMSettableTokenListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DOMStringList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList Mozilla DOMStringList documentation>
+newtype DOMStringList = DOMStringList { unDOMStringList :: JSVal }
+
+instance PToJSVal DOMStringList where
+  pToJSVal = unDOMStringList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMStringList where
+  pFromJSVal = DOMStringList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMStringList where
+  toJSVal = return . unDOMStringList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMStringList where
+  fromJSVal v = fmap DOMStringList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMStringList where
+  makeObject = makeObject . unDOMStringList
+
+instance IsGObject DOMStringList where
+  typeGType _ = gTypeDOMStringList
+  {-# INLINE typeGType #-}
+
+gTypeDOMStringList :: JSM GType
+gTypeDOMStringList = GType . Object <$> jsg "DOMStringList"
+#else
+type IsDOMStringList o = DOMStringListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DOMStringMap".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap Mozilla DOMStringMap documentation>
+newtype DOMStringMap = DOMStringMap { unDOMStringMap :: JSVal }
+
+instance PToJSVal DOMStringMap where
+  pToJSVal = unDOMStringMap
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMStringMap where
+  pFromJSVal = DOMStringMap
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMStringMap where
+  toJSVal = return . unDOMStringMap
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMStringMap where
+  fromJSVal v = fmap DOMStringMap <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMStringMap where
+  makeObject = makeObject . unDOMStringMap
+
+instance IsGObject DOMStringMap where
+  typeGType _ = gTypeDOMStringMap
+  {-# INLINE typeGType #-}
+
+gTypeDOMStringMap :: JSM GType
+gTypeDOMStringMap = GType . Object <$> jsg "DOMStringMap"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DOMTokenList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList Mozilla DOMTokenList documentation>
+newtype DOMTokenList = DOMTokenList { unDOMTokenList :: JSVal }
+
+instance PToJSVal DOMTokenList where
+  pToJSVal = unDOMTokenList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMTokenList where
+  pFromJSVal = DOMTokenList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMTokenList where
+  toJSVal = return . unDOMTokenList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMTokenList where
+  fromJSVal v = fmap DOMTokenList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DOMTokenList where
+  makeObject = makeObject . unDOMTokenList
+
+class IsGObject o => IsDOMTokenList o
+toDOMTokenList :: IsDOMTokenList o => o -> DOMTokenList
+toDOMTokenList = DOMTokenList . coerce
+
+instance IsDOMTokenList DOMTokenList
+instance IsGObject DOMTokenList where
+  typeGType _ = gTypeDOMTokenList
+  {-# INLINE typeGType #-}
+
+gTypeDOMTokenList :: JSM GType
+gTypeDOMTokenList = GType . Object <$> jsg "DOMTokenList"
+#else
+type IsDOMTokenList o = DOMTokenListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DataCue".
+-- Base interface functions are in:
+--
+--     * "JSDOM.TextTrackCue"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation>
+newtype DataCue = DataCue { unDataCue :: JSVal }
+
+instance PToJSVal DataCue where
+  pToJSVal = unDataCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataCue where
+  pFromJSVal = DataCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataCue where
+  toJSVal = return . unDataCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataCue where
+  fromJSVal v = fmap DataCue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DataCue where
+  makeObject = makeObject . unDataCue
+
+instance IsTextTrackCue DataCue
+instance IsEventTarget DataCue
+instance IsGObject DataCue where
+  typeGType _ = gTypeDataCue
+  {-# INLINE typeGType #-}
+
+gTypeDataCue :: JSM GType
+gTypeDataCue = GType . Object <$> jsg "WebKitDataCue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DataTransfer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer Mozilla DataTransfer documentation>
+newtype DataTransfer = DataTransfer { unDataTransfer :: JSVal }
+
+instance PToJSVal DataTransfer where
+  pToJSVal = unDataTransfer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransfer where
+  pFromJSVal = DataTransfer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransfer where
+  toJSVal = return . unDataTransfer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransfer where
+  fromJSVal v = fmap DataTransfer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DataTransfer where
+  makeObject = makeObject . unDataTransfer
+
+instance IsGObject DataTransfer where
+  typeGType _ = gTypeDataTransfer
+  {-# INLINE typeGType #-}
+
+gTypeDataTransfer :: JSM GType
+gTypeDataTransfer = GType . Object <$> jsg "DataTransfer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DataTransferItem".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem Mozilla DataTransferItem documentation>
+newtype DataTransferItem = DataTransferItem { unDataTransferItem :: JSVal }
+
+instance PToJSVal DataTransferItem where
+  pToJSVal = unDataTransferItem
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransferItem where
+  pFromJSVal = DataTransferItem
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransferItem where
+  toJSVal = return . unDataTransferItem
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransferItem where
+  fromJSVal v = fmap DataTransferItem <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DataTransferItem where
+  makeObject = makeObject . unDataTransferItem
+
+instance IsGObject DataTransferItem where
+  typeGType _ = gTypeDataTransferItem
+  {-# INLINE typeGType #-}
+
+gTypeDataTransferItem :: JSM GType
+gTypeDataTransferItem = GType . Object <$> jsg "DataTransferItem"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DataTransferItemList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList Mozilla DataTransferItemList documentation>
+newtype DataTransferItemList = DataTransferItemList { unDataTransferItemList :: JSVal }
+
+instance PToJSVal DataTransferItemList where
+  pToJSVal = unDataTransferItemList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransferItemList where
+  pFromJSVal = DataTransferItemList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransferItemList where
+  toJSVal = return . unDataTransferItemList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransferItemList where
+  fromJSVal v = fmap DataTransferItemList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DataTransferItemList where
+  makeObject = makeObject . unDataTransferItemList
+
+instance IsGObject DataTransferItemList where
+  typeGType _ = gTypeDataTransferItemList
+  {-# INLINE typeGType #-}
+
+gTypeDataTransferItemList :: JSM GType
+gTypeDataTransferItemList = GType . Object <$> jsg "DataTransferItemList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Database".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Database Mozilla Database documentation>
+newtype Database = Database { unDatabase :: JSVal }
+
+instance PToJSVal Database where
+  pToJSVal = unDatabase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Database where
+  pFromJSVal = Database
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Database where
+  toJSVal = return . unDatabase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Database where
+  fromJSVal v = fmap Database <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Database where
+  makeObject = makeObject . unDatabase
+
+instance IsGObject Database where
+  typeGType _ = gTypeDatabase
+  {-# INLINE typeGType #-}
+
+gTypeDatabase :: JSM GType
+gTypeDatabase = GType . Object <$> jsg "Database"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DedicatedWorkerGlobalScope".
+-- Base interface functions are in:
+--
+--     * "JSDOM.WorkerGlobalScope"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope Mozilla DedicatedWorkerGlobalScope documentation>
+newtype DedicatedWorkerGlobalScope = DedicatedWorkerGlobalScope { unDedicatedWorkerGlobalScope :: JSVal }
+
+instance PToJSVal DedicatedWorkerGlobalScope where
+  pToJSVal = unDedicatedWorkerGlobalScope
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DedicatedWorkerGlobalScope where
+  pFromJSVal = DedicatedWorkerGlobalScope
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DedicatedWorkerGlobalScope where
+  toJSVal = return . unDedicatedWorkerGlobalScope
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DedicatedWorkerGlobalScope where
+  fromJSVal v = fmap DedicatedWorkerGlobalScope <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DedicatedWorkerGlobalScope where
+  makeObject = makeObject . unDedicatedWorkerGlobalScope
+
+instance IsWorkerGlobalScope DedicatedWorkerGlobalScope
+instance IsEventTarget DedicatedWorkerGlobalScope
+instance IsGObject DedicatedWorkerGlobalScope where
+  typeGType _ = gTypeDedicatedWorkerGlobalScope
+  {-# INLINE typeGType #-}
+
+gTypeDedicatedWorkerGlobalScope :: JSM GType
+gTypeDedicatedWorkerGlobalScope = GType . Object <$> jsg "DedicatedWorkerGlobalScope"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DelayNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode Mozilla DelayNode documentation>
+newtype DelayNode = DelayNode { unDelayNode :: JSVal }
+
+instance PToJSVal DelayNode where
+  pToJSVal = unDelayNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DelayNode where
+  pFromJSVal = DelayNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DelayNode where
+  toJSVal = return . unDelayNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DelayNode where
+  fromJSVal v = fmap DelayNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DelayNode where
+  makeObject = makeObject . unDelayNode
+
+instance IsAudioNode DelayNode
+instance IsEventTarget DelayNode
+instance IsGObject DelayNode where
+  typeGType _ = gTypeDelayNode
+  {-# INLINE typeGType #-}
+
+gTypeDelayNode :: JSM GType
+gTypeDelayNode = GType . Object <$> jsg "DelayNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DeviceMotionEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent Mozilla DeviceMotionEvent documentation>
+newtype DeviceMotionEvent = DeviceMotionEvent { unDeviceMotionEvent :: JSVal }
+
+instance PToJSVal DeviceMotionEvent where
+  pToJSVal = unDeviceMotionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceMotionEvent where
+  pFromJSVal = DeviceMotionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceMotionEvent where
+  toJSVal = return . unDeviceMotionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceMotionEvent where
+  fromJSVal v = fmap DeviceMotionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DeviceMotionEvent where
+  makeObject = makeObject . unDeviceMotionEvent
+
+instance IsEvent DeviceMotionEvent
+instance IsGObject DeviceMotionEvent where
+  typeGType _ = gTypeDeviceMotionEvent
+  {-# INLINE typeGType #-}
+
+gTypeDeviceMotionEvent :: JSM GType
+gTypeDeviceMotionEvent = GType . Object <$> jsg "DeviceMotionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DeviceOrientationEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent Mozilla DeviceOrientationEvent documentation>
+newtype DeviceOrientationEvent = DeviceOrientationEvent { unDeviceOrientationEvent :: JSVal }
+
+instance PToJSVal DeviceOrientationEvent where
+  pToJSVal = unDeviceOrientationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceOrientationEvent where
+  pFromJSVal = DeviceOrientationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceOrientationEvent where
+  toJSVal = return . unDeviceOrientationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceOrientationEvent where
+  fromJSVal v = fmap DeviceOrientationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DeviceOrientationEvent where
+  makeObject = makeObject . unDeviceOrientationEvent
+
+instance IsEvent DeviceOrientationEvent
+instance IsGObject DeviceOrientationEvent where
+  typeGType _ = gTypeDeviceOrientationEvent
+  {-# INLINE typeGType #-}
+
+gTypeDeviceOrientationEvent :: JSM GType
+gTypeDeviceOrientationEvent = GType . Object <$> jsg "DeviceOrientationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DeviceProximityEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent Mozilla DeviceProximityEvent documentation>
+newtype DeviceProximityEvent = DeviceProximityEvent { unDeviceProximityEvent :: JSVal }
+
+instance PToJSVal DeviceProximityEvent where
+  pToJSVal = unDeviceProximityEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceProximityEvent where
+  pFromJSVal = DeviceProximityEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceProximityEvent where
+  toJSVal = return . unDeviceProximityEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceProximityEvent where
+  fromJSVal v = fmap DeviceProximityEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DeviceProximityEvent where
+  makeObject = makeObject . unDeviceProximityEvent
+
+instance IsEvent DeviceProximityEvent
+instance IsGObject DeviceProximityEvent where
+  typeGType _ = gTypeDeviceProximityEvent
+  {-# INLINE typeGType #-}
+
+gTypeDeviceProximityEvent :: JSM GType
+gTypeDeviceProximityEvent = GType . Object <$> jsg "DeviceProximityEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Document".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation>
+newtype Document = Document { unDocument :: JSVal }
+
+instance PToJSVal Document where
+  pToJSVal = unDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Document where
+  pFromJSVal = Document
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Document where
+  toJSVal = return . unDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Document where
+  fromJSVal v = fmap Document <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Document where
+  makeObject = makeObject . unDocument
+
+class IsNode o => IsDocument o
+toDocument :: IsDocument o => o -> Document
+toDocument = Document . coerce
+
+instance IsDocument Document
+instance IsNode Document
+instance IsEventTarget Document
+instance IsGObject Document where
+  typeGType _ = gTypeDocument
+  {-# INLINE typeGType #-}
+
+gTypeDocument :: JSM GType
+gTypeDocument = GType . Object <$> jsg "Document"
+#else
+type IsDocument o = DocumentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DocumentFragment".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation>
+newtype DocumentFragment = DocumentFragment { unDocumentFragment :: JSVal }
+
+instance PToJSVal DocumentFragment where
+  pToJSVal = unDocumentFragment
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentFragment where
+  pFromJSVal = DocumentFragment
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentFragment where
+  toJSVal = return . unDocumentFragment
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentFragment where
+  fromJSVal v = fmap DocumentFragment <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DocumentFragment where
+  makeObject = makeObject . unDocumentFragment
+
+instance IsNode DocumentFragment
+instance IsEventTarget DocumentFragment
+instance IsGObject DocumentFragment where
+  typeGType _ = gTypeDocumentFragment
+  {-# INLINE typeGType #-}
+
+gTypeDocumentFragment :: JSM GType
+gTypeDocumentFragment = GType . Object <$> jsg "DocumentFragment"
+#else
+type IsDocumentFragment o = DocumentFragmentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DocumentType".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType Mozilla DocumentType documentation>
+newtype DocumentType = DocumentType { unDocumentType :: JSVal }
+
+instance PToJSVal DocumentType where
+  pToJSVal = unDocumentType
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentType where
+  pFromJSVal = DocumentType
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentType where
+  toJSVal = return . unDocumentType
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentType where
+  fromJSVal v = fmap DocumentType <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DocumentType where
+  makeObject = makeObject . unDocumentType
+
+instance IsNode DocumentType
+instance IsEventTarget DocumentType
+instance IsGObject DocumentType where
+  typeGType _ = gTypeDocumentType
+  {-# INLINE typeGType #-}
+
+gTypeDocumentType :: JSM GType
+gTypeDocumentType = GType . Object <$> jsg "DocumentType"
+#else
+type IsDocumentType o = DocumentTypeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.DynamicsCompressorNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode Mozilla DynamicsCompressorNode documentation>
+newtype DynamicsCompressorNode = DynamicsCompressorNode { unDynamicsCompressorNode :: JSVal }
+
+instance PToJSVal DynamicsCompressorNode where
+  pToJSVal = unDynamicsCompressorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DynamicsCompressorNode where
+  pFromJSVal = DynamicsCompressorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DynamicsCompressorNode where
+  toJSVal = return . unDynamicsCompressorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DynamicsCompressorNode where
+  fromJSVal v = fmap DynamicsCompressorNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject DynamicsCompressorNode where
+  makeObject = makeObject . unDynamicsCompressorNode
+
+instance IsAudioNode DynamicsCompressorNode
+instance IsEventTarget DynamicsCompressorNode
+instance IsGObject DynamicsCompressorNode where
+  typeGType _ = gTypeDynamicsCompressorNode
+  {-# INLINE typeGType #-}
+
+gTypeDynamicsCompressorNode :: JSM GType
+gTypeDynamicsCompressorNode = GType . Object <$> jsg "DynamicsCompressorNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EXTBlendMinMax".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTBlendMinMax Mozilla EXTBlendMinMax documentation>
+newtype EXTBlendMinMax = EXTBlendMinMax { unEXTBlendMinMax :: JSVal }
+
+instance PToJSVal EXTBlendMinMax where
+  pToJSVal = unEXTBlendMinMax
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTBlendMinMax where
+  pFromJSVal = EXTBlendMinMax
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTBlendMinMax where
+  toJSVal = return . unEXTBlendMinMax
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTBlendMinMax where
+  fromJSVal v = fmap EXTBlendMinMax <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTBlendMinMax where
+  makeObject = makeObject . unEXTBlendMinMax
+
+instance IsGObject EXTBlendMinMax where
+  typeGType _ = gTypeEXTBlendMinMax
+  {-# INLINE typeGType #-}
+
+gTypeEXTBlendMinMax :: JSM GType
+gTypeEXTBlendMinMax = GType . Object <$> jsg "EXTBlendMinMax"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EXTFragDepth".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTFragDepth Mozilla EXTFragDepth documentation>
+newtype EXTFragDepth = EXTFragDepth { unEXTFragDepth :: JSVal }
+
+instance PToJSVal EXTFragDepth where
+  pToJSVal = unEXTFragDepth
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTFragDepth where
+  pFromJSVal = EXTFragDepth
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTFragDepth where
+  toJSVal = return . unEXTFragDepth
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTFragDepth where
+  fromJSVal v = fmap EXTFragDepth <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTFragDepth where
+  makeObject = makeObject . unEXTFragDepth
+
+instance IsGObject EXTFragDepth where
+  typeGType _ = gTypeEXTFragDepth
+  {-# INLINE typeGType #-}
+
+gTypeEXTFragDepth :: JSM GType
+gTypeEXTFragDepth = GType . Object <$> jsg "EXTFragDepth"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EXTShaderTextureLOD".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTShaderTextureLOD Mozilla EXTShaderTextureLOD documentation>
+newtype EXTShaderTextureLOD = EXTShaderTextureLOD { unEXTShaderTextureLOD :: JSVal }
+
+instance PToJSVal EXTShaderTextureLOD where
+  pToJSVal = unEXTShaderTextureLOD
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTShaderTextureLOD where
+  pFromJSVal = EXTShaderTextureLOD
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTShaderTextureLOD where
+  toJSVal = return . unEXTShaderTextureLOD
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTShaderTextureLOD where
+  fromJSVal v = fmap EXTShaderTextureLOD <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTShaderTextureLOD where
+  makeObject = makeObject . unEXTShaderTextureLOD
+
+instance IsGObject EXTShaderTextureLOD where
+  typeGType _ = gTypeEXTShaderTextureLOD
+  {-# INLINE typeGType #-}
+
+gTypeEXTShaderTextureLOD :: JSM GType
+gTypeEXTShaderTextureLOD = GType . Object <$> jsg "EXTShaderTextureLOD"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EXTTextureFilterAnisotropic".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTTextureFilterAnisotropic Mozilla EXTTextureFilterAnisotropic documentation>
+newtype EXTTextureFilterAnisotropic = EXTTextureFilterAnisotropic { unEXTTextureFilterAnisotropic :: JSVal }
+
+instance PToJSVal EXTTextureFilterAnisotropic where
+  pToJSVal = unEXTTextureFilterAnisotropic
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTTextureFilterAnisotropic where
+  pFromJSVal = EXTTextureFilterAnisotropic
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTTextureFilterAnisotropic where
+  toJSVal = return . unEXTTextureFilterAnisotropic
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTTextureFilterAnisotropic where
+  fromJSVal v = fmap EXTTextureFilterAnisotropic <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTTextureFilterAnisotropic where
+  makeObject = makeObject . unEXTTextureFilterAnisotropic
+
+instance IsGObject EXTTextureFilterAnisotropic where
+  typeGType _ = gTypeEXTTextureFilterAnisotropic
+  {-# INLINE typeGType #-}
+
+gTypeEXTTextureFilterAnisotropic :: JSM GType
+gTypeEXTTextureFilterAnisotropic = GType . Object <$> jsg "EXTTextureFilterAnisotropic"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EXTsRGB".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTsRGB Mozilla EXTsRGB documentation>
+newtype EXTsRGB = EXTsRGB { unEXTsRGB :: JSVal }
+
+instance PToJSVal EXTsRGB where
+  pToJSVal = unEXTsRGB
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTsRGB where
+  pFromJSVal = EXTsRGB
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTsRGB where
+  toJSVal = return . unEXTsRGB
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTsRGB where
+  fromJSVal v = fmap EXTsRGB <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EXTsRGB where
+  makeObject = makeObject . unEXTsRGB
+
+instance IsGObject EXTsRGB where
+  typeGType _ = gTypeEXTsRGB
+  {-# INLINE typeGType #-}
+
+gTypeEXTsRGB :: JSM GType
+gTypeEXTsRGB = GType . Object <$> jsg "EXTsRGB"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Element".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Element Mozilla Element documentation>
+newtype Element = Element { unElement :: JSVal }
+
+instance PToJSVal Element where
+  pToJSVal = unElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Element where
+  pFromJSVal = Element
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Element where
+  toJSVal = return . unElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Element where
+  fromJSVal v = fmap Element <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Element where
+  makeObject = makeObject . unElement
+
+class IsNode o => IsElement o
+toElement :: IsElement o => o -> Element
+toElement = Element . coerce
+
+instance IsElement Element
+instance IsNode Element
+instance IsEventTarget Element
+instance IsGObject Element where
+  typeGType _ = gTypeElement
+  {-# INLINE typeGType #-}
+
+gTypeElement :: JSM GType
+gTypeElement = GType . Object <$> jsg "Element"
+#else
+type IsElement o = ElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Entity".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Entity Mozilla Entity documentation>
+newtype Entity = Entity { unEntity :: JSVal }
+
+instance PToJSVal Entity where
+  pToJSVal = unEntity
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Entity where
+  pFromJSVal = Entity
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Entity where
+  toJSVal = return . unEntity
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Entity where
+  fromJSVal v = fmap Entity <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Entity where
+  makeObject = makeObject . unEntity
+
+instance IsNode Entity
+instance IsEventTarget Entity
+instance IsGObject Entity where
+  typeGType _ = gTypeEntity
+  {-# INLINE typeGType #-}
+
+gTypeEntity :: JSM GType
+gTypeEntity = GType . Object <$> jsg "Entity"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EntityReference".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EntityReference Mozilla EntityReference documentation>
+newtype EntityReference = EntityReference { unEntityReference :: JSVal }
+
+instance PToJSVal EntityReference where
+  pToJSVal = unEntityReference
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EntityReference where
+  pFromJSVal = EntityReference
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EntityReference where
+  toJSVal = return . unEntityReference
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EntityReference where
+  fromJSVal v = fmap EntityReference <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EntityReference where
+  makeObject = makeObject . unEntityReference
+
+instance IsNode EntityReference
+instance IsEventTarget EntityReference
+instance IsGObject EntityReference where
+  typeGType _ = gTypeEntityReference
+  {-# INLINE typeGType #-}
+
+gTypeEntityReference :: JSM GType
+gTypeEntityReference = GType . Object <$> jsg "EntityReference"
+#else
+type IsEntityReference o = EntityReferenceClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ErrorEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent Mozilla ErrorEvent documentation>
+newtype ErrorEvent = ErrorEvent { unErrorEvent :: JSVal }
+
+instance PToJSVal ErrorEvent where
+  pToJSVal = unErrorEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ErrorEvent where
+  pFromJSVal = ErrorEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ErrorEvent where
+  toJSVal = return . unErrorEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ErrorEvent where
+  fromJSVal v = fmap ErrorEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ErrorEvent where
+  makeObject = makeObject . unErrorEvent
+
+instance IsEvent ErrorEvent
+instance IsGObject ErrorEvent where
+  typeGType _ = gTypeErrorEvent
+  {-# INLINE typeGType #-}
+
+gTypeErrorEvent :: JSM GType
+gTypeErrorEvent = GType . Object <$> jsg "ErrorEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Event".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Event Mozilla Event documentation>
+newtype Event = Event { unEvent :: JSVal }
+
+instance PToJSVal Event where
+  pToJSVal = unEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Event where
+  pFromJSVal = Event
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Event where
+  toJSVal = return . unEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Event where
+  fromJSVal v = fmap Event <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Event where
+  makeObject = makeObject . unEvent
+
+class IsGObject o => IsEvent o
+toEvent :: IsEvent o => o -> Event
+toEvent = Event . coerce
+
+instance IsEvent Event
+instance IsGObject Event where
+  typeGType _ = gTypeEvent
+  {-# INLINE typeGType #-}
+
+gTypeEvent :: JSM GType
+gTypeEvent = GType . Object <$> jsg "Event"
+#else
+type IsEvent o = EventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EventListener".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventListener Mozilla EventListener documentation>
+newtype EventListener = EventListener { unEventListener :: JSVal }
+
+instance PToJSVal EventListener where
+  pToJSVal = unEventListener
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventListener where
+  pFromJSVal = EventListener
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventListener where
+  toJSVal = return . unEventListener
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventListener where
+  fromJSVal v = fmap EventListener <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EventListener where
+  makeObject = makeObject . unEventListener
+
+instance IsGObject EventListener where
+  typeGType _ = gTypeEventListener
+  {-# INLINE typeGType #-}
+
+gTypeEventListener :: JSM GType
+gTypeEventListener = GType . Object <$> jsg "EventListener"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EventSource".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation>
+newtype EventSource = EventSource { unEventSource :: JSVal }
+
+instance PToJSVal EventSource where
+  pToJSVal = unEventSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventSource where
+  pFromJSVal = EventSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventSource where
+  toJSVal = return . unEventSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventSource where
+  fromJSVal v = fmap EventSource <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EventSource where
+  makeObject = makeObject . unEventSource
+
+instance IsEventTarget EventSource
+instance IsGObject EventSource where
+  typeGType _ = gTypeEventSource
+  {-# INLINE typeGType #-}
+
+gTypeEventSource :: JSM GType
+gTypeEventSource = GType . Object <$> jsg "EventSource"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.EventTarget".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget Mozilla EventTarget documentation>
+newtype EventTarget = EventTarget { unEventTarget :: JSVal }
+
+instance PToJSVal EventTarget where
+  pToJSVal = unEventTarget
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventTarget where
+  pFromJSVal = EventTarget
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventTarget where
+  toJSVal = return . unEventTarget
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventTarget where
+  fromJSVal v = fmap EventTarget <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject EventTarget where
+  makeObject = makeObject . unEventTarget
+
+class IsGObject o => IsEventTarget o
+toEventTarget :: IsEventTarget o => o -> EventTarget
+toEventTarget = EventTarget . coerce
+
+instance IsEventTarget EventTarget
+instance IsGObject EventTarget where
+  typeGType _ = gTypeEventTarget
+  {-# INLINE typeGType #-}
+
+gTypeEventTarget :: JSM GType
+gTypeEventTarget = GType . Object <$> jsg "EventTarget"
+#else
+type IsEventTarget o = EventTargetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.File".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Blob"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/File Mozilla File documentation>
+newtype File = File { unFile :: JSVal }
+
+instance PToJSVal File where
+  pToJSVal = unFile
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal File where
+  pFromJSVal = File
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal File where
+  toJSVal = return . unFile
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal File where
+  fromJSVal v = fmap File <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject File where
+  makeObject = makeObject . unFile
+
+instance IsBlob File
+instance IsGObject File where
+  typeGType _ = gTypeFile
+  {-# INLINE typeGType #-}
+
+gTypeFile :: JSM GType
+gTypeFile = GType . Object <$> jsg "File"
+#else
+type IsFile o = FileClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.FileError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileError Mozilla FileError documentation>
+newtype FileError = FileError { unFileError :: JSVal }
+
+instance PToJSVal FileError where
+  pToJSVal = unFileError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileError where
+  pFromJSVal = FileError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileError where
+  toJSVal = return . unFileError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileError where
+  fromJSVal v = fmap FileError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FileError where
+  makeObject = makeObject . unFileError
+
+instance IsGObject FileError where
+  typeGType _ = gTypeFileError
+  {-# INLINE typeGType #-}
+
+gTypeFileError :: JSM GType
+gTypeFileError = GType . Object <$> jsg "FileError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.FileList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileList Mozilla FileList documentation>
+newtype FileList = FileList { unFileList :: JSVal }
+
+instance PToJSVal FileList where
+  pToJSVal = unFileList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileList where
+  pFromJSVal = FileList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileList where
+  toJSVal = return . unFileList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileList where
+  fromJSVal v = fmap FileList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FileList where
+  makeObject = makeObject . unFileList
+
+instance IsGObject FileList where
+  typeGType _ = gTypeFileList
+  {-# INLINE typeGType #-}
+
+gTypeFileList :: JSM GType
+gTypeFileList = GType . Object <$> jsg "FileList"
+#else
+type IsFileList o = FileListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.FileReader".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation>
+newtype FileReader = FileReader { unFileReader :: JSVal }
+
+instance PToJSVal FileReader where
+  pToJSVal = unFileReader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileReader where
+  pFromJSVal = FileReader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileReader where
+  toJSVal = return . unFileReader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileReader where
+  fromJSVal v = fmap FileReader <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FileReader where
+  makeObject = makeObject . unFileReader
+
+instance IsEventTarget FileReader
+instance IsGObject FileReader where
+  typeGType _ = gTypeFileReader
+  {-# INLINE typeGType #-}
+
+gTypeFileReader :: JSM GType
+gTypeFileReader = GType . Object <$> jsg "FileReader"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.FileReaderSync".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation>
+newtype FileReaderSync = FileReaderSync { unFileReaderSync :: JSVal }
+
+instance PToJSVal FileReaderSync where
+  pToJSVal = unFileReaderSync
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileReaderSync where
+  pFromJSVal = FileReaderSync
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileReaderSync where
+  toJSVal = return . unFileReaderSync
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileReaderSync where
+  fromJSVal v = fmap FileReaderSync <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FileReaderSync where
+  makeObject = makeObject . unFileReaderSync
+
+instance IsGObject FileReaderSync where
+  typeGType _ = gTypeFileReaderSync
+  {-# INLINE typeGType #-}
+
+gTypeFileReaderSync :: JSM GType
+gTypeFileReaderSync = GType . Object <$> jsg "FileReaderSync"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.FocusEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent Mozilla FocusEvent documentation>
+newtype FocusEvent = FocusEvent { unFocusEvent :: JSVal }
+
+instance PToJSVal FocusEvent where
+  pToJSVal = unFocusEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FocusEvent where
+  pFromJSVal = FocusEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FocusEvent where
+  toJSVal = return . unFocusEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FocusEvent where
+  fromJSVal v = fmap FocusEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FocusEvent where
+  makeObject = makeObject . unFocusEvent
+
+instance IsUIEvent FocusEvent
+instance IsEvent FocusEvent
+instance IsGObject FocusEvent where
+  typeGType _ = gTypeFocusEvent
+  {-# INLINE typeGType #-}
+
+gTypeFocusEvent :: JSM GType
+gTypeFocusEvent = GType . Object <$> jsg "FocusEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.FontLoader".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FontLoader Mozilla FontLoader documentation>
+newtype FontLoader = FontLoader { unFontLoader :: JSVal }
+
+instance PToJSVal FontLoader where
+  pToJSVal = unFontLoader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FontLoader where
+  pFromJSVal = FontLoader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FontLoader where
+  toJSVal = return . unFontLoader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FontLoader where
+  fromJSVal v = fmap FontLoader <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FontLoader where
+  makeObject = makeObject . unFontLoader
+
+instance IsEventTarget FontLoader
+instance IsGObject FontLoader where
+  typeGType _ = gTypeFontLoader
+  {-# INLINE typeGType #-}
+
+gTypeFontLoader :: JSM GType
+gTypeFontLoader = GType . Object <$> jsg "FontLoader"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.FormData".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation>
+newtype FormData = FormData { unFormData :: JSVal }
+
+instance PToJSVal FormData where
+  pToJSVal = unFormData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FormData where
+  pFromJSVal = FormData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FormData where
+  toJSVal = return . unFormData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FormData where
+  fromJSVal v = fmap FormData <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject FormData where
+  makeObject = makeObject . unFormData
+
+instance IsGObject FormData where
+  typeGType _ = gTypeFormData
+  {-# INLINE typeGType #-}
+
+gTypeFormData :: JSM GType
+gTypeFormData = GType . Object <$> jsg "FormData"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.GainNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GainNode Mozilla GainNode documentation>
+newtype GainNode = GainNode { unGainNode :: JSVal }
+
+instance PToJSVal GainNode where
+  pToJSVal = unGainNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GainNode where
+  pFromJSVal = GainNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GainNode where
+  toJSVal = return . unGainNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GainNode where
+  fromJSVal v = fmap GainNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject GainNode where
+  makeObject = makeObject . unGainNode
+
+instance IsAudioNode GainNode
+instance IsEventTarget GainNode
+instance IsGObject GainNode where
+  typeGType _ = gTypeGainNode
+  {-# INLINE typeGType #-}
+
+gTypeGainNode :: JSM GType
+gTypeGainNode = GType . Object <$> jsg "GainNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Gamepad".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Mozilla Gamepad documentation>
+newtype Gamepad = Gamepad { unGamepad :: JSVal }
+
+instance PToJSVal Gamepad where
+  pToJSVal = unGamepad
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Gamepad where
+  pFromJSVal = Gamepad
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Gamepad where
+  toJSVal = return . unGamepad
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Gamepad where
+  fromJSVal v = fmap Gamepad <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Gamepad where
+  makeObject = makeObject . unGamepad
+
+instance IsGObject Gamepad where
+  typeGType _ = gTypeGamepad
+  {-# INLINE typeGType #-}
+
+gTypeGamepad :: JSM GType
+gTypeGamepad = GType . Object <$> jsg "Gamepad"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.GamepadButton".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton Mozilla GamepadButton documentation>
+newtype GamepadButton = GamepadButton { unGamepadButton :: JSVal }
+
+instance PToJSVal GamepadButton where
+  pToJSVal = unGamepadButton
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GamepadButton where
+  pFromJSVal = GamepadButton
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GamepadButton where
+  toJSVal = return . unGamepadButton
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GamepadButton where
+  fromJSVal v = fmap GamepadButton <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject GamepadButton where
+  makeObject = makeObject . unGamepadButton
+
+instance IsGObject GamepadButton where
+  typeGType _ = gTypeGamepadButton
+  {-# INLINE typeGType #-}
+
+gTypeGamepadButton :: JSM GType
+gTypeGamepadButton = GType . Object <$> jsg "GamepadButton"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.GamepadEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent Mozilla GamepadEvent documentation>
+newtype GamepadEvent = GamepadEvent { unGamepadEvent :: JSVal }
+
+instance PToJSVal GamepadEvent where
+  pToJSVal = unGamepadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GamepadEvent where
+  pFromJSVal = GamepadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GamepadEvent where
+  toJSVal = return . unGamepadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GamepadEvent where
+  fromJSVal v = fmap GamepadEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject GamepadEvent where
+  makeObject = makeObject . unGamepadEvent
+
+instance IsEvent GamepadEvent
+instance IsGObject GamepadEvent where
+  typeGType _ = gTypeGamepadEvent
+  {-# INLINE typeGType #-}
+
+gTypeGamepadEvent :: JSM GType
+gTypeGamepadEvent = GType . Object <$> jsg "GamepadEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Geolocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation Mozilla Geolocation documentation>
+newtype Geolocation = Geolocation { unGeolocation :: JSVal }
+
+instance PToJSVal Geolocation where
+  pToJSVal = unGeolocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Geolocation where
+  pFromJSVal = Geolocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Geolocation where
+  toJSVal = return . unGeolocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Geolocation where
+  fromJSVal v = fmap Geolocation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Geolocation where
+  makeObject = makeObject . unGeolocation
+
+instance IsGObject Geolocation where
+  typeGType _ = gTypeGeolocation
+  {-# INLINE typeGType #-}
+
+gTypeGeolocation :: JSM GType
+gTypeGeolocation = GType . Object <$> jsg "Geolocation"
+#else
+type IsGeolocation o = GeolocationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Geoposition".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition Mozilla Geoposition documentation>
+newtype Geoposition = Geoposition { unGeoposition :: JSVal }
+
+instance PToJSVal Geoposition where
+  pToJSVal = unGeoposition
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Geoposition where
+  pFromJSVal = Geoposition
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Geoposition where
+  toJSVal = return . unGeoposition
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Geoposition where
+  fromJSVal v = fmap Geoposition <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Geoposition where
+  makeObject = makeObject . unGeoposition
+
+instance IsGObject Geoposition where
+  typeGType _ = gTypeGeoposition
+  {-# INLINE typeGType #-}
+
+gTypeGeoposition :: JSM GType
+gTypeGeoposition = GType . Object <$> jsg "Geoposition"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLAllCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection Mozilla HTMLAllCollection documentation>
+newtype HTMLAllCollection = HTMLAllCollection { unHTMLAllCollection :: JSVal }
+
+instance PToJSVal HTMLAllCollection where
+  pToJSVal = unHTMLAllCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAllCollection where
+  pFromJSVal = HTMLAllCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAllCollection where
+  toJSVal = return . unHTMLAllCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAllCollection where
+  fromJSVal v = fmap HTMLAllCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAllCollection where
+  makeObject = makeObject . unHTMLAllCollection
+
+instance IsGObject HTMLAllCollection where
+  typeGType _ = gTypeHTMLAllCollection
+  {-# INLINE typeGType #-}
+
+gTypeHTMLAllCollection :: JSM GType
+gTypeHTMLAllCollection = GType . Object <$> jsg "HTMLAllCollection"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLAnchorElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement Mozilla HTMLAnchorElement documentation>
+newtype HTMLAnchorElement = HTMLAnchorElement { unHTMLAnchorElement :: JSVal }
+
+instance PToJSVal HTMLAnchorElement where
+  pToJSVal = unHTMLAnchorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAnchorElement where
+  pFromJSVal = HTMLAnchorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAnchorElement where
+  toJSVal = return . unHTMLAnchorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAnchorElement where
+  fromJSVal v = fmap HTMLAnchorElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAnchorElement where
+  makeObject = makeObject . unHTMLAnchorElement
+
+instance IsHTMLElement HTMLAnchorElement
+instance IsElement HTMLAnchorElement
+instance IsNode HTMLAnchorElement
+instance IsEventTarget HTMLAnchorElement
+instance IsGObject HTMLAnchorElement where
+  typeGType _ = gTypeHTMLAnchorElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLAnchorElement :: JSM GType
+gTypeHTMLAnchorElement = GType . Object <$> jsg "HTMLAnchorElement"
+#else
+type IsHTMLAnchorElement o = HTMLAnchorElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLAppletElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement Mozilla HTMLAppletElement documentation>
+newtype HTMLAppletElement = HTMLAppletElement { unHTMLAppletElement :: JSVal }
+
+instance PToJSVal HTMLAppletElement where
+  pToJSVal = unHTMLAppletElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAppletElement where
+  pFromJSVal = HTMLAppletElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAppletElement where
+  toJSVal = return . unHTMLAppletElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAppletElement where
+  fromJSVal v = fmap HTMLAppletElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAppletElement where
+  makeObject = makeObject . unHTMLAppletElement
+
+instance IsHTMLElement HTMLAppletElement
+instance IsElement HTMLAppletElement
+instance IsNode HTMLAppletElement
+instance IsEventTarget HTMLAppletElement
+instance IsGObject HTMLAppletElement where
+  typeGType _ = gTypeHTMLAppletElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLAppletElement :: JSM GType
+gTypeHTMLAppletElement = GType . Object <$> jsg "HTMLAppletElement"
+#else
+type IsHTMLAppletElement o = HTMLAppletElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLAreaElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement Mozilla HTMLAreaElement documentation>
+newtype HTMLAreaElement = HTMLAreaElement { unHTMLAreaElement :: JSVal }
+
+instance PToJSVal HTMLAreaElement where
+  pToJSVal = unHTMLAreaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAreaElement where
+  pFromJSVal = HTMLAreaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAreaElement where
+  toJSVal = return . unHTMLAreaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAreaElement where
+  fromJSVal v = fmap HTMLAreaElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAreaElement where
+  makeObject = makeObject . unHTMLAreaElement
+
+instance IsHTMLElement HTMLAreaElement
+instance IsElement HTMLAreaElement
+instance IsNode HTMLAreaElement
+instance IsEventTarget HTMLAreaElement
+instance IsGObject HTMLAreaElement where
+  typeGType _ = gTypeHTMLAreaElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLAreaElement :: JSM GType
+gTypeHTMLAreaElement = GType . Object <$> jsg "HTMLAreaElement"
+#else
+type IsHTMLAreaElement o = HTMLAreaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLAudioElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLMediaElement"
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement Mozilla HTMLAudioElement documentation>
+newtype HTMLAudioElement = HTMLAudioElement { unHTMLAudioElement :: JSVal }
+
+instance PToJSVal HTMLAudioElement where
+  pToJSVal = unHTMLAudioElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAudioElement where
+  pFromJSVal = HTMLAudioElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAudioElement where
+  toJSVal = return . unHTMLAudioElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAudioElement where
+  fromJSVal v = fmap HTMLAudioElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLAudioElement where
+  makeObject = makeObject . unHTMLAudioElement
+
+instance IsHTMLMediaElement HTMLAudioElement
+instance IsHTMLElement HTMLAudioElement
+instance IsElement HTMLAudioElement
+instance IsNode HTMLAudioElement
+instance IsEventTarget HTMLAudioElement
+instance IsGObject HTMLAudioElement where
+  typeGType _ = gTypeHTMLAudioElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLAudioElement :: JSM GType
+gTypeHTMLAudioElement = GType . Object <$> jsg "HTMLAudioElement"
+#else
+type IsHTMLAudioElement o = HTMLAudioElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLBRElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement Mozilla HTMLBRElement documentation>
+newtype HTMLBRElement = HTMLBRElement { unHTMLBRElement :: JSVal }
+
+instance PToJSVal HTMLBRElement where
+  pToJSVal = unHTMLBRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBRElement where
+  pFromJSVal = HTMLBRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBRElement where
+  toJSVal = return . unHTMLBRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBRElement where
+  fromJSVal v = fmap HTMLBRElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLBRElement where
+  makeObject = makeObject . unHTMLBRElement
+
+instance IsHTMLElement HTMLBRElement
+instance IsElement HTMLBRElement
+instance IsNode HTMLBRElement
+instance IsEventTarget HTMLBRElement
+instance IsGObject HTMLBRElement where
+  typeGType _ = gTypeHTMLBRElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLBRElement :: JSM GType
+gTypeHTMLBRElement = GType . Object <$> jsg "HTMLBRElement"
+#else
+type IsHTMLBRElement o = HTMLBRElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLBaseElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement Mozilla HTMLBaseElement documentation>
+newtype HTMLBaseElement = HTMLBaseElement { unHTMLBaseElement :: JSVal }
+
+instance PToJSVal HTMLBaseElement where
+  pToJSVal = unHTMLBaseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBaseElement where
+  pFromJSVal = HTMLBaseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBaseElement where
+  toJSVal = return . unHTMLBaseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBaseElement where
+  fromJSVal v = fmap HTMLBaseElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLBaseElement where
+  makeObject = makeObject . unHTMLBaseElement
+
+instance IsHTMLElement HTMLBaseElement
+instance IsElement HTMLBaseElement
+instance IsNode HTMLBaseElement
+instance IsEventTarget HTMLBaseElement
+instance IsGObject HTMLBaseElement where
+  typeGType _ = gTypeHTMLBaseElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLBaseElement :: JSM GType
+gTypeHTMLBaseElement = GType . Object <$> jsg "HTMLBaseElement"
+#else
+type IsHTMLBaseElement o = HTMLBaseElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLBaseFontElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseFontElement Mozilla HTMLBaseFontElement documentation>
+newtype HTMLBaseFontElement = HTMLBaseFontElement { unHTMLBaseFontElement :: JSVal }
+
+instance PToJSVal HTMLBaseFontElement where
+  pToJSVal = unHTMLBaseFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBaseFontElement where
+  pFromJSVal = HTMLBaseFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBaseFontElement where
+  toJSVal = return . unHTMLBaseFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBaseFontElement where
+  fromJSVal v = fmap HTMLBaseFontElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLBaseFontElement where
+  makeObject = makeObject . unHTMLBaseFontElement
+
+instance IsHTMLElement HTMLBaseFontElement
+instance IsElement HTMLBaseFontElement
+instance IsNode HTMLBaseFontElement
+instance IsEventTarget HTMLBaseFontElement
+instance IsGObject HTMLBaseFontElement where
+  typeGType _ = gTypeHTMLBaseFontElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLBaseFontElement :: JSM GType
+gTypeHTMLBaseFontElement = GType . Object <$> jsg "HTMLBaseFontElement"
+#else
+type IsHTMLBaseFontElement o = HTMLBaseFontElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLBodyElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement Mozilla HTMLBodyElement documentation>
+newtype HTMLBodyElement = HTMLBodyElement { unHTMLBodyElement :: JSVal }
+
+instance PToJSVal HTMLBodyElement where
+  pToJSVal = unHTMLBodyElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBodyElement where
+  pFromJSVal = HTMLBodyElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBodyElement where
+  toJSVal = return . unHTMLBodyElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBodyElement where
+  fromJSVal v = fmap HTMLBodyElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLBodyElement where
+  makeObject = makeObject . unHTMLBodyElement
+
+instance IsHTMLElement HTMLBodyElement
+instance IsElement HTMLBodyElement
+instance IsNode HTMLBodyElement
+instance IsEventTarget HTMLBodyElement
+instance IsGObject HTMLBodyElement where
+  typeGType _ = gTypeHTMLBodyElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLBodyElement :: JSM GType
+gTypeHTMLBodyElement = GType . Object <$> jsg "HTMLBodyElement"
+#else
+type IsHTMLBodyElement o = HTMLBodyElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLButtonElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement Mozilla HTMLButtonElement documentation>
+newtype HTMLButtonElement = HTMLButtonElement { unHTMLButtonElement :: JSVal }
+
+instance PToJSVal HTMLButtonElement where
+  pToJSVal = unHTMLButtonElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLButtonElement where
+  pFromJSVal = HTMLButtonElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLButtonElement where
+  toJSVal = return . unHTMLButtonElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLButtonElement where
+  fromJSVal v = fmap HTMLButtonElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLButtonElement where
+  makeObject = makeObject . unHTMLButtonElement
+
+instance IsHTMLElement HTMLButtonElement
+instance IsElement HTMLButtonElement
+instance IsNode HTMLButtonElement
+instance IsEventTarget HTMLButtonElement
+instance IsGObject HTMLButtonElement where
+  typeGType _ = gTypeHTMLButtonElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLButtonElement :: JSM GType
+gTypeHTMLButtonElement = GType . Object <$> jsg "HTMLButtonElement"
+#else
+type IsHTMLButtonElement o = HTMLButtonElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLCanvasElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement Mozilla HTMLCanvasElement documentation>
+newtype HTMLCanvasElement = HTMLCanvasElement { unHTMLCanvasElement :: JSVal }
+
+instance PToJSVal HTMLCanvasElement where
+  pToJSVal = unHTMLCanvasElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLCanvasElement where
+  pFromJSVal = HTMLCanvasElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLCanvasElement where
+  toJSVal = return . unHTMLCanvasElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLCanvasElement where
+  fromJSVal v = fmap HTMLCanvasElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLCanvasElement where
+  makeObject = makeObject . unHTMLCanvasElement
+
+instance IsHTMLElement HTMLCanvasElement
+instance IsElement HTMLCanvasElement
+instance IsNode HTMLCanvasElement
+instance IsEventTarget HTMLCanvasElement
+instance IsGObject HTMLCanvasElement where
+  typeGType _ = gTypeHTMLCanvasElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLCanvasElement :: JSM GType
+gTypeHTMLCanvasElement = GType . Object <$> jsg "HTMLCanvasElement"
+#else
+type IsHTMLCanvasElement o = HTMLCanvasElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection Mozilla HTMLCollection documentation>
+newtype HTMLCollection = HTMLCollection { unHTMLCollection :: JSVal }
+
+instance PToJSVal HTMLCollection where
+  pToJSVal = unHTMLCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLCollection where
+  pFromJSVal = HTMLCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLCollection where
+  toJSVal = return . unHTMLCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLCollection where
+  fromJSVal v = fmap HTMLCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLCollection where
+  makeObject = makeObject . unHTMLCollection
+
+class IsGObject o => IsHTMLCollection o
+toHTMLCollection :: IsHTMLCollection o => o -> HTMLCollection
+toHTMLCollection = HTMLCollection . coerce
+
+instance IsHTMLCollection HTMLCollection
+instance IsGObject HTMLCollection where
+  typeGType _ = gTypeHTMLCollection
+  {-# INLINE typeGType #-}
+
+gTypeHTMLCollection :: JSM GType
+gTypeHTMLCollection = GType . Object <$> jsg "HTMLCollection"
+#else
+type IsHTMLCollection o = HTMLCollectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLDListElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement Mozilla HTMLDListElement documentation>
+newtype HTMLDListElement = HTMLDListElement { unHTMLDListElement :: JSVal }
+
+instance PToJSVal HTMLDListElement where
+  pToJSVal = unHTMLDListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDListElement where
+  pFromJSVal = HTMLDListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDListElement where
+  toJSVal = return . unHTMLDListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDListElement where
+  fromJSVal v = fmap HTMLDListElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDListElement where
+  makeObject = makeObject . unHTMLDListElement
+
+instance IsHTMLElement HTMLDListElement
+instance IsElement HTMLDListElement
+instance IsNode HTMLDListElement
+instance IsEventTarget HTMLDListElement
+instance IsGObject HTMLDListElement where
+  typeGType _ = gTypeHTMLDListElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLDListElement :: JSM GType
+gTypeHTMLDListElement = GType . Object <$> jsg "HTMLDListElement"
+#else
+type IsHTMLDListElement o = HTMLDListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLDataListElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement Mozilla HTMLDataListElement documentation>
+newtype HTMLDataListElement = HTMLDataListElement { unHTMLDataListElement :: JSVal }
+
+instance PToJSVal HTMLDataListElement where
+  pToJSVal = unHTMLDataListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDataListElement where
+  pFromJSVal = HTMLDataListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDataListElement where
+  toJSVal = return . unHTMLDataListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDataListElement where
+  fromJSVal v = fmap HTMLDataListElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDataListElement where
+  makeObject = makeObject . unHTMLDataListElement
+
+instance IsHTMLElement HTMLDataListElement
+instance IsElement HTMLDataListElement
+instance IsNode HTMLDataListElement
+instance IsEventTarget HTMLDataListElement
+instance IsGObject HTMLDataListElement where
+  typeGType _ = gTypeHTMLDataListElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLDataListElement :: JSM GType
+gTypeHTMLDataListElement = GType . Object <$> jsg "HTMLDataListElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLDetailsElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement Mozilla HTMLDetailsElement documentation>
+newtype HTMLDetailsElement = HTMLDetailsElement { unHTMLDetailsElement :: JSVal }
+
+instance PToJSVal HTMLDetailsElement where
+  pToJSVal = unHTMLDetailsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDetailsElement where
+  pFromJSVal = HTMLDetailsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDetailsElement where
+  toJSVal = return . unHTMLDetailsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDetailsElement where
+  fromJSVal v = fmap HTMLDetailsElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDetailsElement where
+  makeObject = makeObject . unHTMLDetailsElement
+
+instance IsHTMLElement HTMLDetailsElement
+instance IsElement HTMLDetailsElement
+instance IsNode HTMLDetailsElement
+instance IsEventTarget HTMLDetailsElement
+instance IsGObject HTMLDetailsElement where
+  typeGType _ = gTypeHTMLDetailsElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLDetailsElement :: JSM GType
+gTypeHTMLDetailsElement = GType . Object <$> jsg "HTMLDetailsElement"
+#else
+type IsHTMLDetailsElement o = HTMLDetailsElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLDirectoryElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement Mozilla HTMLDirectoryElement documentation>
+newtype HTMLDirectoryElement = HTMLDirectoryElement { unHTMLDirectoryElement :: JSVal }
+
+instance PToJSVal HTMLDirectoryElement where
+  pToJSVal = unHTMLDirectoryElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDirectoryElement where
+  pFromJSVal = HTMLDirectoryElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDirectoryElement where
+  toJSVal = return . unHTMLDirectoryElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDirectoryElement where
+  fromJSVal v = fmap HTMLDirectoryElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDirectoryElement where
+  makeObject = makeObject . unHTMLDirectoryElement
+
+instance IsHTMLElement HTMLDirectoryElement
+instance IsElement HTMLDirectoryElement
+instance IsNode HTMLDirectoryElement
+instance IsEventTarget HTMLDirectoryElement
+instance IsGObject HTMLDirectoryElement where
+  typeGType _ = gTypeHTMLDirectoryElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLDirectoryElement :: JSM GType
+gTypeHTMLDirectoryElement = GType . Object <$> jsg "HTMLDirectoryElement"
+#else
+type IsHTMLDirectoryElement o = HTMLDirectoryElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLDivElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement Mozilla HTMLDivElement documentation>
+newtype HTMLDivElement = HTMLDivElement { unHTMLDivElement :: JSVal }
+
+instance PToJSVal HTMLDivElement where
+  pToJSVal = unHTMLDivElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDivElement where
+  pFromJSVal = HTMLDivElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDivElement where
+  toJSVal = return . unHTMLDivElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDivElement where
+  fromJSVal v = fmap HTMLDivElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDivElement where
+  makeObject = makeObject . unHTMLDivElement
+
+instance IsHTMLElement HTMLDivElement
+instance IsElement HTMLDivElement
+instance IsNode HTMLDivElement
+instance IsEventTarget HTMLDivElement
+instance IsGObject HTMLDivElement where
+  typeGType _ = gTypeHTMLDivElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLDivElement :: JSM GType
+gTypeHTMLDivElement = GType . Object <$> jsg "HTMLDivElement"
+#else
+type IsHTMLDivElement o = HTMLDivElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLDocument".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Document"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument Mozilla HTMLDocument documentation>
+newtype HTMLDocument = HTMLDocument { unHTMLDocument :: JSVal }
+
+instance PToJSVal HTMLDocument where
+  pToJSVal = unHTMLDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDocument where
+  pFromJSVal = HTMLDocument
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDocument where
+  toJSVal = return . unHTMLDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDocument where
+  fromJSVal v = fmap HTMLDocument <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLDocument where
+  makeObject = makeObject . unHTMLDocument
+
+instance IsDocument HTMLDocument
+instance IsNode HTMLDocument
+instance IsEventTarget HTMLDocument
+instance IsGObject HTMLDocument where
+  typeGType _ = gTypeHTMLDocument
+  {-# INLINE typeGType #-}
+
+gTypeHTMLDocument :: JSM GType
+gTypeHTMLDocument = GType . Object <$> jsg "HTMLDocument"
+#else
+type IsHTMLDocument o = HTMLDocumentClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement Mozilla HTMLElement documentation>
+newtype HTMLElement = HTMLElement { unHTMLElement :: JSVal }
+
+instance PToJSVal HTMLElement where
+  pToJSVal = unHTMLElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLElement where
+  pFromJSVal = HTMLElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLElement where
+  toJSVal = return . unHTMLElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLElement where
+  fromJSVal v = fmap HTMLElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLElement where
+  makeObject = makeObject . unHTMLElement
+
+class IsElement o => IsHTMLElement o
+toHTMLElement :: IsHTMLElement o => o -> HTMLElement
+toHTMLElement = HTMLElement . coerce
+
+instance IsHTMLElement HTMLElement
+instance IsElement HTMLElement
+instance IsNode HTMLElement
+instance IsEventTarget HTMLElement
+instance IsGObject HTMLElement where
+  typeGType _ = gTypeHTMLElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLElement :: JSM GType
+gTypeHTMLElement = GType . Object <$> jsg "HTMLElement"
+#else
+type IsHTMLElement o = HTMLElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLEmbedElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement Mozilla HTMLEmbedElement documentation>
+newtype HTMLEmbedElement = HTMLEmbedElement { unHTMLEmbedElement :: JSVal }
+
+instance PToJSVal HTMLEmbedElement where
+  pToJSVal = unHTMLEmbedElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLEmbedElement where
+  pFromJSVal = HTMLEmbedElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLEmbedElement where
+  toJSVal = return . unHTMLEmbedElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLEmbedElement where
+  fromJSVal v = fmap HTMLEmbedElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLEmbedElement where
+  makeObject = makeObject . unHTMLEmbedElement
+
+instance IsHTMLElement HTMLEmbedElement
+instance IsElement HTMLEmbedElement
+instance IsNode HTMLEmbedElement
+instance IsEventTarget HTMLEmbedElement
+instance IsGObject HTMLEmbedElement where
+  typeGType _ = gTypeHTMLEmbedElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLEmbedElement :: JSM GType
+gTypeHTMLEmbedElement = GType . Object <$> jsg "HTMLEmbedElement"
+#else
+type IsHTMLEmbedElement o = HTMLEmbedElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLFieldSetElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement Mozilla HTMLFieldSetElement documentation>
+newtype HTMLFieldSetElement = HTMLFieldSetElement { unHTMLFieldSetElement :: JSVal }
+
+instance PToJSVal HTMLFieldSetElement where
+  pToJSVal = unHTMLFieldSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFieldSetElement where
+  pFromJSVal = HTMLFieldSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFieldSetElement where
+  toJSVal = return . unHTMLFieldSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFieldSetElement where
+  fromJSVal v = fmap HTMLFieldSetElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFieldSetElement where
+  makeObject = makeObject . unHTMLFieldSetElement
+
+instance IsHTMLElement HTMLFieldSetElement
+instance IsElement HTMLFieldSetElement
+instance IsNode HTMLFieldSetElement
+instance IsEventTarget HTMLFieldSetElement
+instance IsGObject HTMLFieldSetElement where
+  typeGType _ = gTypeHTMLFieldSetElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLFieldSetElement :: JSM GType
+gTypeHTMLFieldSetElement = GType . Object <$> jsg "HTMLFieldSetElement"
+#else
+type IsHTMLFieldSetElement o = HTMLFieldSetElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLFontElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement Mozilla HTMLFontElement documentation>
+newtype HTMLFontElement = HTMLFontElement { unHTMLFontElement :: JSVal }
+
+instance PToJSVal HTMLFontElement where
+  pToJSVal = unHTMLFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFontElement where
+  pFromJSVal = HTMLFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFontElement where
+  toJSVal = return . unHTMLFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFontElement where
+  fromJSVal v = fmap HTMLFontElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFontElement where
+  makeObject = makeObject . unHTMLFontElement
+
+instance IsHTMLElement HTMLFontElement
+instance IsElement HTMLFontElement
+instance IsNode HTMLFontElement
+instance IsEventTarget HTMLFontElement
+instance IsGObject HTMLFontElement where
+  typeGType _ = gTypeHTMLFontElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLFontElement :: JSM GType
+gTypeHTMLFontElement = GType . Object <$> jsg "HTMLFontElement"
+#else
+type IsHTMLFontElement o = HTMLFontElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLFormControlsCollection".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLCollection"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection Mozilla HTMLFormControlsCollection documentation>
+newtype HTMLFormControlsCollection = HTMLFormControlsCollection { unHTMLFormControlsCollection :: JSVal }
+
+instance PToJSVal HTMLFormControlsCollection where
+  pToJSVal = unHTMLFormControlsCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFormControlsCollection where
+  pFromJSVal = HTMLFormControlsCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFormControlsCollection where
+  toJSVal = return . unHTMLFormControlsCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFormControlsCollection where
+  fromJSVal v = fmap HTMLFormControlsCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFormControlsCollection where
+  makeObject = makeObject . unHTMLFormControlsCollection
+
+instance IsHTMLCollection HTMLFormControlsCollection
+instance IsGObject HTMLFormControlsCollection where
+  typeGType _ = gTypeHTMLFormControlsCollection
+  {-# INLINE typeGType #-}
+
+gTypeHTMLFormControlsCollection :: JSM GType
+gTypeHTMLFormControlsCollection = GType . Object <$> jsg "HTMLFormControlsCollection"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLFormElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement Mozilla HTMLFormElement documentation>
+newtype HTMLFormElement = HTMLFormElement { unHTMLFormElement :: JSVal }
+
+instance PToJSVal HTMLFormElement where
+  pToJSVal = unHTMLFormElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFormElement where
+  pFromJSVal = HTMLFormElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFormElement where
+  toJSVal = return . unHTMLFormElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFormElement where
+  fromJSVal v = fmap HTMLFormElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFormElement where
+  makeObject = makeObject . unHTMLFormElement
+
+instance IsHTMLElement HTMLFormElement
+instance IsElement HTMLFormElement
+instance IsNode HTMLFormElement
+instance IsEventTarget HTMLFormElement
+instance IsGObject HTMLFormElement where
+  typeGType _ = gTypeHTMLFormElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLFormElement :: JSM GType
+gTypeHTMLFormElement = GType . Object <$> jsg "HTMLFormElement"
+#else
+type IsHTMLFormElement o = HTMLFormElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLFrameElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement Mozilla HTMLFrameElement documentation>
+newtype HTMLFrameElement = HTMLFrameElement { unHTMLFrameElement :: JSVal }
+
+instance PToJSVal HTMLFrameElement where
+  pToJSVal = unHTMLFrameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFrameElement where
+  pFromJSVal = HTMLFrameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFrameElement where
+  toJSVal = return . unHTMLFrameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFrameElement where
+  fromJSVal v = fmap HTMLFrameElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFrameElement where
+  makeObject = makeObject . unHTMLFrameElement
+
+instance IsHTMLElement HTMLFrameElement
+instance IsElement HTMLFrameElement
+instance IsNode HTMLFrameElement
+instance IsEventTarget HTMLFrameElement
+instance IsGObject HTMLFrameElement where
+  typeGType _ = gTypeHTMLFrameElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLFrameElement :: JSM GType
+gTypeHTMLFrameElement = GType . Object <$> jsg "HTMLFrameElement"
+#else
+type IsHTMLFrameElement o = HTMLFrameElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLFrameSetElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement Mozilla HTMLFrameSetElement documentation>
+newtype HTMLFrameSetElement = HTMLFrameSetElement { unHTMLFrameSetElement :: JSVal }
+
+instance PToJSVal HTMLFrameSetElement where
+  pToJSVal = unHTMLFrameSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFrameSetElement where
+  pFromJSVal = HTMLFrameSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFrameSetElement where
+  toJSVal = return . unHTMLFrameSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFrameSetElement where
+  fromJSVal v = fmap HTMLFrameSetElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLFrameSetElement where
+  makeObject = makeObject . unHTMLFrameSetElement
+
+instance IsHTMLElement HTMLFrameSetElement
+instance IsElement HTMLFrameSetElement
+instance IsNode HTMLFrameSetElement
+instance IsEventTarget HTMLFrameSetElement
+instance IsGObject HTMLFrameSetElement where
+  typeGType _ = gTypeHTMLFrameSetElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLFrameSetElement :: JSM GType
+gTypeHTMLFrameSetElement = GType . Object <$> jsg "HTMLFrameSetElement"
+#else
+type IsHTMLFrameSetElement o = HTMLFrameSetElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLHRElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement Mozilla HTMLHRElement documentation>
+newtype HTMLHRElement = HTMLHRElement { unHTMLHRElement :: JSVal }
+
+instance PToJSVal HTMLHRElement where
+  pToJSVal = unHTMLHRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHRElement where
+  pFromJSVal = HTMLHRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHRElement where
+  toJSVal = return . unHTMLHRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHRElement where
+  fromJSVal v = fmap HTMLHRElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLHRElement where
+  makeObject = makeObject . unHTMLHRElement
+
+instance IsHTMLElement HTMLHRElement
+instance IsElement HTMLHRElement
+instance IsNode HTMLHRElement
+instance IsEventTarget HTMLHRElement
+instance IsGObject HTMLHRElement where
+  typeGType _ = gTypeHTMLHRElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLHRElement :: JSM GType
+gTypeHTMLHRElement = GType . Object <$> jsg "HTMLHRElement"
+#else
+type IsHTMLHRElement o = HTMLHRElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLHeadElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement Mozilla HTMLHeadElement documentation>
+newtype HTMLHeadElement = HTMLHeadElement { unHTMLHeadElement :: JSVal }
+
+instance PToJSVal HTMLHeadElement where
+  pToJSVal = unHTMLHeadElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHeadElement where
+  pFromJSVal = HTMLHeadElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHeadElement where
+  toJSVal = return . unHTMLHeadElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHeadElement where
+  fromJSVal v = fmap HTMLHeadElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLHeadElement where
+  makeObject = makeObject . unHTMLHeadElement
+
+instance IsHTMLElement HTMLHeadElement
+instance IsElement HTMLHeadElement
+instance IsNode HTMLHeadElement
+instance IsEventTarget HTMLHeadElement
+instance IsGObject HTMLHeadElement where
+  typeGType _ = gTypeHTMLHeadElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLHeadElement :: JSM GType
+gTypeHTMLHeadElement = GType . Object <$> jsg "HTMLHeadElement"
+#else
+type IsHTMLHeadElement o = HTMLHeadElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLHeadingElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement Mozilla HTMLHeadingElement documentation>
+newtype HTMLHeadingElement = HTMLHeadingElement { unHTMLHeadingElement :: JSVal }
+
+instance PToJSVal HTMLHeadingElement where
+  pToJSVal = unHTMLHeadingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHeadingElement where
+  pFromJSVal = HTMLHeadingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHeadingElement where
+  toJSVal = return . unHTMLHeadingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHeadingElement where
+  fromJSVal v = fmap HTMLHeadingElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLHeadingElement where
+  makeObject = makeObject . unHTMLHeadingElement
+
+instance IsHTMLElement HTMLHeadingElement
+instance IsElement HTMLHeadingElement
+instance IsNode HTMLHeadingElement
+instance IsEventTarget HTMLHeadingElement
+instance IsGObject HTMLHeadingElement where
+  typeGType _ = gTypeHTMLHeadingElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLHeadingElement :: JSM GType
+gTypeHTMLHeadingElement = GType . Object <$> jsg "HTMLHeadingElement"
+#else
+type IsHTMLHeadingElement o = HTMLHeadingElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLHtmlElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement Mozilla HTMLHtmlElement documentation>
+newtype HTMLHtmlElement = HTMLHtmlElement { unHTMLHtmlElement :: JSVal }
+
+instance PToJSVal HTMLHtmlElement where
+  pToJSVal = unHTMLHtmlElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHtmlElement where
+  pFromJSVal = HTMLHtmlElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHtmlElement where
+  toJSVal = return . unHTMLHtmlElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHtmlElement where
+  fromJSVal v = fmap HTMLHtmlElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLHtmlElement where
+  makeObject = makeObject . unHTMLHtmlElement
+
+instance IsHTMLElement HTMLHtmlElement
+instance IsElement HTMLHtmlElement
+instance IsNode HTMLHtmlElement
+instance IsEventTarget HTMLHtmlElement
+instance IsGObject HTMLHtmlElement where
+  typeGType _ = gTypeHTMLHtmlElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLHtmlElement :: JSM GType
+gTypeHTMLHtmlElement = GType . Object <$> jsg "HTMLHtmlElement"
+#else
+type IsHTMLHtmlElement o = HTMLHtmlElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLIFrameElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement Mozilla HTMLIFrameElement documentation>
+newtype HTMLIFrameElement = HTMLIFrameElement { unHTMLIFrameElement :: JSVal }
+
+instance PToJSVal HTMLIFrameElement where
+  pToJSVal = unHTMLIFrameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLIFrameElement where
+  pFromJSVal = HTMLIFrameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLIFrameElement where
+  toJSVal = return . unHTMLIFrameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLIFrameElement where
+  fromJSVal v = fmap HTMLIFrameElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLIFrameElement where
+  makeObject = makeObject . unHTMLIFrameElement
+
+instance IsHTMLElement HTMLIFrameElement
+instance IsElement HTMLIFrameElement
+instance IsNode HTMLIFrameElement
+instance IsEventTarget HTMLIFrameElement
+instance IsGObject HTMLIFrameElement where
+  typeGType _ = gTypeHTMLIFrameElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLIFrameElement :: JSM GType
+gTypeHTMLIFrameElement = GType . Object <$> jsg "HTMLIFrameElement"
+#else
+type IsHTMLIFrameElement o = HTMLIFrameElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLImageElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement Mozilla HTMLImageElement documentation>
+newtype HTMLImageElement = HTMLImageElement { unHTMLImageElement :: JSVal }
+
+instance PToJSVal HTMLImageElement where
+  pToJSVal = unHTMLImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLImageElement where
+  pFromJSVal = HTMLImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLImageElement where
+  toJSVal = return . unHTMLImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLImageElement where
+  fromJSVal v = fmap HTMLImageElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLImageElement where
+  makeObject = makeObject . unHTMLImageElement
+
+instance IsHTMLElement HTMLImageElement
+instance IsElement HTMLImageElement
+instance IsNode HTMLImageElement
+instance IsEventTarget HTMLImageElement
+instance IsGObject HTMLImageElement where
+  typeGType _ = gTypeHTMLImageElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLImageElement :: JSM GType
+gTypeHTMLImageElement = GType . Object <$> jsg "HTMLImageElement"
+#else
+type IsHTMLImageElement o = HTMLImageElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLInputElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement Mozilla HTMLInputElement documentation>
+newtype HTMLInputElement = HTMLInputElement { unHTMLInputElement :: JSVal }
+
+instance PToJSVal HTMLInputElement where
+  pToJSVal = unHTMLInputElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLInputElement where
+  pFromJSVal = HTMLInputElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLInputElement where
+  toJSVal = return . unHTMLInputElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLInputElement where
+  fromJSVal v = fmap HTMLInputElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLInputElement where
+  makeObject = makeObject . unHTMLInputElement
+
+instance IsHTMLElement HTMLInputElement
+instance IsElement HTMLInputElement
+instance IsNode HTMLInputElement
+instance IsEventTarget HTMLInputElement
+instance IsGObject HTMLInputElement where
+  typeGType _ = gTypeHTMLInputElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLInputElement :: JSM GType
+gTypeHTMLInputElement = GType . Object <$> jsg "HTMLInputElement"
+#else
+type IsHTMLInputElement o = HTMLInputElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLKeygenElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement Mozilla HTMLKeygenElement documentation>
+newtype HTMLKeygenElement = HTMLKeygenElement { unHTMLKeygenElement :: JSVal }
+
+instance PToJSVal HTMLKeygenElement where
+  pToJSVal = unHTMLKeygenElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLKeygenElement where
+  pFromJSVal = HTMLKeygenElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLKeygenElement where
+  toJSVal = return . unHTMLKeygenElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLKeygenElement where
+  fromJSVal v = fmap HTMLKeygenElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLKeygenElement where
+  makeObject = makeObject . unHTMLKeygenElement
+
+instance IsHTMLElement HTMLKeygenElement
+instance IsElement HTMLKeygenElement
+instance IsNode HTMLKeygenElement
+instance IsEventTarget HTMLKeygenElement
+instance IsGObject HTMLKeygenElement where
+  typeGType _ = gTypeHTMLKeygenElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLKeygenElement :: JSM GType
+gTypeHTMLKeygenElement = GType . Object <$> jsg "HTMLKeygenElement"
+#else
+type IsHTMLKeygenElement o = HTMLKeygenElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLLIElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement Mozilla HTMLLIElement documentation>
+newtype HTMLLIElement = HTMLLIElement { unHTMLLIElement :: JSVal }
+
+instance PToJSVal HTMLLIElement where
+  pToJSVal = unHTMLLIElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLIElement where
+  pFromJSVal = HTMLLIElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLIElement where
+  toJSVal = return . unHTMLLIElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLIElement where
+  fromJSVal v = fmap HTMLLIElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLLIElement where
+  makeObject = makeObject . unHTMLLIElement
+
+instance IsHTMLElement HTMLLIElement
+instance IsElement HTMLLIElement
+instance IsNode HTMLLIElement
+instance IsEventTarget HTMLLIElement
+instance IsGObject HTMLLIElement where
+  typeGType _ = gTypeHTMLLIElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLLIElement :: JSM GType
+gTypeHTMLLIElement = GType . Object <$> jsg "HTMLLIElement"
+#else
+type IsHTMLLIElement o = HTMLLIElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLLabelElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement Mozilla HTMLLabelElement documentation>
+newtype HTMLLabelElement = HTMLLabelElement { unHTMLLabelElement :: JSVal }
+
+instance PToJSVal HTMLLabelElement where
+  pToJSVal = unHTMLLabelElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLabelElement where
+  pFromJSVal = HTMLLabelElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLabelElement where
+  toJSVal = return . unHTMLLabelElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLabelElement where
+  fromJSVal v = fmap HTMLLabelElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLLabelElement where
+  makeObject = makeObject . unHTMLLabelElement
+
+instance IsHTMLElement HTMLLabelElement
+instance IsElement HTMLLabelElement
+instance IsNode HTMLLabelElement
+instance IsEventTarget HTMLLabelElement
+instance IsGObject HTMLLabelElement where
+  typeGType _ = gTypeHTMLLabelElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLLabelElement :: JSM GType
+gTypeHTMLLabelElement = GType . Object <$> jsg "HTMLLabelElement"
+#else
+type IsHTMLLabelElement o = HTMLLabelElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLLegendElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement Mozilla HTMLLegendElement documentation>
+newtype HTMLLegendElement = HTMLLegendElement { unHTMLLegendElement :: JSVal }
+
+instance PToJSVal HTMLLegendElement where
+  pToJSVal = unHTMLLegendElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLegendElement where
+  pFromJSVal = HTMLLegendElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLegendElement where
+  toJSVal = return . unHTMLLegendElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLegendElement where
+  fromJSVal v = fmap HTMLLegendElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLLegendElement where
+  makeObject = makeObject . unHTMLLegendElement
+
+instance IsHTMLElement HTMLLegendElement
+instance IsElement HTMLLegendElement
+instance IsNode HTMLLegendElement
+instance IsEventTarget HTMLLegendElement
+instance IsGObject HTMLLegendElement where
+  typeGType _ = gTypeHTMLLegendElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLLegendElement :: JSM GType
+gTypeHTMLLegendElement = GType . Object <$> jsg "HTMLLegendElement"
+#else
+type IsHTMLLegendElement o = HTMLLegendElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLLinkElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement Mozilla HTMLLinkElement documentation>
+newtype HTMLLinkElement = HTMLLinkElement { unHTMLLinkElement :: JSVal }
+
+instance PToJSVal HTMLLinkElement where
+  pToJSVal = unHTMLLinkElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLinkElement where
+  pFromJSVal = HTMLLinkElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLinkElement where
+  toJSVal = return . unHTMLLinkElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLinkElement where
+  fromJSVal v = fmap HTMLLinkElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLLinkElement where
+  makeObject = makeObject . unHTMLLinkElement
+
+instance IsHTMLElement HTMLLinkElement
+instance IsElement HTMLLinkElement
+instance IsNode HTMLLinkElement
+instance IsEventTarget HTMLLinkElement
+instance IsGObject HTMLLinkElement where
+  typeGType _ = gTypeHTMLLinkElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLLinkElement :: JSM GType
+gTypeHTMLLinkElement = GType . Object <$> jsg "HTMLLinkElement"
+#else
+type IsHTMLLinkElement o = HTMLLinkElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLMapElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement Mozilla HTMLMapElement documentation>
+newtype HTMLMapElement = HTMLMapElement { unHTMLMapElement :: JSVal }
+
+instance PToJSVal HTMLMapElement where
+  pToJSVal = unHTMLMapElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMapElement where
+  pFromJSVal = HTMLMapElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMapElement where
+  toJSVal = return . unHTMLMapElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMapElement where
+  fromJSVal v = fmap HTMLMapElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMapElement where
+  makeObject = makeObject . unHTMLMapElement
+
+instance IsHTMLElement HTMLMapElement
+instance IsElement HTMLMapElement
+instance IsNode HTMLMapElement
+instance IsEventTarget HTMLMapElement
+instance IsGObject HTMLMapElement where
+  typeGType _ = gTypeHTMLMapElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLMapElement :: JSM GType
+gTypeHTMLMapElement = GType . Object <$> jsg "HTMLMapElement"
+#else
+type IsHTMLMapElement o = HTMLMapElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLMarqueeElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement Mozilla HTMLMarqueeElement documentation>
+newtype HTMLMarqueeElement = HTMLMarqueeElement { unHTMLMarqueeElement :: JSVal }
+
+instance PToJSVal HTMLMarqueeElement where
+  pToJSVal = unHTMLMarqueeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMarqueeElement where
+  pFromJSVal = HTMLMarqueeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMarqueeElement where
+  toJSVal = return . unHTMLMarqueeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMarqueeElement where
+  fromJSVal v = fmap HTMLMarqueeElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMarqueeElement where
+  makeObject = makeObject . unHTMLMarqueeElement
+
+instance IsHTMLElement HTMLMarqueeElement
+instance IsElement HTMLMarqueeElement
+instance IsNode HTMLMarqueeElement
+instance IsEventTarget HTMLMarqueeElement
+instance IsGObject HTMLMarqueeElement where
+  typeGType _ = gTypeHTMLMarqueeElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLMarqueeElement :: JSM GType
+gTypeHTMLMarqueeElement = GType . Object <$> jsg "HTMLMarqueeElement"
+#else
+type IsHTMLMarqueeElement o = HTMLMarqueeElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLMediaElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement Mozilla HTMLMediaElement documentation>
+newtype HTMLMediaElement = HTMLMediaElement { unHTMLMediaElement :: JSVal }
+
+instance PToJSVal HTMLMediaElement where
+  pToJSVal = unHTMLMediaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMediaElement where
+  pFromJSVal = HTMLMediaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMediaElement where
+  toJSVal = return . unHTMLMediaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMediaElement where
+  fromJSVal v = fmap HTMLMediaElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMediaElement where
+  makeObject = makeObject . unHTMLMediaElement
+
+class IsHTMLElement o => IsHTMLMediaElement o
+toHTMLMediaElement :: IsHTMLMediaElement o => o -> HTMLMediaElement
+toHTMLMediaElement = HTMLMediaElement . coerce
+
+instance IsHTMLMediaElement HTMLMediaElement
+instance IsHTMLElement HTMLMediaElement
+instance IsElement HTMLMediaElement
+instance IsNode HTMLMediaElement
+instance IsEventTarget HTMLMediaElement
+instance IsGObject HTMLMediaElement where
+  typeGType _ = gTypeHTMLMediaElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLMediaElement :: JSM GType
+gTypeHTMLMediaElement = GType . Object <$> jsg "HTMLMediaElement"
+#else
+type IsHTMLMediaElement o = HTMLMediaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLMenuElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement Mozilla HTMLMenuElement documentation>
+newtype HTMLMenuElement = HTMLMenuElement { unHTMLMenuElement :: JSVal }
+
+instance PToJSVal HTMLMenuElement where
+  pToJSVal = unHTMLMenuElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMenuElement where
+  pFromJSVal = HTMLMenuElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMenuElement where
+  toJSVal = return . unHTMLMenuElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMenuElement where
+  fromJSVal v = fmap HTMLMenuElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMenuElement where
+  makeObject = makeObject . unHTMLMenuElement
+
+instance IsHTMLElement HTMLMenuElement
+instance IsElement HTMLMenuElement
+instance IsNode HTMLMenuElement
+instance IsEventTarget HTMLMenuElement
+instance IsGObject HTMLMenuElement where
+  typeGType _ = gTypeHTMLMenuElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLMenuElement :: JSM GType
+gTypeHTMLMenuElement = GType . Object <$> jsg "HTMLMenuElement"
+#else
+type IsHTMLMenuElement o = HTMLMenuElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLMetaElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement Mozilla HTMLMetaElement documentation>
+newtype HTMLMetaElement = HTMLMetaElement { unHTMLMetaElement :: JSVal }
+
+instance PToJSVal HTMLMetaElement where
+  pToJSVal = unHTMLMetaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMetaElement where
+  pFromJSVal = HTMLMetaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMetaElement where
+  toJSVal = return . unHTMLMetaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMetaElement where
+  fromJSVal v = fmap HTMLMetaElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMetaElement where
+  makeObject = makeObject . unHTMLMetaElement
+
+instance IsHTMLElement HTMLMetaElement
+instance IsElement HTMLMetaElement
+instance IsNode HTMLMetaElement
+instance IsEventTarget HTMLMetaElement
+instance IsGObject HTMLMetaElement where
+  typeGType _ = gTypeHTMLMetaElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLMetaElement :: JSM GType
+gTypeHTMLMetaElement = GType . Object <$> jsg "HTMLMetaElement"
+#else
+type IsHTMLMetaElement o = HTMLMetaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLMeterElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement Mozilla HTMLMeterElement documentation>
+newtype HTMLMeterElement = HTMLMeterElement { unHTMLMeterElement :: JSVal }
+
+instance PToJSVal HTMLMeterElement where
+  pToJSVal = unHTMLMeterElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMeterElement where
+  pFromJSVal = HTMLMeterElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMeterElement where
+  toJSVal = return . unHTMLMeterElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMeterElement where
+  fromJSVal v = fmap HTMLMeterElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLMeterElement where
+  makeObject = makeObject . unHTMLMeterElement
+
+instance IsHTMLElement HTMLMeterElement
+instance IsElement HTMLMeterElement
+instance IsNode HTMLMeterElement
+instance IsEventTarget HTMLMeterElement
+instance IsGObject HTMLMeterElement where
+  typeGType _ = gTypeHTMLMeterElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLMeterElement :: JSM GType
+gTypeHTMLMeterElement = GType . Object <$> jsg "HTMLMeterElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLModElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement Mozilla HTMLModElement documentation>
+newtype HTMLModElement = HTMLModElement { unHTMLModElement :: JSVal }
+
+instance PToJSVal HTMLModElement where
+  pToJSVal = unHTMLModElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLModElement where
+  pFromJSVal = HTMLModElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLModElement where
+  toJSVal = return . unHTMLModElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLModElement where
+  fromJSVal v = fmap HTMLModElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLModElement where
+  makeObject = makeObject . unHTMLModElement
+
+instance IsHTMLElement HTMLModElement
+instance IsElement HTMLModElement
+instance IsNode HTMLModElement
+instance IsEventTarget HTMLModElement
+instance IsGObject HTMLModElement where
+  typeGType _ = gTypeHTMLModElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLModElement :: JSM GType
+gTypeHTMLModElement = GType . Object <$> jsg "HTMLModElement"
+#else
+type IsHTMLModElement o = HTMLModElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLOListElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement Mozilla HTMLOListElement documentation>
+newtype HTMLOListElement = HTMLOListElement { unHTMLOListElement :: JSVal }
+
+instance PToJSVal HTMLOListElement where
+  pToJSVal = unHTMLOListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOListElement where
+  pFromJSVal = HTMLOListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOListElement where
+  toJSVal = return . unHTMLOListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOListElement where
+  fromJSVal v = fmap HTMLOListElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOListElement where
+  makeObject = makeObject . unHTMLOListElement
+
+instance IsHTMLElement HTMLOListElement
+instance IsElement HTMLOListElement
+instance IsNode HTMLOListElement
+instance IsEventTarget HTMLOListElement
+instance IsGObject HTMLOListElement where
+  typeGType _ = gTypeHTMLOListElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLOListElement :: JSM GType
+gTypeHTMLOListElement = GType . Object <$> jsg "HTMLOListElement"
+#else
+type IsHTMLOListElement o = HTMLOListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLObjectElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement Mozilla HTMLObjectElement documentation>
+newtype HTMLObjectElement = HTMLObjectElement { unHTMLObjectElement :: JSVal }
+
+instance PToJSVal HTMLObjectElement where
+  pToJSVal = unHTMLObjectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLObjectElement where
+  pFromJSVal = HTMLObjectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLObjectElement where
+  toJSVal = return . unHTMLObjectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLObjectElement where
+  fromJSVal v = fmap HTMLObjectElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLObjectElement where
+  makeObject = makeObject . unHTMLObjectElement
+
+instance IsHTMLElement HTMLObjectElement
+instance IsElement HTMLObjectElement
+instance IsNode HTMLObjectElement
+instance IsEventTarget HTMLObjectElement
+instance IsGObject HTMLObjectElement where
+  typeGType _ = gTypeHTMLObjectElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLObjectElement :: JSM GType
+gTypeHTMLObjectElement = GType . Object <$> jsg "HTMLObjectElement"
+#else
+type IsHTMLObjectElement o = HTMLObjectElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLOptGroupElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement Mozilla HTMLOptGroupElement documentation>
+newtype HTMLOptGroupElement = HTMLOptGroupElement { unHTMLOptGroupElement :: JSVal }
+
+instance PToJSVal HTMLOptGroupElement where
+  pToJSVal = unHTMLOptGroupElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptGroupElement where
+  pFromJSVal = HTMLOptGroupElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptGroupElement where
+  toJSVal = return . unHTMLOptGroupElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptGroupElement where
+  fromJSVal v = fmap HTMLOptGroupElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOptGroupElement where
+  makeObject = makeObject . unHTMLOptGroupElement
+
+instance IsHTMLElement HTMLOptGroupElement
+instance IsElement HTMLOptGroupElement
+instance IsNode HTMLOptGroupElement
+instance IsEventTarget HTMLOptGroupElement
+instance IsGObject HTMLOptGroupElement where
+  typeGType _ = gTypeHTMLOptGroupElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLOptGroupElement :: JSM GType
+gTypeHTMLOptGroupElement = GType . Object <$> jsg "HTMLOptGroupElement"
+#else
+type IsHTMLOptGroupElement o = HTMLOptGroupElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLOptionElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement Mozilla HTMLOptionElement documentation>
+newtype HTMLOptionElement = HTMLOptionElement { unHTMLOptionElement :: JSVal }
+
+instance PToJSVal HTMLOptionElement where
+  pToJSVal = unHTMLOptionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptionElement where
+  pFromJSVal = HTMLOptionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptionElement where
+  toJSVal = return . unHTMLOptionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptionElement where
+  fromJSVal v = fmap HTMLOptionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOptionElement where
+  makeObject = makeObject . unHTMLOptionElement
+
+instance IsHTMLElement HTMLOptionElement
+instance IsElement HTMLOptionElement
+instance IsNode HTMLOptionElement
+instance IsEventTarget HTMLOptionElement
+instance IsGObject HTMLOptionElement where
+  typeGType _ = gTypeHTMLOptionElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLOptionElement :: JSM GType
+gTypeHTMLOptionElement = GType . Object <$> jsg "HTMLOptionElement"
+#else
+type IsHTMLOptionElement o = HTMLOptionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLOptionsCollection".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLCollection"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection Mozilla HTMLOptionsCollection documentation>
+newtype HTMLOptionsCollection = HTMLOptionsCollection { unHTMLOptionsCollection :: JSVal }
+
+instance PToJSVal HTMLOptionsCollection where
+  pToJSVal = unHTMLOptionsCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptionsCollection where
+  pFromJSVal = HTMLOptionsCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptionsCollection where
+  toJSVal = return . unHTMLOptionsCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptionsCollection where
+  fromJSVal v = fmap HTMLOptionsCollection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOptionsCollection where
+  makeObject = makeObject . unHTMLOptionsCollection
+
+instance IsHTMLCollection HTMLOptionsCollection
+instance IsGObject HTMLOptionsCollection where
+  typeGType _ = gTypeHTMLOptionsCollection
+  {-# INLINE typeGType #-}
+
+gTypeHTMLOptionsCollection :: JSM GType
+gTypeHTMLOptionsCollection = GType . Object <$> jsg "HTMLOptionsCollection"
+#else
+type IsHTMLOptionsCollection o = HTMLOptionsCollectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLOutputElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement Mozilla HTMLOutputElement documentation>
+newtype HTMLOutputElement = HTMLOutputElement { unHTMLOutputElement :: JSVal }
+
+instance PToJSVal HTMLOutputElement where
+  pToJSVal = unHTMLOutputElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOutputElement where
+  pFromJSVal = HTMLOutputElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOutputElement where
+  toJSVal = return . unHTMLOutputElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOutputElement where
+  fromJSVal v = fmap HTMLOutputElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLOutputElement where
+  makeObject = makeObject . unHTMLOutputElement
+
+instance IsHTMLElement HTMLOutputElement
+instance IsElement HTMLOutputElement
+instance IsNode HTMLOutputElement
+instance IsEventTarget HTMLOutputElement
+instance IsGObject HTMLOutputElement where
+  typeGType _ = gTypeHTMLOutputElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLOutputElement :: JSM GType
+gTypeHTMLOutputElement = GType . Object <$> jsg "HTMLOutputElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLParagraphElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement Mozilla HTMLParagraphElement documentation>
+newtype HTMLParagraphElement = HTMLParagraphElement { unHTMLParagraphElement :: JSVal }
+
+instance PToJSVal HTMLParagraphElement where
+  pToJSVal = unHTMLParagraphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLParagraphElement where
+  pFromJSVal = HTMLParagraphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLParagraphElement where
+  toJSVal = return . unHTMLParagraphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLParagraphElement where
+  fromJSVal v = fmap HTMLParagraphElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLParagraphElement where
+  makeObject = makeObject . unHTMLParagraphElement
+
+instance IsHTMLElement HTMLParagraphElement
+instance IsElement HTMLParagraphElement
+instance IsNode HTMLParagraphElement
+instance IsEventTarget HTMLParagraphElement
+instance IsGObject HTMLParagraphElement where
+  typeGType _ = gTypeHTMLParagraphElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLParagraphElement :: JSM GType
+gTypeHTMLParagraphElement = GType . Object <$> jsg "HTMLParagraphElement"
+#else
+type IsHTMLParagraphElement o = HTMLParagraphElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLParamElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement Mozilla HTMLParamElement documentation>
+newtype HTMLParamElement = HTMLParamElement { unHTMLParamElement :: JSVal }
+
+instance PToJSVal HTMLParamElement where
+  pToJSVal = unHTMLParamElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLParamElement where
+  pFromJSVal = HTMLParamElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLParamElement where
+  toJSVal = return . unHTMLParamElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLParamElement where
+  fromJSVal v = fmap HTMLParamElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLParamElement where
+  makeObject = makeObject . unHTMLParamElement
+
+instance IsHTMLElement HTMLParamElement
+instance IsElement HTMLParamElement
+instance IsNode HTMLParamElement
+instance IsEventTarget HTMLParamElement
+instance IsGObject HTMLParamElement where
+  typeGType _ = gTypeHTMLParamElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLParamElement :: JSM GType
+gTypeHTMLParamElement = GType . Object <$> jsg "HTMLParamElement"
+#else
+type IsHTMLParamElement o = HTMLParamElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLPreElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement Mozilla HTMLPreElement documentation>
+newtype HTMLPreElement = HTMLPreElement { unHTMLPreElement :: JSVal }
+
+instance PToJSVal HTMLPreElement where
+  pToJSVal = unHTMLPreElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLPreElement where
+  pFromJSVal = HTMLPreElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLPreElement where
+  toJSVal = return . unHTMLPreElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLPreElement where
+  fromJSVal v = fmap HTMLPreElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLPreElement where
+  makeObject = makeObject . unHTMLPreElement
+
+instance IsHTMLElement HTMLPreElement
+instance IsElement HTMLPreElement
+instance IsNode HTMLPreElement
+instance IsEventTarget HTMLPreElement
+instance IsGObject HTMLPreElement where
+  typeGType _ = gTypeHTMLPreElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLPreElement :: JSM GType
+gTypeHTMLPreElement = GType . Object <$> jsg "HTMLPreElement"
+#else
+type IsHTMLPreElement o = HTMLPreElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLProgressElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement Mozilla HTMLProgressElement documentation>
+newtype HTMLProgressElement = HTMLProgressElement { unHTMLProgressElement :: JSVal }
+
+instance PToJSVal HTMLProgressElement where
+  pToJSVal = unHTMLProgressElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLProgressElement where
+  pFromJSVal = HTMLProgressElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLProgressElement where
+  toJSVal = return . unHTMLProgressElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLProgressElement where
+  fromJSVal v = fmap HTMLProgressElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLProgressElement where
+  makeObject = makeObject . unHTMLProgressElement
+
+instance IsHTMLElement HTMLProgressElement
+instance IsElement HTMLProgressElement
+instance IsNode HTMLProgressElement
+instance IsEventTarget HTMLProgressElement
+instance IsGObject HTMLProgressElement where
+  typeGType _ = gTypeHTMLProgressElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLProgressElement :: JSM GType
+gTypeHTMLProgressElement = GType . Object <$> jsg "HTMLProgressElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLQuoteElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement Mozilla HTMLQuoteElement documentation>
+newtype HTMLQuoteElement = HTMLQuoteElement { unHTMLQuoteElement :: JSVal }
+
+instance PToJSVal HTMLQuoteElement where
+  pToJSVal = unHTMLQuoteElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLQuoteElement where
+  pFromJSVal = HTMLQuoteElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLQuoteElement where
+  toJSVal = return . unHTMLQuoteElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLQuoteElement where
+  fromJSVal v = fmap HTMLQuoteElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLQuoteElement where
+  makeObject = makeObject . unHTMLQuoteElement
+
+instance IsHTMLElement HTMLQuoteElement
+instance IsElement HTMLQuoteElement
+instance IsNode HTMLQuoteElement
+instance IsEventTarget HTMLQuoteElement
+instance IsGObject HTMLQuoteElement where
+  typeGType _ = gTypeHTMLQuoteElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLQuoteElement :: JSM GType
+gTypeHTMLQuoteElement = GType . Object <$> jsg "HTMLQuoteElement"
+#else
+type IsHTMLQuoteElement o = HTMLQuoteElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLScriptElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement Mozilla HTMLScriptElement documentation>
+newtype HTMLScriptElement = HTMLScriptElement { unHTMLScriptElement :: JSVal }
+
+instance PToJSVal HTMLScriptElement where
+  pToJSVal = unHTMLScriptElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLScriptElement where
+  pFromJSVal = HTMLScriptElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLScriptElement where
+  toJSVal = return . unHTMLScriptElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLScriptElement where
+  fromJSVal v = fmap HTMLScriptElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLScriptElement where
+  makeObject = makeObject . unHTMLScriptElement
+
+instance IsHTMLElement HTMLScriptElement
+instance IsElement HTMLScriptElement
+instance IsNode HTMLScriptElement
+instance IsEventTarget HTMLScriptElement
+instance IsGObject HTMLScriptElement where
+  typeGType _ = gTypeHTMLScriptElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLScriptElement :: JSM GType
+gTypeHTMLScriptElement = GType . Object <$> jsg "HTMLScriptElement"
+#else
+type IsHTMLScriptElement o = HTMLScriptElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLSelectElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement Mozilla HTMLSelectElement documentation>
+newtype HTMLSelectElement = HTMLSelectElement { unHTMLSelectElement :: JSVal }
+
+instance PToJSVal HTMLSelectElement where
+  pToJSVal = unHTMLSelectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSelectElement where
+  pFromJSVal = HTMLSelectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSelectElement where
+  toJSVal = return . unHTMLSelectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSelectElement where
+  fromJSVal v = fmap HTMLSelectElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLSelectElement where
+  makeObject = makeObject . unHTMLSelectElement
+
+instance IsHTMLElement HTMLSelectElement
+instance IsElement HTMLSelectElement
+instance IsNode HTMLSelectElement
+instance IsEventTarget HTMLSelectElement
+instance IsGObject HTMLSelectElement where
+  typeGType _ = gTypeHTMLSelectElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLSelectElement :: JSM GType
+gTypeHTMLSelectElement = GType . Object <$> jsg "HTMLSelectElement"
+#else
+type IsHTMLSelectElement o = HTMLSelectElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLSourceElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement Mozilla HTMLSourceElement documentation>
+newtype HTMLSourceElement = HTMLSourceElement { unHTMLSourceElement :: JSVal }
+
+instance PToJSVal HTMLSourceElement where
+  pToJSVal = unHTMLSourceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSourceElement where
+  pFromJSVal = HTMLSourceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSourceElement where
+  toJSVal = return . unHTMLSourceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSourceElement where
+  fromJSVal v = fmap HTMLSourceElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLSourceElement where
+  makeObject = makeObject . unHTMLSourceElement
+
+instance IsHTMLElement HTMLSourceElement
+instance IsElement HTMLSourceElement
+instance IsNode HTMLSourceElement
+instance IsEventTarget HTMLSourceElement
+instance IsGObject HTMLSourceElement where
+  typeGType _ = gTypeHTMLSourceElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLSourceElement :: JSM GType
+gTypeHTMLSourceElement = GType . Object <$> jsg "HTMLSourceElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLSpanElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSpanElement Mozilla HTMLSpanElement documentation>
+newtype HTMLSpanElement = HTMLSpanElement { unHTMLSpanElement :: JSVal }
+
+instance PToJSVal HTMLSpanElement where
+  pToJSVal = unHTMLSpanElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSpanElement where
+  pFromJSVal = HTMLSpanElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSpanElement where
+  toJSVal = return . unHTMLSpanElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSpanElement where
+  fromJSVal v = fmap HTMLSpanElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLSpanElement where
+  makeObject = makeObject . unHTMLSpanElement
+
+instance IsHTMLElement HTMLSpanElement
+instance IsElement HTMLSpanElement
+instance IsNode HTMLSpanElement
+instance IsEventTarget HTMLSpanElement
+instance IsGObject HTMLSpanElement where
+  typeGType _ = gTypeHTMLSpanElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLSpanElement :: JSM GType
+gTypeHTMLSpanElement = GType . Object <$> jsg "HTMLSpanElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLStyleElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement Mozilla HTMLStyleElement documentation>
+newtype HTMLStyleElement = HTMLStyleElement { unHTMLStyleElement :: JSVal }
+
+instance PToJSVal HTMLStyleElement where
+  pToJSVal = unHTMLStyleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLStyleElement where
+  pFromJSVal = HTMLStyleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLStyleElement where
+  toJSVal = return . unHTMLStyleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLStyleElement where
+  fromJSVal v = fmap HTMLStyleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLStyleElement where
+  makeObject = makeObject . unHTMLStyleElement
+
+instance IsHTMLElement HTMLStyleElement
+instance IsElement HTMLStyleElement
+instance IsNode HTMLStyleElement
+instance IsEventTarget HTMLStyleElement
+instance IsGObject HTMLStyleElement where
+  typeGType _ = gTypeHTMLStyleElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLStyleElement :: JSM GType
+gTypeHTMLStyleElement = GType . Object <$> jsg "HTMLStyleElement"
+#else
+type IsHTMLStyleElement o = HTMLStyleElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTableCaptionElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement Mozilla HTMLTableCaptionElement documentation>
+newtype HTMLTableCaptionElement = HTMLTableCaptionElement { unHTMLTableCaptionElement :: JSVal }
+
+instance PToJSVal HTMLTableCaptionElement where
+  pToJSVal = unHTMLTableCaptionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableCaptionElement where
+  pFromJSVal = HTMLTableCaptionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableCaptionElement where
+  toJSVal = return . unHTMLTableCaptionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableCaptionElement where
+  fromJSVal v = fmap HTMLTableCaptionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableCaptionElement where
+  makeObject = makeObject . unHTMLTableCaptionElement
+
+instance IsHTMLElement HTMLTableCaptionElement
+instance IsElement HTMLTableCaptionElement
+instance IsNode HTMLTableCaptionElement
+instance IsEventTarget HTMLTableCaptionElement
+instance IsGObject HTMLTableCaptionElement where
+  typeGType _ = gTypeHTMLTableCaptionElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTableCaptionElement :: JSM GType
+gTypeHTMLTableCaptionElement = GType . Object <$> jsg "HTMLTableCaptionElement"
+#else
+type IsHTMLTableCaptionElement o = HTMLTableCaptionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTableCellElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement Mozilla HTMLTableCellElement documentation>
+newtype HTMLTableCellElement = HTMLTableCellElement { unHTMLTableCellElement :: JSVal }
+
+instance PToJSVal HTMLTableCellElement where
+  pToJSVal = unHTMLTableCellElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableCellElement where
+  pFromJSVal = HTMLTableCellElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableCellElement where
+  toJSVal = return . unHTMLTableCellElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableCellElement where
+  fromJSVal v = fmap HTMLTableCellElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableCellElement where
+  makeObject = makeObject . unHTMLTableCellElement
+
+instance IsHTMLElement HTMLTableCellElement
+instance IsElement HTMLTableCellElement
+instance IsNode HTMLTableCellElement
+instance IsEventTarget HTMLTableCellElement
+instance IsGObject HTMLTableCellElement where
+  typeGType _ = gTypeHTMLTableCellElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTableCellElement :: JSM GType
+gTypeHTMLTableCellElement = GType . Object <$> jsg "HTMLTableCellElement"
+#else
+type IsHTMLTableCellElement o = HTMLTableCellElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTableColElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement Mozilla HTMLTableColElement documentation>
+newtype HTMLTableColElement = HTMLTableColElement { unHTMLTableColElement :: JSVal }
+
+instance PToJSVal HTMLTableColElement where
+  pToJSVal = unHTMLTableColElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableColElement where
+  pFromJSVal = HTMLTableColElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableColElement where
+  toJSVal = return . unHTMLTableColElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableColElement where
+  fromJSVal v = fmap HTMLTableColElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableColElement where
+  makeObject = makeObject . unHTMLTableColElement
+
+instance IsHTMLElement HTMLTableColElement
+instance IsElement HTMLTableColElement
+instance IsNode HTMLTableColElement
+instance IsEventTarget HTMLTableColElement
+instance IsGObject HTMLTableColElement where
+  typeGType _ = gTypeHTMLTableColElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTableColElement :: JSM GType
+gTypeHTMLTableColElement = GType . Object <$> jsg "HTMLTableColElement"
+#else
+type IsHTMLTableColElement o = HTMLTableColElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTableElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement Mozilla HTMLTableElement documentation>
+newtype HTMLTableElement = HTMLTableElement { unHTMLTableElement :: JSVal }
+
+instance PToJSVal HTMLTableElement where
+  pToJSVal = unHTMLTableElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableElement where
+  pFromJSVal = HTMLTableElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableElement where
+  toJSVal = return . unHTMLTableElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableElement where
+  fromJSVal v = fmap HTMLTableElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableElement where
+  makeObject = makeObject . unHTMLTableElement
+
+instance IsHTMLElement HTMLTableElement
+instance IsElement HTMLTableElement
+instance IsNode HTMLTableElement
+instance IsEventTarget HTMLTableElement
+instance IsGObject HTMLTableElement where
+  typeGType _ = gTypeHTMLTableElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTableElement :: JSM GType
+gTypeHTMLTableElement = GType . Object <$> jsg "HTMLTableElement"
+#else
+type IsHTMLTableElement o = HTMLTableElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTableRowElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement Mozilla HTMLTableRowElement documentation>
+newtype HTMLTableRowElement = HTMLTableRowElement { unHTMLTableRowElement :: JSVal }
+
+instance PToJSVal HTMLTableRowElement where
+  pToJSVal = unHTMLTableRowElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableRowElement where
+  pFromJSVal = HTMLTableRowElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableRowElement where
+  toJSVal = return . unHTMLTableRowElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableRowElement where
+  fromJSVal v = fmap HTMLTableRowElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableRowElement where
+  makeObject = makeObject . unHTMLTableRowElement
+
+instance IsHTMLElement HTMLTableRowElement
+instance IsElement HTMLTableRowElement
+instance IsNode HTMLTableRowElement
+instance IsEventTarget HTMLTableRowElement
+instance IsGObject HTMLTableRowElement where
+  typeGType _ = gTypeHTMLTableRowElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTableRowElement :: JSM GType
+gTypeHTMLTableRowElement = GType . Object <$> jsg "HTMLTableRowElement"
+#else
+type IsHTMLTableRowElement o = HTMLTableRowElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTableSectionElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement Mozilla HTMLTableSectionElement documentation>
+newtype HTMLTableSectionElement = HTMLTableSectionElement { unHTMLTableSectionElement :: JSVal }
+
+instance PToJSVal HTMLTableSectionElement where
+  pToJSVal = unHTMLTableSectionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableSectionElement where
+  pFromJSVal = HTMLTableSectionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableSectionElement where
+  toJSVal = return . unHTMLTableSectionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableSectionElement where
+  fromJSVal v = fmap HTMLTableSectionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTableSectionElement where
+  makeObject = makeObject . unHTMLTableSectionElement
+
+instance IsHTMLElement HTMLTableSectionElement
+instance IsElement HTMLTableSectionElement
+instance IsNode HTMLTableSectionElement
+instance IsEventTarget HTMLTableSectionElement
+instance IsGObject HTMLTableSectionElement where
+  typeGType _ = gTypeHTMLTableSectionElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTableSectionElement :: JSM GType
+gTypeHTMLTableSectionElement = GType . Object <$> jsg "HTMLTableSectionElement"
+#else
+type IsHTMLTableSectionElement o = HTMLTableSectionElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTemplateElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement Mozilla HTMLTemplateElement documentation>
+newtype HTMLTemplateElement = HTMLTemplateElement { unHTMLTemplateElement :: JSVal }
+
+instance PToJSVal HTMLTemplateElement where
+  pToJSVal = unHTMLTemplateElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTemplateElement where
+  pFromJSVal = HTMLTemplateElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTemplateElement where
+  toJSVal = return . unHTMLTemplateElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTemplateElement where
+  fromJSVal v = fmap HTMLTemplateElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTemplateElement where
+  makeObject = makeObject . unHTMLTemplateElement
+
+instance IsHTMLElement HTMLTemplateElement
+instance IsElement HTMLTemplateElement
+instance IsNode HTMLTemplateElement
+instance IsEventTarget HTMLTemplateElement
+instance IsGObject HTMLTemplateElement where
+  typeGType _ = gTypeHTMLTemplateElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTemplateElement :: JSM GType
+gTypeHTMLTemplateElement = GType . Object <$> jsg "HTMLTemplateElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTextAreaElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement Mozilla HTMLTextAreaElement documentation>
+newtype HTMLTextAreaElement = HTMLTextAreaElement { unHTMLTextAreaElement :: JSVal }
+
+instance PToJSVal HTMLTextAreaElement where
+  pToJSVal = unHTMLTextAreaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTextAreaElement where
+  pFromJSVal = HTMLTextAreaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTextAreaElement where
+  toJSVal = return . unHTMLTextAreaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTextAreaElement where
+  fromJSVal v = fmap HTMLTextAreaElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTextAreaElement where
+  makeObject = makeObject . unHTMLTextAreaElement
+
+instance IsHTMLElement HTMLTextAreaElement
+instance IsElement HTMLTextAreaElement
+instance IsNode HTMLTextAreaElement
+instance IsEventTarget HTMLTextAreaElement
+instance IsGObject HTMLTextAreaElement where
+  typeGType _ = gTypeHTMLTextAreaElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTextAreaElement :: JSM GType
+gTypeHTMLTextAreaElement = GType . Object <$> jsg "HTMLTextAreaElement"
+#else
+type IsHTMLTextAreaElement o = HTMLTextAreaElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTitleElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement Mozilla HTMLTitleElement documentation>
+newtype HTMLTitleElement = HTMLTitleElement { unHTMLTitleElement :: JSVal }
+
+instance PToJSVal HTMLTitleElement where
+  pToJSVal = unHTMLTitleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTitleElement where
+  pFromJSVal = HTMLTitleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTitleElement where
+  toJSVal = return . unHTMLTitleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTitleElement where
+  fromJSVal v = fmap HTMLTitleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTitleElement where
+  makeObject = makeObject . unHTMLTitleElement
+
+instance IsHTMLElement HTMLTitleElement
+instance IsElement HTMLTitleElement
+instance IsNode HTMLTitleElement
+instance IsEventTarget HTMLTitleElement
+instance IsGObject HTMLTitleElement where
+  typeGType _ = gTypeHTMLTitleElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTitleElement :: JSM GType
+gTypeHTMLTitleElement = GType . Object <$> jsg "HTMLTitleElement"
+#else
+type IsHTMLTitleElement o = HTMLTitleElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLTrackElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement Mozilla HTMLTrackElement documentation>
+newtype HTMLTrackElement = HTMLTrackElement { unHTMLTrackElement :: JSVal }
+
+instance PToJSVal HTMLTrackElement where
+  pToJSVal = unHTMLTrackElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTrackElement where
+  pFromJSVal = HTMLTrackElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTrackElement where
+  toJSVal = return . unHTMLTrackElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTrackElement where
+  fromJSVal v = fmap HTMLTrackElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLTrackElement where
+  makeObject = makeObject . unHTMLTrackElement
+
+instance IsHTMLElement HTMLTrackElement
+instance IsElement HTMLTrackElement
+instance IsNode HTMLTrackElement
+instance IsEventTarget HTMLTrackElement
+instance IsGObject HTMLTrackElement where
+  typeGType _ = gTypeHTMLTrackElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLTrackElement :: JSM GType
+gTypeHTMLTrackElement = GType . Object <$> jsg "HTMLTrackElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLUListElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement Mozilla HTMLUListElement documentation>
+newtype HTMLUListElement = HTMLUListElement { unHTMLUListElement :: JSVal }
+
+instance PToJSVal HTMLUListElement where
+  pToJSVal = unHTMLUListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLUListElement where
+  pFromJSVal = HTMLUListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLUListElement where
+  toJSVal = return . unHTMLUListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLUListElement where
+  fromJSVal v = fmap HTMLUListElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLUListElement where
+  makeObject = makeObject . unHTMLUListElement
+
+instance IsHTMLElement HTMLUListElement
+instance IsElement HTMLUListElement
+instance IsNode HTMLUListElement
+instance IsEventTarget HTMLUListElement
+instance IsGObject HTMLUListElement where
+  typeGType _ = gTypeHTMLUListElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLUListElement :: JSM GType
+gTypeHTMLUListElement = GType . Object <$> jsg "HTMLUListElement"
+#else
+type IsHTMLUListElement o = HTMLUListElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLUnknownElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement Mozilla HTMLUnknownElement documentation>
+newtype HTMLUnknownElement = HTMLUnknownElement { unHTMLUnknownElement :: JSVal }
+
+instance PToJSVal HTMLUnknownElement where
+  pToJSVal = unHTMLUnknownElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLUnknownElement where
+  pFromJSVal = HTMLUnknownElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLUnknownElement where
+  toJSVal = return . unHTMLUnknownElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLUnknownElement where
+  fromJSVal v = fmap HTMLUnknownElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLUnknownElement where
+  makeObject = makeObject . unHTMLUnknownElement
+
+instance IsHTMLElement HTMLUnknownElement
+instance IsElement HTMLUnknownElement
+instance IsNode HTMLUnknownElement
+instance IsEventTarget HTMLUnknownElement
+instance IsGObject HTMLUnknownElement where
+  typeGType _ = gTypeHTMLUnknownElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLUnknownElement :: JSM GType
+gTypeHTMLUnknownElement = GType . Object <$> jsg "HTMLUnknownElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HTMLVideoElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.HTMLMediaElement"
+--     * "JSDOM.HTMLElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement Mozilla HTMLVideoElement documentation>
+newtype HTMLVideoElement = HTMLVideoElement { unHTMLVideoElement :: JSVal }
+
+instance PToJSVal HTMLVideoElement where
+  pToJSVal = unHTMLVideoElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLVideoElement where
+  pFromJSVal = HTMLVideoElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLVideoElement where
+  toJSVal = return . unHTMLVideoElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLVideoElement where
+  fromJSVal v = fmap HTMLVideoElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HTMLVideoElement where
+  makeObject = makeObject . unHTMLVideoElement
+
+instance IsHTMLMediaElement HTMLVideoElement
+instance IsHTMLElement HTMLVideoElement
+instance IsElement HTMLVideoElement
+instance IsNode HTMLVideoElement
+instance IsEventTarget HTMLVideoElement
+instance IsGObject HTMLVideoElement where
+  typeGType _ = gTypeHTMLVideoElement
+  {-# INLINE typeGType #-}
+
+gTypeHTMLVideoElement :: JSM GType
+gTypeHTMLVideoElement = GType . Object <$> jsg "HTMLVideoElement"
+#else
+type IsHTMLVideoElement o = HTMLVideoElementClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.HashChangeEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent Mozilla HashChangeEvent documentation>
+newtype HashChangeEvent = HashChangeEvent { unHashChangeEvent :: JSVal }
+
+instance PToJSVal HashChangeEvent where
+  pToJSVal = unHashChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HashChangeEvent where
+  pFromJSVal = HashChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HashChangeEvent where
+  toJSVal = return . unHashChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HashChangeEvent where
+  fromJSVal v = fmap HashChangeEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject HashChangeEvent where
+  makeObject = makeObject . unHashChangeEvent
+
+instance IsEvent HashChangeEvent
+instance IsGObject HashChangeEvent where
+  typeGType _ = gTypeHashChangeEvent
+  {-# INLINE typeGType #-}
+
+gTypeHashChangeEvent :: JSM GType
+gTypeHashChangeEvent = GType . Object <$> jsg "HashChangeEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.History".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/History Mozilla History documentation>
+newtype History = History { unHistory :: JSVal }
+
+instance PToJSVal History where
+  pToJSVal = unHistory
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal History where
+  pFromJSVal = History
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal History where
+  toJSVal = return . unHistory
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal History where
+  fromJSVal v = fmap History <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject History where
+  makeObject = makeObject . unHistory
+
+instance IsGObject History where
+  typeGType _ = gTypeHistory
+  {-# INLINE typeGType #-}
+
+gTypeHistory :: JSM GType
+gTypeHistory = GType . Object <$> jsg "History"
+#else
+type IsHistory o = HistoryClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBAny".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBAny Mozilla IDBAny documentation>
+newtype IDBAny = IDBAny { unIDBAny :: JSVal }
+
+instance PToJSVal IDBAny where
+  pToJSVal = unIDBAny
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBAny where
+  pFromJSVal = IDBAny
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBAny where
+  toJSVal = return . unIDBAny
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBAny where
+  fromJSVal v = fmap IDBAny <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBAny where
+  makeObject = makeObject . unIDBAny
+
+instance IsGObject IDBAny where
+  typeGType _ = gTypeIDBAny
+  {-# INLINE typeGType #-}
+
+gTypeIDBAny :: JSM GType
+gTypeIDBAny = GType . Object <$> jsg "IDBAny"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBCursor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor Mozilla IDBCursor documentation>
+newtype IDBCursor = IDBCursor { unIDBCursor :: JSVal }
+
+instance PToJSVal IDBCursor where
+  pToJSVal = unIDBCursor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBCursor where
+  pFromJSVal = IDBCursor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBCursor where
+  toJSVal = return . unIDBCursor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBCursor where
+  fromJSVal v = fmap IDBCursor <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBCursor where
+  makeObject = makeObject . unIDBCursor
+
+class IsGObject o => IsIDBCursor o
+toIDBCursor :: IsIDBCursor o => o -> IDBCursor
+toIDBCursor = IDBCursor . coerce
+
+instance IsIDBCursor IDBCursor
+instance IsGObject IDBCursor where
+  typeGType _ = gTypeIDBCursor
+  {-# INLINE typeGType #-}
+
+gTypeIDBCursor :: JSM GType
+gTypeIDBCursor = GType . Object <$> jsg "IDBCursor"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBCursorWithValue".
+-- Base interface functions are in:
+--
+--     * "JSDOM.IDBCursor"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue Mozilla IDBCursorWithValue documentation>
+newtype IDBCursorWithValue = IDBCursorWithValue { unIDBCursorWithValue :: JSVal }
+
+instance PToJSVal IDBCursorWithValue where
+  pToJSVal = unIDBCursorWithValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBCursorWithValue where
+  pFromJSVal = IDBCursorWithValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBCursorWithValue where
+  toJSVal = return . unIDBCursorWithValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBCursorWithValue where
+  fromJSVal v = fmap IDBCursorWithValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBCursorWithValue where
+  makeObject = makeObject . unIDBCursorWithValue
+
+instance IsIDBCursor IDBCursorWithValue
+instance IsGObject IDBCursorWithValue where
+  typeGType _ = gTypeIDBCursorWithValue
+  {-# INLINE typeGType #-}
+
+gTypeIDBCursorWithValue :: JSM GType
+gTypeIDBCursorWithValue = GType . Object <$> jsg "IDBCursorWithValue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBDatabase".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase Mozilla IDBDatabase documentation>
+newtype IDBDatabase = IDBDatabase { unIDBDatabase :: JSVal }
+
+instance PToJSVal IDBDatabase where
+  pToJSVal = unIDBDatabase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBDatabase where
+  pFromJSVal = IDBDatabase
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBDatabase where
+  toJSVal = return . unIDBDatabase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBDatabase where
+  fromJSVal v = fmap IDBDatabase <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBDatabase where
+  makeObject = makeObject . unIDBDatabase
+
+instance IsEventTarget IDBDatabase
+instance IsGObject IDBDatabase where
+  typeGType _ = gTypeIDBDatabase
+  {-# INLINE typeGType #-}
+
+gTypeIDBDatabase :: JSM GType
+gTypeIDBDatabase = GType . Object <$> jsg "IDBDatabase"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBFactory".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory Mozilla IDBFactory documentation>
+newtype IDBFactory = IDBFactory { unIDBFactory :: JSVal }
+
+instance PToJSVal IDBFactory where
+  pToJSVal = unIDBFactory
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBFactory where
+  pFromJSVal = IDBFactory
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBFactory where
+  toJSVal = return . unIDBFactory
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBFactory where
+  fromJSVal v = fmap IDBFactory <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBFactory where
+  makeObject = makeObject . unIDBFactory
+
+instance IsGObject IDBFactory where
+  typeGType _ = gTypeIDBFactory
+  {-# INLINE typeGType #-}
+
+gTypeIDBFactory :: JSM GType
+gTypeIDBFactory = GType . Object <$> jsg "IDBFactory"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBIndex".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex Mozilla IDBIndex documentation>
+newtype IDBIndex = IDBIndex { unIDBIndex :: JSVal }
+
+instance PToJSVal IDBIndex where
+  pToJSVal = unIDBIndex
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBIndex where
+  pFromJSVal = IDBIndex
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBIndex where
+  toJSVal = return . unIDBIndex
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBIndex where
+  fromJSVal v = fmap IDBIndex <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBIndex where
+  makeObject = makeObject . unIDBIndex
+
+instance IsGObject IDBIndex where
+  typeGType _ = gTypeIDBIndex
+  {-# INLINE typeGType #-}
+
+gTypeIDBIndex :: JSM GType
+gTypeIDBIndex = GType . Object <$> jsg "IDBIndex"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBKeyRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange Mozilla IDBKeyRange documentation>
+newtype IDBKeyRange = IDBKeyRange { unIDBKeyRange :: JSVal }
+
+instance PToJSVal IDBKeyRange where
+  pToJSVal = unIDBKeyRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBKeyRange where
+  pFromJSVal = IDBKeyRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBKeyRange where
+  toJSVal = return . unIDBKeyRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBKeyRange where
+  fromJSVal v = fmap IDBKeyRange <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBKeyRange where
+  makeObject = makeObject . unIDBKeyRange
+
+instance IsGObject IDBKeyRange where
+  typeGType _ = gTypeIDBKeyRange
+  {-# INLINE typeGType #-}
+
+gTypeIDBKeyRange :: JSM GType
+gTypeIDBKeyRange = GType . Object <$> jsg "IDBKeyRange"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBObjectStore".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore Mozilla IDBObjectStore documentation>
+newtype IDBObjectStore = IDBObjectStore { unIDBObjectStore :: JSVal }
+
+instance PToJSVal IDBObjectStore where
+  pToJSVal = unIDBObjectStore
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBObjectStore where
+  pFromJSVal = IDBObjectStore
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBObjectStore where
+  toJSVal = return . unIDBObjectStore
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBObjectStore where
+  fromJSVal v = fmap IDBObjectStore <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBObjectStore where
+  makeObject = makeObject . unIDBObjectStore
+
+instance IsGObject IDBObjectStore where
+  typeGType _ = gTypeIDBObjectStore
+  {-# INLINE typeGType #-}
+
+gTypeIDBObjectStore :: JSM GType
+gTypeIDBObjectStore = GType . Object <$> jsg "IDBObjectStore"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBOpenDBRequest".
+-- Base interface functions are in:
+--
+--     * "JSDOM.IDBRequest"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest Mozilla IDBOpenDBRequest documentation>
+newtype IDBOpenDBRequest = IDBOpenDBRequest { unIDBOpenDBRequest :: JSVal }
+
+instance PToJSVal IDBOpenDBRequest where
+  pToJSVal = unIDBOpenDBRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBOpenDBRequest where
+  pFromJSVal = IDBOpenDBRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBOpenDBRequest where
+  toJSVal = return . unIDBOpenDBRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBOpenDBRequest where
+  fromJSVal v = fmap IDBOpenDBRequest <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBOpenDBRequest where
+  makeObject = makeObject . unIDBOpenDBRequest
+
+instance IsIDBRequest IDBOpenDBRequest
+instance IsEventTarget IDBOpenDBRequest
+instance IsGObject IDBOpenDBRequest where
+  typeGType _ = gTypeIDBOpenDBRequest
+  {-# INLINE typeGType #-}
+
+gTypeIDBOpenDBRequest :: JSM GType
+gTypeIDBOpenDBRequest = GType . Object <$> jsg "IDBOpenDBRequest"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBRequest".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest Mozilla IDBRequest documentation>
+newtype IDBRequest = IDBRequest { unIDBRequest :: JSVal }
+
+instance PToJSVal IDBRequest where
+  pToJSVal = unIDBRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBRequest where
+  pFromJSVal = IDBRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBRequest where
+  toJSVal = return . unIDBRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBRequest where
+  fromJSVal v = fmap IDBRequest <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBRequest where
+  makeObject = makeObject . unIDBRequest
+
+class IsEventTarget o => IsIDBRequest o
+toIDBRequest :: IsIDBRequest o => o -> IDBRequest
+toIDBRequest = IDBRequest . coerce
+
+instance IsIDBRequest IDBRequest
+instance IsEventTarget IDBRequest
+instance IsGObject IDBRequest where
+  typeGType _ = gTypeIDBRequest
+  {-# INLINE typeGType #-}
+
+gTypeIDBRequest :: JSM GType
+gTypeIDBRequest = GType . Object <$> jsg "IDBRequest"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBTransaction".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction Mozilla IDBTransaction documentation>
+newtype IDBTransaction = IDBTransaction { unIDBTransaction :: JSVal }
+
+instance PToJSVal IDBTransaction where
+  pToJSVal = unIDBTransaction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBTransaction where
+  pFromJSVal = IDBTransaction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBTransaction where
+  toJSVal = return . unIDBTransaction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBTransaction where
+  fromJSVal v = fmap IDBTransaction <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBTransaction where
+  makeObject = makeObject . unIDBTransaction
+
+instance IsEventTarget IDBTransaction
+instance IsGObject IDBTransaction where
+  typeGType _ = gTypeIDBTransaction
+  {-# INLINE typeGType #-}
+
+gTypeIDBTransaction :: JSM GType
+gTypeIDBTransaction = GType . Object <$> jsg "IDBTransaction"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.IDBVersionChangeEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent Mozilla IDBVersionChangeEvent documentation>
+newtype IDBVersionChangeEvent = IDBVersionChangeEvent { unIDBVersionChangeEvent :: JSVal }
+
+instance PToJSVal IDBVersionChangeEvent where
+  pToJSVal = unIDBVersionChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBVersionChangeEvent where
+  pFromJSVal = IDBVersionChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBVersionChangeEvent where
+  toJSVal = return . unIDBVersionChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBVersionChangeEvent where
+  fromJSVal v = fmap IDBVersionChangeEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject IDBVersionChangeEvent where
+  makeObject = makeObject . unIDBVersionChangeEvent
+
+instance IsEvent IDBVersionChangeEvent
+instance IsGObject IDBVersionChangeEvent where
+  typeGType _ = gTypeIDBVersionChangeEvent
+  {-# INLINE typeGType #-}
+
+gTypeIDBVersionChangeEvent :: JSM GType
+gTypeIDBVersionChangeEvent = GType . Object <$> jsg "IDBVersionChangeEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ImageData".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation>
+newtype ImageData = ImageData { unImageData :: JSVal }
+
+instance PToJSVal ImageData where
+  pToJSVal = unImageData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ImageData where
+  pFromJSVal = ImageData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ImageData where
+  toJSVal = return . unImageData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ImageData where
+  fromJSVal v = fmap ImageData <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ImageData where
+  makeObject = makeObject . unImageData
+
+instance IsGObject ImageData where
+  typeGType _ = gTypeImageData
+  {-# INLINE typeGType #-}
+
+gTypeImageData :: JSM GType
+gTypeImageData = GType . Object <$> jsg "ImageData"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.InspectorFrontendHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost Mozilla InspectorFrontendHost documentation>
+newtype InspectorFrontendHost = InspectorFrontendHost { unInspectorFrontendHost :: JSVal }
+
+instance PToJSVal InspectorFrontendHost where
+  pToJSVal = unInspectorFrontendHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal InspectorFrontendHost where
+  pFromJSVal = InspectorFrontendHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal InspectorFrontendHost where
+  toJSVal = return . unInspectorFrontendHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal InspectorFrontendHost where
+  fromJSVal v = fmap InspectorFrontendHost <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject InspectorFrontendHost where
+  makeObject = makeObject . unInspectorFrontendHost
+
+instance IsGObject InspectorFrontendHost where
+  typeGType _ = gTypeInspectorFrontendHost
+  {-# INLINE typeGType #-}
+
+gTypeInspectorFrontendHost :: JSM GType
+gTypeInspectorFrontendHost = GType . Object <$> jsg "InspectorFrontendHost"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.InternalSettings".
+-- Base interface functions are in:
+--
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/InternalSettings Mozilla InternalSettings documentation>
+newtype InternalSettings = InternalSettings { unInternalSettings :: JSVal }
+
+instance PToJSVal InternalSettings where
+  pToJSVal = unInternalSettings
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal InternalSettings where
+  pFromJSVal = InternalSettings
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal InternalSettings where
+  toJSVal = return . unInternalSettings
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal InternalSettings where
+  fromJSVal v = fmap InternalSettings <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject InternalSettings where
+  makeObject = makeObject . unInternalSettings
+
+instance IsGObject InternalSettings where
+  typeGType _ = gTypeInternalSettings
+  {-# INLINE typeGType #-}
+
+gTypeInternalSettings :: JSM GType
+gTypeInternalSettings = GType . Object <$> jsg "InternalSettings"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Internals".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Internals Mozilla Internals documentation>
+newtype Internals = Internals { unInternals :: JSVal }
+
+instance PToJSVal Internals where
+  pToJSVal = unInternals
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Internals where
+  pFromJSVal = Internals
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Internals where
+  toJSVal = return . unInternals
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Internals where
+  fromJSVal v = fmap Internals <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Internals where
+  makeObject = makeObject . unInternals
+
+instance IsGObject Internals where
+  typeGType _ = gTypeInternals
+  {-# INLINE typeGType #-}
+
+gTypeInternals :: JSM GType
+gTypeInternals = GType . Object <$> jsg "Internals"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.KeyboardEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent Mozilla KeyboardEvent documentation>
+newtype KeyboardEvent = KeyboardEvent { unKeyboardEvent :: JSVal }
+
+instance PToJSVal KeyboardEvent where
+  pToJSVal = unKeyboardEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal KeyboardEvent where
+  pFromJSVal = KeyboardEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal KeyboardEvent where
+  toJSVal = return . unKeyboardEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal KeyboardEvent where
+  fromJSVal v = fmap KeyboardEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject KeyboardEvent where
+  makeObject = makeObject . unKeyboardEvent
+
+instance IsUIEvent KeyboardEvent
+instance IsEvent KeyboardEvent
+instance IsGObject KeyboardEvent where
+  typeGType _ = gTypeKeyboardEvent
+  {-# INLINE typeGType #-}
+
+gTypeKeyboardEvent :: JSM GType
+gTypeKeyboardEvent = GType . Object <$> jsg "KeyboardEvent"
+#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 "JSDOM.Location".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Location Mozilla Location documentation>
+newtype Location = Location { unLocation :: JSVal }
+
+instance PToJSVal Location where
+  pToJSVal = unLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Location where
+  pFromJSVal = Location
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Location where
+  toJSVal = return . unLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Location where
+  fromJSVal v = fmap Location <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Location where
+  makeObject = makeObject . unLocation
+
+instance IsGObject Location where
+  typeGType _ = gTypeLocation
+  {-# INLINE typeGType #-}
+
+gTypeLocation :: JSM GType
+gTypeLocation = GType . Object <$> jsg "Location"
+#else
+type IsLocation o = LocationClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MallocStatistics".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MallocStatistics Mozilla MallocStatistics documentation>
+newtype MallocStatistics = MallocStatistics { unMallocStatistics :: JSVal }
+
+instance PToJSVal MallocStatistics where
+  pToJSVal = unMallocStatistics
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MallocStatistics where
+  pFromJSVal = MallocStatistics
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MallocStatistics where
+  toJSVal = return . unMallocStatistics
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MallocStatistics where
+  fromJSVal v = fmap MallocStatistics <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MallocStatistics where
+  makeObject = makeObject . unMallocStatistics
+
+instance IsGObject MallocStatistics where
+  typeGType _ = gTypeMallocStatistics
+  {-# INLINE typeGType #-}
+
+gTypeMallocStatistics :: JSM GType
+gTypeMallocStatistics = GType . Object <$> jsg "MallocStatistics"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaController".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation>
+newtype MediaController = MediaController { unMediaController :: JSVal }
+
+instance PToJSVal MediaController where
+  pToJSVal = unMediaController
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaController where
+  pFromJSVal = MediaController
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaController where
+  toJSVal = return . unMediaController
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaController where
+  fromJSVal v = fmap MediaController <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaController where
+  makeObject = makeObject . unMediaController
+
+instance IsEventTarget MediaController
+instance IsGObject MediaController where
+  typeGType _ = gTypeMediaController
+  {-# INLINE typeGType #-}
+
+gTypeMediaController :: JSM GType
+gTypeMediaController = GType . Object <$> jsg "MediaController"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaControlsHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost Mozilla MediaControlsHost documentation>
+newtype MediaControlsHost = MediaControlsHost { unMediaControlsHost :: JSVal }
+
+instance PToJSVal MediaControlsHost where
+  pToJSVal = unMediaControlsHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaControlsHost where
+  pFromJSVal = MediaControlsHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaControlsHost where
+  toJSVal = return . unMediaControlsHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaControlsHost where
+  fromJSVal v = fmap MediaControlsHost <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaControlsHost where
+  makeObject = makeObject . unMediaControlsHost
+
+instance IsGObject MediaControlsHost where
+  typeGType _ = gTypeMediaControlsHost
+  {-# INLINE typeGType #-}
+
+gTypeMediaControlsHost :: JSM GType
+gTypeMediaControlsHost = GType . Object <$> jsg "MediaControlsHost"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaElementAudioSourceNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode Mozilla MediaElementAudioSourceNode documentation>
+newtype MediaElementAudioSourceNode = MediaElementAudioSourceNode { unMediaElementAudioSourceNode :: JSVal }
+
+instance PToJSVal MediaElementAudioSourceNode where
+  pToJSVal = unMediaElementAudioSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaElementAudioSourceNode where
+  pFromJSVal = MediaElementAudioSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaElementAudioSourceNode where
+  toJSVal = return . unMediaElementAudioSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaElementAudioSourceNode where
+  fromJSVal v = fmap MediaElementAudioSourceNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaElementAudioSourceNode where
+  makeObject = makeObject . unMediaElementAudioSourceNode
+
+instance IsAudioNode MediaElementAudioSourceNode
+instance IsEventTarget MediaElementAudioSourceNode
+instance IsGObject MediaElementAudioSourceNode where
+  typeGType _ = gTypeMediaElementAudioSourceNode
+  {-# INLINE typeGType #-}
+
+gTypeMediaElementAudioSourceNode :: JSM GType
+gTypeMediaElementAudioSourceNode = GType . Object <$> jsg "MediaElementAudioSourceNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaError Mozilla MediaError documentation>
+newtype MediaError = MediaError { unMediaError :: JSVal }
+
+instance PToJSVal MediaError where
+  pToJSVal = unMediaError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaError where
+  pFromJSVal = MediaError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaError where
+  toJSVal = return . unMediaError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaError where
+  fromJSVal v = fmap MediaError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaError where
+  makeObject = makeObject . unMediaError
+
+instance IsGObject MediaError where
+  typeGType _ = gTypeMediaError
+  {-# INLINE typeGType #-}
+
+gTypeMediaError :: JSM GType
+gTypeMediaError = GType . Object <$> jsg "MediaError"
+#else
+type IsMediaError o = MediaErrorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaKeyError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError Mozilla WebKitMediaKeyError documentation>
+newtype MediaKeyError = MediaKeyError { unMediaKeyError :: JSVal }
+
+instance PToJSVal MediaKeyError where
+  pToJSVal = unMediaKeyError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyError where
+  pFromJSVal = MediaKeyError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyError where
+  toJSVal = return . unMediaKeyError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyError where
+  fromJSVal v = fmap MediaKeyError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeyError where
+  makeObject = makeObject . unMediaKeyError
+
+instance IsGObject MediaKeyError where
+  typeGType _ = gTypeMediaKeyError
+  {-# INLINE typeGType #-}
+
+gTypeMediaKeyError :: JSM GType
+gTypeMediaKeyError = GType . Object <$> jsg "WebKitMediaKeyError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaKeyEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyEvent Mozilla MediaKeyEvent documentation>
+newtype MediaKeyEvent = MediaKeyEvent { unMediaKeyEvent :: JSVal }
+
+instance PToJSVal MediaKeyEvent where
+  pToJSVal = unMediaKeyEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyEvent where
+  pFromJSVal = MediaKeyEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyEvent where
+  toJSVal = return . unMediaKeyEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyEvent where
+  fromJSVal v = fmap MediaKeyEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeyEvent where
+  makeObject = makeObject . unMediaKeyEvent
+
+instance IsEvent MediaKeyEvent
+instance IsGObject MediaKeyEvent where
+  typeGType _ = gTypeMediaKeyEvent
+  {-# INLINE typeGType #-}
+
+gTypeMediaKeyEvent :: JSM GType
+gTypeMediaKeyEvent = GType . Object <$> jsg "MediaKeyEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaKeyMessageEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation>
+newtype MediaKeyMessageEvent = MediaKeyMessageEvent { unMediaKeyMessageEvent :: JSVal }
+
+instance PToJSVal MediaKeyMessageEvent where
+  pToJSVal = unMediaKeyMessageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyMessageEvent where
+  pFromJSVal = MediaKeyMessageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyMessageEvent where
+  toJSVal = return . unMediaKeyMessageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyMessageEvent where
+  fromJSVal v = fmap MediaKeyMessageEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeyMessageEvent where
+  makeObject = makeObject . unMediaKeyMessageEvent
+
+instance IsEvent MediaKeyMessageEvent
+instance IsGObject MediaKeyMessageEvent where
+  typeGType _ = gTypeMediaKeyMessageEvent
+  {-# INLINE typeGType #-}
+
+gTypeMediaKeyMessageEvent :: JSM GType
+gTypeMediaKeyMessageEvent = GType . Object <$> jsg "WebKitMediaKeyMessageEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaKeyNeededEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyNeededEvent Mozilla MediaKeyNeededEvent documentation>
+newtype MediaKeyNeededEvent = MediaKeyNeededEvent { unMediaKeyNeededEvent :: JSVal }
+
+instance PToJSVal MediaKeyNeededEvent where
+  pToJSVal = unMediaKeyNeededEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyNeededEvent where
+  pFromJSVal = MediaKeyNeededEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyNeededEvent where
+  toJSVal = return . unMediaKeyNeededEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyNeededEvent where
+  fromJSVal v = fmap MediaKeyNeededEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeyNeededEvent where
+  makeObject = makeObject . unMediaKeyNeededEvent
+
+instance IsEvent MediaKeyNeededEvent
+instance IsGObject MediaKeyNeededEvent where
+  typeGType _ = gTypeMediaKeyNeededEvent
+  {-# INLINE typeGType #-}
+
+gTypeMediaKeyNeededEvent :: JSM GType
+gTypeMediaKeyNeededEvent = GType . Object <$> jsg "MediaKeyNeededEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaKeySession".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession Mozilla WebKitMediaKeySession documentation>
+newtype MediaKeySession = MediaKeySession { unMediaKeySession :: JSVal }
+
+instance PToJSVal MediaKeySession where
+  pToJSVal = unMediaKeySession
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeySession where
+  pFromJSVal = MediaKeySession
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeySession where
+  toJSVal = return . unMediaKeySession
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeySession where
+  fromJSVal v = fmap MediaKeySession <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeySession where
+  makeObject = makeObject . unMediaKeySession
+
+instance IsEventTarget MediaKeySession
+instance IsGObject MediaKeySession where
+  typeGType _ = gTypeMediaKeySession
+  {-# INLINE typeGType #-}
+
+gTypeMediaKeySession :: JSM GType
+gTypeMediaKeySession = GType . Object <$> jsg "WebKitMediaKeySession"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaKeys".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation>
+newtype MediaKeys = MediaKeys { unMediaKeys :: JSVal }
+
+instance PToJSVal MediaKeys where
+  pToJSVal = unMediaKeys
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeys where
+  pFromJSVal = MediaKeys
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeys where
+  toJSVal = return . unMediaKeys
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeys where
+  fromJSVal v = fmap MediaKeys <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaKeys where
+  makeObject = makeObject . unMediaKeys
+
+instance IsGObject MediaKeys where
+  typeGType _ = gTypeMediaKeys
+  {-# INLINE typeGType #-}
+
+gTypeMediaKeys :: JSM GType
+gTypeMediaKeys = GType . Object <$> jsg "WebKitMediaKeys"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaList Mozilla MediaList documentation>
+newtype MediaList = MediaList { unMediaList :: JSVal }
+
+instance PToJSVal MediaList where
+  pToJSVal = unMediaList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaList where
+  pFromJSVal = MediaList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaList where
+  toJSVal = return . unMediaList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaList where
+  fromJSVal v = fmap MediaList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaList where
+  makeObject = makeObject . unMediaList
+
+instance IsGObject MediaList where
+  typeGType _ = gTypeMediaList
+  {-# INLINE typeGType #-}
+
+gTypeMediaList :: JSM GType
+gTypeMediaList = GType . Object <$> jsg "MediaList"
+#else
+type IsMediaList o = MediaListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaQueryList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList Mozilla MediaQueryList documentation>
+newtype MediaQueryList = MediaQueryList { unMediaQueryList :: JSVal }
+
+instance PToJSVal MediaQueryList where
+  pToJSVal = unMediaQueryList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaQueryList where
+  pFromJSVal = MediaQueryList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaQueryList where
+  toJSVal = return . unMediaQueryList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaQueryList where
+  fromJSVal v = fmap MediaQueryList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaQueryList where
+  makeObject = makeObject . unMediaQueryList
+
+instance IsGObject MediaQueryList where
+  typeGType _ = gTypeMediaQueryList
+  {-# INLINE typeGType #-}
+
+gTypeMediaQueryList :: JSM GType
+gTypeMediaQueryList = GType . Object <$> jsg "MediaQueryList"
+#else
+type IsMediaQueryList o = MediaQueryListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaSource".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation>
+newtype MediaSource = MediaSource { unMediaSource :: JSVal }
+
+instance PToJSVal MediaSource where
+  pToJSVal = unMediaSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaSource where
+  pFromJSVal = MediaSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaSource where
+  toJSVal = return . unMediaSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaSource where
+  fromJSVal v = fmap MediaSource <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaSource where
+  makeObject = makeObject . unMediaSource
+
+instance IsEventTarget MediaSource
+instance IsGObject MediaSource where
+  typeGType _ = gTypeMediaSource
+  {-# INLINE typeGType #-}
+
+gTypeMediaSource :: JSM GType
+gTypeMediaSource = GType . Object <$> jsg "MediaSource"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaSourceStates".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceStates Mozilla MediaSourceStates documentation>
+newtype MediaSourceStates = MediaSourceStates { unMediaSourceStates :: JSVal }
+
+instance PToJSVal MediaSourceStates where
+  pToJSVal = unMediaSourceStates
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaSourceStates where
+  pFromJSVal = MediaSourceStates
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaSourceStates where
+  toJSVal = return . unMediaSourceStates
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaSourceStates where
+  fromJSVal v = fmap MediaSourceStates <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaSourceStates where
+  makeObject = makeObject . unMediaSourceStates
+
+instance IsGObject MediaSourceStates where
+  typeGType _ = gTypeMediaSourceStates
+  {-# INLINE typeGType #-}
+
+gTypeMediaSourceStates :: JSM GType
+gTypeMediaSourceStates = GType . Object <$> jsg "MediaSourceStates"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaStream".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation>
+newtype MediaStream = MediaStream { unMediaStream :: JSVal }
+
+instance PToJSVal MediaStream where
+  pToJSVal = unMediaStream
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStream where
+  pFromJSVal = MediaStream
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStream where
+  toJSVal = return . unMediaStream
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStream where
+  fromJSVal v = fmap MediaStream <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStream where
+  makeObject = makeObject . unMediaStream
+
+instance IsEventTarget MediaStream
+instance IsGObject MediaStream where
+  typeGType _ = gTypeMediaStream
+  {-# INLINE typeGType #-}
+
+gTypeMediaStream :: JSM GType
+gTypeMediaStream = GType . Object <$> jsg "webkitMediaStream"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaStreamAudioDestinationNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode Mozilla MediaStreamAudioDestinationNode documentation>
+newtype MediaStreamAudioDestinationNode = MediaStreamAudioDestinationNode { unMediaStreamAudioDestinationNode :: JSVal }
+
+instance PToJSVal MediaStreamAudioDestinationNode where
+  pToJSVal = unMediaStreamAudioDestinationNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamAudioDestinationNode where
+  pFromJSVal = MediaStreamAudioDestinationNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamAudioDestinationNode where
+  toJSVal = return . unMediaStreamAudioDestinationNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamAudioDestinationNode where
+  fromJSVal v = fmap MediaStreamAudioDestinationNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamAudioDestinationNode where
+  makeObject = makeObject . unMediaStreamAudioDestinationNode
+
+instance IsAudioNode MediaStreamAudioDestinationNode
+instance IsEventTarget MediaStreamAudioDestinationNode
+instance IsGObject MediaStreamAudioDestinationNode where
+  typeGType _ = gTypeMediaStreamAudioDestinationNode
+  {-# INLINE typeGType #-}
+
+gTypeMediaStreamAudioDestinationNode :: JSM GType
+gTypeMediaStreamAudioDestinationNode = GType . Object <$> jsg "MediaStreamAudioDestinationNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaStreamAudioSourceNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode Mozilla MediaStreamAudioSourceNode documentation>
+newtype MediaStreamAudioSourceNode = MediaStreamAudioSourceNode { unMediaStreamAudioSourceNode :: JSVal }
+
+instance PToJSVal MediaStreamAudioSourceNode where
+  pToJSVal = unMediaStreamAudioSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamAudioSourceNode where
+  pFromJSVal = MediaStreamAudioSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamAudioSourceNode where
+  toJSVal = return . unMediaStreamAudioSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamAudioSourceNode where
+  fromJSVal v = fmap MediaStreamAudioSourceNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamAudioSourceNode where
+  makeObject = makeObject . unMediaStreamAudioSourceNode
+
+instance IsAudioNode MediaStreamAudioSourceNode
+instance IsEventTarget MediaStreamAudioSourceNode
+instance IsGObject MediaStreamAudioSourceNode where
+  typeGType _ = gTypeMediaStreamAudioSourceNode
+  {-# INLINE typeGType #-}
+
+gTypeMediaStreamAudioSourceNode :: JSM GType
+gTypeMediaStreamAudioSourceNode = GType . Object <$> jsg "MediaStreamAudioSourceNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaStreamCapabilities".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamCapabilities Mozilla MediaStreamCapabilities documentation>
+newtype MediaStreamCapabilities = MediaStreamCapabilities { unMediaStreamCapabilities :: JSVal }
+
+instance PToJSVal MediaStreamCapabilities where
+  pToJSVal = unMediaStreamCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamCapabilities where
+  pFromJSVal = MediaStreamCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamCapabilities where
+  toJSVal = return . unMediaStreamCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamCapabilities where
+  fromJSVal v = fmap MediaStreamCapabilities <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamCapabilities where
+  makeObject = makeObject . unMediaStreamCapabilities
+
+class IsGObject o => IsMediaStreamCapabilities o
+toMediaStreamCapabilities :: IsMediaStreamCapabilities o => o -> MediaStreamCapabilities
+toMediaStreamCapabilities = MediaStreamCapabilities . coerce
+
+instance IsMediaStreamCapabilities MediaStreamCapabilities
+instance IsGObject MediaStreamCapabilities where
+  typeGType _ = gTypeMediaStreamCapabilities
+  {-# INLINE typeGType #-}
+
+gTypeMediaStreamCapabilities :: JSM GType
+gTypeMediaStreamCapabilities = GType . Object <$> jsg "MediaStreamCapabilities"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaStreamEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent Mozilla MediaStreamEvent documentation>
+newtype MediaStreamEvent = MediaStreamEvent { unMediaStreamEvent :: JSVal }
+
+instance PToJSVal MediaStreamEvent where
+  pToJSVal = unMediaStreamEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamEvent where
+  pFromJSVal = MediaStreamEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamEvent where
+  toJSVal = return . unMediaStreamEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamEvent where
+  fromJSVal v = fmap MediaStreamEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamEvent where
+  makeObject = makeObject . unMediaStreamEvent
+
+instance IsEvent MediaStreamEvent
+instance IsGObject MediaStreamEvent where
+  typeGType _ = gTypeMediaStreamEvent
+  {-# INLINE typeGType #-}
+
+gTypeMediaStreamEvent :: JSM GType
+gTypeMediaStreamEvent = GType . Object <$> jsg "MediaStreamEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaStreamTrack".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack Mozilla MediaStreamTrack documentation>
+newtype MediaStreamTrack = MediaStreamTrack { unMediaStreamTrack :: JSVal }
+
+instance PToJSVal MediaStreamTrack where
+  pToJSVal = unMediaStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamTrack where
+  pFromJSVal = MediaStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamTrack where
+  toJSVal = return . unMediaStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamTrack where
+  fromJSVal v = fmap MediaStreamTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamTrack where
+  makeObject = makeObject . unMediaStreamTrack
+
+class IsEventTarget o => IsMediaStreamTrack o
+toMediaStreamTrack :: IsMediaStreamTrack o => o -> MediaStreamTrack
+toMediaStreamTrack = MediaStreamTrack . coerce
+
+instance IsMediaStreamTrack MediaStreamTrack
+instance IsEventTarget MediaStreamTrack
+instance IsGObject MediaStreamTrack where
+  typeGType _ = gTypeMediaStreamTrack
+  {-# INLINE typeGType #-}
+
+gTypeMediaStreamTrack :: JSM GType
+gTypeMediaStreamTrack = GType . Object <$> jsg "MediaStreamTrack"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaStreamTrackEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent Mozilla MediaStreamTrackEvent documentation>
+newtype MediaStreamTrackEvent = MediaStreamTrackEvent { unMediaStreamTrackEvent :: JSVal }
+
+instance PToJSVal MediaStreamTrackEvent where
+  pToJSVal = unMediaStreamTrackEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamTrackEvent where
+  pFromJSVal = MediaStreamTrackEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamTrackEvent where
+  toJSVal = return . unMediaStreamTrackEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamTrackEvent where
+  fromJSVal v = fmap MediaStreamTrackEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaStreamTrackEvent where
+  makeObject = makeObject . unMediaStreamTrackEvent
+
+instance IsEvent MediaStreamTrackEvent
+instance IsGObject MediaStreamTrackEvent where
+  typeGType _ = gTypeMediaStreamTrackEvent
+  {-# INLINE typeGType #-}
+
+gTypeMediaStreamTrackEvent :: JSM GType
+gTypeMediaStreamTrackEvent = GType . Object <$> jsg "MediaStreamTrackEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaTrackConstraint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraint Mozilla MediaTrackConstraint documentation>
+newtype MediaTrackConstraint = MediaTrackConstraint { unMediaTrackConstraint :: JSVal }
+
+instance PToJSVal MediaTrackConstraint where
+  pToJSVal = unMediaTrackConstraint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraint where
+  pFromJSVal = MediaTrackConstraint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraint where
+  toJSVal = return . unMediaTrackConstraint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraint where
+  fromJSVal v = fmap MediaTrackConstraint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaTrackConstraint where
+  makeObject = makeObject . unMediaTrackConstraint
+
+instance IsGObject MediaTrackConstraint where
+  typeGType _ = gTypeMediaTrackConstraint
+  {-# INLINE typeGType #-}
+
+gTypeMediaTrackConstraint :: JSM GType
+gTypeMediaTrackConstraint = GType . Object <$> jsg "MediaTrackConstraint"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaTrackConstraintSet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraintSet Mozilla MediaTrackConstraintSet documentation>
+newtype MediaTrackConstraintSet = MediaTrackConstraintSet { unMediaTrackConstraintSet :: JSVal }
+
+instance PToJSVal MediaTrackConstraintSet where
+  pToJSVal = unMediaTrackConstraintSet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraintSet where
+  pFromJSVal = MediaTrackConstraintSet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraintSet where
+  toJSVal = return . unMediaTrackConstraintSet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraintSet where
+  fromJSVal v = fmap MediaTrackConstraintSet <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaTrackConstraintSet where
+  makeObject = makeObject . unMediaTrackConstraintSet
+
+instance IsGObject MediaTrackConstraintSet where
+  typeGType _ = gTypeMediaTrackConstraintSet
+  {-# INLINE typeGType #-}
+
+gTypeMediaTrackConstraintSet :: JSM GType
+gTypeMediaTrackConstraintSet = GType . Object <$> jsg "MediaTrackConstraintSet"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MediaTrackConstraints".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints Mozilla MediaTrackConstraints documentation>
+newtype MediaTrackConstraints = MediaTrackConstraints { unMediaTrackConstraints :: JSVal }
+
+instance PToJSVal MediaTrackConstraints where
+  pToJSVal = unMediaTrackConstraints
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraints where
+  pFromJSVal = MediaTrackConstraints
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraints where
+  toJSVal = return . unMediaTrackConstraints
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraints where
+  fromJSVal v = fmap MediaTrackConstraints <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MediaTrackConstraints where
+  makeObject = makeObject . unMediaTrackConstraints
+
+instance IsGObject MediaTrackConstraints where
+  typeGType _ = gTypeMediaTrackConstraints
+  {-# INLINE typeGType #-}
+
+gTypeMediaTrackConstraints :: JSM GType
+gTypeMediaTrackConstraints = GType . Object <$> jsg "MediaTrackConstraints"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MemoryInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MemoryInfo Mozilla MemoryInfo documentation>
+newtype MemoryInfo = MemoryInfo { unMemoryInfo :: JSVal }
+
+instance PToJSVal MemoryInfo where
+  pToJSVal = unMemoryInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MemoryInfo where
+  pFromJSVal = MemoryInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MemoryInfo where
+  toJSVal = return . unMemoryInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MemoryInfo where
+  fromJSVal v = fmap MemoryInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MemoryInfo where
+  makeObject = makeObject . unMemoryInfo
+
+instance IsGObject MemoryInfo where
+  typeGType _ = gTypeMemoryInfo
+  {-# INLINE typeGType #-}
+
+gTypeMemoryInfo :: JSM GType
+gTypeMemoryInfo = GType . Object <$> jsg "MemoryInfo"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MessageChannel".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation>
+newtype MessageChannel = MessageChannel { unMessageChannel :: JSVal }
+
+instance PToJSVal MessageChannel where
+  pToJSVal = unMessageChannel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessageChannel where
+  pFromJSVal = MessageChannel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessageChannel where
+  toJSVal = return . unMessageChannel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessageChannel where
+  fromJSVal v = fmap MessageChannel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MessageChannel where
+  makeObject = makeObject . unMessageChannel
+
+instance IsGObject MessageChannel where
+  typeGType _ = gTypeMessageChannel
+  {-# INLINE typeGType #-}
+
+gTypeMessageChannel :: JSM GType
+gTypeMessageChannel = GType . Object <$> jsg "MessageChannel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MessageEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation>
+newtype MessageEvent = MessageEvent { unMessageEvent :: JSVal }
+
+instance PToJSVal MessageEvent where
+  pToJSVal = unMessageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessageEvent where
+  pFromJSVal = MessageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessageEvent where
+  toJSVal = return . unMessageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessageEvent where
+  fromJSVal v = fmap MessageEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MessageEvent where
+  makeObject = makeObject . unMessageEvent
+
+instance IsEvent MessageEvent
+instance IsGObject MessageEvent where
+  typeGType _ = gTypeMessageEvent
+  {-# INLINE typeGType #-}
+
+gTypeMessageEvent :: JSM GType
+gTypeMessageEvent = GType . Object <$> jsg "MessageEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MessagePort".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort Mozilla MessagePort documentation>
+newtype MessagePort = MessagePort { unMessagePort :: JSVal }
+
+instance PToJSVal MessagePort where
+  pToJSVal = unMessagePort
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessagePort where
+  pFromJSVal = MessagePort
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessagePort where
+  toJSVal = return . unMessagePort
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessagePort where
+  fromJSVal v = fmap MessagePort <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MessagePort where
+  makeObject = makeObject . unMessagePort
+
+instance IsEventTarget MessagePort
+instance IsGObject MessagePort where
+  typeGType _ = gTypeMessagePort
+  {-# INLINE typeGType #-}
+
+gTypeMessagePort :: JSM GType
+gTypeMessagePort = GType . Object <$> jsg "MessagePort"
+#else
+type IsMessagePort o = MessagePortClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MimeType".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MimeType Mozilla MimeType documentation>
+newtype MimeType = MimeType { unMimeType :: JSVal }
+
+instance PToJSVal MimeType where
+  pToJSVal = unMimeType
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MimeType where
+  pFromJSVal = MimeType
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MimeType where
+  toJSVal = return . unMimeType
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MimeType where
+  fromJSVal v = fmap MimeType <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MimeType where
+  makeObject = makeObject . unMimeType
+
+instance IsGObject MimeType where
+  typeGType _ = gTypeMimeType
+  {-# INLINE typeGType #-}
+
+gTypeMimeType :: JSM GType
+gTypeMimeType = GType . Object <$> jsg "MimeType"
+#else
+type IsMimeType o = MimeTypeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MimeTypeArray".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray Mozilla MimeTypeArray documentation>
+newtype MimeTypeArray = MimeTypeArray { unMimeTypeArray :: JSVal }
+
+instance PToJSVal MimeTypeArray where
+  pToJSVal = unMimeTypeArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MimeTypeArray where
+  pFromJSVal = MimeTypeArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MimeTypeArray where
+  toJSVal = return . unMimeTypeArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MimeTypeArray where
+  fromJSVal v = fmap MimeTypeArray <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MimeTypeArray where
+  makeObject = makeObject . unMimeTypeArray
+
+instance IsGObject MimeTypeArray where
+  typeGType _ = gTypeMimeTypeArray
+  {-# INLINE typeGType #-}
+
+gTypeMimeTypeArray :: JSM GType
+gTypeMimeTypeArray = GType . Object <$> jsg "MimeTypeArray"
+#else
+type IsMimeTypeArray o = MimeTypeArrayClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MouseEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent Mozilla MouseEvent documentation>
+newtype MouseEvent = MouseEvent { unMouseEvent :: JSVal }
+
+instance PToJSVal MouseEvent where
+  pToJSVal = unMouseEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MouseEvent where
+  pFromJSVal = MouseEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MouseEvent where
+  toJSVal = return . unMouseEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MouseEvent where
+  fromJSVal v = fmap MouseEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MouseEvent where
+  makeObject = makeObject . unMouseEvent
+
+class IsUIEvent o => IsMouseEvent o
+toMouseEvent :: IsMouseEvent o => o -> MouseEvent
+toMouseEvent = MouseEvent . coerce
+
+instance IsMouseEvent MouseEvent
+instance IsUIEvent MouseEvent
+instance IsEvent MouseEvent
+instance IsGObject MouseEvent where
+  typeGType _ = gTypeMouseEvent
+  {-# INLINE typeGType #-}
+
+gTypeMouseEvent :: JSM GType
+gTypeMouseEvent = GType . Object <$> jsg "MouseEvent"
+#else
+type IsMouseEvent o = MouseEventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MutationEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent Mozilla MutationEvent documentation>
+newtype MutationEvent = MutationEvent { unMutationEvent :: JSVal }
+
+instance PToJSVal MutationEvent where
+  pToJSVal = unMutationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationEvent where
+  pFromJSVal = MutationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationEvent where
+  toJSVal = return . unMutationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationEvent where
+  fromJSVal v = fmap MutationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MutationEvent where
+  makeObject = makeObject . unMutationEvent
+
+instance IsEvent MutationEvent
+instance IsGObject MutationEvent where
+  typeGType _ = gTypeMutationEvent
+  {-# INLINE typeGType #-}
+
+gTypeMutationEvent :: JSM GType
+gTypeMutationEvent = GType . Object <$> jsg "MutationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MutationObserver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation>
+newtype MutationObserver = MutationObserver { unMutationObserver :: JSVal }
+
+instance PToJSVal MutationObserver where
+  pToJSVal = unMutationObserver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationObserver where
+  pFromJSVal = MutationObserver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationObserver where
+  toJSVal = return . unMutationObserver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationObserver where
+  fromJSVal v = fmap MutationObserver <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MutationObserver where
+  makeObject = makeObject . unMutationObserver
+
+instance IsGObject MutationObserver where
+  typeGType _ = gTypeMutationObserver
+  {-# INLINE typeGType #-}
+
+gTypeMutationObserver :: JSM GType
+gTypeMutationObserver = GType . Object <$> jsg "MutationObserver"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.MutationRecord".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord Mozilla MutationRecord documentation>
+newtype MutationRecord = MutationRecord { unMutationRecord :: JSVal }
+
+instance PToJSVal MutationRecord where
+  pToJSVal = unMutationRecord
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationRecord where
+  pFromJSVal = MutationRecord
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationRecord where
+  toJSVal = return . unMutationRecord
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationRecord where
+  fromJSVal v = fmap MutationRecord <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject MutationRecord where
+  makeObject = makeObject . unMutationRecord
+
+instance IsGObject MutationRecord where
+  typeGType _ = gTypeMutationRecord
+  {-# INLINE typeGType #-}
+
+gTypeMutationRecord :: JSM GType
+gTypeMutationRecord = GType . Object <$> jsg "MutationRecord"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.NamedNodeMap".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap Mozilla NamedNodeMap documentation>
+newtype NamedNodeMap = NamedNodeMap { unNamedNodeMap :: JSVal }
+
+instance PToJSVal NamedNodeMap where
+  pToJSVal = unNamedNodeMap
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NamedNodeMap where
+  pFromJSVal = NamedNodeMap
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NamedNodeMap where
+  toJSVal = return . unNamedNodeMap
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NamedNodeMap where
+  fromJSVal v = fmap NamedNodeMap <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NamedNodeMap where
+  makeObject = makeObject . unNamedNodeMap
+
+instance IsGObject NamedNodeMap where
+  typeGType _ = gTypeNamedNodeMap
+  {-# INLINE typeGType #-}
+
+gTypeNamedNodeMap :: JSM GType
+gTypeNamedNodeMap = GType . Object <$> jsg "NamedNodeMap"
+#else
+type IsNamedNodeMap o = NamedNodeMapClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Navigator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Navigator Mozilla Navigator documentation>
+newtype Navigator = Navigator { unNavigator :: JSVal }
+
+instance PToJSVal Navigator where
+  pToJSVal = unNavigator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Navigator where
+  pFromJSVal = Navigator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Navigator where
+  toJSVal = return . unNavigator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Navigator where
+  fromJSVal v = fmap Navigator <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Navigator where
+  makeObject = makeObject . unNavigator
+
+instance IsGObject Navigator where
+  typeGType _ = gTypeNavigator
+  {-# INLINE typeGType #-}
+
+gTypeNavigator :: JSM GType
+gTypeNavigator = GType . Object <$> jsg "Navigator"
+#else
+type IsNavigator o = NavigatorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.NavigatorUserMediaError".
+-- Base interface functions are in:
+--
+--     * "JSDOM.DOMError"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError Mozilla NavigatorUserMediaError documentation>
+newtype NavigatorUserMediaError = NavigatorUserMediaError { unNavigatorUserMediaError :: JSVal }
+
+instance PToJSVal NavigatorUserMediaError where
+  pToJSVal = unNavigatorUserMediaError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NavigatorUserMediaError where
+  pFromJSVal = NavigatorUserMediaError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NavigatorUserMediaError where
+  toJSVal = return . unNavigatorUserMediaError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NavigatorUserMediaError where
+  fromJSVal v = fmap NavigatorUserMediaError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NavigatorUserMediaError where
+  makeObject = makeObject . unNavigatorUserMediaError
+
+instance IsDOMError NavigatorUserMediaError
+instance IsGObject NavigatorUserMediaError where
+  typeGType _ = gTypeNavigatorUserMediaError
+  {-# INLINE typeGType #-}
+
+gTypeNavigatorUserMediaError :: JSM GType
+gTypeNavigatorUserMediaError = GType . Object <$> jsg "NavigatorUserMediaError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Node".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Node Mozilla Node documentation>
+newtype Node = Node { unNode :: JSVal }
+
+instance PToJSVal Node where
+  pToJSVal = unNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Node where
+  pFromJSVal = Node
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Node where
+  toJSVal = return . unNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Node where
+  fromJSVal v = fmap Node <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Node where
+  makeObject = makeObject . unNode
+
+class IsEventTarget o => IsNode o
+toNode :: IsNode o => o -> Node
+toNode = Node . coerce
+
+instance IsNode Node
+instance IsEventTarget Node
+instance IsGObject Node where
+  typeGType _ = gTypeNode
+  {-# INLINE typeGType #-}
+
+gTypeNode :: JSM GType
+gTypeNode = GType . Object <$> jsg "Node"
+#else
+type IsNode o = NodeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.NodeFilter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation>
+newtype NodeFilter = NodeFilter { unNodeFilter :: JSVal }
+
+instance PToJSVal NodeFilter where
+  pToJSVal = unNodeFilter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeFilter where
+  pFromJSVal = NodeFilter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeFilter where
+  toJSVal = return . unNodeFilter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeFilter where
+  fromJSVal v = fmap NodeFilter <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NodeFilter where
+  makeObject = makeObject . unNodeFilter
+
+instance IsGObject NodeFilter where
+  typeGType _ = gTypeNodeFilter
+  {-# INLINE typeGType #-}
+
+gTypeNodeFilter :: JSM GType
+gTypeNodeFilter = GType . Object <$> jsg "NodeFilter"
+#else
+type IsNodeFilter o = NodeFilterClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.NodeIterator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator Mozilla NodeIterator documentation>
+newtype NodeIterator = NodeIterator { unNodeIterator :: JSVal }
+
+instance PToJSVal NodeIterator where
+  pToJSVal = unNodeIterator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeIterator where
+  pFromJSVal = NodeIterator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeIterator where
+  toJSVal = return . unNodeIterator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeIterator where
+  fromJSVal v = fmap NodeIterator <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NodeIterator where
+  makeObject = makeObject . unNodeIterator
+
+instance IsGObject NodeIterator where
+  typeGType _ = gTypeNodeIterator
+  {-# INLINE typeGType #-}
+
+gTypeNodeIterator :: JSM GType
+gTypeNodeIterator = GType . Object <$> jsg "NodeIterator"
+#else
+type IsNodeIterator o = NodeIteratorClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.NodeList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeList Mozilla NodeList documentation>
+newtype NodeList = NodeList { unNodeList :: JSVal }
+
+instance PToJSVal NodeList where
+  pToJSVal = unNodeList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeList where
+  pFromJSVal = NodeList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeList where
+  toJSVal = return . unNodeList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeList where
+  fromJSVal v = fmap NodeList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NodeList where
+  makeObject = makeObject . unNodeList
+
+class IsGObject o => IsNodeList o
+toNodeList :: IsNodeList o => o -> NodeList
+toNodeList = NodeList . coerce
+
+instance IsNodeList NodeList
+instance IsGObject NodeList where
+  typeGType _ = gTypeNodeList
+  {-# INLINE typeGType #-}
+
+gTypeNodeList :: JSM GType
+gTypeNodeList = GType . Object <$> jsg "NodeList"
+#else
+type IsNodeList o = NodeListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Notification".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Notification Mozilla Notification documentation>
+newtype Notification = Notification { unNotification :: JSVal }
+
+instance PToJSVal Notification where
+  pToJSVal = unNotification
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Notification where
+  pFromJSVal = Notification
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Notification where
+  toJSVal = return . unNotification
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Notification where
+  fromJSVal v = fmap Notification <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Notification where
+  makeObject = makeObject . unNotification
+
+instance IsEventTarget Notification
+instance IsGObject Notification where
+  typeGType _ = gTypeNotification
+  {-# INLINE typeGType #-}
+
+gTypeNotification :: JSM GType
+gTypeNotification = GType . Object <$> jsg "Notification"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.NotificationCenter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NotificationCenter Mozilla NotificationCenter documentation>
+newtype NotificationCenter = NotificationCenter { unNotificationCenter :: JSVal }
+
+instance PToJSVal NotificationCenter where
+  pToJSVal = unNotificationCenter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NotificationCenter where
+  pFromJSVal = NotificationCenter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NotificationCenter where
+  toJSVal = return . unNotificationCenter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NotificationCenter where
+  fromJSVal v = fmap NotificationCenter <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject NotificationCenter where
+  makeObject = makeObject . unNotificationCenter
+
+instance IsGObject NotificationCenter where
+  typeGType _ = gTypeNotificationCenter
+  {-# INLINE typeGType #-}
+
+gTypeNotificationCenter :: JSM GType
+gTypeNotificationCenter = GType . Object <$> jsg "NotificationCenter"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OESElementIndexUint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESElementIndexUint Mozilla OESElementIndexUint documentation>
+newtype OESElementIndexUint = OESElementIndexUint { unOESElementIndexUint :: JSVal }
+
+instance PToJSVal OESElementIndexUint where
+  pToJSVal = unOESElementIndexUint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESElementIndexUint where
+  pFromJSVal = OESElementIndexUint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESElementIndexUint where
+  toJSVal = return . unOESElementIndexUint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESElementIndexUint where
+  fromJSVal v = fmap OESElementIndexUint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESElementIndexUint where
+  makeObject = makeObject . unOESElementIndexUint
+
+instance IsGObject OESElementIndexUint where
+  typeGType _ = gTypeOESElementIndexUint
+  {-# INLINE typeGType #-}
+
+gTypeOESElementIndexUint :: JSM GType
+gTypeOESElementIndexUint = GType . Object <$> jsg "OESElementIndexUint"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OESStandardDerivatives".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESStandardDerivatives Mozilla OESStandardDerivatives documentation>
+newtype OESStandardDerivatives = OESStandardDerivatives { unOESStandardDerivatives :: JSVal }
+
+instance PToJSVal OESStandardDerivatives where
+  pToJSVal = unOESStandardDerivatives
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESStandardDerivatives where
+  pFromJSVal = OESStandardDerivatives
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESStandardDerivatives where
+  toJSVal = return . unOESStandardDerivatives
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESStandardDerivatives where
+  fromJSVal v = fmap OESStandardDerivatives <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESStandardDerivatives where
+  makeObject = makeObject . unOESStandardDerivatives
+
+instance IsGObject OESStandardDerivatives where
+  typeGType _ = gTypeOESStandardDerivatives
+  {-# INLINE typeGType #-}
+
+gTypeOESStandardDerivatives :: JSM GType
+gTypeOESStandardDerivatives = GType . Object <$> jsg "OESStandardDerivatives"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OESTextureFloat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureFloat Mozilla OESTextureFloat documentation>
+newtype OESTextureFloat = OESTextureFloat { unOESTextureFloat :: JSVal }
+
+instance PToJSVal OESTextureFloat where
+  pToJSVal = unOESTextureFloat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureFloat where
+  pFromJSVal = OESTextureFloat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureFloat where
+  toJSVal = return . unOESTextureFloat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureFloat where
+  fromJSVal v = fmap OESTextureFloat <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESTextureFloat where
+  makeObject = makeObject . unOESTextureFloat
+
+instance IsGObject OESTextureFloat where
+  typeGType _ = gTypeOESTextureFloat
+  {-# INLINE typeGType #-}
+
+gTypeOESTextureFloat :: JSM GType
+gTypeOESTextureFloat = GType . Object <$> jsg "OESTextureFloat"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OESTextureFloatLinear".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureFloatLinear Mozilla OESTextureFloatLinear documentation>
+newtype OESTextureFloatLinear = OESTextureFloatLinear { unOESTextureFloatLinear :: JSVal }
+
+instance PToJSVal OESTextureFloatLinear where
+  pToJSVal = unOESTextureFloatLinear
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureFloatLinear where
+  pFromJSVal = OESTextureFloatLinear
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureFloatLinear where
+  toJSVal = return . unOESTextureFloatLinear
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureFloatLinear where
+  fromJSVal v = fmap OESTextureFloatLinear <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESTextureFloatLinear where
+  makeObject = makeObject . unOESTextureFloatLinear
+
+instance IsGObject OESTextureFloatLinear where
+  typeGType _ = gTypeOESTextureFloatLinear
+  {-# INLINE typeGType #-}
+
+gTypeOESTextureFloatLinear :: JSM GType
+gTypeOESTextureFloatLinear = GType . Object <$> jsg "OESTextureFloatLinear"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OESTextureHalfFloat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureHalfFloat Mozilla OESTextureHalfFloat documentation>
+newtype OESTextureHalfFloat = OESTextureHalfFloat { unOESTextureHalfFloat :: JSVal }
+
+instance PToJSVal OESTextureHalfFloat where
+  pToJSVal = unOESTextureHalfFloat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureHalfFloat where
+  pFromJSVal = OESTextureHalfFloat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureHalfFloat where
+  toJSVal = return . unOESTextureHalfFloat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureHalfFloat where
+  fromJSVal v = fmap OESTextureHalfFloat <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESTextureHalfFloat where
+  makeObject = makeObject . unOESTextureHalfFloat
+
+instance IsGObject OESTextureHalfFloat where
+  typeGType _ = gTypeOESTextureHalfFloat
+  {-# INLINE typeGType #-}
+
+gTypeOESTextureHalfFloat :: JSM GType
+gTypeOESTextureHalfFloat = GType . Object <$> jsg "OESTextureHalfFloat"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OESTextureHalfFloatLinear".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureHalfFloatLinear Mozilla OESTextureHalfFloatLinear documentation>
+newtype OESTextureHalfFloatLinear = OESTextureHalfFloatLinear { unOESTextureHalfFloatLinear :: JSVal }
+
+instance PToJSVal OESTextureHalfFloatLinear where
+  pToJSVal = unOESTextureHalfFloatLinear
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureHalfFloatLinear where
+  pFromJSVal = OESTextureHalfFloatLinear
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureHalfFloatLinear where
+  toJSVal = return . unOESTextureHalfFloatLinear
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureHalfFloatLinear where
+  fromJSVal v = fmap OESTextureHalfFloatLinear <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESTextureHalfFloatLinear where
+  makeObject = makeObject . unOESTextureHalfFloatLinear
+
+instance IsGObject OESTextureHalfFloatLinear where
+  typeGType _ = gTypeOESTextureHalfFloatLinear
+  {-# INLINE typeGType #-}
+
+gTypeOESTextureHalfFloatLinear :: JSM GType
+gTypeOESTextureHalfFloatLinear = GType . Object <$> jsg "OESTextureHalfFloatLinear"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OESVertexArrayObject".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject Mozilla OESVertexArrayObject documentation>
+newtype OESVertexArrayObject = OESVertexArrayObject { unOESVertexArrayObject :: JSVal }
+
+instance PToJSVal OESVertexArrayObject where
+  pToJSVal = unOESVertexArrayObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESVertexArrayObject where
+  pFromJSVal = OESVertexArrayObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESVertexArrayObject where
+  toJSVal = return . unOESVertexArrayObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESVertexArrayObject where
+  fromJSVal v = fmap OESVertexArrayObject <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OESVertexArrayObject where
+  makeObject = makeObject . unOESVertexArrayObject
+
+instance IsGObject OESVertexArrayObject where
+  typeGType _ = gTypeOESVertexArrayObject
+  {-# INLINE typeGType #-}
+
+gTypeOESVertexArrayObject :: JSM GType
+gTypeOESVertexArrayObject = GType . Object <$> jsg "OESVertexArrayObject"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OfflineAudioCompletionEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent Mozilla OfflineAudioCompletionEvent documentation>
+newtype OfflineAudioCompletionEvent = OfflineAudioCompletionEvent { unOfflineAudioCompletionEvent :: JSVal }
+
+instance PToJSVal OfflineAudioCompletionEvent where
+  pToJSVal = unOfflineAudioCompletionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OfflineAudioCompletionEvent where
+  pFromJSVal = OfflineAudioCompletionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OfflineAudioCompletionEvent where
+  toJSVal = return . unOfflineAudioCompletionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OfflineAudioCompletionEvent where
+  fromJSVal v = fmap OfflineAudioCompletionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OfflineAudioCompletionEvent where
+  makeObject = makeObject . unOfflineAudioCompletionEvent
+
+instance IsEvent OfflineAudioCompletionEvent
+instance IsGObject OfflineAudioCompletionEvent where
+  typeGType _ = gTypeOfflineAudioCompletionEvent
+  {-# INLINE typeGType #-}
+
+gTypeOfflineAudioCompletionEvent :: JSM GType
+gTypeOfflineAudioCompletionEvent = GType . Object <$> jsg "OfflineAudioCompletionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OfflineAudioContext".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioContext"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation>
+newtype OfflineAudioContext = OfflineAudioContext { unOfflineAudioContext :: JSVal }
+
+instance PToJSVal OfflineAudioContext where
+  pToJSVal = unOfflineAudioContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OfflineAudioContext where
+  pFromJSVal = OfflineAudioContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OfflineAudioContext where
+  toJSVal = return . unOfflineAudioContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OfflineAudioContext where
+  fromJSVal v = fmap OfflineAudioContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OfflineAudioContext where
+  makeObject = makeObject . unOfflineAudioContext
+
+instance IsAudioContext OfflineAudioContext
+instance IsEventTarget OfflineAudioContext
+instance IsGObject OfflineAudioContext where
+  typeGType _ = gTypeOfflineAudioContext
+  {-# INLINE typeGType #-}
+
+gTypeOfflineAudioContext :: JSM GType
+gTypeOfflineAudioContext = GType . Object <$> jsg "OfflineAudioContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OscillatorNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode Mozilla OscillatorNode documentation>
+newtype OscillatorNode = OscillatorNode { unOscillatorNode :: JSVal }
+
+instance PToJSVal OscillatorNode where
+  pToJSVal = unOscillatorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OscillatorNode where
+  pFromJSVal = OscillatorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OscillatorNode where
+  toJSVal = return . unOscillatorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OscillatorNode where
+  fromJSVal v = fmap OscillatorNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OscillatorNode where
+  makeObject = makeObject . unOscillatorNode
+
+instance IsAudioNode OscillatorNode
+instance IsEventTarget OscillatorNode
+instance IsGObject OscillatorNode where
+  typeGType _ = gTypeOscillatorNode
+  {-# INLINE typeGType #-}
+
+gTypeOscillatorNode :: JSM GType
+gTypeOscillatorNode = GType . Object <$> jsg "OscillatorNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.OverflowEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent Mozilla OverflowEvent documentation>
+newtype OverflowEvent = OverflowEvent { unOverflowEvent :: JSVal }
+
+instance PToJSVal OverflowEvent where
+  pToJSVal = unOverflowEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OverflowEvent where
+  pFromJSVal = OverflowEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OverflowEvent where
+  toJSVal = return . unOverflowEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OverflowEvent where
+  fromJSVal v = fmap OverflowEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject OverflowEvent where
+  makeObject = makeObject . unOverflowEvent
+
+instance IsEvent OverflowEvent
+instance IsGObject OverflowEvent where
+  typeGType _ = gTypeOverflowEvent
+  {-# INLINE typeGType #-}
+
+gTypeOverflowEvent :: JSM GType
+gTypeOverflowEvent = GType . Object <$> jsg "OverflowEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PageTransitionEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent Mozilla PageTransitionEvent documentation>
+newtype PageTransitionEvent = PageTransitionEvent { unPageTransitionEvent :: JSVal }
+
+instance PToJSVal PageTransitionEvent where
+  pToJSVal = unPageTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PageTransitionEvent where
+  pFromJSVal = PageTransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PageTransitionEvent where
+  toJSVal = return . unPageTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PageTransitionEvent where
+  fromJSVal v = fmap PageTransitionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PageTransitionEvent where
+  makeObject = makeObject . unPageTransitionEvent
+
+instance IsEvent PageTransitionEvent
+instance IsGObject PageTransitionEvent where
+  typeGType _ = gTypePageTransitionEvent
+  {-# INLINE typeGType #-}
+
+gTypePageTransitionEvent :: JSM GType
+gTypePageTransitionEvent = GType . Object <$> jsg "PageTransitionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PannerNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode Mozilla webkitAudioPannerNode documentation>
+newtype PannerNode = PannerNode { unPannerNode :: JSVal }
+
+instance PToJSVal PannerNode where
+  pToJSVal = unPannerNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PannerNode where
+  pFromJSVal = PannerNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PannerNode where
+  toJSVal = return . unPannerNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PannerNode where
+  fromJSVal v = fmap PannerNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PannerNode where
+  makeObject = makeObject . unPannerNode
+
+instance IsAudioNode PannerNode
+instance IsEventTarget PannerNode
+instance IsGObject PannerNode where
+  typeGType _ = gTypePannerNode
+  {-# INLINE typeGType #-}
+
+gTypePannerNode :: JSM GType
+gTypePannerNode = GType . Object <$> jsg "webkitAudioPannerNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Path2D".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation>
+newtype Path2D = Path2D { unPath2D :: JSVal }
+
+instance PToJSVal Path2D where
+  pToJSVal = unPath2D
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Path2D where
+  pFromJSVal = Path2D
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Path2D where
+  toJSVal = return . unPath2D
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Path2D where
+  fromJSVal v = fmap Path2D <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Path2D where
+  makeObject = makeObject . unPath2D
+
+instance IsGObject Path2D where
+  typeGType _ = gTypePath2D
+  {-# INLINE typeGType #-}
+
+gTypePath2D :: JSM GType
+gTypePath2D = GType . Object <$> jsg "Path2D"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Performance".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Performance Mozilla Performance documentation>
+newtype Performance = Performance { unPerformance :: JSVal }
+
+instance PToJSVal Performance where
+  pToJSVal = unPerformance
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Performance where
+  pFromJSVal = Performance
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Performance where
+  toJSVal = return . unPerformance
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Performance where
+  fromJSVal v = fmap Performance <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Performance where
+  makeObject = makeObject . unPerformance
+
+instance IsEventTarget Performance
+instance IsGObject Performance where
+  typeGType _ = gTypePerformance
+  {-# INLINE typeGType #-}
+
+gTypePerformance :: JSM GType
+gTypePerformance = GType . Object <$> jsg "Performance"
+#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 "JSDOM.PerformanceEntry".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry Mozilla PerformanceEntry documentation>
+newtype PerformanceEntry = PerformanceEntry { unPerformanceEntry :: JSVal }
+
+instance PToJSVal PerformanceEntry where
+  pToJSVal = unPerformanceEntry
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceEntry where
+  pFromJSVal = PerformanceEntry
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceEntry where
+  toJSVal = return . unPerformanceEntry
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceEntry where
+  fromJSVal v = fmap PerformanceEntry <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceEntry where
+  makeObject = makeObject . unPerformanceEntry
+
+class IsGObject o => IsPerformanceEntry o
+toPerformanceEntry :: IsPerformanceEntry o => o -> PerformanceEntry
+toPerformanceEntry = PerformanceEntry . coerce
+
+instance IsPerformanceEntry PerformanceEntry
+instance IsGObject PerformanceEntry where
+  typeGType _ = gTypePerformanceEntry
+  {-# INLINE typeGType #-}
+
+gTypePerformanceEntry :: JSM GType
+gTypePerformanceEntry = GType . Object <$> jsg "PerformanceEntry"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PerformanceEntryList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntryList Mozilla PerformanceEntryList documentation>
+newtype PerformanceEntryList = PerformanceEntryList { unPerformanceEntryList :: JSVal }
+
+instance PToJSVal PerformanceEntryList where
+  pToJSVal = unPerformanceEntryList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceEntryList where
+  pFromJSVal = PerformanceEntryList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceEntryList where
+  toJSVal = return . unPerformanceEntryList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceEntryList where
+  fromJSVal v = fmap PerformanceEntryList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceEntryList where
+  makeObject = makeObject . unPerformanceEntryList
+
+instance IsGObject PerformanceEntryList where
+  typeGType _ = gTypePerformanceEntryList
+  {-# INLINE typeGType #-}
+
+gTypePerformanceEntryList :: JSM GType
+gTypePerformanceEntryList = GType . Object <$> jsg "PerformanceEntryList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PerformanceMark".
+-- Base interface functions are in:
+--
+--     * "JSDOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMark Mozilla PerformanceMark documentation>
+newtype PerformanceMark = PerformanceMark { unPerformanceMark :: JSVal }
+
+instance PToJSVal PerformanceMark where
+  pToJSVal = unPerformanceMark
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceMark where
+  pFromJSVal = PerformanceMark
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceMark where
+  toJSVal = return . unPerformanceMark
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceMark where
+  fromJSVal v = fmap PerformanceMark <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceMark where
+  makeObject = makeObject . unPerformanceMark
+
+instance IsPerformanceEntry PerformanceMark
+instance IsGObject PerformanceMark where
+  typeGType _ = gTypePerformanceMark
+  {-# INLINE typeGType #-}
+
+gTypePerformanceMark :: JSM GType
+gTypePerformanceMark = GType . Object <$> jsg "PerformanceMark"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PerformanceMeasure".
+-- Base interface functions are in:
+--
+--     * "JSDOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMeasure Mozilla PerformanceMeasure documentation>
+newtype PerformanceMeasure = PerformanceMeasure { unPerformanceMeasure :: JSVal }
+
+instance PToJSVal PerformanceMeasure where
+  pToJSVal = unPerformanceMeasure
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceMeasure where
+  pFromJSVal = PerformanceMeasure
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceMeasure where
+  toJSVal = return . unPerformanceMeasure
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceMeasure where
+  fromJSVal v = fmap PerformanceMeasure <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceMeasure where
+  makeObject = makeObject . unPerformanceMeasure
+
+instance IsPerformanceEntry PerformanceMeasure
+instance IsGObject PerformanceMeasure where
+  typeGType _ = gTypePerformanceMeasure
+  {-# INLINE typeGType #-}
+
+gTypePerformanceMeasure :: JSM GType
+gTypePerformanceMeasure = GType . Object <$> jsg "PerformanceMeasure"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PerformanceNavigation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation Mozilla PerformanceNavigation documentation>
+newtype PerformanceNavigation = PerformanceNavigation { unPerformanceNavigation :: JSVal }
+
+instance PToJSVal PerformanceNavigation where
+  pToJSVal = unPerformanceNavigation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceNavigation where
+  pFromJSVal = PerformanceNavigation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceNavigation where
+  toJSVal = return . unPerformanceNavigation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceNavigation where
+  fromJSVal v = fmap PerformanceNavigation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceNavigation where
+  makeObject = makeObject . unPerformanceNavigation
+
+instance IsGObject PerformanceNavigation where
+  typeGType _ = gTypePerformanceNavigation
+  {-# INLINE typeGType #-}
+
+gTypePerformanceNavigation :: JSM GType
+gTypePerformanceNavigation = GType . Object <$> jsg "PerformanceNavigation"
+#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 "JSDOM.PerformanceResourceTiming".
+-- Base interface functions are in:
+--
+--     * "JSDOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming Mozilla PerformanceResourceTiming documentation>
+newtype PerformanceResourceTiming = PerformanceResourceTiming { unPerformanceResourceTiming :: JSVal }
+
+instance PToJSVal PerformanceResourceTiming where
+  pToJSVal = unPerformanceResourceTiming
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceResourceTiming where
+  pFromJSVal = PerformanceResourceTiming
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceResourceTiming where
+  toJSVal = return . unPerformanceResourceTiming
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceResourceTiming where
+  fromJSVal v = fmap PerformanceResourceTiming <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceResourceTiming where
+  makeObject = makeObject . unPerformanceResourceTiming
+
+instance IsPerformanceEntry PerformanceResourceTiming
+instance IsGObject PerformanceResourceTiming where
+  typeGType _ = gTypePerformanceResourceTiming
+  {-# INLINE typeGType #-}
+
+gTypePerformanceResourceTiming :: JSM GType
+gTypePerformanceResourceTiming = GType . Object <$> jsg "PerformanceResourceTiming"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PerformanceTiming".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming Mozilla PerformanceTiming documentation>
+newtype PerformanceTiming = PerformanceTiming { unPerformanceTiming :: JSVal }
+
+instance PToJSVal PerformanceTiming where
+  pToJSVal = unPerformanceTiming
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceTiming where
+  pFromJSVal = PerformanceTiming
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceTiming where
+  toJSVal = return . unPerformanceTiming
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceTiming where
+  fromJSVal v = fmap PerformanceTiming <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PerformanceTiming where
+  makeObject = makeObject . unPerformanceTiming
+
+instance IsGObject PerformanceTiming where
+  typeGType _ = gTypePerformanceTiming
+  {-# INLINE typeGType #-}
+
+gTypePerformanceTiming :: JSM GType
+gTypePerformanceTiming = GType . Object <$> jsg "PerformanceTiming"
+#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 "JSDOM.PeriodicWave".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PeriodicWave Mozilla PeriodicWave documentation>
+newtype PeriodicWave = PeriodicWave { unPeriodicWave :: JSVal }
+
+instance PToJSVal PeriodicWave where
+  pToJSVal = unPeriodicWave
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PeriodicWave where
+  pFromJSVal = PeriodicWave
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PeriodicWave where
+  toJSVal = return . unPeriodicWave
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PeriodicWave where
+  fromJSVal v = fmap PeriodicWave <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PeriodicWave where
+  makeObject = makeObject . unPeriodicWave
+
+instance IsGObject PeriodicWave where
+  typeGType _ = gTypePeriodicWave
+  {-# INLINE typeGType #-}
+
+gTypePeriodicWave :: JSM GType
+gTypePeriodicWave = GType . Object <$> jsg "PeriodicWave"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Plugin".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Plugin Mozilla Plugin documentation>
+newtype Plugin = Plugin { unPlugin :: JSVal }
+
+instance PToJSVal Plugin where
+  pToJSVal = unPlugin
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Plugin where
+  pFromJSVal = Plugin
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Plugin where
+  toJSVal = return . unPlugin
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Plugin where
+  fromJSVal v = fmap Plugin <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Plugin where
+  makeObject = makeObject . unPlugin
+
+instance IsGObject Plugin where
+  typeGType _ = gTypePlugin
+  {-# INLINE typeGType #-}
+
+gTypePlugin :: JSM GType
+gTypePlugin = GType . Object <$> jsg "Plugin"
+#else
+type IsPlugin o = PluginClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PluginArray".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray Mozilla PluginArray documentation>
+newtype PluginArray = PluginArray { unPluginArray :: JSVal }
+
+instance PToJSVal PluginArray where
+  pToJSVal = unPluginArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PluginArray where
+  pFromJSVal = PluginArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PluginArray where
+  toJSVal = return . unPluginArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PluginArray where
+  fromJSVal v = fmap PluginArray <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PluginArray where
+  makeObject = makeObject . unPluginArray
+
+instance IsGObject PluginArray where
+  typeGType _ = gTypePluginArray
+  {-# INLINE typeGType #-}
+
+gTypePluginArray :: JSM GType
+gTypePluginArray = GType . Object <$> jsg "PluginArray"
+#else
+type IsPluginArray o = PluginArrayClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PopStateEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent Mozilla PopStateEvent documentation>
+newtype PopStateEvent = PopStateEvent { unPopStateEvent :: JSVal }
+
+instance PToJSVal PopStateEvent where
+  pToJSVal = unPopStateEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PopStateEvent where
+  pFromJSVal = PopStateEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PopStateEvent where
+  toJSVal = return . unPopStateEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PopStateEvent where
+  fromJSVal v = fmap PopStateEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PopStateEvent where
+  makeObject = makeObject . unPopStateEvent
+
+instance IsEvent PopStateEvent
+instance IsGObject PopStateEvent where
+  typeGType _ = gTypePopStateEvent
+  {-# INLINE typeGType #-}
+
+gTypePopStateEvent :: JSM GType
+gTypePopStateEvent = GType . Object <$> jsg "PopStateEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.PositionError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PositionError Mozilla PositionError documentation>
+newtype PositionError = PositionError { unPositionError :: JSVal }
+
+instance PToJSVal PositionError where
+  pToJSVal = unPositionError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PositionError where
+  pFromJSVal = PositionError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PositionError where
+  toJSVal = return . unPositionError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PositionError where
+  fromJSVal v = fmap PositionError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject PositionError where
+  makeObject = makeObject . unPositionError
+
+instance IsGObject PositionError where
+  typeGType _ = gTypePositionError
+  {-# INLINE typeGType #-}
+
+gTypePositionError :: JSM GType
+gTypePositionError = GType . Object <$> jsg "PositionError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ProcessingInstruction".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CharacterData"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction Mozilla ProcessingInstruction documentation>
+newtype ProcessingInstruction = ProcessingInstruction { unProcessingInstruction :: JSVal }
+
+instance PToJSVal ProcessingInstruction where
+  pToJSVal = unProcessingInstruction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ProcessingInstruction where
+  pFromJSVal = ProcessingInstruction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ProcessingInstruction where
+  toJSVal = return . unProcessingInstruction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ProcessingInstruction where
+  fromJSVal v = fmap ProcessingInstruction <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ProcessingInstruction where
+  makeObject = makeObject . unProcessingInstruction
+
+instance IsCharacterData ProcessingInstruction
+instance IsNode ProcessingInstruction
+instance IsEventTarget ProcessingInstruction
+instance IsGObject ProcessingInstruction where
+  typeGType _ = gTypeProcessingInstruction
+  {-# INLINE typeGType #-}
+
+gTypeProcessingInstruction :: JSM GType
+gTypeProcessingInstruction = GType . Object <$> jsg "ProcessingInstruction"
+#else
+type IsProcessingInstruction o = ProcessingInstructionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ProgressEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent Mozilla ProgressEvent documentation>
+newtype ProgressEvent = ProgressEvent { unProgressEvent :: JSVal }
+
+instance PToJSVal ProgressEvent where
+  pToJSVal = unProgressEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ProgressEvent where
+  pFromJSVal = ProgressEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ProgressEvent where
+  toJSVal = return . unProgressEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ProgressEvent where
+  fromJSVal v = fmap ProgressEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ProgressEvent where
+  makeObject = makeObject . unProgressEvent
+
+class IsEvent o => IsProgressEvent o
+toProgressEvent :: IsProgressEvent o => o -> ProgressEvent
+toProgressEvent = ProgressEvent . coerce
+
+instance IsProgressEvent ProgressEvent
+instance IsEvent ProgressEvent
+instance IsGObject ProgressEvent where
+  typeGType _ = gTypeProgressEvent
+  {-# INLINE typeGType #-}
+
+gTypeProgressEvent :: JSM GType
+gTypeProgressEvent = GType . Object <$> jsg "ProgressEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.QuickTimePluginReplacement".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement Mozilla QuickTimePluginReplacement documentation>
+newtype QuickTimePluginReplacement = QuickTimePluginReplacement { unQuickTimePluginReplacement :: JSVal }
+
+instance PToJSVal QuickTimePluginReplacement where
+  pToJSVal = unQuickTimePluginReplacement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal QuickTimePluginReplacement where
+  pFromJSVal = QuickTimePluginReplacement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal QuickTimePluginReplacement where
+  toJSVal = return . unQuickTimePluginReplacement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal QuickTimePluginReplacement where
+  fromJSVal v = fmap QuickTimePluginReplacement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject QuickTimePluginReplacement where
+  makeObject = makeObject . unQuickTimePluginReplacement
+
+instance IsGObject QuickTimePluginReplacement where
+  typeGType _ = gTypeQuickTimePluginReplacement
+  {-# INLINE typeGType #-}
+
+gTypeQuickTimePluginReplacement :: JSM GType
+gTypeQuickTimePluginReplacement = GType . Object <$> jsg "QuickTimePluginReplacement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RGBColor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor Mozilla RGBColor documentation>
+newtype RGBColor = RGBColor { unRGBColor :: JSVal }
+
+instance PToJSVal RGBColor where
+  pToJSVal = unRGBColor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RGBColor where
+  pFromJSVal = RGBColor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RGBColor where
+  toJSVal = return . unRGBColor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RGBColor where
+  fromJSVal v = fmap RGBColor <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RGBColor where
+  makeObject = makeObject . unRGBColor
+
+instance IsGObject RGBColor where
+  typeGType _ = gTypeRGBColor
+  {-# INLINE typeGType #-}
+
+gTypeRGBColor :: JSM GType
+gTypeRGBColor = GType . Object <$> jsg "RGBColor"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCConfiguration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration Mozilla RTCConfiguration documentation>
+newtype RTCConfiguration = RTCConfiguration { unRTCConfiguration :: JSVal }
+
+instance PToJSVal RTCConfiguration where
+  pToJSVal = unRTCConfiguration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCConfiguration where
+  pFromJSVal = RTCConfiguration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCConfiguration where
+  toJSVal = return . unRTCConfiguration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCConfiguration where
+  fromJSVal v = fmap RTCConfiguration <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCConfiguration where
+  makeObject = makeObject . unRTCConfiguration
+
+instance IsGObject RTCConfiguration where
+  typeGType _ = gTypeRTCConfiguration
+  {-# INLINE typeGType #-}
+
+gTypeRTCConfiguration :: JSM GType
+gTypeRTCConfiguration = GType . Object <$> jsg "RTCConfiguration"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCDTMFSender".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender Mozilla RTCDTMFSender documentation>
+newtype RTCDTMFSender = RTCDTMFSender { unRTCDTMFSender :: JSVal }
+
+instance PToJSVal RTCDTMFSender where
+  pToJSVal = unRTCDTMFSender
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDTMFSender where
+  pFromJSVal = RTCDTMFSender
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDTMFSender where
+  toJSVal = return . unRTCDTMFSender
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDTMFSender where
+  fromJSVal v = fmap RTCDTMFSender <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCDTMFSender where
+  makeObject = makeObject . unRTCDTMFSender
+
+instance IsEventTarget RTCDTMFSender
+instance IsGObject RTCDTMFSender where
+  typeGType _ = gTypeRTCDTMFSender
+  {-# INLINE typeGType #-}
+
+gTypeRTCDTMFSender :: JSM GType
+gTypeRTCDTMFSender = GType . Object <$> jsg "RTCDTMFSender"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCDTMFToneChangeEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent Mozilla RTCDTMFToneChangeEvent documentation>
+newtype RTCDTMFToneChangeEvent = RTCDTMFToneChangeEvent { unRTCDTMFToneChangeEvent :: JSVal }
+
+instance PToJSVal RTCDTMFToneChangeEvent where
+  pToJSVal = unRTCDTMFToneChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDTMFToneChangeEvent where
+  pFromJSVal = RTCDTMFToneChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDTMFToneChangeEvent where
+  toJSVal = return . unRTCDTMFToneChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDTMFToneChangeEvent where
+  fromJSVal v = fmap RTCDTMFToneChangeEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCDTMFToneChangeEvent where
+  makeObject = makeObject . unRTCDTMFToneChangeEvent
+
+instance IsEvent RTCDTMFToneChangeEvent
+instance IsGObject RTCDTMFToneChangeEvent where
+  typeGType _ = gTypeRTCDTMFToneChangeEvent
+  {-# INLINE typeGType #-}
+
+gTypeRTCDTMFToneChangeEvent :: JSM GType
+gTypeRTCDTMFToneChangeEvent = GType . Object <$> jsg "RTCDTMFToneChangeEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCDataChannel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel Mozilla RTCDataChannel documentation>
+newtype RTCDataChannel = RTCDataChannel { unRTCDataChannel :: JSVal }
+
+instance PToJSVal RTCDataChannel where
+  pToJSVal = unRTCDataChannel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannel where
+  pFromJSVal = RTCDataChannel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannel where
+  toJSVal = return . unRTCDataChannel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannel where
+  fromJSVal v = fmap RTCDataChannel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCDataChannel where
+  makeObject = makeObject . unRTCDataChannel
+
+instance IsEventTarget RTCDataChannel
+instance IsGObject RTCDataChannel where
+  typeGType _ = gTypeRTCDataChannel
+  {-# INLINE typeGType #-}
+
+gTypeRTCDataChannel :: JSM GType
+gTypeRTCDataChannel = GType . Object <$> jsg "RTCDataChannel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCDataChannelEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent Mozilla RTCDataChannelEvent documentation>
+newtype RTCDataChannelEvent = RTCDataChannelEvent { unRTCDataChannelEvent :: JSVal }
+
+instance PToJSVal RTCDataChannelEvent where
+  pToJSVal = unRTCDataChannelEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannelEvent where
+  pFromJSVal = RTCDataChannelEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannelEvent where
+  toJSVal = return . unRTCDataChannelEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannelEvent where
+  fromJSVal v = fmap RTCDataChannelEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCDataChannelEvent where
+  makeObject = makeObject . unRTCDataChannelEvent
+
+instance IsEvent RTCDataChannelEvent
+instance IsGObject RTCDataChannelEvent where
+  typeGType _ = gTypeRTCDataChannelEvent
+  {-# INLINE typeGType #-}
+
+gTypeRTCDataChannelEvent :: JSM GType
+gTypeRTCDataChannelEvent = GType . Object <$> jsg "RTCDataChannelEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCIceCandidate".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation>
+newtype RTCIceCandidate = RTCIceCandidate { unRTCIceCandidate :: JSVal }
+
+instance PToJSVal RTCIceCandidate where
+  pToJSVal = unRTCIceCandidate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceCandidate where
+  pFromJSVal = RTCIceCandidate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceCandidate where
+  toJSVal = return . unRTCIceCandidate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceCandidate where
+  fromJSVal v = fmap RTCIceCandidate <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCIceCandidate where
+  makeObject = makeObject . unRTCIceCandidate
+
+instance IsGObject RTCIceCandidate where
+  typeGType _ = gTypeRTCIceCandidate
+  {-# INLINE typeGType #-}
+
+gTypeRTCIceCandidate :: JSM GType
+gTypeRTCIceCandidate = GType . Object <$> jsg "RTCIceCandidate"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCIceCandidateEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent Mozilla RTCIceCandidateEvent documentation>
+newtype RTCIceCandidateEvent = RTCIceCandidateEvent { unRTCIceCandidateEvent :: JSVal }
+
+instance PToJSVal RTCIceCandidateEvent where
+  pToJSVal = unRTCIceCandidateEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceCandidateEvent where
+  pFromJSVal = RTCIceCandidateEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceCandidateEvent where
+  toJSVal = return . unRTCIceCandidateEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceCandidateEvent where
+  fromJSVal v = fmap RTCIceCandidateEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCIceCandidateEvent where
+  makeObject = makeObject . unRTCIceCandidateEvent
+
+instance IsEvent RTCIceCandidateEvent
+instance IsGObject RTCIceCandidateEvent where
+  typeGType _ = gTypeRTCIceCandidateEvent
+  {-# INLINE typeGType #-}
+
+gTypeRTCIceCandidateEvent :: JSM GType
+gTypeRTCIceCandidateEvent = GType . Object <$> jsg "RTCIceCandidateEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCIceServer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer Mozilla RTCIceServer documentation>
+newtype RTCIceServer = RTCIceServer { unRTCIceServer :: JSVal }
+
+instance PToJSVal RTCIceServer where
+  pToJSVal = unRTCIceServer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceServer where
+  pFromJSVal = RTCIceServer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceServer where
+  toJSVal = return . unRTCIceServer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceServer where
+  fromJSVal v = fmap RTCIceServer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCIceServer where
+  makeObject = makeObject . unRTCIceServer
+
+instance IsGObject RTCIceServer where
+  typeGType _ = gTypeRTCIceServer
+  {-# INLINE typeGType #-}
+
+gTypeRTCIceServer :: JSM GType
+gTypeRTCIceServer = GType . Object <$> jsg "RTCIceServer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCPeerConnection".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection Mozilla webkitRTCPeerConnection documentation>
+newtype RTCPeerConnection = RTCPeerConnection { unRTCPeerConnection :: JSVal }
+
+instance PToJSVal RTCPeerConnection where
+  pToJSVal = unRTCPeerConnection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCPeerConnection where
+  pFromJSVal = RTCPeerConnection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCPeerConnection where
+  toJSVal = return . unRTCPeerConnection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCPeerConnection where
+  fromJSVal v = fmap RTCPeerConnection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCPeerConnection where
+  makeObject = makeObject . unRTCPeerConnection
+
+instance IsEventTarget RTCPeerConnection
+instance IsGObject RTCPeerConnection where
+  typeGType _ = gTypeRTCPeerConnection
+  {-# INLINE typeGType #-}
+
+gTypeRTCPeerConnection :: JSM GType
+gTypeRTCPeerConnection = GType . Object <$> jsg "webkitRTCPeerConnection"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCSessionDescription".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation>
+newtype RTCSessionDescription = RTCSessionDescription { unRTCSessionDescription :: JSVal }
+
+instance PToJSVal RTCSessionDescription where
+  pToJSVal = unRTCSessionDescription
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCSessionDescription where
+  pFromJSVal = RTCSessionDescription
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCSessionDescription where
+  toJSVal = return . unRTCSessionDescription
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCSessionDescription where
+  fromJSVal v = fmap RTCSessionDescription <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCSessionDescription where
+  makeObject = makeObject . unRTCSessionDescription
+
+instance IsGObject RTCSessionDescription where
+  typeGType _ = gTypeRTCSessionDescription
+  {-# INLINE typeGType #-}
+
+gTypeRTCSessionDescription :: JSM GType
+gTypeRTCSessionDescription = GType . Object <$> jsg "RTCSessionDescription"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCStatsReport".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport Mozilla RTCStatsReport documentation>
+newtype RTCStatsReport = RTCStatsReport { unRTCStatsReport :: JSVal }
+
+instance PToJSVal RTCStatsReport where
+  pToJSVal = unRTCStatsReport
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCStatsReport where
+  pFromJSVal = RTCStatsReport
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCStatsReport where
+  toJSVal = return . unRTCStatsReport
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCStatsReport where
+  fromJSVal v = fmap RTCStatsReport <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCStatsReport where
+  makeObject = makeObject . unRTCStatsReport
+
+instance IsGObject RTCStatsReport where
+  typeGType _ = gTypeRTCStatsReport
+  {-# INLINE typeGType #-}
+
+gTypeRTCStatsReport :: JSM GType
+gTypeRTCStatsReport = GType . Object <$> jsg "RTCStatsReport"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RTCStatsResponse".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsResponse Mozilla RTCStatsResponse documentation>
+newtype RTCStatsResponse = RTCStatsResponse { unRTCStatsResponse :: JSVal }
+
+instance PToJSVal RTCStatsResponse where
+  pToJSVal = unRTCStatsResponse
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCStatsResponse where
+  pFromJSVal = RTCStatsResponse
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCStatsResponse where
+  toJSVal = return . unRTCStatsResponse
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCStatsResponse where
+  fromJSVal v = fmap RTCStatsResponse <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RTCStatsResponse where
+  makeObject = makeObject . unRTCStatsResponse
+
+instance IsGObject RTCStatsResponse where
+  typeGType _ = gTypeRTCStatsResponse
+  {-# INLINE typeGType #-}
+
+gTypeRTCStatsResponse :: JSM GType
+gTypeRTCStatsResponse = GType . Object <$> jsg "RTCStatsResponse"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.RadioNodeList".
+-- Base interface functions are in:
+--
+--     * "JSDOM.NodeList"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList Mozilla RadioNodeList documentation>
+newtype RadioNodeList = RadioNodeList { unRadioNodeList :: JSVal }
+
+instance PToJSVal RadioNodeList where
+  pToJSVal = unRadioNodeList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RadioNodeList where
+  pFromJSVal = RadioNodeList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RadioNodeList where
+  toJSVal = return . unRadioNodeList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RadioNodeList where
+  fromJSVal v = fmap RadioNodeList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject RadioNodeList where
+  makeObject = makeObject . unRadioNodeList
+
+instance IsNodeList RadioNodeList
+instance IsGObject RadioNodeList where
+  typeGType _ = gTypeRadioNodeList
+  {-# INLINE typeGType #-}
+
+gTypeRadioNodeList :: JSM GType
+gTypeRadioNodeList = GType . Object <$> jsg "RadioNodeList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Range".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation>
+newtype Range = Range { unRange :: JSVal }
+
+instance PToJSVal Range where
+  pToJSVal = unRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Range where
+  pFromJSVal = Range
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Range where
+  toJSVal = return . unRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Range where
+  fromJSVal v = fmap Range <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Range where
+  makeObject = makeObject . unRange
+
+instance IsGObject Range where
+  typeGType _ = gTypeRange
+  {-# INLINE typeGType #-}
+
+gTypeRange :: JSM GType
+gTypeRange = GType . Object <$> jsg "Range"
+#else
+type IsRange o = RangeClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ReadableStream".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation>
+newtype ReadableStream = ReadableStream { unReadableStream :: JSVal }
+
+instance PToJSVal ReadableStream where
+  pToJSVal = unReadableStream
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableStream where
+  pFromJSVal = ReadableStream
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableStream where
+  toJSVal = return . unReadableStream
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableStream where
+  fromJSVal v = fmap ReadableStream <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ReadableStream where
+  makeObject = makeObject . unReadableStream
+
+instance IsGObject ReadableStream where
+  typeGType _ = gTypeReadableStream
+  {-# INLINE typeGType #-}
+
+gTypeReadableStream :: JSM GType
+gTypeReadableStream = GType . Object <$> jsg "ReadableStream"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Rect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Rect Mozilla Rect documentation>
+newtype Rect = Rect { unRect :: JSVal }
+
+instance PToJSVal Rect where
+  pToJSVal = unRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Rect where
+  pFromJSVal = Rect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Rect where
+  toJSVal = return . unRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Rect where
+  fromJSVal v = fmap Rect <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Rect where
+  makeObject = makeObject . unRect
+
+instance IsGObject Rect where
+  typeGType _ = gTypeRect
+  {-# INLINE typeGType #-}
+
+gTypeRect :: JSM GType
+gTypeRect = GType . Object <$> jsg "Rect"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SQLError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLError Mozilla SQLError documentation>
+newtype SQLError = SQLError { unSQLError :: JSVal }
+
+instance PToJSVal SQLError where
+  pToJSVal = unSQLError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLError where
+  pFromJSVal = SQLError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLError where
+  toJSVal = return . unSQLError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLError where
+  fromJSVal v = fmap SQLError <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SQLError where
+  makeObject = makeObject . unSQLError
+
+instance IsGObject SQLError where
+  typeGType _ = gTypeSQLError
+  {-# INLINE typeGType #-}
+
+gTypeSQLError :: JSM GType
+gTypeSQLError = GType . Object <$> jsg "SQLError"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SQLResultSet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet Mozilla SQLResultSet documentation>
+newtype SQLResultSet = SQLResultSet { unSQLResultSet :: JSVal }
+
+instance PToJSVal SQLResultSet where
+  pToJSVal = unSQLResultSet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLResultSet where
+  pFromJSVal = SQLResultSet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLResultSet where
+  toJSVal = return . unSQLResultSet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLResultSet where
+  fromJSVal v = fmap SQLResultSet <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SQLResultSet where
+  makeObject = makeObject . unSQLResultSet
+
+instance IsGObject SQLResultSet where
+  typeGType _ = gTypeSQLResultSet
+  {-# INLINE typeGType #-}
+
+gTypeSQLResultSet :: JSM GType
+gTypeSQLResultSet = GType . Object <$> jsg "SQLResultSet"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SQLResultSetRowList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList Mozilla SQLResultSetRowList documentation>
+newtype SQLResultSetRowList = SQLResultSetRowList { unSQLResultSetRowList :: JSVal }
+
+instance PToJSVal SQLResultSetRowList where
+  pToJSVal = unSQLResultSetRowList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLResultSetRowList where
+  pFromJSVal = SQLResultSetRowList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLResultSetRowList where
+  toJSVal = return . unSQLResultSetRowList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLResultSetRowList where
+  fromJSVal v = fmap SQLResultSetRowList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SQLResultSetRowList where
+  makeObject = makeObject . unSQLResultSetRowList
+
+instance IsGObject SQLResultSetRowList where
+  typeGType _ = gTypeSQLResultSetRowList
+  {-# INLINE typeGType #-}
+
+gTypeSQLResultSetRowList :: JSM GType
+gTypeSQLResultSetRowList = GType . Object <$> jsg "SQLResultSetRowList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SQLTransaction".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction Mozilla SQLTransaction documentation>
+newtype SQLTransaction = SQLTransaction { unSQLTransaction :: JSVal }
+
+instance PToJSVal SQLTransaction where
+  pToJSVal = unSQLTransaction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLTransaction where
+  pFromJSVal = SQLTransaction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLTransaction where
+  toJSVal = return . unSQLTransaction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLTransaction where
+  fromJSVal v = fmap SQLTransaction <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SQLTransaction where
+  makeObject = makeObject . unSQLTransaction
+
+instance IsGObject SQLTransaction where
+  typeGType _ = gTypeSQLTransaction
+  {-# INLINE typeGType #-}
+
+gTypeSQLTransaction :: JSM GType
+gTypeSQLTransaction = GType . Object <$> jsg "SQLTransaction"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement Mozilla SVGAElement documentation>
+newtype SVGAElement = SVGAElement { unSVGAElement :: JSVal }
+
+instance PToJSVal SVGAElement where
+  pToJSVal = unSVGAElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAElement where
+  pFromJSVal = SVGAElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAElement where
+  toJSVal = return . unSVGAElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAElement where
+  fromJSVal v = fmap SVGAElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAElement where
+  makeObject = makeObject . unSVGAElement
+
+instance IsSVGGraphicsElement SVGAElement
+instance IsSVGElement SVGAElement
+instance IsElement SVGAElement
+instance IsNode SVGAElement
+instance IsEventTarget SVGAElement
+instance IsGObject SVGAElement where
+  typeGType _ = gTypeSVGAElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAElement :: JSM GType
+gTypeSVGAElement = GType . Object <$> jsg "SVGAElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAltGlyphDefElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphDefElement Mozilla SVGAltGlyphDefElement documentation>
+newtype SVGAltGlyphDefElement = SVGAltGlyphDefElement { unSVGAltGlyphDefElement :: JSVal }
+
+instance PToJSVal SVGAltGlyphDefElement where
+  pToJSVal = unSVGAltGlyphDefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphDefElement where
+  pFromJSVal = SVGAltGlyphDefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphDefElement where
+  toJSVal = return . unSVGAltGlyphDefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphDefElement where
+  fromJSVal v = fmap SVGAltGlyphDefElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAltGlyphDefElement where
+  makeObject = makeObject . unSVGAltGlyphDefElement
+
+instance IsSVGElement SVGAltGlyphDefElement
+instance IsElement SVGAltGlyphDefElement
+instance IsNode SVGAltGlyphDefElement
+instance IsEventTarget SVGAltGlyphDefElement
+instance IsGObject SVGAltGlyphDefElement where
+  typeGType _ = gTypeSVGAltGlyphDefElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAltGlyphDefElement :: JSM GType
+gTypeSVGAltGlyphDefElement = GType . Object <$> jsg "SVGAltGlyphDefElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAltGlyphElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGTextPositioningElement"
+--     * "JSDOM.SVGTextContentElement"
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement Mozilla SVGAltGlyphElement documentation>
+newtype SVGAltGlyphElement = SVGAltGlyphElement { unSVGAltGlyphElement :: JSVal }
+
+instance PToJSVal SVGAltGlyphElement where
+  pToJSVal = unSVGAltGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphElement where
+  pFromJSVal = SVGAltGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphElement where
+  toJSVal = return . unSVGAltGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphElement where
+  fromJSVal v = fmap SVGAltGlyphElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAltGlyphElement where
+  makeObject = makeObject . unSVGAltGlyphElement
+
+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
+  typeGType _ = gTypeSVGAltGlyphElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAltGlyphElement :: JSM GType
+gTypeSVGAltGlyphElement = GType . Object <$> jsg "SVGAltGlyphElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAltGlyphItemElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphItemElement Mozilla SVGAltGlyphItemElement documentation>
+newtype SVGAltGlyphItemElement = SVGAltGlyphItemElement { unSVGAltGlyphItemElement :: JSVal }
+
+instance PToJSVal SVGAltGlyphItemElement where
+  pToJSVal = unSVGAltGlyphItemElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphItemElement where
+  pFromJSVal = SVGAltGlyphItemElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphItemElement where
+  toJSVal = return . unSVGAltGlyphItemElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphItemElement where
+  fromJSVal v = fmap SVGAltGlyphItemElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAltGlyphItemElement where
+  makeObject = makeObject . unSVGAltGlyphItemElement
+
+instance IsSVGElement SVGAltGlyphItemElement
+instance IsElement SVGAltGlyphItemElement
+instance IsNode SVGAltGlyphItemElement
+instance IsEventTarget SVGAltGlyphItemElement
+instance IsGObject SVGAltGlyphItemElement where
+  typeGType _ = gTypeSVGAltGlyphItemElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAltGlyphItemElement :: JSM GType
+gTypeSVGAltGlyphItemElement = GType . Object <$> jsg "SVGAltGlyphItemElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAngle".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle Mozilla SVGAngle documentation>
+newtype SVGAngle = SVGAngle { unSVGAngle :: JSVal }
+
+instance PToJSVal SVGAngle where
+  pToJSVal = unSVGAngle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAngle where
+  pFromJSVal = SVGAngle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAngle where
+  toJSVal = return . unSVGAngle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAngle where
+  fromJSVal v = fmap SVGAngle <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAngle where
+  makeObject = makeObject . unSVGAngle
+
+instance IsGObject SVGAngle where
+  typeGType _ = gTypeSVGAngle
+  {-# INLINE typeGType #-}
+
+gTypeSVGAngle :: JSM GType
+gTypeSVGAngle = GType . Object <$> jsg "SVGAngle"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimateColorElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGAnimationElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateColorElement Mozilla SVGAnimateColorElement documentation>
+newtype SVGAnimateColorElement = SVGAnimateColorElement { unSVGAnimateColorElement :: JSVal }
+
+instance PToJSVal SVGAnimateColorElement where
+  pToJSVal = unSVGAnimateColorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateColorElement where
+  pFromJSVal = SVGAnimateColorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateColorElement where
+  toJSVal = return . unSVGAnimateColorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateColorElement where
+  fromJSVal v = fmap SVGAnimateColorElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimateColorElement where
+  makeObject = makeObject . unSVGAnimateColorElement
+
+instance IsSVGAnimationElement SVGAnimateColorElement
+instance IsSVGElement SVGAnimateColorElement
+instance IsElement SVGAnimateColorElement
+instance IsNode SVGAnimateColorElement
+instance IsEventTarget SVGAnimateColorElement
+instance IsGObject SVGAnimateColorElement where
+  typeGType _ = gTypeSVGAnimateColorElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimateColorElement :: JSM GType
+gTypeSVGAnimateColorElement = GType . Object <$> jsg "SVGAnimateColorElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimateElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGAnimationElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateElement Mozilla SVGAnimateElement documentation>
+newtype SVGAnimateElement = SVGAnimateElement { unSVGAnimateElement :: JSVal }
+
+instance PToJSVal SVGAnimateElement where
+  pToJSVal = unSVGAnimateElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateElement where
+  pFromJSVal = SVGAnimateElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateElement where
+  toJSVal = return . unSVGAnimateElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateElement where
+  fromJSVal v = fmap SVGAnimateElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimateElement where
+  makeObject = makeObject . unSVGAnimateElement
+
+instance IsSVGAnimationElement SVGAnimateElement
+instance IsSVGElement SVGAnimateElement
+instance IsElement SVGAnimateElement
+instance IsNode SVGAnimateElement
+instance IsEventTarget SVGAnimateElement
+instance IsGObject SVGAnimateElement where
+  typeGType _ = gTypeSVGAnimateElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimateElement :: JSM GType
+gTypeSVGAnimateElement = GType . Object <$> jsg "SVGAnimateElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimateMotionElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGAnimationElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateMotionElement Mozilla SVGAnimateMotionElement documentation>
+newtype SVGAnimateMotionElement = SVGAnimateMotionElement { unSVGAnimateMotionElement :: JSVal }
+
+instance PToJSVal SVGAnimateMotionElement where
+  pToJSVal = unSVGAnimateMotionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateMotionElement where
+  pFromJSVal = SVGAnimateMotionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateMotionElement where
+  toJSVal = return . unSVGAnimateMotionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateMotionElement where
+  fromJSVal v = fmap SVGAnimateMotionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimateMotionElement where
+  makeObject = makeObject . unSVGAnimateMotionElement
+
+instance IsSVGAnimationElement SVGAnimateMotionElement
+instance IsSVGElement SVGAnimateMotionElement
+instance IsElement SVGAnimateMotionElement
+instance IsNode SVGAnimateMotionElement
+instance IsEventTarget SVGAnimateMotionElement
+instance IsGObject SVGAnimateMotionElement where
+  typeGType _ = gTypeSVGAnimateMotionElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimateMotionElement :: JSM GType
+gTypeSVGAnimateMotionElement = GType . Object <$> jsg "SVGAnimateMotionElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimateTransformElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGAnimationElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateTransformElement Mozilla SVGAnimateTransformElement documentation>
+newtype SVGAnimateTransformElement = SVGAnimateTransformElement { unSVGAnimateTransformElement :: JSVal }
+
+instance PToJSVal SVGAnimateTransformElement where
+  pToJSVal = unSVGAnimateTransformElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateTransformElement where
+  pFromJSVal = SVGAnimateTransformElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateTransformElement where
+  toJSVal = return . unSVGAnimateTransformElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateTransformElement where
+  fromJSVal v = fmap SVGAnimateTransformElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimateTransformElement where
+  makeObject = makeObject . unSVGAnimateTransformElement
+
+instance IsSVGAnimationElement SVGAnimateTransformElement
+instance IsSVGElement SVGAnimateTransformElement
+instance IsElement SVGAnimateTransformElement
+instance IsNode SVGAnimateTransformElement
+instance IsEventTarget SVGAnimateTransformElement
+instance IsGObject SVGAnimateTransformElement where
+  typeGType _ = gTypeSVGAnimateTransformElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimateTransformElement :: JSM GType
+gTypeSVGAnimateTransformElement = GType . Object <$> jsg "SVGAnimateTransformElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedAngle".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle Mozilla SVGAnimatedAngle documentation>
+newtype SVGAnimatedAngle = SVGAnimatedAngle { unSVGAnimatedAngle :: JSVal }
+
+instance PToJSVal SVGAnimatedAngle where
+  pToJSVal = unSVGAnimatedAngle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedAngle where
+  pFromJSVal = SVGAnimatedAngle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedAngle where
+  toJSVal = return . unSVGAnimatedAngle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedAngle where
+  fromJSVal v = fmap SVGAnimatedAngle <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedAngle where
+  makeObject = makeObject . unSVGAnimatedAngle
+
+instance IsGObject SVGAnimatedAngle where
+  typeGType _ = gTypeSVGAnimatedAngle
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedAngle :: JSM GType
+gTypeSVGAnimatedAngle = GType . Object <$> jsg "SVGAnimatedAngle"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedBoolean".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean Mozilla SVGAnimatedBoolean documentation>
+newtype SVGAnimatedBoolean = SVGAnimatedBoolean { unSVGAnimatedBoolean :: JSVal }
+
+instance PToJSVal SVGAnimatedBoolean where
+  pToJSVal = unSVGAnimatedBoolean
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedBoolean where
+  pFromJSVal = SVGAnimatedBoolean
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedBoolean where
+  toJSVal = return . unSVGAnimatedBoolean
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedBoolean where
+  fromJSVal v = fmap SVGAnimatedBoolean <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedBoolean where
+  makeObject = makeObject . unSVGAnimatedBoolean
+
+instance IsGObject SVGAnimatedBoolean where
+  typeGType _ = gTypeSVGAnimatedBoolean
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedBoolean :: JSM GType
+gTypeSVGAnimatedBoolean = GType . Object <$> jsg "SVGAnimatedBoolean"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedEnumeration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration Mozilla SVGAnimatedEnumeration documentation>
+newtype SVGAnimatedEnumeration = SVGAnimatedEnumeration { unSVGAnimatedEnumeration :: JSVal }
+
+instance PToJSVal SVGAnimatedEnumeration where
+  pToJSVal = unSVGAnimatedEnumeration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedEnumeration where
+  pFromJSVal = SVGAnimatedEnumeration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedEnumeration where
+  toJSVal = return . unSVGAnimatedEnumeration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedEnumeration where
+  fromJSVal v = fmap SVGAnimatedEnumeration <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedEnumeration where
+  makeObject = makeObject . unSVGAnimatedEnumeration
+
+instance IsGObject SVGAnimatedEnumeration where
+  typeGType _ = gTypeSVGAnimatedEnumeration
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedEnumeration :: JSM GType
+gTypeSVGAnimatedEnumeration = GType . Object <$> jsg "SVGAnimatedEnumeration"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedInteger".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger Mozilla SVGAnimatedInteger documentation>
+newtype SVGAnimatedInteger = SVGAnimatedInteger { unSVGAnimatedInteger :: JSVal }
+
+instance PToJSVal SVGAnimatedInteger where
+  pToJSVal = unSVGAnimatedInteger
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedInteger where
+  pFromJSVal = SVGAnimatedInteger
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedInteger where
+  toJSVal = return . unSVGAnimatedInteger
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedInteger where
+  fromJSVal v = fmap SVGAnimatedInteger <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedInteger where
+  makeObject = makeObject . unSVGAnimatedInteger
+
+instance IsGObject SVGAnimatedInteger where
+  typeGType _ = gTypeSVGAnimatedInteger
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedInteger :: JSM GType
+gTypeSVGAnimatedInteger = GType . Object <$> jsg "SVGAnimatedInteger"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedLength".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength Mozilla SVGAnimatedLength documentation>
+newtype SVGAnimatedLength = SVGAnimatedLength { unSVGAnimatedLength :: JSVal }
+
+instance PToJSVal SVGAnimatedLength where
+  pToJSVal = unSVGAnimatedLength
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedLength where
+  pFromJSVal = SVGAnimatedLength
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedLength where
+  toJSVal = return . unSVGAnimatedLength
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedLength where
+  fromJSVal v = fmap SVGAnimatedLength <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedLength where
+  makeObject = makeObject . unSVGAnimatedLength
+
+instance IsGObject SVGAnimatedLength where
+  typeGType _ = gTypeSVGAnimatedLength
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedLength :: JSM GType
+gTypeSVGAnimatedLength = GType . Object <$> jsg "SVGAnimatedLength"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedLengthList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList Mozilla SVGAnimatedLengthList documentation>
+newtype SVGAnimatedLengthList = SVGAnimatedLengthList { unSVGAnimatedLengthList :: JSVal }
+
+instance PToJSVal SVGAnimatedLengthList where
+  pToJSVal = unSVGAnimatedLengthList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedLengthList where
+  pFromJSVal = SVGAnimatedLengthList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedLengthList where
+  toJSVal = return . unSVGAnimatedLengthList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedLengthList where
+  fromJSVal v = fmap SVGAnimatedLengthList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedLengthList where
+  makeObject = makeObject . unSVGAnimatedLengthList
+
+instance IsGObject SVGAnimatedLengthList where
+  typeGType _ = gTypeSVGAnimatedLengthList
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedLengthList :: JSM GType
+gTypeSVGAnimatedLengthList = GType . Object <$> jsg "SVGAnimatedLengthList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedNumber".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber Mozilla SVGAnimatedNumber documentation>
+newtype SVGAnimatedNumber = SVGAnimatedNumber { unSVGAnimatedNumber :: JSVal }
+
+instance PToJSVal SVGAnimatedNumber where
+  pToJSVal = unSVGAnimatedNumber
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedNumber where
+  pFromJSVal = SVGAnimatedNumber
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedNumber where
+  toJSVal = return . unSVGAnimatedNumber
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedNumber where
+  fromJSVal v = fmap SVGAnimatedNumber <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedNumber where
+  makeObject = makeObject . unSVGAnimatedNumber
+
+instance IsGObject SVGAnimatedNumber where
+  typeGType _ = gTypeSVGAnimatedNumber
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedNumber :: JSM GType
+gTypeSVGAnimatedNumber = GType . Object <$> jsg "SVGAnimatedNumber"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedNumberList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList Mozilla SVGAnimatedNumberList documentation>
+newtype SVGAnimatedNumberList = SVGAnimatedNumberList { unSVGAnimatedNumberList :: JSVal }
+
+instance PToJSVal SVGAnimatedNumberList where
+  pToJSVal = unSVGAnimatedNumberList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedNumberList where
+  pFromJSVal = SVGAnimatedNumberList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedNumberList where
+  toJSVal = return . unSVGAnimatedNumberList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedNumberList where
+  fromJSVal v = fmap SVGAnimatedNumberList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedNumberList where
+  makeObject = makeObject . unSVGAnimatedNumberList
+
+instance IsGObject SVGAnimatedNumberList where
+  typeGType _ = gTypeSVGAnimatedNumberList
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedNumberList :: JSM GType
+gTypeSVGAnimatedNumberList = GType . Object <$> jsg "SVGAnimatedNumberList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedPreserveAspectRatio".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio Mozilla SVGAnimatedPreserveAspectRatio documentation>
+newtype SVGAnimatedPreserveAspectRatio = SVGAnimatedPreserveAspectRatio { unSVGAnimatedPreserveAspectRatio :: JSVal }
+
+instance PToJSVal SVGAnimatedPreserveAspectRatio where
+  pToJSVal = unSVGAnimatedPreserveAspectRatio
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedPreserveAspectRatio where
+  pFromJSVal = SVGAnimatedPreserveAspectRatio
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedPreserveAspectRatio where
+  toJSVal = return . unSVGAnimatedPreserveAspectRatio
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedPreserveAspectRatio where
+  fromJSVal v = fmap SVGAnimatedPreserveAspectRatio <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedPreserveAspectRatio where
+  makeObject = makeObject . unSVGAnimatedPreserveAspectRatio
+
+instance IsGObject SVGAnimatedPreserveAspectRatio where
+  typeGType _ = gTypeSVGAnimatedPreserveAspectRatio
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedPreserveAspectRatio :: JSM GType
+gTypeSVGAnimatedPreserveAspectRatio = GType . Object <$> jsg "SVGAnimatedPreserveAspectRatio"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect Mozilla SVGAnimatedRect documentation>
+newtype SVGAnimatedRect = SVGAnimatedRect { unSVGAnimatedRect :: JSVal }
+
+instance PToJSVal SVGAnimatedRect where
+  pToJSVal = unSVGAnimatedRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedRect where
+  pFromJSVal = SVGAnimatedRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedRect where
+  toJSVal = return . unSVGAnimatedRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedRect where
+  fromJSVal v = fmap SVGAnimatedRect <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedRect where
+  makeObject = makeObject . unSVGAnimatedRect
+
+instance IsGObject SVGAnimatedRect where
+  typeGType _ = gTypeSVGAnimatedRect
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedRect :: JSM GType
+gTypeSVGAnimatedRect = GType . Object <$> jsg "SVGAnimatedRect"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedString".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString Mozilla SVGAnimatedString documentation>
+newtype SVGAnimatedString = SVGAnimatedString { unSVGAnimatedString :: JSVal }
+
+instance PToJSVal SVGAnimatedString where
+  pToJSVal = unSVGAnimatedString
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedString where
+  pFromJSVal = SVGAnimatedString
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedString where
+  toJSVal = return . unSVGAnimatedString
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedString where
+  fromJSVal v = fmap SVGAnimatedString <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedString where
+  makeObject = makeObject . unSVGAnimatedString
+
+instance IsGObject SVGAnimatedString where
+  typeGType _ = gTypeSVGAnimatedString
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedString :: JSM GType
+gTypeSVGAnimatedString = GType . Object <$> jsg "SVGAnimatedString"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimatedTransformList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList Mozilla SVGAnimatedTransformList documentation>
+newtype SVGAnimatedTransformList = SVGAnimatedTransformList { unSVGAnimatedTransformList :: JSVal }
+
+instance PToJSVal SVGAnimatedTransformList where
+  pToJSVal = unSVGAnimatedTransformList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedTransformList where
+  pFromJSVal = SVGAnimatedTransformList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedTransformList where
+  toJSVal = return . unSVGAnimatedTransformList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedTransformList where
+  fromJSVal v = fmap SVGAnimatedTransformList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimatedTransformList where
+  makeObject = makeObject . unSVGAnimatedTransformList
+
+instance IsGObject SVGAnimatedTransformList where
+  typeGType _ = gTypeSVGAnimatedTransformList
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimatedTransformList :: JSM GType
+gTypeSVGAnimatedTransformList = GType . Object <$> jsg "SVGAnimatedTransformList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGAnimationElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement Mozilla SVGAnimationElement documentation>
+newtype SVGAnimationElement = SVGAnimationElement { unSVGAnimationElement :: JSVal }
+
+instance PToJSVal SVGAnimationElement where
+  pToJSVal = unSVGAnimationElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimationElement where
+  pFromJSVal = SVGAnimationElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimationElement where
+  toJSVal = return . unSVGAnimationElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimationElement where
+  fromJSVal v = fmap SVGAnimationElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGAnimationElement where
+  makeObject = makeObject . unSVGAnimationElement
+
+class IsSVGElement o => IsSVGAnimationElement o
+toSVGAnimationElement :: IsSVGAnimationElement o => o -> SVGAnimationElement
+toSVGAnimationElement = SVGAnimationElement . coerce
+
+instance IsSVGAnimationElement SVGAnimationElement
+instance IsSVGElement SVGAnimationElement
+instance IsElement SVGAnimationElement
+instance IsNode SVGAnimationElement
+instance IsEventTarget SVGAnimationElement
+instance IsGObject SVGAnimationElement where
+  typeGType _ = gTypeSVGAnimationElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGAnimationElement :: JSM GType
+gTypeSVGAnimationElement = GType . Object <$> jsg "SVGAnimationElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGCircleElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement Mozilla SVGCircleElement documentation>
+newtype SVGCircleElement = SVGCircleElement { unSVGCircleElement :: JSVal }
+
+instance PToJSVal SVGCircleElement where
+  pToJSVal = unSVGCircleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGCircleElement where
+  pFromJSVal = SVGCircleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGCircleElement where
+  toJSVal = return . unSVGCircleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGCircleElement where
+  fromJSVal v = fmap SVGCircleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGCircleElement where
+  makeObject = makeObject . unSVGCircleElement
+
+instance IsSVGGraphicsElement SVGCircleElement
+instance IsSVGElement SVGCircleElement
+instance IsElement SVGCircleElement
+instance IsNode SVGCircleElement
+instance IsEventTarget SVGCircleElement
+instance IsGObject SVGCircleElement where
+  typeGType _ = gTypeSVGCircleElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGCircleElement :: JSM GType
+gTypeSVGCircleElement = GType . Object <$> jsg "SVGCircleElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGClipPathElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement Mozilla SVGClipPathElement documentation>
+newtype SVGClipPathElement = SVGClipPathElement { unSVGClipPathElement :: JSVal }
+
+instance PToJSVal SVGClipPathElement where
+  pToJSVal = unSVGClipPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGClipPathElement where
+  pFromJSVal = SVGClipPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGClipPathElement where
+  toJSVal = return . unSVGClipPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGClipPathElement where
+  fromJSVal v = fmap SVGClipPathElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGClipPathElement where
+  makeObject = makeObject . unSVGClipPathElement
+
+instance IsSVGGraphicsElement SVGClipPathElement
+instance IsSVGElement SVGClipPathElement
+instance IsElement SVGClipPathElement
+instance IsNode SVGClipPathElement
+instance IsEventTarget SVGClipPathElement
+instance IsGObject SVGClipPathElement where
+  typeGType _ = gTypeSVGClipPathElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGClipPathElement :: JSM GType
+gTypeSVGClipPathElement = GType . Object <$> jsg "SVGClipPathElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGColor".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGColor Mozilla SVGColor documentation>
+newtype SVGColor = SVGColor { unSVGColor :: JSVal }
+
+instance PToJSVal SVGColor where
+  pToJSVal = unSVGColor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGColor where
+  pFromJSVal = SVGColor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGColor where
+  toJSVal = return . unSVGColor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGColor where
+  fromJSVal v = fmap SVGColor <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGColor where
+  makeObject = makeObject . unSVGColor
+
+class IsCSSValue o => IsSVGColor o
+toSVGColor :: IsSVGColor o => o -> SVGColor
+toSVGColor = SVGColor . coerce
+
+instance IsSVGColor SVGColor
+instance IsCSSValue SVGColor
+instance IsGObject SVGColor where
+  typeGType _ = gTypeSVGColor
+  {-# INLINE typeGType #-}
+
+gTypeSVGColor :: JSM GType
+gTypeSVGColor = GType . Object <$> jsg "SVGColor"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGComponentTransferFunctionElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement Mozilla SVGComponentTransferFunctionElement documentation>
+newtype SVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement { unSVGComponentTransferFunctionElement :: JSVal }
+
+instance PToJSVal SVGComponentTransferFunctionElement where
+  pToJSVal = unSVGComponentTransferFunctionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGComponentTransferFunctionElement where
+  pFromJSVal = SVGComponentTransferFunctionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGComponentTransferFunctionElement where
+  toJSVal = return . unSVGComponentTransferFunctionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGComponentTransferFunctionElement where
+  fromJSVal v = fmap SVGComponentTransferFunctionElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGComponentTransferFunctionElement where
+  makeObject = makeObject . unSVGComponentTransferFunctionElement
+
+class IsSVGElement o => IsSVGComponentTransferFunctionElement o
+toSVGComponentTransferFunctionElement :: IsSVGComponentTransferFunctionElement o => o -> SVGComponentTransferFunctionElement
+toSVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement . coerce
+
+instance IsSVGComponentTransferFunctionElement SVGComponentTransferFunctionElement
+instance IsSVGElement SVGComponentTransferFunctionElement
+instance IsElement SVGComponentTransferFunctionElement
+instance IsNode SVGComponentTransferFunctionElement
+instance IsEventTarget SVGComponentTransferFunctionElement
+instance IsGObject SVGComponentTransferFunctionElement where
+  typeGType _ = gTypeSVGComponentTransferFunctionElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGComponentTransferFunctionElement :: JSM GType
+gTypeSVGComponentTransferFunctionElement = GType . Object <$> jsg "SVGComponentTransferFunctionElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGCursorElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement Mozilla SVGCursorElement documentation>
+newtype SVGCursorElement = SVGCursorElement { unSVGCursorElement :: JSVal }
+
+instance PToJSVal SVGCursorElement where
+  pToJSVal = unSVGCursorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGCursorElement where
+  pFromJSVal = SVGCursorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGCursorElement where
+  toJSVal = return . unSVGCursorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGCursorElement where
+  fromJSVal v = fmap SVGCursorElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGCursorElement where
+  makeObject = makeObject . unSVGCursorElement
+
+instance IsSVGElement SVGCursorElement
+instance IsElement SVGCursorElement
+instance IsNode SVGCursorElement
+instance IsEventTarget SVGCursorElement
+instance IsGObject SVGCursorElement where
+  typeGType _ = gTypeSVGCursorElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGCursorElement :: JSM GType
+gTypeSVGCursorElement = GType . Object <$> jsg "SVGCursorElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGDefsElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDefsElement Mozilla SVGDefsElement documentation>
+newtype SVGDefsElement = SVGDefsElement { unSVGDefsElement :: JSVal }
+
+instance PToJSVal SVGDefsElement where
+  pToJSVal = unSVGDefsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDefsElement where
+  pFromJSVal = SVGDefsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDefsElement where
+  toJSVal = return . unSVGDefsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDefsElement where
+  fromJSVal v = fmap SVGDefsElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGDefsElement where
+  makeObject = makeObject . unSVGDefsElement
+
+instance IsSVGGraphicsElement SVGDefsElement
+instance IsSVGElement SVGDefsElement
+instance IsElement SVGDefsElement
+instance IsNode SVGDefsElement
+instance IsEventTarget SVGDefsElement
+instance IsGObject SVGDefsElement where
+  typeGType _ = gTypeSVGDefsElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGDefsElement :: JSM GType
+gTypeSVGDefsElement = GType . Object <$> jsg "SVGDefsElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGDescElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDescElement Mozilla SVGDescElement documentation>
+newtype SVGDescElement = SVGDescElement { unSVGDescElement :: JSVal }
+
+instance PToJSVal SVGDescElement where
+  pToJSVal = unSVGDescElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDescElement where
+  pFromJSVal = SVGDescElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDescElement where
+  toJSVal = return . unSVGDescElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDescElement where
+  fromJSVal v = fmap SVGDescElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGDescElement where
+  makeObject = makeObject . unSVGDescElement
+
+instance IsSVGElement SVGDescElement
+instance IsElement SVGDescElement
+instance IsNode SVGDescElement
+instance IsEventTarget SVGDescElement
+instance IsGObject SVGDescElement where
+  typeGType _ = gTypeSVGDescElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGDescElement :: JSM GType
+gTypeSVGDescElement = GType . Object <$> jsg "SVGDescElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGDocument".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Document"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDocument Mozilla SVGDocument documentation>
+newtype SVGDocument = SVGDocument { unSVGDocument :: JSVal }
+
+instance PToJSVal SVGDocument where
+  pToJSVal = unSVGDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDocument where
+  pFromJSVal = SVGDocument
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDocument where
+  toJSVal = return . unSVGDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDocument where
+  fromJSVal v = fmap SVGDocument <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGDocument where
+  makeObject = makeObject . unSVGDocument
+
+instance IsDocument SVGDocument
+instance IsNode SVGDocument
+instance IsEventTarget SVGDocument
+instance IsGObject SVGDocument where
+  typeGType _ = gTypeSVGDocument
+  {-# INLINE typeGType #-}
+
+gTypeSVGDocument :: JSM GType
+gTypeSVGDocument = GType . Object <$> jsg "SVGDocument"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement Mozilla SVGElement documentation>
+newtype SVGElement = SVGElement { unSVGElement :: JSVal }
+
+instance PToJSVal SVGElement where
+  pToJSVal = unSVGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGElement where
+  pFromJSVal = SVGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGElement where
+  toJSVal = return . unSVGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGElement where
+  fromJSVal v = fmap SVGElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGElement where
+  makeObject = makeObject . unSVGElement
+
+class IsElement o => IsSVGElement o
+toSVGElement :: IsSVGElement o => o -> SVGElement
+toSVGElement = SVGElement . coerce
+
+instance IsSVGElement SVGElement
+instance IsElement SVGElement
+instance IsNode SVGElement
+instance IsEventTarget SVGElement
+instance IsGObject SVGElement where
+  typeGType _ = gTypeSVGElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGElement :: JSM GType
+gTypeSVGElement = GType . Object <$> jsg "SVGElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGEllipseElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement Mozilla SVGEllipseElement documentation>
+newtype SVGEllipseElement = SVGEllipseElement { unSVGEllipseElement :: JSVal }
+
+instance PToJSVal SVGEllipseElement where
+  pToJSVal = unSVGEllipseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGEllipseElement where
+  pFromJSVal = SVGEllipseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGEllipseElement where
+  toJSVal = return . unSVGEllipseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGEllipseElement where
+  fromJSVal v = fmap SVGEllipseElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGEllipseElement where
+  makeObject = makeObject . unSVGEllipseElement
+
+instance IsSVGGraphicsElement SVGEllipseElement
+instance IsSVGElement SVGEllipseElement
+instance IsElement SVGEllipseElement
+instance IsNode SVGEllipseElement
+instance IsEventTarget SVGEllipseElement
+instance IsGObject SVGEllipseElement where
+  typeGType _ = gTypeSVGEllipseElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGEllipseElement :: JSM GType
+gTypeSVGEllipseElement = GType . Object <$> jsg "SVGEllipseElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGExternalResourcesRequired".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired Mozilla SVGExternalResourcesRequired documentation>
+newtype SVGExternalResourcesRequired = SVGExternalResourcesRequired { unSVGExternalResourcesRequired :: JSVal }
+
+instance PToJSVal SVGExternalResourcesRequired where
+  pToJSVal = unSVGExternalResourcesRequired
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGExternalResourcesRequired where
+  pFromJSVal = SVGExternalResourcesRequired
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGExternalResourcesRequired where
+  toJSVal = return . unSVGExternalResourcesRequired
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGExternalResourcesRequired where
+  fromJSVal v = fmap SVGExternalResourcesRequired <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGExternalResourcesRequired where
+  makeObject = makeObject . unSVGExternalResourcesRequired
+
+instance IsGObject SVGExternalResourcesRequired where
+  typeGType _ = gTypeSVGExternalResourcesRequired
+  {-# INLINE typeGType #-}
+
+gTypeSVGExternalResourcesRequired :: JSM GType
+gTypeSVGExternalResourcesRequired = GType . Object <$> jsg "SVGExternalResourcesRequired"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEBlendElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement Mozilla SVGFEBlendElement documentation>
+newtype SVGFEBlendElement = SVGFEBlendElement { unSVGFEBlendElement :: JSVal }
+
+instance PToJSVal SVGFEBlendElement where
+  pToJSVal = unSVGFEBlendElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEBlendElement where
+  pFromJSVal = SVGFEBlendElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEBlendElement where
+  toJSVal = return . unSVGFEBlendElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEBlendElement where
+  fromJSVal v = fmap SVGFEBlendElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEBlendElement where
+  makeObject = makeObject . unSVGFEBlendElement
+
+instance IsSVGElement SVGFEBlendElement
+instance IsElement SVGFEBlendElement
+instance IsNode SVGFEBlendElement
+instance IsEventTarget SVGFEBlendElement
+instance IsGObject SVGFEBlendElement where
+  typeGType _ = gTypeSVGFEBlendElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEBlendElement :: JSM GType
+gTypeSVGFEBlendElement = GType . Object <$> jsg "SVGFEBlendElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEColorMatrixElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement Mozilla SVGFEColorMatrixElement documentation>
+newtype SVGFEColorMatrixElement = SVGFEColorMatrixElement { unSVGFEColorMatrixElement :: JSVal }
+
+instance PToJSVal SVGFEColorMatrixElement where
+  pToJSVal = unSVGFEColorMatrixElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEColorMatrixElement where
+  pFromJSVal = SVGFEColorMatrixElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEColorMatrixElement where
+  toJSVal = return . unSVGFEColorMatrixElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEColorMatrixElement where
+  fromJSVal v = fmap SVGFEColorMatrixElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEColorMatrixElement where
+  makeObject = makeObject . unSVGFEColorMatrixElement
+
+instance IsSVGElement SVGFEColorMatrixElement
+instance IsElement SVGFEColorMatrixElement
+instance IsNode SVGFEColorMatrixElement
+instance IsEventTarget SVGFEColorMatrixElement
+instance IsGObject SVGFEColorMatrixElement where
+  typeGType _ = gTypeSVGFEColorMatrixElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEColorMatrixElement :: JSM GType
+gTypeSVGFEColorMatrixElement = GType . Object <$> jsg "SVGFEColorMatrixElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEComponentTransferElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement Mozilla SVGFEComponentTransferElement documentation>
+newtype SVGFEComponentTransferElement = SVGFEComponentTransferElement { unSVGFEComponentTransferElement :: JSVal }
+
+instance PToJSVal SVGFEComponentTransferElement where
+  pToJSVal = unSVGFEComponentTransferElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEComponentTransferElement where
+  pFromJSVal = SVGFEComponentTransferElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEComponentTransferElement where
+  toJSVal = return . unSVGFEComponentTransferElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEComponentTransferElement where
+  fromJSVal v = fmap SVGFEComponentTransferElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEComponentTransferElement where
+  makeObject = makeObject . unSVGFEComponentTransferElement
+
+instance IsSVGElement SVGFEComponentTransferElement
+instance IsElement SVGFEComponentTransferElement
+instance IsNode SVGFEComponentTransferElement
+instance IsEventTarget SVGFEComponentTransferElement
+instance IsGObject SVGFEComponentTransferElement where
+  typeGType _ = gTypeSVGFEComponentTransferElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEComponentTransferElement :: JSM GType
+gTypeSVGFEComponentTransferElement = GType . Object <$> jsg "SVGFEComponentTransferElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFECompositeElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement Mozilla SVGFECompositeElement documentation>
+newtype SVGFECompositeElement = SVGFECompositeElement { unSVGFECompositeElement :: JSVal }
+
+instance PToJSVal SVGFECompositeElement where
+  pToJSVal = unSVGFECompositeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFECompositeElement where
+  pFromJSVal = SVGFECompositeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFECompositeElement where
+  toJSVal = return . unSVGFECompositeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFECompositeElement where
+  fromJSVal v = fmap SVGFECompositeElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFECompositeElement where
+  makeObject = makeObject . unSVGFECompositeElement
+
+instance IsSVGElement SVGFECompositeElement
+instance IsElement SVGFECompositeElement
+instance IsNode SVGFECompositeElement
+instance IsEventTarget SVGFECompositeElement
+instance IsGObject SVGFECompositeElement where
+  typeGType _ = gTypeSVGFECompositeElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFECompositeElement :: JSM GType
+gTypeSVGFECompositeElement = GType . Object <$> jsg "SVGFECompositeElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEConvolveMatrixElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement Mozilla SVGFEConvolveMatrixElement documentation>
+newtype SVGFEConvolveMatrixElement = SVGFEConvolveMatrixElement { unSVGFEConvolveMatrixElement :: JSVal }
+
+instance PToJSVal SVGFEConvolveMatrixElement where
+  pToJSVal = unSVGFEConvolveMatrixElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEConvolveMatrixElement where
+  pFromJSVal = SVGFEConvolveMatrixElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEConvolveMatrixElement where
+  toJSVal = return . unSVGFEConvolveMatrixElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEConvolveMatrixElement where
+  fromJSVal v = fmap SVGFEConvolveMatrixElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEConvolveMatrixElement where
+  makeObject = makeObject . unSVGFEConvolveMatrixElement
+
+instance IsSVGElement SVGFEConvolveMatrixElement
+instance IsElement SVGFEConvolveMatrixElement
+instance IsNode SVGFEConvolveMatrixElement
+instance IsEventTarget SVGFEConvolveMatrixElement
+instance IsGObject SVGFEConvolveMatrixElement where
+  typeGType _ = gTypeSVGFEConvolveMatrixElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEConvolveMatrixElement :: JSM GType
+gTypeSVGFEConvolveMatrixElement = GType . Object <$> jsg "SVGFEConvolveMatrixElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEDiffuseLightingElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement Mozilla SVGFEDiffuseLightingElement documentation>
+newtype SVGFEDiffuseLightingElement = SVGFEDiffuseLightingElement { unSVGFEDiffuseLightingElement :: JSVal }
+
+instance PToJSVal SVGFEDiffuseLightingElement where
+  pToJSVal = unSVGFEDiffuseLightingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDiffuseLightingElement where
+  pFromJSVal = SVGFEDiffuseLightingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDiffuseLightingElement where
+  toJSVal = return . unSVGFEDiffuseLightingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDiffuseLightingElement where
+  fromJSVal v = fmap SVGFEDiffuseLightingElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEDiffuseLightingElement where
+  makeObject = makeObject . unSVGFEDiffuseLightingElement
+
+instance IsSVGElement SVGFEDiffuseLightingElement
+instance IsElement SVGFEDiffuseLightingElement
+instance IsNode SVGFEDiffuseLightingElement
+instance IsEventTarget SVGFEDiffuseLightingElement
+instance IsGObject SVGFEDiffuseLightingElement where
+  typeGType _ = gTypeSVGFEDiffuseLightingElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEDiffuseLightingElement :: JSM GType
+gTypeSVGFEDiffuseLightingElement = GType . Object <$> jsg "SVGFEDiffuseLightingElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEDisplacementMapElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement Mozilla SVGFEDisplacementMapElement documentation>
+newtype SVGFEDisplacementMapElement = SVGFEDisplacementMapElement { unSVGFEDisplacementMapElement :: JSVal }
+
+instance PToJSVal SVGFEDisplacementMapElement where
+  pToJSVal = unSVGFEDisplacementMapElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDisplacementMapElement where
+  pFromJSVal = SVGFEDisplacementMapElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDisplacementMapElement where
+  toJSVal = return . unSVGFEDisplacementMapElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDisplacementMapElement where
+  fromJSVal v = fmap SVGFEDisplacementMapElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEDisplacementMapElement where
+  makeObject = makeObject . unSVGFEDisplacementMapElement
+
+instance IsSVGElement SVGFEDisplacementMapElement
+instance IsElement SVGFEDisplacementMapElement
+instance IsNode SVGFEDisplacementMapElement
+instance IsEventTarget SVGFEDisplacementMapElement
+instance IsGObject SVGFEDisplacementMapElement where
+  typeGType _ = gTypeSVGFEDisplacementMapElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEDisplacementMapElement :: JSM GType
+gTypeSVGFEDisplacementMapElement = GType . Object <$> jsg "SVGFEDisplacementMapElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEDistantLightElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement Mozilla SVGFEDistantLightElement documentation>
+newtype SVGFEDistantLightElement = SVGFEDistantLightElement { unSVGFEDistantLightElement :: JSVal }
+
+instance PToJSVal SVGFEDistantLightElement where
+  pToJSVal = unSVGFEDistantLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDistantLightElement where
+  pFromJSVal = SVGFEDistantLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDistantLightElement where
+  toJSVal = return . unSVGFEDistantLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDistantLightElement where
+  fromJSVal v = fmap SVGFEDistantLightElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEDistantLightElement where
+  makeObject = makeObject . unSVGFEDistantLightElement
+
+instance IsSVGElement SVGFEDistantLightElement
+instance IsElement SVGFEDistantLightElement
+instance IsNode SVGFEDistantLightElement
+instance IsEventTarget SVGFEDistantLightElement
+instance IsGObject SVGFEDistantLightElement where
+  typeGType _ = gTypeSVGFEDistantLightElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEDistantLightElement :: JSM GType
+gTypeSVGFEDistantLightElement = GType . Object <$> jsg "SVGFEDistantLightElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEDropShadowElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement Mozilla SVGFEDropShadowElement documentation>
+newtype SVGFEDropShadowElement = SVGFEDropShadowElement { unSVGFEDropShadowElement :: JSVal }
+
+instance PToJSVal SVGFEDropShadowElement where
+  pToJSVal = unSVGFEDropShadowElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDropShadowElement where
+  pFromJSVal = SVGFEDropShadowElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDropShadowElement where
+  toJSVal = return . unSVGFEDropShadowElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDropShadowElement where
+  fromJSVal v = fmap SVGFEDropShadowElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEDropShadowElement where
+  makeObject = makeObject . unSVGFEDropShadowElement
+
+instance IsSVGElement SVGFEDropShadowElement
+instance IsElement SVGFEDropShadowElement
+instance IsNode SVGFEDropShadowElement
+instance IsEventTarget SVGFEDropShadowElement
+instance IsGObject SVGFEDropShadowElement where
+  typeGType _ = gTypeSVGFEDropShadowElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEDropShadowElement :: JSM GType
+gTypeSVGFEDropShadowElement = GType . Object <$> jsg "SVGFEDropShadowElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEFloodElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFloodElement Mozilla SVGFEFloodElement documentation>
+newtype SVGFEFloodElement = SVGFEFloodElement { unSVGFEFloodElement :: JSVal }
+
+instance PToJSVal SVGFEFloodElement where
+  pToJSVal = unSVGFEFloodElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFloodElement where
+  pFromJSVal = SVGFEFloodElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFloodElement where
+  toJSVal = return . unSVGFEFloodElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFloodElement where
+  fromJSVal v = fmap SVGFEFloodElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFloodElement where
+  makeObject = makeObject . unSVGFEFloodElement
+
+instance IsSVGElement SVGFEFloodElement
+instance IsElement SVGFEFloodElement
+instance IsNode SVGFEFloodElement
+instance IsEventTarget SVGFEFloodElement
+instance IsGObject SVGFEFloodElement where
+  typeGType _ = gTypeSVGFEFloodElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEFloodElement :: JSM GType
+gTypeSVGFEFloodElement = GType . Object <$> jsg "SVGFEFloodElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEFuncAElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGComponentTransferFunctionElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncAElement Mozilla SVGFEFuncAElement documentation>
+newtype SVGFEFuncAElement = SVGFEFuncAElement { unSVGFEFuncAElement :: JSVal }
+
+instance PToJSVal SVGFEFuncAElement where
+  pToJSVal = unSVGFEFuncAElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncAElement where
+  pFromJSVal = SVGFEFuncAElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncAElement where
+  toJSVal = return . unSVGFEFuncAElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncAElement where
+  fromJSVal v = fmap SVGFEFuncAElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFuncAElement where
+  makeObject = makeObject . unSVGFEFuncAElement
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncAElement
+instance IsSVGElement SVGFEFuncAElement
+instance IsElement SVGFEFuncAElement
+instance IsNode SVGFEFuncAElement
+instance IsEventTarget SVGFEFuncAElement
+instance IsGObject SVGFEFuncAElement where
+  typeGType _ = gTypeSVGFEFuncAElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEFuncAElement :: JSM GType
+gTypeSVGFEFuncAElement = GType . Object <$> jsg "SVGFEFuncAElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEFuncBElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGComponentTransferFunctionElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncBElement Mozilla SVGFEFuncBElement documentation>
+newtype SVGFEFuncBElement = SVGFEFuncBElement { unSVGFEFuncBElement :: JSVal }
+
+instance PToJSVal SVGFEFuncBElement where
+  pToJSVal = unSVGFEFuncBElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncBElement where
+  pFromJSVal = SVGFEFuncBElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncBElement where
+  toJSVal = return . unSVGFEFuncBElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncBElement where
+  fromJSVal v = fmap SVGFEFuncBElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFuncBElement where
+  makeObject = makeObject . unSVGFEFuncBElement
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncBElement
+instance IsSVGElement SVGFEFuncBElement
+instance IsElement SVGFEFuncBElement
+instance IsNode SVGFEFuncBElement
+instance IsEventTarget SVGFEFuncBElement
+instance IsGObject SVGFEFuncBElement where
+  typeGType _ = gTypeSVGFEFuncBElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEFuncBElement :: JSM GType
+gTypeSVGFEFuncBElement = GType . Object <$> jsg "SVGFEFuncBElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEFuncGElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGComponentTransferFunctionElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncGElement Mozilla SVGFEFuncGElement documentation>
+newtype SVGFEFuncGElement = SVGFEFuncGElement { unSVGFEFuncGElement :: JSVal }
+
+instance PToJSVal SVGFEFuncGElement where
+  pToJSVal = unSVGFEFuncGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncGElement where
+  pFromJSVal = SVGFEFuncGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncGElement where
+  toJSVal = return . unSVGFEFuncGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncGElement where
+  fromJSVal v = fmap SVGFEFuncGElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFuncGElement where
+  makeObject = makeObject . unSVGFEFuncGElement
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncGElement
+instance IsSVGElement SVGFEFuncGElement
+instance IsElement SVGFEFuncGElement
+instance IsNode SVGFEFuncGElement
+instance IsEventTarget SVGFEFuncGElement
+instance IsGObject SVGFEFuncGElement where
+  typeGType _ = gTypeSVGFEFuncGElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEFuncGElement :: JSM GType
+gTypeSVGFEFuncGElement = GType . Object <$> jsg "SVGFEFuncGElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEFuncRElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGComponentTransferFunctionElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncRElement Mozilla SVGFEFuncRElement documentation>
+newtype SVGFEFuncRElement = SVGFEFuncRElement { unSVGFEFuncRElement :: JSVal }
+
+instance PToJSVal SVGFEFuncRElement where
+  pToJSVal = unSVGFEFuncRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncRElement where
+  pFromJSVal = SVGFEFuncRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncRElement where
+  toJSVal = return . unSVGFEFuncRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncRElement where
+  fromJSVal v = fmap SVGFEFuncRElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEFuncRElement where
+  makeObject = makeObject . unSVGFEFuncRElement
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncRElement
+instance IsSVGElement SVGFEFuncRElement
+instance IsElement SVGFEFuncRElement
+instance IsNode SVGFEFuncRElement
+instance IsEventTarget SVGFEFuncRElement
+instance IsGObject SVGFEFuncRElement where
+  typeGType _ = gTypeSVGFEFuncRElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEFuncRElement :: JSM GType
+gTypeSVGFEFuncRElement = GType . Object <$> jsg "SVGFEFuncRElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEGaussianBlurElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement Mozilla SVGFEGaussianBlurElement documentation>
+newtype SVGFEGaussianBlurElement = SVGFEGaussianBlurElement { unSVGFEGaussianBlurElement :: JSVal }
+
+instance PToJSVal SVGFEGaussianBlurElement where
+  pToJSVal = unSVGFEGaussianBlurElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEGaussianBlurElement where
+  pFromJSVal = SVGFEGaussianBlurElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEGaussianBlurElement where
+  toJSVal = return . unSVGFEGaussianBlurElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEGaussianBlurElement where
+  fromJSVal v = fmap SVGFEGaussianBlurElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEGaussianBlurElement where
+  makeObject = makeObject . unSVGFEGaussianBlurElement
+
+instance IsSVGElement SVGFEGaussianBlurElement
+instance IsElement SVGFEGaussianBlurElement
+instance IsNode SVGFEGaussianBlurElement
+instance IsEventTarget SVGFEGaussianBlurElement
+instance IsGObject SVGFEGaussianBlurElement where
+  typeGType _ = gTypeSVGFEGaussianBlurElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEGaussianBlurElement :: JSM GType
+gTypeSVGFEGaussianBlurElement = GType . Object <$> jsg "SVGFEGaussianBlurElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEImageElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement Mozilla SVGFEImageElement documentation>
+newtype SVGFEImageElement = SVGFEImageElement { unSVGFEImageElement :: JSVal }
+
+instance PToJSVal SVGFEImageElement where
+  pToJSVal = unSVGFEImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEImageElement where
+  pFromJSVal = SVGFEImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEImageElement where
+  toJSVal = return . unSVGFEImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEImageElement where
+  fromJSVal v = fmap SVGFEImageElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEImageElement where
+  makeObject = makeObject . unSVGFEImageElement
+
+instance IsSVGElement SVGFEImageElement
+instance IsElement SVGFEImageElement
+instance IsNode SVGFEImageElement
+instance IsEventTarget SVGFEImageElement
+instance IsGObject SVGFEImageElement where
+  typeGType _ = gTypeSVGFEImageElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEImageElement :: JSM GType
+gTypeSVGFEImageElement = GType . Object <$> jsg "SVGFEImageElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEMergeElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeElement Mozilla SVGFEMergeElement documentation>
+newtype SVGFEMergeElement = SVGFEMergeElement { unSVGFEMergeElement :: JSVal }
+
+instance PToJSVal SVGFEMergeElement where
+  pToJSVal = unSVGFEMergeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMergeElement where
+  pFromJSVal = SVGFEMergeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMergeElement where
+  toJSVal = return . unSVGFEMergeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMergeElement where
+  fromJSVal v = fmap SVGFEMergeElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEMergeElement where
+  makeObject = makeObject . unSVGFEMergeElement
+
+instance IsSVGElement SVGFEMergeElement
+instance IsElement SVGFEMergeElement
+instance IsNode SVGFEMergeElement
+instance IsEventTarget SVGFEMergeElement
+instance IsGObject SVGFEMergeElement where
+  typeGType _ = gTypeSVGFEMergeElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEMergeElement :: JSM GType
+gTypeSVGFEMergeElement = GType . Object <$> jsg "SVGFEMergeElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEMergeNodeElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement Mozilla SVGFEMergeNodeElement documentation>
+newtype SVGFEMergeNodeElement = SVGFEMergeNodeElement { unSVGFEMergeNodeElement :: JSVal }
+
+instance PToJSVal SVGFEMergeNodeElement where
+  pToJSVal = unSVGFEMergeNodeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMergeNodeElement where
+  pFromJSVal = SVGFEMergeNodeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMergeNodeElement where
+  toJSVal = return . unSVGFEMergeNodeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMergeNodeElement where
+  fromJSVal v = fmap SVGFEMergeNodeElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEMergeNodeElement where
+  makeObject = makeObject . unSVGFEMergeNodeElement
+
+instance IsSVGElement SVGFEMergeNodeElement
+instance IsElement SVGFEMergeNodeElement
+instance IsNode SVGFEMergeNodeElement
+instance IsEventTarget SVGFEMergeNodeElement
+instance IsGObject SVGFEMergeNodeElement where
+  typeGType _ = gTypeSVGFEMergeNodeElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEMergeNodeElement :: JSM GType
+gTypeSVGFEMergeNodeElement = GType . Object <$> jsg "SVGFEMergeNodeElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEMorphologyElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement Mozilla SVGFEMorphologyElement documentation>
+newtype SVGFEMorphologyElement = SVGFEMorphologyElement { unSVGFEMorphologyElement :: JSVal }
+
+instance PToJSVal SVGFEMorphologyElement where
+  pToJSVal = unSVGFEMorphologyElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMorphologyElement where
+  pFromJSVal = SVGFEMorphologyElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMorphologyElement where
+  toJSVal = return . unSVGFEMorphologyElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMorphologyElement where
+  fromJSVal v = fmap SVGFEMorphologyElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEMorphologyElement where
+  makeObject = makeObject . unSVGFEMorphologyElement
+
+instance IsSVGElement SVGFEMorphologyElement
+instance IsElement SVGFEMorphologyElement
+instance IsNode SVGFEMorphologyElement
+instance IsEventTarget SVGFEMorphologyElement
+instance IsGObject SVGFEMorphologyElement where
+  typeGType _ = gTypeSVGFEMorphologyElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEMorphologyElement :: JSM GType
+gTypeSVGFEMorphologyElement = GType . Object <$> jsg "SVGFEMorphologyElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEOffsetElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement Mozilla SVGFEOffsetElement documentation>
+newtype SVGFEOffsetElement = SVGFEOffsetElement { unSVGFEOffsetElement :: JSVal }
+
+instance PToJSVal SVGFEOffsetElement where
+  pToJSVal = unSVGFEOffsetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEOffsetElement where
+  pFromJSVal = SVGFEOffsetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEOffsetElement where
+  toJSVal = return . unSVGFEOffsetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEOffsetElement where
+  fromJSVal v = fmap SVGFEOffsetElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEOffsetElement where
+  makeObject = makeObject . unSVGFEOffsetElement
+
+instance IsSVGElement SVGFEOffsetElement
+instance IsElement SVGFEOffsetElement
+instance IsNode SVGFEOffsetElement
+instance IsEventTarget SVGFEOffsetElement
+instance IsGObject SVGFEOffsetElement where
+  typeGType _ = gTypeSVGFEOffsetElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEOffsetElement :: JSM GType
+gTypeSVGFEOffsetElement = GType . Object <$> jsg "SVGFEOffsetElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFEPointLightElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement Mozilla SVGFEPointLightElement documentation>
+newtype SVGFEPointLightElement = SVGFEPointLightElement { unSVGFEPointLightElement :: JSVal }
+
+instance PToJSVal SVGFEPointLightElement where
+  pToJSVal = unSVGFEPointLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEPointLightElement where
+  pFromJSVal = SVGFEPointLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEPointLightElement where
+  toJSVal = return . unSVGFEPointLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEPointLightElement where
+  fromJSVal v = fmap SVGFEPointLightElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFEPointLightElement where
+  makeObject = makeObject . unSVGFEPointLightElement
+
+instance IsSVGElement SVGFEPointLightElement
+instance IsElement SVGFEPointLightElement
+instance IsNode SVGFEPointLightElement
+instance IsEventTarget SVGFEPointLightElement
+instance IsGObject SVGFEPointLightElement where
+  typeGType _ = gTypeSVGFEPointLightElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFEPointLightElement :: JSM GType
+gTypeSVGFEPointLightElement = GType . Object <$> jsg "SVGFEPointLightElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFESpecularLightingElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement Mozilla SVGFESpecularLightingElement documentation>
+newtype SVGFESpecularLightingElement = SVGFESpecularLightingElement { unSVGFESpecularLightingElement :: JSVal }
+
+instance PToJSVal SVGFESpecularLightingElement where
+  pToJSVal = unSVGFESpecularLightingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFESpecularLightingElement where
+  pFromJSVal = SVGFESpecularLightingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFESpecularLightingElement where
+  toJSVal = return . unSVGFESpecularLightingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFESpecularLightingElement where
+  fromJSVal v = fmap SVGFESpecularLightingElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFESpecularLightingElement where
+  makeObject = makeObject . unSVGFESpecularLightingElement
+
+instance IsSVGElement SVGFESpecularLightingElement
+instance IsElement SVGFESpecularLightingElement
+instance IsNode SVGFESpecularLightingElement
+instance IsEventTarget SVGFESpecularLightingElement
+instance IsGObject SVGFESpecularLightingElement where
+  typeGType _ = gTypeSVGFESpecularLightingElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFESpecularLightingElement :: JSM GType
+gTypeSVGFESpecularLightingElement = GType . Object <$> jsg "SVGFESpecularLightingElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFESpotLightElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement Mozilla SVGFESpotLightElement documentation>
+newtype SVGFESpotLightElement = SVGFESpotLightElement { unSVGFESpotLightElement :: JSVal }
+
+instance PToJSVal SVGFESpotLightElement where
+  pToJSVal = unSVGFESpotLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFESpotLightElement where
+  pFromJSVal = SVGFESpotLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFESpotLightElement where
+  toJSVal = return . unSVGFESpotLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFESpotLightElement where
+  fromJSVal v = fmap SVGFESpotLightElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFESpotLightElement where
+  makeObject = makeObject . unSVGFESpotLightElement
+
+instance IsSVGElement SVGFESpotLightElement
+instance IsElement SVGFESpotLightElement
+instance IsNode SVGFESpotLightElement
+instance IsEventTarget SVGFESpotLightElement
+instance IsGObject SVGFESpotLightElement where
+  typeGType _ = gTypeSVGFESpotLightElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFESpotLightElement :: JSM GType
+gTypeSVGFESpotLightElement = GType . Object <$> jsg "SVGFESpotLightElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFETileElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement Mozilla SVGFETileElement documentation>
+newtype SVGFETileElement = SVGFETileElement { unSVGFETileElement :: JSVal }
+
+instance PToJSVal SVGFETileElement where
+  pToJSVal = unSVGFETileElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFETileElement where
+  pFromJSVal = SVGFETileElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFETileElement where
+  toJSVal = return . unSVGFETileElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFETileElement where
+  fromJSVal v = fmap SVGFETileElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFETileElement where
+  makeObject = makeObject . unSVGFETileElement
+
+instance IsSVGElement SVGFETileElement
+instance IsElement SVGFETileElement
+instance IsNode SVGFETileElement
+instance IsEventTarget SVGFETileElement
+instance IsGObject SVGFETileElement where
+  typeGType _ = gTypeSVGFETileElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFETileElement :: JSM GType
+gTypeSVGFETileElement = GType . Object <$> jsg "SVGFETileElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFETurbulenceElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement Mozilla SVGFETurbulenceElement documentation>
+newtype SVGFETurbulenceElement = SVGFETurbulenceElement { unSVGFETurbulenceElement :: JSVal }
+
+instance PToJSVal SVGFETurbulenceElement where
+  pToJSVal = unSVGFETurbulenceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFETurbulenceElement where
+  pFromJSVal = SVGFETurbulenceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFETurbulenceElement where
+  toJSVal = return . unSVGFETurbulenceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFETurbulenceElement where
+  fromJSVal v = fmap SVGFETurbulenceElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFETurbulenceElement where
+  makeObject = makeObject . unSVGFETurbulenceElement
+
+instance IsSVGElement SVGFETurbulenceElement
+instance IsElement SVGFETurbulenceElement
+instance IsNode SVGFETurbulenceElement
+instance IsEventTarget SVGFETurbulenceElement
+instance IsGObject SVGFETurbulenceElement where
+  typeGType _ = gTypeSVGFETurbulenceElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFETurbulenceElement :: JSM GType
+gTypeSVGFETurbulenceElement = GType . Object <$> jsg "SVGFETurbulenceElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFilterElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement Mozilla SVGFilterElement documentation>
+newtype SVGFilterElement = SVGFilterElement { unSVGFilterElement :: JSVal }
+
+instance PToJSVal SVGFilterElement where
+  pToJSVal = unSVGFilterElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFilterElement where
+  pFromJSVal = SVGFilterElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFilterElement where
+  toJSVal = return . unSVGFilterElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFilterElement where
+  fromJSVal v = fmap SVGFilterElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFilterElement where
+  makeObject = makeObject . unSVGFilterElement
+
+instance IsSVGElement SVGFilterElement
+instance IsElement SVGFilterElement
+instance IsNode SVGFilterElement
+instance IsEventTarget SVGFilterElement
+instance IsGObject SVGFilterElement where
+  typeGType _ = gTypeSVGFilterElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFilterElement :: JSM GType
+gTypeSVGFilterElement = GType . Object <$> jsg "SVGFilterElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFilterPrimitiveStandardAttributes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes Mozilla SVGFilterPrimitiveStandardAttributes documentation>
+newtype SVGFilterPrimitiveStandardAttributes = SVGFilterPrimitiveStandardAttributes { unSVGFilterPrimitiveStandardAttributes :: JSVal }
+
+instance PToJSVal SVGFilterPrimitiveStandardAttributes where
+  pToJSVal = unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFilterPrimitiveStandardAttributes where
+  pFromJSVal = SVGFilterPrimitiveStandardAttributes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFilterPrimitiveStandardAttributes where
+  toJSVal = return . unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFilterPrimitiveStandardAttributes where
+  fromJSVal v = fmap SVGFilterPrimitiveStandardAttributes <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFilterPrimitiveStandardAttributes where
+  makeObject = makeObject . unSVGFilterPrimitiveStandardAttributes
+
+instance IsGObject SVGFilterPrimitiveStandardAttributes where
+  typeGType _ = gTypeSVGFilterPrimitiveStandardAttributes
+  {-# INLINE typeGType #-}
+
+gTypeSVGFilterPrimitiveStandardAttributes :: JSM GType
+gTypeSVGFilterPrimitiveStandardAttributes = GType . Object <$> jsg "SVGFilterPrimitiveStandardAttributes"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFitToViewBox".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox Mozilla SVGFitToViewBox documentation>
+newtype SVGFitToViewBox = SVGFitToViewBox { unSVGFitToViewBox :: JSVal }
+
+instance PToJSVal SVGFitToViewBox where
+  pToJSVal = unSVGFitToViewBox
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFitToViewBox where
+  pFromJSVal = SVGFitToViewBox
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFitToViewBox where
+  toJSVal = return . unSVGFitToViewBox
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFitToViewBox where
+  fromJSVal v = fmap SVGFitToViewBox <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFitToViewBox where
+  makeObject = makeObject . unSVGFitToViewBox
+
+instance IsGObject SVGFitToViewBox where
+  typeGType _ = gTypeSVGFitToViewBox
+  {-# INLINE typeGType #-}
+
+gTypeSVGFitToViewBox :: JSM GType
+gTypeSVGFitToViewBox = GType . Object <$> jsg "SVGFitToViewBox"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFontElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontElement Mozilla SVGFontElement documentation>
+newtype SVGFontElement = SVGFontElement { unSVGFontElement :: JSVal }
+
+instance PToJSVal SVGFontElement where
+  pToJSVal = unSVGFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontElement where
+  pFromJSVal = SVGFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontElement where
+  toJSVal = return . unSVGFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontElement where
+  fromJSVal v = fmap SVGFontElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontElement where
+  makeObject = makeObject . unSVGFontElement
+
+instance IsSVGElement SVGFontElement
+instance IsElement SVGFontElement
+instance IsNode SVGFontElement
+instance IsEventTarget SVGFontElement
+instance IsGObject SVGFontElement where
+  typeGType _ = gTypeSVGFontElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFontElement :: JSM GType
+gTypeSVGFontElement = GType . Object <$> jsg "SVGFontElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFontFaceElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceElement Mozilla SVGFontFaceElement documentation>
+newtype SVGFontFaceElement = SVGFontFaceElement { unSVGFontFaceElement :: JSVal }
+
+instance PToJSVal SVGFontFaceElement where
+  pToJSVal = unSVGFontFaceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceElement where
+  pFromJSVal = SVGFontFaceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceElement where
+  toJSVal = return . unSVGFontFaceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceElement where
+  fromJSVal v = fmap SVGFontFaceElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceElement where
+  makeObject = makeObject . unSVGFontFaceElement
+
+instance IsSVGElement SVGFontFaceElement
+instance IsElement SVGFontFaceElement
+instance IsNode SVGFontFaceElement
+instance IsEventTarget SVGFontFaceElement
+instance IsGObject SVGFontFaceElement where
+  typeGType _ = gTypeSVGFontFaceElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFontFaceElement :: JSM GType
+gTypeSVGFontFaceElement = GType . Object <$> jsg "SVGFontFaceElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFontFaceFormatElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceFormatElement Mozilla SVGFontFaceFormatElement documentation>
+newtype SVGFontFaceFormatElement = SVGFontFaceFormatElement { unSVGFontFaceFormatElement :: JSVal }
+
+instance PToJSVal SVGFontFaceFormatElement where
+  pToJSVal = unSVGFontFaceFormatElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceFormatElement where
+  pFromJSVal = SVGFontFaceFormatElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceFormatElement where
+  toJSVal = return . unSVGFontFaceFormatElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceFormatElement where
+  fromJSVal v = fmap SVGFontFaceFormatElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceFormatElement where
+  makeObject = makeObject . unSVGFontFaceFormatElement
+
+instance IsSVGElement SVGFontFaceFormatElement
+instance IsElement SVGFontFaceFormatElement
+instance IsNode SVGFontFaceFormatElement
+instance IsEventTarget SVGFontFaceFormatElement
+instance IsGObject SVGFontFaceFormatElement where
+  typeGType _ = gTypeSVGFontFaceFormatElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFontFaceFormatElement :: JSM GType
+gTypeSVGFontFaceFormatElement = GType . Object <$> jsg "SVGFontFaceFormatElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFontFaceNameElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceNameElement Mozilla SVGFontFaceNameElement documentation>
+newtype SVGFontFaceNameElement = SVGFontFaceNameElement { unSVGFontFaceNameElement :: JSVal }
+
+instance PToJSVal SVGFontFaceNameElement where
+  pToJSVal = unSVGFontFaceNameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceNameElement where
+  pFromJSVal = SVGFontFaceNameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceNameElement where
+  toJSVal = return . unSVGFontFaceNameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceNameElement where
+  fromJSVal v = fmap SVGFontFaceNameElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceNameElement where
+  makeObject = makeObject . unSVGFontFaceNameElement
+
+instance IsSVGElement SVGFontFaceNameElement
+instance IsElement SVGFontFaceNameElement
+instance IsNode SVGFontFaceNameElement
+instance IsEventTarget SVGFontFaceNameElement
+instance IsGObject SVGFontFaceNameElement where
+  typeGType _ = gTypeSVGFontFaceNameElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFontFaceNameElement :: JSM GType
+gTypeSVGFontFaceNameElement = GType . Object <$> jsg "SVGFontFaceNameElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFontFaceSrcElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceSrcElement Mozilla SVGFontFaceSrcElement documentation>
+newtype SVGFontFaceSrcElement = SVGFontFaceSrcElement { unSVGFontFaceSrcElement :: JSVal }
+
+instance PToJSVal SVGFontFaceSrcElement where
+  pToJSVal = unSVGFontFaceSrcElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceSrcElement where
+  pFromJSVal = SVGFontFaceSrcElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceSrcElement where
+  toJSVal = return . unSVGFontFaceSrcElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceSrcElement where
+  fromJSVal v = fmap SVGFontFaceSrcElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceSrcElement where
+  makeObject = makeObject . unSVGFontFaceSrcElement
+
+instance IsSVGElement SVGFontFaceSrcElement
+instance IsElement SVGFontFaceSrcElement
+instance IsNode SVGFontFaceSrcElement
+instance IsEventTarget SVGFontFaceSrcElement
+instance IsGObject SVGFontFaceSrcElement where
+  typeGType _ = gTypeSVGFontFaceSrcElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFontFaceSrcElement :: JSM GType
+gTypeSVGFontFaceSrcElement = GType . Object <$> jsg "SVGFontFaceSrcElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGFontFaceUriElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceUriElement Mozilla SVGFontFaceUriElement documentation>
+newtype SVGFontFaceUriElement = SVGFontFaceUriElement { unSVGFontFaceUriElement :: JSVal }
+
+instance PToJSVal SVGFontFaceUriElement where
+  pToJSVal = unSVGFontFaceUriElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceUriElement where
+  pFromJSVal = SVGFontFaceUriElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceUriElement where
+  toJSVal = return . unSVGFontFaceUriElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceUriElement where
+  fromJSVal v = fmap SVGFontFaceUriElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGFontFaceUriElement where
+  makeObject = makeObject . unSVGFontFaceUriElement
+
+instance IsSVGElement SVGFontFaceUriElement
+instance IsElement SVGFontFaceUriElement
+instance IsNode SVGFontFaceUriElement
+instance IsEventTarget SVGFontFaceUriElement
+instance IsGObject SVGFontFaceUriElement where
+  typeGType _ = gTypeSVGFontFaceUriElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGFontFaceUriElement :: JSM GType
+gTypeSVGFontFaceUriElement = GType . Object <$> jsg "SVGFontFaceUriElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGForeignObjectElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement Mozilla SVGForeignObjectElement documentation>
+newtype SVGForeignObjectElement = SVGForeignObjectElement { unSVGForeignObjectElement :: JSVal }
+
+instance PToJSVal SVGForeignObjectElement where
+  pToJSVal = unSVGForeignObjectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGForeignObjectElement where
+  pFromJSVal = SVGForeignObjectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGForeignObjectElement where
+  toJSVal = return . unSVGForeignObjectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGForeignObjectElement where
+  fromJSVal v = fmap SVGForeignObjectElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGForeignObjectElement where
+  makeObject = makeObject . unSVGForeignObjectElement
+
+instance IsSVGGraphicsElement SVGForeignObjectElement
+instance IsSVGElement SVGForeignObjectElement
+instance IsElement SVGForeignObjectElement
+instance IsNode SVGForeignObjectElement
+instance IsEventTarget SVGForeignObjectElement
+instance IsGObject SVGForeignObjectElement where
+  typeGType _ = gTypeSVGForeignObjectElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGForeignObjectElement :: JSM GType
+gTypeSVGForeignObjectElement = GType . Object <$> jsg "SVGForeignObjectElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGGElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGElement Mozilla SVGGElement documentation>
+newtype SVGGElement = SVGGElement { unSVGGElement :: JSVal }
+
+instance PToJSVal SVGGElement where
+  pToJSVal = unSVGGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGElement where
+  pFromJSVal = SVGGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGElement where
+  toJSVal = return . unSVGGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGElement where
+  fromJSVal v = fmap SVGGElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGElement where
+  makeObject = makeObject . unSVGGElement
+
+instance IsSVGGraphicsElement SVGGElement
+instance IsSVGElement SVGGElement
+instance IsElement SVGGElement
+instance IsNode SVGGElement
+instance IsEventTarget SVGGElement
+instance IsGObject SVGGElement where
+  typeGType _ = gTypeSVGGElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGGElement :: JSM GType
+gTypeSVGGElement = GType . Object <$> jsg "SVGGElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGGlyphElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphElement Mozilla SVGGlyphElement documentation>
+newtype SVGGlyphElement = SVGGlyphElement { unSVGGlyphElement :: JSVal }
+
+instance PToJSVal SVGGlyphElement where
+  pToJSVal = unSVGGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGlyphElement where
+  pFromJSVal = SVGGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGlyphElement where
+  toJSVal = return . unSVGGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGlyphElement where
+  fromJSVal v = fmap SVGGlyphElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGlyphElement where
+  makeObject = makeObject . unSVGGlyphElement
+
+instance IsSVGElement SVGGlyphElement
+instance IsElement SVGGlyphElement
+instance IsNode SVGGlyphElement
+instance IsEventTarget SVGGlyphElement
+instance IsGObject SVGGlyphElement where
+  typeGType _ = gTypeSVGGlyphElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGGlyphElement :: JSM GType
+gTypeSVGGlyphElement = GType . Object <$> jsg "SVGGlyphElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGGlyphRefElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement Mozilla SVGGlyphRefElement documentation>
+newtype SVGGlyphRefElement = SVGGlyphRefElement { unSVGGlyphRefElement :: JSVal }
+
+instance PToJSVal SVGGlyphRefElement where
+  pToJSVal = unSVGGlyphRefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGlyphRefElement where
+  pFromJSVal = SVGGlyphRefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGlyphRefElement where
+  toJSVal = return . unSVGGlyphRefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGlyphRefElement where
+  fromJSVal v = fmap SVGGlyphRefElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGlyphRefElement where
+  makeObject = makeObject . unSVGGlyphRefElement
+
+instance IsSVGElement SVGGlyphRefElement
+instance IsElement SVGGlyphRefElement
+instance IsNode SVGGlyphRefElement
+instance IsEventTarget SVGGlyphRefElement
+instance IsGObject SVGGlyphRefElement where
+  typeGType _ = gTypeSVGGlyphRefElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGGlyphRefElement :: JSM GType
+gTypeSVGGlyphRefElement = GType . Object <$> jsg "SVGGlyphRefElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGGradientElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement Mozilla SVGGradientElement documentation>
+newtype SVGGradientElement = SVGGradientElement { unSVGGradientElement :: JSVal }
+
+instance PToJSVal SVGGradientElement where
+  pToJSVal = unSVGGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGradientElement where
+  pFromJSVal = SVGGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGradientElement where
+  toJSVal = return . unSVGGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGradientElement where
+  fromJSVal v = fmap SVGGradientElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGradientElement where
+  makeObject = makeObject . unSVGGradientElement
+
+class IsSVGElement o => IsSVGGradientElement o
+toSVGGradientElement :: IsSVGGradientElement o => o -> SVGGradientElement
+toSVGGradientElement = SVGGradientElement . coerce
+
+instance IsSVGGradientElement SVGGradientElement
+instance IsSVGElement SVGGradientElement
+instance IsElement SVGGradientElement
+instance IsNode SVGGradientElement
+instance IsEventTarget SVGGradientElement
+instance IsGObject SVGGradientElement where
+  typeGType _ = gTypeSVGGradientElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGGradientElement :: JSM GType
+gTypeSVGGradientElement = GType . Object <$> jsg "SVGGradientElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGGraphicsElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement Mozilla SVGGraphicsElement documentation>
+newtype SVGGraphicsElement = SVGGraphicsElement { unSVGGraphicsElement :: JSVal }
+
+instance PToJSVal SVGGraphicsElement where
+  pToJSVal = unSVGGraphicsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGraphicsElement where
+  pFromJSVal = SVGGraphicsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGraphicsElement where
+  toJSVal = return . unSVGGraphicsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGraphicsElement where
+  fromJSVal v = fmap SVGGraphicsElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGGraphicsElement where
+  makeObject = makeObject . unSVGGraphicsElement
+
+class IsSVGElement o => IsSVGGraphicsElement o
+toSVGGraphicsElement :: IsSVGGraphicsElement o => o -> SVGGraphicsElement
+toSVGGraphicsElement = SVGGraphicsElement . coerce
+
+instance IsSVGGraphicsElement SVGGraphicsElement
+instance IsSVGElement SVGGraphicsElement
+instance IsElement SVGGraphicsElement
+instance IsNode SVGGraphicsElement
+instance IsEventTarget SVGGraphicsElement
+instance IsGObject SVGGraphicsElement where
+  typeGType _ = gTypeSVGGraphicsElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGGraphicsElement :: JSM GType
+gTypeSVGGraphicsElement = GType . Object <$> jsg "SVGGraphicsElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGHKernElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGHKernElement Mozilla SVGHKernElement documentation>
+newtype SVGHKernElement = SVGHKernElement { unSVGHKernElement :: JSVal }
+
+instance PToJSVal SVGHKernElement where
+  pToJSVal = unSVGHKernElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGHKernElement where
+  pFromJSVal = SVGHKernElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGHKernElement where
+  toJSVal = return . unSVGHKernElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGHKernElement where
+  fromJSVal v = fmap SVGHKernElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGHKernElement where
+  makeObject = makeObject . unSVGHKernElement
+
+instance IsSVGElement SVGHKernElement
+instance IsElement SVGHKernElement
+instance IsNode SVGHKernElement
+instance IsEventTarget SVGHKernElement
+instance IsGObject SVGHKernElement where
+  typeGType _ = gTypeSVGHKernElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGHKernElement :: JSM GType
+gTypeSVGHKernElement = GType . Object <$> jsg "SVGHKernElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGImageElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement Mozilla SVGImageElement documentation>
+newtype SVGImageElement = SVGImageElement { unSVGImageElement :: JSVal }
+
+instance PToJSVal SVGImageElement where
+  pToJSVal = unSVGImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGImageElement where
+  pFromJSVal = SVGImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGImageElement where
+  toJSVal = return . unSVGImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGImageElement where
+  fromJSVal v = fmap SVGImageElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGImageElement where
+  makeObject = makeObject . unSVGImageElement
+
+instance IsSVGGraphicsElement SVGImageElement
+instance IsSVGElement SVGImageElement
+instance IsElement SVGImageElement
+instance IsNode SVGImageElement
+instance IsEventTarget SVGImageElement
+instance IsGObject SVGImageElement where
+  typeGType _ = gTypeSVGImageElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGImageElement :: JSM GType
+gTypeSVGImageElement = GType . Object <$> jsg "SVGImageElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGLength".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength Mozilla SVGLength documentation>
+newtype SVGLength = SVGLength { unSVGLength :: JSVal }
+
+instance PToJSVal SVGLength where
+  pToJSVal = unSVGLength
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLength where
+  pFromJSVal = SVGLength
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLength where
+  toJSVal = return . unSVGLength
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLength where
+  fromJSVal v = fmap SVGLength <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGLength where
+  makeObject = makeObject . unSVGLength
+
+instance IsGObject SVGLength where
+  typeGType _ = gTypeSVGLength
+  {-# INLINE typeGType #-}
+
+gTypeSVGLength :: JSM GType
+gTypeSVGLength = GType . Object <$> jsg "SVGLength"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGLengthList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList Mozilla SVGLengthList documentation>
+newtype SVGLengthList = SVGLengthList { unSVGLengthList :: JSVal }
+
+instance PToJSVal SVGLengthList where
+  pToJSVal = unSVGLengthList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLengthList where
+  pFromJSVal = SVGLengthList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLengthList where
+  toJSVal = return . unSVGLengthList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLengthList where
+  fromJSVal v = fmap SVGLengthList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGLengthList where
+  makeObject = makeObject . unSVGLengthList
+
+instance IsGObject SVGLengthList where
+  typeGType _ = gTypeSVGLengthList
+  {-# INLINE typeGType #-}
+
+gTypeSVGLengthList :: JSM GType
+gTypeSVGLengthList = GType . Object <$> jsg "SVGLengthList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGLineElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement Mozilla SVGLineElement documentation>
+newtype SVGLineElement = SVGLineElement { unSVGLineElement :: JSVal }
+
+instance PToJSVal SVGLineElement where
+  pToJSVal = unSVGLineElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLineElement where
+  pFromJSVal = SVGLineElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLineElement where
+  toJSVal = return . unSVGLineElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLineElement where
+  fromJSVal v = fmap SVGLineElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGLineElement where
+  makeObject = makeObject . unSVGLineElement
+
+instance IsSVGGraphicsElement SVGLineElement
+instance IsSVGElement SVGLineElement
+instance IsElement SVGLineElement
+instance IsNode SVGLineElement
+instance IsEventTarget SVGLineElement
+instance IsGObject SVGLineElement where
+  typeGType _ = gTypeSVGLineElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGLineElement :: JSM GType
+gTypeSVGLineElement = GType . Object <$> jsg "SVGLineElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGLinearGradientElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGradientElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement Mozilla SVGLinearGradientElement documentation>
+newtype SVGLinearGradientElement = SVGLinearGradientElement { unSVGLinearGradientElement :: JSVal }
+
+instance PToJSVal SVGLinearGradientElement where
+  pToJSVal = unSVGLinearGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLinearGradientElement where
+  pFromJSVal = SVGLinearGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLinearGradientElement where
+  toJSVal = return . unSVGLinearGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLinearGradientElement where
+  fromJSVal v = fmap SVGLinearGradientElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGLinearGradientElement where
+  makeObject = makeObject . unSVGLinearGradientElement
+
+instance IsSVGGradientElement SVGLinearGradientElement
+instance IsSVGElement SVGLinearGradientElement
+instance IsElement SVGLinearGradientElement
+instance IsNode SVGLinearGradientElement
+instance IsEventTarget SVGLinearGradientElement
+instance IsGObject SVGLinearGradientElement where
+  typeGType _ = gTypeSVGLinearGradientElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGLinearGradientElement :: JSM GType
+gTypeSVGLinearGradientElement = GType . Object <$> jsg "SVGLinearGradientElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGMPathElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMPathElement Mozilla SVGMPathElement documentation>
+newtype SVGMPathElement = SVGMPathElement { unSVGMPathElement :: JSVal }
+
+instance PToJSVal SVGMPathElement where
+  pToJSVal = unSVGMPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMPathElement where
+  pFromJSVal = SVGMPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMPathElement where
+  toJSVal = return . unSVGMPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMPathElement where
+  fromJSVal v = fmap SVGMPathElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMPathElement where
+  makeObject = makeObject . unSVGMPathElement
+
+instance IsSVGElement SVGMPathElement
+instance IsElement SVGMPathElement
+instance IsNode SVGMPathElement
+instance IsEventTarget SVGMPathElement
+instance IsGObject SVGMPathElement where
+  typeGType _ = gTypeSVGMPathElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGMPathElement :: JSM GType
+gTypeSVGMPathElement = GType . Object <$> jsg "SVGMPathElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGMarkerElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement Mozilla SVGMarkerElement documentation>
+newtype SVGMarkerElement = SVGMarkerElement { unSVGMarkerElement :: JSVal }
+
+instance PToJSVal SVGMarkerElement where
+  pToJSVal = unSVGMarkerElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMarkerElement where
+  pFromJSVal = SVGMarkerElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMarkerElement where
+  toJSVal = return . unSVGMarkerElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMarkerElement where
+  fromJSVal v = fmap SVGMarkerElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMarkerElement where
+  makeObject = makeObject . unSVGMarkerElement
+
+instance IsSVGElement SVGMarkerElement
+instance IsElement SVGMarkerElement
+instance IsNode SVGMarkerElement
+instance IsEventTarget SVGMarkerElement
+instance IsGObject SVGMarkerElement where
+  typeGType _ = gTypeSVGMarkerElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGMarkerElement :: JSM GType
+gTypeSVGMarkerElement = GType . Object <$> jsg "SVGMarkerElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGMaskElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement Mozilla SVGMaskElement documentation>
+newtype SVGMaskElement = SVGMaskElement { unSVGMaskElement :: JSVal }
+
+instance PToJSVal SVGMaskElement where
+  pToJSVal = unSVGMaskElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMaskElement where
+  pFromJSVal = SVGMaskElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMaskElement where
+  toJSVal = return . unSVGMaskElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMaskElement where
+  fromJSVal v = fmap SVGMaskElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMaskElement where
+  makeObject = makeObject . unSVGMaskElement
+
+instance IsSVGElement SVGMaskElement
+instance IsElement SVGMaskElement
+instance IsNode SVGMaskElement
+instance IsEventTarget SVGMaskElement
+instance IsGObject SVGMaskElement where
+  typeGType _ = gTypeSVGMaskElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGMaskElement :: JSM GType
+gTypeSVGMaskElement = GType . Object <$> jsg "SVGMaskElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGMatrix".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix Mozilla SVGMatrix documentation>
+newtype SVGMatrix = SVGMatrix { unSVGMatrix :: JSVal }
+
+instance PToJSVal SVGMatrix where
+  pToJSVal = unSVGMatrix
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMatrix where
+  pFromJSVal = SVGMatrix
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMatrix where
+  toJSVal = return . unSVGMatrix
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMatrix where
+  fromJSVal v = fmap SVGMatrix <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMatrix where
+  makeObject = makeObject . unSVGMatrix
+
+instance IsGObject SVGMatrix where
+  typeGType _ = gTypeSVGMatrix
+  {-# INLINE typeGType #-}
+
+gTypeSVGMatrix :: JSM GType
+gTypeSVGMatrix = GType . Object <$> jsg "SVGMatrix"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGMetadataElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMetadataElement Mozilla SVGMetadataElement documentation>
+newtype SVGMetadataElement = SVGMetadataElement { unSVGMetadataElement :: JSVal }
+
+instance PToJSVal SVGMetadataElement where
+  pToJSVal = unSVGMetadataElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMetadataElement where
+  pFromJSVal = SVGMetadataElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMetadataElement where
+  toJSVal = return . unSVGMetadataElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMetadataElement where
+  fromJSVal v = fmap SVGMetadataElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMetadataElement where
+  makeObject = makeObject . unSVGMetadataElement
+
+instance IsSVGElement SVGMetadataElement
+instance IsElement SVGMetadataElement
+instance IsNode SVGMetadataElement
+instance IsEventTarget SVGMetadataElement
+instance IsGObject SVGMetadataElement where
+  typeGType _ = gTypeSVGMetadataElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGMetadataElement :: JSM GType
+gTypeSVGMetadataElement = GType . Object <$> jsg "SVGMetadataElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGMissingGlyphElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMissingGlyphElement Mozilla SVGMissingGlyphElement documentation>
+newtype SVGMissingGlyphElement = SVGMissingGlyphElement { unSVGMissingGlyphElement :: JSVal }
+
+instance PToJSVal SVGMissingGlyphElement where
+  pToJSVal = unSVGMissingGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMissingGlyphElement where
+  pFromJSVal = SVGMissingGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMissingGlyphElement where
+  toJSVal = return . unSVGMissingGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMissingGlyphElement where
+  fromJSVal v = fmap SVGMissingGlyphElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGMissingGlyphElement where
+  makeObject = makeObject . unSVGMissingGlyphElement
+
+instance IsSVGElement SVGMissingGlyphElement
+instance IsElement SVGMissingGlyphElement
+instance IsNode SVGMissingGlyphElement
+instance IsEventTarget SVGMissingGlyphElement
+instance IsGObject SVGMissingGlyphElement where
+  typeGType _ = gTypeSVGMissingGlyphElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGMissingGlyphElement :: JSM GType
+gTypeSVGMissingGlyphElement = GType . Object <$> jsg "SVGMissingGlyphElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGNumber".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber Mozilla SVGNumber documentation>
+newtype SVGNumber = SVGNumber { unSVGNumber :: JSVal }
+
+instance PToJSVal SVGNumber where
+  pToJSVal = unSVGNumber
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGNumber where
+  pFromJSVal = SVGNumber
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGNumber where
+  toJSVal = return . unSVGNumber
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGNumber where
+  fromJSVal v = fmap SVGNumber <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGNumber where
+  makeObject = makeObject . unSVGNumber
+
+instance IsGObject SVGNumber where
+  typeGType _ = gTypeSVGNumber
+  {-# INLINE typeGType #-}
+
+gTypeSVGNumber :: JSM GType
+gTypeSVGNumber = GType . Object <$> jsg "SVGNumber"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGNumberList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList Mozilla SVGNumberList documentation>
+newtype SVGNumberList = SVGNumberList { unSVGNumberList :: JSVal }
+
+instance PToJSVal SVGNumberList where
+  pToJSVal = unSVGNumberList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGNumberList where
+  pFromJSVal = SVGNumberList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGNumberList where
+  toJSVal = return . unSVGNumberList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGNumberList where
+  fromJSVal v = fmap SVGNumberList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGNumberList where
+  makeObject = makeObject . unSVGNumberList
+
+instance IsGObject SVGNumberList where
+  typeGType _ = gTypeSVGNumberList
+  {-# INLINE typeGType #-}
+
+gTypeSVGNumberList :: JSM GType
+gTypeSVGNumberList = GType . Object <$> jsg "SVGNumberList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPaint".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGColor"
+--     * "JSDOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPaint Mozilla SVGPaint documentation>
+newtype SVGPaint = SVGPaint { unSVGPaint :: JSVal }
+
+instance PToJSVal SVGPaint where
+  pToJSVal = unSVGPaint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPaint where
+  pFromJSVal = SVGPaint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPaint where
+  toJSVal = return . unSVGPaint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPaint where
+  fromJSVal v = fmap SVGPaint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPaint where
+  makeObject = makeObject . unSVGPaint
+
+instance IsSVGColor SVGPaint
+instance IsCSSValue SVGPaint
+instance IsGObject SVGPaint where
+  typeGType _ = gTypeSVGPaint
+  {-# INLINE typeGType #-}
+
+gTypeSVGPaint :: JSM GType
+gTypeSVGPaint = GType . Object <$> jsg "SVGPaint"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement Mozilla SVGPathElement documentation>
+newtype SVGPathElement = SVGPathElement { unSVGPathElement :: JSVal }
+
+instance PToJSVal SVGPathElement where
+  pToJSVal = unSVGPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathElement where
+  pFromJSVal = SVGPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathElement where
+  toJSVal = return . unSVGPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathElement where
+  fromJSVal v = fmap SVGPathElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathElement where
+  makeObject = makeObject . unSVGPathElement
+
+instance IsSVGGraphicsElement SVGPathElement
+instance IsSVGElement SVGPathElement
+instance IsElement SVGPathElement
+instance IsNode SVGPathElement
+instance IsEventTarget SVGPathElement
+instance IsGObject SVGPathElement where
+  typeGType _ = gTypeSVGPathElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathElement :: JSM GType
+gTypeSVGPathElement = GType . Object <$> jsg "SVGPathElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSeg".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg Mozilla SVGPathSeg documentation>
+newtype SVGPathSeg = SVGPathSeg { unSVGPathSeg :: JSVal }
+
+instance PToJSVal SVGPathSeg where
+  pToJSVal = unSVGPathSeg
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSeg where
+  pFromJSVal = SVGPathSeg
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSeg where
+  toJSVal = return . unSVGPathSeg
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSeg where
+  fromJSVal v = fmap SVGPathSeg <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSeg where
+  makeObject = makeObject . unSVGPathSeg
+
+class IsGObject o => IsSVGPathSeg o
+toSVGPathSeg :: IsSVGPathSeg o => o -> SVGPathSeg
+toSVGPathSeg = SVGPathSeg . coerce
+
+instance IsSVGPathSeg SVGPathSeg
+instance IsGObject SVGPathSeg where
+  typeGType _ = gTypeSVGPathSeg
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSeg :: JSM GType
+gTypeSVGPathSeg = GType . Object <$> jsg "SVGPathSeg"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegArcAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs Mozilla SVGPathSegArcAbs documentation>
+newtype SVGPathSegArcAbs = SVGPathSegArcAbs { unSVGPathSegArcAbs :: JSVal }
+
+instance PToJSVal SVGPathSegArcAbs where
+  pToJSVal = unSVGPathSegArcAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegArcAbs where
+  pFromJSVal = SVGPathSegArcAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegArcAbs where
+  toJSVal = return . unSVGPathSegArcAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegArcAbs where
+  fromJSVal v = fmap SVGPathSegArcAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegArcAbs where
+  makeObject = makeObject . unSVGPathSegArcAbs
+
+instance IsSVGPathSeg SVGPathSegArcAbs
+instance IsGObject SVGPathSegArcAbs where
+  typeGType _ = gTypeSVGPathSegArcAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegArcAbs :: JSM GType
+gTypeSVGPathSegArcAbs = GType . Object <$> jsg "SVGPathSegArcAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegArcRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel Mozilla SVGPathSegArcRel documentation>
+newtype SVGPathSegArcRel = SVGPathSegArcRel { unSVGPathSegArcRel :: JSVal }
+
+instance PToJSVal SVGPathSegArcRel where
+  pToJSVal = unSVGPathSegArcRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegArcRel where
+  pFromJSVal = SVGPathSegArcRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegArcRel where
+  toJSVal = return . unSVGPathSegArcRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegArcRel where
+  fromJSVal v = fmap SVGPathSegArcRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegArcRel where
+  makeObject = makeObject . unSVGPathSegArcRel
+
+instance IsSVGPathSeg SVGPathSegArcRel
+instance IsGObject SVGPathSegArcRel where
+  typeGType _ = gTypeSVGPathSegArcRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegArcRel :: JSM GType
+gTypeSVGPathSegArcRel = GType . Object <$> jsg "SVGPathSegArcRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegClosePath".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegClosePath Mozilla SVGPathSegClosePath documentation>
+newtype SVGPathSegClosePath = SVGPathSegClosePath { unSVGPathSegClosePath :: JSVal }
+
+instance PToJSVal SVGPathSegClosePath where
+  pToJSVal = unSVGPathSegClosePath
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegClosePath where
+  pFromJSVal = SVGPathSegClosePath
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegClosePath where
+  toJSVal = return . unSVGPathSegClosePath
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegClosePath where
+  fromJSVal v = fmap SVGPathSegClosePath <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegClosePath where
+  makeObject = makeObject . unSVGPathSegClosePath
+
+instance IsSVGPathSeg SVGPathSegClosePath
+instance IsGObject SVGPathSegClosePath where
+  typeGType _ = gTypeSVGPathSegClosePath
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegClosePath :: JSM GType
+gTypeSVGPathSegClosePath = GType . Object <$> jsg "SVGPathSegClosePath"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoCubicAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs Mozilla SVGPathSegCurvetoCubicAbs documentation>
+newtype SVGPathSegCurvetoCubicAbs = SVGPathSegCurvetoCubicAbs { unSVGPathSegCurvetoCubicAbs :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoCubicAbs where
+  pToJSVal = unSVGPathSegCurvetoCubicAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicAbs where
+  pFromJSVal = SVGPathSegCurvetoCubicAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicAbs where
+  toJSVal = return . unSVGPathSegCurvetoCubicAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicAbs where
+  fromJSVal v = fmap SVGPathSegCurvetoCubicAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoCubicAbs where
+  makeObject = makeObject . unSVGPathSegCurvetoCubicAbs
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicAbs
+instance IsGObject SVGPathSegCurvetoCubicAbs where
+  typeGType _ = gTypeSVGPathSegCurvetoCubicAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegCurvetoCubicAbs :: JSM GType
+gTypeSVGPathSegCurvetoCubicAbs = GType . Object <$> jsg "SVGPathSegCurvetoCubicAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoCubicRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel Mozilla SVGPathSegCurvetoCubicRel documentation>
+newtype SVGPathSegCurvetoCubicRel = SVGPathSegCurvetoCubicRel { unSVGPathSegCurvetoCubicRel :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoCubicRel where
+  pToJSVal = unSVGPathSegCurvetoCubicRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicRel where
+  pFromJSVal = SVGPathSegCurvetoCubicRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicRel where
+  toJSVal = return . unSVGPathSegCurvetoCubicRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicRel where
+  fromJSVal v = fmap SVGPathSegCurvetoCubicRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoCubicRel where
+  makeObject = makeObject . unSVGPathSegCurvetoCubicRel
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicRel
+instance IsGObject SVGPathSegCurvetoCubicRel where
+  typeGType _ = gTypeSVGPathSegCurvetoCubicRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegCurvetoCubicRel :: JSM GType
+gTypeSVGPathSegCurvetoCubicRel = GType . Object <$> jsg "SVGPathSegCurvetoCubicRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoCubicSmoothAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathSegCurvetoCubicSmoothAbs documentation>
+newtype SVGPathSegCurvetoCubicSmoothAbs = SVGPathSegCurvetoCubicSmoothAbs { unSVGPathSegCurvetoCubicSmoothAbs :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  pToJSVal = unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  pFromJSVal = SVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  toJSVal = return . unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  fromJSVal v = fmap SVGPathSegCurvetoCubicSmoothAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoCubicSmoothAbs where
+  makeObject = makeObject . unSVGPathSegCurvetoCubicSmoothAbs
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothAbs
+instance IsGObject SVGPathSegCurvetoCubicSmoothAbs where
+  typeGType _ = gTypeSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegCurvetoCubicSmoothAbs :: JSM GType
+gTypeSVGPathSegCurvetoCubicSmoothAbs = GType . Object <$> jsg "SVGPathSegCurvetoCubicSmoothAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoCubicSmoothRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathSegCurvetoCubicSmoothRel documentation>
+newtype SVGPathSegCurvetoCubicSmoothRel = SVGPathSegCurvetoCubicSmoothRel { unSVGPathSegCurvetoCubicSmoothRel :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoCubicSmoothRel where
+  pToJSVal = unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicSmoothRel where
+  pFromJSVal = SVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicSmoothRel where
+  toJSVal = return . unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicSmoothRel where
+  fromJSVal v = fmap SVGPathSegCurvetoCubicSmoothRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoCubicSmoothRel where
+  makeObject = makeObject . unSVGPathSegCurvetoCubicSmoothRel
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothRel
+instance IsGObject SVGPathSegCurvetoCubicSmoothRel where
+  typeGType _ = gTypeSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegCurvetoCubicSmoothRel :: JSM GType
+gTypeSVGPathSegCurvetoCubicSmoothRel = GType . Object <$> jsg "SVGPathSegCurvetoCubicSmoothRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoQuadraticAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs Mozilla SVGPathSegCurvetoQuadraticAbs documentation>
+newtype SVGPathSegCurvetoQuadraticAbs = SVGPathSegCurvetoQuadraticAbs { unSVGPathSegCurvetoQuadraticAbs :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoQuadraticAbs where
+  pToJSVal = unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticAbs where
+  pFromJSVal = SVGPathSegCurvetoQuadraticAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticAbs where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticAbs where
+  fromJSVal v = fmap SVGPathSegCurvetoQuadraticAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoQuadraticAbs where
+  makeObject = makeObject . unSVGPathSegCurvetoQuadraticAbs
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticAbs
+instance IsGObject SVGPathSegCurvetoQuadraticAbs where
+  typeGType _ = gTypeSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegCurvetoQuadraticAbs :: JSM GType
+gTypeSVGPathSegCurvetoQuadraticAbs = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoQuadraticRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel Mozilla SVGPathSegCurvetoQuadraticRel documentation>
+newtype SVGPathSegCurvetoQuadraticRel = SVGPathSegCurvetoQuadraticRel { unSVGPathSegCurvetoQuadraticRel :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoQuadraticRel where
+  pToJSVal = unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticRel where
+  pFromJSVal = SVGPathSegCurvetoQuadraticRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticRel where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticRel where
+  fromJSVal v = fmap SVGPathSegCurvetoQuadraticRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoQuadraticRel where
+  makeObject = makeObject . unSVGPathSegCurvetoQuadraticRel
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticRel
+instance IsGObject SVGPathSegCurvetoQuadraticRel where
+  typeGType _ = gTypeSVGPathSegCurvetoQuadraticRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegCurvetoQuadraticRel :: JSM GType
+gTypeSVGPathSegCurvetoQuadraticRel = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoQuadraticSmoothAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathSegCurvetoQuadraticSmoothAbs documentation>
+newtype SVGPathSegCurvetoQuadraticSmoothAbs = SVGPathSegCurvetoQuadraticSmoothAbs { unSVGPathSegCurvetoQuadraticSmoothAbs :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  pToJSVal = unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  pFromJSVal = SVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  fromJSVal v = fmap SVGPathSegCurvetoQuadraticSmoothAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoQuadraticSmoothAbs where
+  makeObject = makeObject . unSVGPathSegCurvetoQuadraticSmoothAbs
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothAbs
+instance IsGObject SVGPathSegCurvetoQuadraticSmoothAbs where
+  typeGType _ = gTypeSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegCurvetoQuadraticSmoothAbs :: JSM GType
+gTypeSVGPathSegCurvetoQuadraticSmoothAbs = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticSmoothAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegCurvetoQuadraticSmoothRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathSegCurvetoQuadraticSmoothRel documentation>
+newtype SVGPathSegCurvetoQuadraticSmoothRel = SVGPathSegCurvetoQuadraticSmoothRel { unSVGPathSegCurvetoQuadraticSmoothRel :: JSVal }
+
+instance PToJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  pToJSVal = unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  pFromJSVal = SVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  fromJSVal v = fmap SVGPathSegCurvetoQuadraticSmoothRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegCurvetoQuadraticSmoothRel where
+  makeObject = makeObject . unSVGPathSegCurvetoQuadraticSmoothRel
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothRel
+instance IsGObject SVGPathSegCurvetoQuadraticSmoothRel where
+  typeGType _ = gTypeSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegCurvetoQuadraticSmoothRel :: JSM GType
+gTypeSVGPathSegCurvetoQuadraticSmoothRel = GType . Object <$> jsg "SVGPathSegCurvetoQuadraticSmoothRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs Mozilla SVGPathSegLinetoAbs documentation>
+newtype SVGPathSegLinetoAbs = SVGPathSegLinetoAbs { unSVGPathSegLinetoAbs :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoAbs where
+  pToJSVal = unSVGPathSegLinetoAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoAbs where
+  pFromJSVal = SVGPathSegLinetoAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoAbs where
+  toJSVal = return . unSVGPathSegLinetoAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoAbs where
+  fromJSVal v = fmap SVGPathSegLinetoAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoAbs where
+  makeObject = makeObject . unSVGPathSegLinetoAbs
+
+instance IsSVGPathSeg SVGPathSegLinetoAbs
+instance IsGObject SVGPathSegLinetoAbs where
+  typeGType _ = gTypeSVGPathSegLinetoAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegLinetoAbs :: JSM GType
+gTypeSVGPathSegLinetoAbs = GType . Object <$> jsg "SVGPathSegLinetoAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoHorizontalAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs Mozilla SVGPathSegLinetoHorizontalAbs documentation>
+newtype SVGPathSegLinetoHorizontalAbs = SVGPathSegLinetoHorizontalAbs { unSVGPathSegLinetoHorizontalAbs :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoHorizontalAbs where
+  pToJSVal = unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoHorizontalAbs where
+  pFromJSVal = SVGPathSegLinetoHorizontalAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoHorizontalAbs where
+  toJSVal = return . unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoHorizontalAbs where
+  fromJSVal v = fmap SVGPathSegLinetoHorizontalAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoHorizontalAbs where
+  makeObject = makeObject . unSVGPathSegLinetoHorizontalAbs
+
+instance IsSVGPathSeg SVGPathSegLinetoHorizontalAbs
+instance IsGObject SVGPathSegLinetoHorizontalAbs where
+  typeGType _ = gTypeSVGPathSegLinetoHorizontalAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegLinetoHorizontalAbs :: JSM GType
+gTypeSVGPathSegLinetoHorizontalAbs = GType . Object <$> jsg "SVGPathSegLinetoHorizontalAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoHorizontalRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel Mozilla SVGPathSegLinetoHorizontalRel documentation>
+newtype SVGPathSegLinetoHorizontalRel = SVGPathSegLinetoHorizontalRel { unSVGPathSegLinetoHorizontalRel :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoHorizontalRel where
+  pToJSVal = unSVGPathSegLinetoHorizontalRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoHorizontalRel where
+  pFromJSVal = SVGPathSegLinetoHorizontalRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoHorizontalRel where
+  toJSVal = return . unSVGPathSegLinetoHorizontalRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoHorizontalRel where
+  fromJSVal v = fmap SVGPathSegLinetoHorizontalRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoHorizontalRel where
+  makeObject = makeObject . unSVGPathSegLinetoHorizontalRel
+
+instance IsSVGPathSeg SVGPathSegLinetoHorizontalRel
+instance IsGObject SVGPathSegLinetoHorizontalRel where
+  typeGType _ = gTypeSVGPathSegLinetoHorizontalRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegLinetoHorizontalRel :: JSM GType
+gTypeSVGPathSegLinetoHorizontalRel = GType . Object <$> jsg "SVGPathSegLinetoHorizontalRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel Mozilla SVGPathSegLinetoRel documentation>
+newtype SVGPathSegLinetoRel = SVGPathSegLinetoRel { unSVGPathSegLinetoRel :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoRel where
+  pToJSVal = unSVGPathSegLinetoRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoRel where
+  pFromJSVal = SVGPathSegLinetoRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoRel where
+  toJSVal = return . unSVGPathSegLinetoRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoRel where
+  fromJSVal v = fmap SVGPathSegLinetoRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoRel where
+  makeObject = makeObject . unSVGPathSegLinetoRel
+
+instance IsSVGPathSeg SVGPathSegLinetoRel
+instance IsGObject SVGPathSegLinetoRel where
+  typeGType _ = gTypeSVGPathSegLinetoRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegLinetoRel :: JSM GType
+gTypeSVGPathSegLinetoRel = GType . Object <$> jsg "SVGPathSegLinetoRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoVerticalAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs Mozilla SVGPathSegLinetoVerticalAbs documentation>
+newtype SVGPathSegLinetoVerticalAbs = SVGPathSegLinetoVerticalAbs { unSVGPathSegLinetoVerticalAbs :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoVerticalAbs where
+  pToJSVal = unSVGPathSegLinetoVerticalAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoVerticalAbs where
+  pFromJSVal = SVGPathSegLinetoVerticalAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoVerticalAbs where
+  toJSVal = return . unSVGPathSegLinetoVerticalAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoVerticalAbs where
+  fromJSVal v = fmap SVGPathSegLinetoVerticalAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoVerticalAbs where
+  makeObject = makeObject . unSVGPathSegLinetoVerticalAbs
+
+instance IsSVGPathSeg SVGPathSegLinetoVerticalAbs
+instance IsGObject SVGPathSegLinetoVerticalAbs where
+  typeGType _ = gTypeSVGPathSegLinetoVerticalAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegLinetoVerticalAbs :: JSM GType
+gTypeSVGPathSegLinetoVerticalAbs = GType . Object <$> jsg "SVGPathSegLinetoVerticalAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegLinetoVerticalRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel Mozilla SVGPathSegLinetoVerticalRel documentation>
+newtype SVGPathSegLinetoVerticalRel = SVGPathSegLinetoVerticalRel { unSVGPathSegLinetoVerticalRel :: JSVal }
+
+instance PToJSVal SVGPathSegLinetoVerticalRel where
+  pToJSVal = unSVGPathSegLinetoVerticalRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoVerticalRel where
+  pFromJSVal = SVGPathSegLinetoVerticalRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoVerticalRel where
+  toJSVal = return . unSVGPathSegLinetoVerticalRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoVerticalRel where
+  fromJSVal v = fmap SVGPathSegLinetoVerticalRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegLinetoVerticalRel where
+  makeObject = makeObject . unSVGPathSegLinetoVerticalRel
+
+instance IsSVGPathSeg SVGPathSegLinetoVerticalRel
+instance IsGObject SVGPathSegLinetoVerticalRel where
+  typeGType _ = gTypeSVGPathSegLinetoVerticalRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegLinetoVerticalRel :: JSM GType
+gTypeSVGPathSegLinetoVerticalRel = GType . Object <$> jsg "SVGPathSegLinetoVerticalRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList Mozilla SVGPathSegList documentation>
+newtype SVGPathSegList = SVGPathSegList { unSVGPathSegList :: JSVal }
+
+instance PToJSVal SVGPathSegList where
+  pToJSVal = unSVGPathSegList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegList where
+  pFromJSVal = SVGPathSegList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegList where
+  toJSVal = return . unSVGPathSegList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegList where
+  fromJSVal v = fmap SVGPathSegList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegList where
+  makeObject = makeObject . unSVGPathSegList
+
+instance IsGObject SVGPathSegList where
+  typeGType _ = gTypeSVGPathSegList
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegList :: JSM GType
+gTypeSVGPathSegList = GType . Object <$> jsg "SVGPathSegList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegMovetoAbs".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs Mozilla SVGPathSegMovetoAbs documentation>
+newtype SVGPathSegMovetoAbs = SVGPathSegMovetoAbs { unSVGPathSegMovetoAbs :: JSVal }
+
+instance PToJSVal SVGPathSegMovetoAbs where
+  pToJSVal = unSVGPathSegMovetoAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegMovetoAbs where
+  pFromJSVal = SVGPathSegMovetoAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegMovetoAbs where
+  toJSVal = return . unSVGPathSegMovetoAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegMovetoAbs where
+  fromJSVal v = fmap SVGPathSegMovetoAbs <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegMovetoAbs where
+  makeObject = makeObject . unSVGPathSegMovetoAbs
+
+instance IsSVGPathSeg SVGPathSegMovetoAbs
+instance IsGObject SVGPathSegMovetoAbs where
+  typeGType _ = gTypeSVGPathSegMovetoAbs
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegMovetoAbs :: JSM GType
+gTypeSVGPathSegMovetoAbs = GType . Object <$> jsg "SVGPathSegMovetoAbs"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPathSegMovetoRel".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel Mozilla SVGPathSegMovetoRel documentation>
+newtype SVGPathSegMovetoRel = SVGPathSegMovetoRel { unSVGPathSegMovetoRel :: JSVal }
+
+instance PToJSVal SVGPathSegMovetoRel where
+  pToJSVal = unSVGPathSegMovetoRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegMovetoRel where
+  pFromJSVal = SVGPathSegMovetoRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegMovetoRel where
+  toJSVal = return . unSVGPathSegMovetoRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegMovetoRel where
+  fromJSVal v = fmap SVGPathSegMovetoRel <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPathSegMovetoRel where
+  makeObject = makeObject . unSVGPathSegMovetoRel
+
+instance IsSVGPathSeg SVGPathSegMovetoRel
+instance IsGObject SVGPathSegMovetoRel where
+  typeGType _ = gTypeSVGPathSegMovetoRel
+  {-# INLINE typeGType #-}
+
+gTypeSVGPathSegMovetoRel :: JSM GType
+gTypeSVGPathSegMovetoRel = GType . Object <$> jsg "SVGPathSegMovetoRel"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPatternElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement Mozilla SVGPatternElement documentation>
+newtype SVGPatternElement = SVGPatternElement { unSVGPatternElement :: JSVal }
+
+instance PToJSVal SVGPatternElement where
+  pToJSVal = unSVGPatternElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPatternElement where
+  pFromJSVal = SVGPatternElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPatternElement where
+  toJSVal = return . unSVGPatternElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPatternElement where
+  fromJSVal v = fmap SVGPatternElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPatternElement where
+  makeObject = makeObject . unSVGPatternElement
+
+instance IsSVGElement SVGPatternElement
+instance IsElement SVGPatternElement
+instance IsNode SVGPatternElement
+instance IsEventTarget SVGPatternElement
+instance IsGObject SVGPatternElement where
+  typeGType _ = gTypeSVGPatternElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGPatternElement :: JSM GType
+gTypeSVGPatternElement = GType . Object <$> jsg "SVGPatternElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPoint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint Mozilla SVGPoint documentation>
+newtype SVGPoint = SVGPoint { unSVGPoint :: JSVal }
+
+instance PToJSVal SVGPoint where
+  pToJSVal = unSVGPoint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPoint where
+  pFromJSVal = SVGPoint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPoint where
+  toJSVal = return . unSVGPoint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPoint where
+  fromJSVal v = fmap SVGPoint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPoint where
+  makeObject = makeObject . unSVGPoint
+
+instance IsGObject SVGPoint where
+  typeGType _ = gTypeSVGPoint
+  {-# INLINE typeGType #-}
+
+gTypeSVGPoint :: JSM GType
+gTypeSVGPoint = GType . Object <$> jsg "SVGPoint"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPointList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList Mozilla SVGPointList documentation>
+newtype SVGPointList = SVGPointList { unSVGPointList :: JSVal }
+
+instance PToJSVal SVGPointList where
+  pToJSVal = unSVGPointList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPointList where
+  pFromJSVal = SVGPointList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPointList where
+  toJSVal = return . unSVGPointList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPointList where
+  fromJSVal v = fmap SVGPointList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPointList where
+  makeObject = makeObject . unSVGPointList
+
+instance IsGObject SVGPointList where
+  typeGType _ = gTypeSVGPointList
+  {-# INLINE typeGType #-}
+
+gTypeSVGPointList :: JSM GType
+gTypeSVGPointList = GType . Object <$> jsg "SVGPointList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPolygonElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement Mozilla SVGPolygonElement documentation>
+newtype SVGPolygonElement = SVGPolygonElement { unSVGPolygonElement :: JSVal }
+
+instance PToJSVal SVGPolygonElement where
+  pToJSVal = unSVGPolygonElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPolygonElement where
+  pFromJSVal = SVGPolygonElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPolygonElement where
+  toJSVal = return . unSVGPolygonElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPolygonElement where
+  fromJSVal v = fmap SVGPolygonElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPolygonElement where
+  makeObject = makeObject . unSVGPolygonElement
+
+instance IsSVGGraphicsElement SVGPolygonElement
+instance IsSVGElement SVGPolygonElement
+instance IsElement SVGPolygonElement
+instance IsNode SVGPolygonElement
+instance IsEventTarget SVGPolygonElement
+instance IsGObject SVGPolygonElement where
+  typeGType _ = gTypeSVGPolygonElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGPolygonElement :: JSM GType
+gTypeSVGPolygonElement = GType . Object <$> jsg "SVGPolygonElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPolylineElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement Mozilla SVGPolylineElement documentation>
+newtype SVGPolylineElement = SVGPolylineElement { unSVGPolylineElement :: JSVal }
+
+instance PToJSVal SVGPolylineElement where
+  pToJSVal = unSVGPolylineElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPolylineElement where
+  pFromJSVal = SVGPolylineElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPolylineElement where
+  toJSVal = return . unSVGPolylineElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPolylineElement where
+  fromJSVal v = fmap SVGPolylineElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPolylineElement where
+  makeObject = makeObject . unSVGPolylineElement
+
+instance IsSVGGraphicsElement SVGPolylineElement
+instance IsSVGElement SVGPolylineElement
+instance IsElement SVGPolylineElement
+instance IsNode SVGPolylineElement
+instance IsEventTarget SVGPolylineElement
+instance IsGObject SVGPolylineElement where
+  typeGType _ = gTypeSVGPolylineElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGPolylineElement :: JSM GType
+gTypeSVGPolylineElement = GType . Object <$> jsg "SVGPolylineElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGPreserveAspectRatio".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio Mozilla SVGPreserveAspectRatio documentation>
+newtype SVGPreserveAspectRatio = SVGPreserveAspectRatio { unSVGPreserveAspectRatio :: JSVal }
+
+instance PToJSVal SVGPreserveAspectRatio where
+  pToJSVal = unSVGPreserveAspectRatio
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPreserveAspectRatio where
+  pFromJSVal = SVGPreserveAspectRatio
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPreserveAspectRatio where
+  toJSVal = return . unSVGPreserveAspectRatio
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPreserveAspectRatio where
+  fromJSVal v = fmap SVGPreserveAspectRatio <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGPreserveAspectRatio where
+  makeObject = makeObject . unSVGPreserveAspectRatio
+
+instance IsGObject SVGPreserveAspectRatio where
+  typeGType _ = gTypeSVGPreserveAspectRatio
+  {-# INLINE typeGType #-}
+
+gTypeSVGPreserveAspectRatio :: JSM GType
+gTypeSVGPreserveAspectRatio = GType . Object <$> jsg "SVGPreserveAspectRatio"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGRadialGradientElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGradientElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement Mozilla SVGRadialGradientElement documentation>
+newtype SVGRadialGradientElement = SVGRadialGradientElement { unSVGRadialGradientElement :: JSVal }
+
+instance PToJSVal SVGRadialGradientElement where
+  pToJSVal = unSVGRadialGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRadialGradientElement where
+  pFromJSVal = SVGRadialGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRadialGradientElement where
+  toJSVal = return . unSVGRadialGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRadialGradientElement where
+  fromJSVal v = fmap SVGRadialGradientElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGRadialGradientElement where
+  makeObject = makeObject . unSVGRadialGradientElement
+
+instance IsSVGGradientElement SVGRadialGradientElement
+instance IsSVGElement SVGRadialGradientElement
+instance IsElement SVGRadialGradientElement
+instance IsNode SVGRadialGradientElement
+instance IsEventTarget SVGRadialGradientElement
+instance IsGObject SVGRadialGradientElement where
+  typeGType _ = gTypeSVGRadialGradientElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGRadialGradientElement :: JSM GType
+gTypeSVGRadialGradientElement = GType . Object <$> jsg "SVGRadialGradientElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect Mozilla SVGRect documentation>
+newtype SVGRect = SVGRect { unSVGRect :: JSVal }
+
+instance PToJSVal SVGRect where
+  pToJSVal = unSVGRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRect where
+  pFromJSVal = SVGRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRect where
+  toJSVal = return . unSVGRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRect where
+  fromJSVal v = fmap SVGRect <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGRect where
+  makeObject = makeObject . unSVGRect
+
+instance IsGObject SVGRect where
+  typeGType _ = gTypeSVGRect
+  {-# INLINE typeGType #-}
+
+gTypeSVGRect :: JSM GType
+gTypeSVGRect = GType . Object <$> jsg "SVGRect"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGRectElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement Mozilla SVGRectElement documentation>
+newtype SVGRectElement = SVGRectElement { unSVGRectElement :: JSVal }
+
+instance PToJSVal SVGRectElement where
+  pToJSVal = unSVGRectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRectElement where
+  pFromJSVal = SVGRectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRectElement where
+  toJSVal = return . unSVGRectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRectElement where
+  fromJSVal v = fmap SVGRectElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGRectElement where
+  makeObject = makeObject . unSVGRectElement
+
+instance IsSVGGraphicsElement SVGRectElement
+instance IsSVGElement SVGRectElement
+instance IsElement SVGRectElement
+instance IsNode SVGRectElement
+instance IsEventTarget SVGRectElement
+instance IsGObject SVGRectElement where
+  typeGType _ = gTypeSVGRectElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGRectElement :: JSM GType
+gTypeSVGRectElement = GType . Object <$> jsg "SVGRectElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGRenderingIntent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRenderingIntent Mozilla SVGRenderingIntent documentation>
+newtype SVGRenderingIntent = SVGRenderingIntent { unSVGRenderingIntent :: JSVal }
+
+instance PToJSVal SVGRenderingIntent where
+  pToJSVal = unSVGRenderingIntent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRenderingIntent where
+  pFromJSVal = SVGRenderingIntent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRenderingIntent where
+  toJSVal = return . unSVGRenderingIntent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRenderingIntent where
+  fromJSVal v = fmap SVGRenderingIntent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGRenderingIntent where
+  makeObject = makeObject . unSVGRenderingIntent
+
+instance IsGObject SVGRenderingIntent where
+  typeGType _ = gTypeSVGRenderingIntent
+  {-# INLINE typeGType #-}
+
+gTypeSVGRenderingIntent :: JSM GType
+gTypeSVGRenderingIntent = GType . Object <$> jsg "SVGRenderingIntent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGSVGElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement Mozilla SVGSVGElement documentation>
+newtype SVGSVGElement = SVGSVGElement { unSVGSVGElement :: JSVal }
+
+instance PToJSVal SVGSVGElement where
+  pToJSVal = unSVGSVGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSVGElement where
+  pFromJSVal = SVGSVGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSVGElement where
+  toJSVal = return . unSVGSVGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSVGElement where
+  fromJSVal v = fmap SVGSVGElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGSVGElement where
+  makeObject = makeObject . unSVGSVGElement
+
+instance IsSVGGraphicsElement SVGSVGElement
+instance IsSVGElement SVGSVGElement
+instance IsElement SVGSVGElement
+instance IsNode SVGSVGElement
+instance IsEventTarget SVGSVGElement
+instance IsGObject SVGSVGElement where
+  typeGType _ = gTypeSVGSVGElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGSVGElement :: JSM GType
+gTypeSVGSVGElement = GType . Object <$> jsg "SVGSVGElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGScriptElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement Mozilla SVGScriptElement documentation>
+newtype SVGScriptElement = SVGScriptElement { unSVGScriptElement :: JSVal }
+
+instance PToJSVal SVGScriptElement where
+  pToJSVal = unSVGScriptElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGScriptElement where
+  pFromJSVal = SVGScriptElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGScriptElement where
+  toJSVal = return . unSVGScriptElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGScriptElement where
+  fromJSVal v = fmap SVGScriptElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGScriptElement where
+  makeObject = makeObject . unSVGScriptElement
+
+instance IsSVGElement SVGScriptElement
+instance IsElement SVGScriptElement
+instance IsNode SVGScriptElement
+instance IsEventTarget SVGScriptElement
+instance IsGObject SVGScriptElement where
+  typeGType _ = gTypeSVGScriptElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGScriptElement :: JSM GType
+gTypeSVGScriptElement = GType . Object <$> jsg "SVGScriptElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGSetElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGAnimationElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSetElement Mozilla SVGSetElement documentation>
+newtype SVGSetElement = SVGSetElement { unSVGSetElement :: JSVal }
+
+instance PToJSVal SVGSetElement where
+  pToJSVal = unSVGSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSetElement where
+  pFromJSVal = SVGSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSetElement where
+  toJSVal = return . unSVGSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSetElement where
+  fromJSVal v = fmap SVGSetElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGSetElement where
+  makeObject = makeObject . unSVGSetElement
+
+instance IsSVGAnimationElement SVGSetElement
+instance IsSVGElement SVGSetElement
+instance IsElement SVGSetElement
+instance IsNode SVGSetElement
+instance IsEventTarget SVGSetElement
+instance IsGObject SVGSetElement where
+  typeGType _ = gTypeSVGSetElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGSetElement :: JSM GType
+gTypeSVGSetElement = GType . Object <$> jsg "SVGSetElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGStopElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement Mozilla SVGStopElement documentation>
+newtype SVGStopElement = SVGStopElement { unSVGStopElement :: JSVal }
+
+instance PToJSVal SVGStopElement where
+  pToJSVal = unSVGStopElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStopElement where
+  pFromJSVal = SVGStopElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStopElement where
+  toJSVal = return . unSVGStopElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStopElement where
+  fromJSVal v = fmap SVGStopElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGStopElement where
+  makeObject = makeObject . unSVGStopElement
+
+instance IsSVGElement SVGStopElement
+instance IsElement SVGStopElement
+instance IsNode SVGStopElement
+instance IsEventTarget SVGStopElement
+instance IsGObject SVGStopElement where
+  typeGType _ = gTypeSVGStopElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGStopElement :: JSM GType
+gTypeSVGStopElement = GType . Object <$> jsg "SVGStopElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGStringList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList Mozilla SVGStringList documentation>
+newtype SVGStringList = SVGStringList { unSVGStringList :: JSVal }
+
+instance PToJSVal SVGStringList where
+  pToJSVal = unSVGStringList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStringList where
+  pFromJSVal = SVGStringList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStringList where
+  toJSVal = return . unSVGStringList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStringList where
+  fromJSVal v = fmap SVGStringList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGStringList where
+  makeObject = makeObject . unSVGStringList
+
+instance IsGObject SVGStringList where
+  typeGType _ = gTypeSVGStringList
+  {-# INLINE typeGType #-}
+
+gTypeSVGStringList :: JSM GType
+gTypeSVGStringList = GType . Object <$> jsg "SVGStringList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGStyleElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement Mozilla SVGStyleElement documentation>
+newtype SVGStyleElement = SVGStyleElement { unSVGStyleElement :: JSVal }
+
+instance PToJSVal SVGStyleElement where
+  pToJSVal = unSVGStyleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStyleElement where
+  pFromJSVal = SVGStyleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStyleElement where
+  toJSVal = return . unSVGStyleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStyleElement where
+  fromJSVal v = fmap SVGStyleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGStyleElement where
+  makeObject = makeObject . unSVGStyleElement
+
+instance IsSVGElement SVGStyleElement
+instance IsElement SVGStyleElement
+instance IsNode SVGStyleElement
+instance IsEventTarget SVGStyleElement
+instance IsGObject SVGStyleElement where
+  typeGType _ = gTypeSVGStyleElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGStyleElement :: JSM GType
+gTypeSVGStyleElement = GType . Object <$> jsg "SVGStyleElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGSwitchElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSwitchElement Mozilla SVGSwitchElement documentation>
+newtype SVGSwitchElement = SVGSwitchElement { unSVGSwitchElement :: JSVal }
+
+instance PToJSVal SVGSwitchElement where
+  pToJSVal = unSVGSwitchElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSwitchElement where
+  pFromJSVal = SVGSwitchElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSwitchElement where
+  toJSVal = return . unSVGSwitchElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSwitchElement where
+  fromJSVal v = fmap SVGSwitchElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGSwitchElement where
+  makeObject = makeObject . unSVGSwitchElement
+
+instance IsSVGGraphicsElement SVGSwitchElement
+instance IsSVGElement SVGSwitchElement
+instance IsElement SVGSwitchElement
+instance IsNode SVGSwitchElement
+instance IsEventTarget SVGSwitchElement
+instance IsGObject SVGSwitchElement where
+  typeGType _ = gTypeSVGSwitchElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGSwitchElement :: JSM GType
+gTypeSVGSwitchElement = GType . Object <$> jsg "SVGSwitchElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGSymbolElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSymbolElement Mozilla SVGSymbolElement documentation>
+newtype SVGSymbolElement = SVGSymbolElement { unSVGSymbolElement :: JSVal }
+
+instance PToJSVal SVGSymbolElement where
+  pToJSVal = unSVGSymbolElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSymbolElement where
+  pFromJSVal = SVGSymbolElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSymbolElement where
+  toJSVal = return . unSVGSymbolElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSymbolElement where
+  fromJSVal v = fmap SVGSymbolElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGSymbolElement where
+  makeObject = makeObject . unSVGSymbolElement
+
+instance IsSVGElement SVGSymbolElement
+instance IsElement SVGSymbolElement
+instance IsNode SVGSymbolElement
+instance IsEventTarget SVGSymbolElement
+instance IsGObject SVGSymbolElement where
+  typeGType _ = gTypeSVGSymbolElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGSymbolElement :: JSM GType
+gTypeSVGSymbolElement = GType . Object <$> jsg "SVGSymbolElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTRefElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGTextPositioningElement"
+--     * "JSDOM.SVGTextContentElement"
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTRefElement Mozilla SVGTRefElement documentation>
+newtype SVGTRefElement = SVGTRefElement { unSVGTRefElement :: JSVal }
+
+instance PToJSVal SVGTRefElement where
+  pToJSVal = unSVGTRefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTRefElement where
+  pFromJSVal = SVGTRefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTRefElement where
+  toJSVal = return . unSVGTRefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTRefElement where
+  fromJSVal v = fmap SVGTRefElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTRefElement where
+  makeObject = makeObject . unSVGTRefElement
+
+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
+  typeGType _ = gTypeSVGTRefElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGTRefElement :: JSM GType
+gTypeSVGTRefElement = GType . Object <$> jsg "SVGTRefElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTSpanElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGTextPositioningElement"
+--     * "JSDOM.SVGTextContentElement"
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTSpanElement Mozilla SVGTSpanElement documentation>
+newtype SVGTSpanElement = SVGTSpanElement { unSVGTSpanElement :: JSVal }
+
+instance PToJSVal SVGTSpanElement where
+  pToJSVal = unSVGTSpanElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTSpanElement where
+  pFromJSVal = SVGTSpanElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTSpanElement where
+  toJSVal = return . unSVGTSpanElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTSpanElement where
+  fromJSVal v = fmap SVGTSpanElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTSpanElement where
+  makeObject = makeObject . unSVGTSpanElement
+
+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
+  typeGType _ = gTypeSVGTSpanElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGTSpanElement :: JSM GType
+gTypeSVGTSpanElement = GType . Object <$> jsg "SVGTSpanElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTests".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests Mozilla SVGTests documentation>
+newtype SVGTests = SVGTests { unSVGTests :: JSVal }
+
+instance PToJSVal SVGTests where
+  pToJSVal = unSVGTests
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTests where
+  pFromJSVal = SVGTests
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTests where
+  toJSVal = return . unSVGTests
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTests where
+  fromJSVal v = fmap SVGTests <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTests where
+  makeObject = makeObject . unSVGTests
+
+instance IsGObject SVGTests where
+  typeGType _ = gTypeSVGTests
+  {-# INLINE typeGType #-}
+
+gTypeSVGTests :: JSM GType
+gTypeSVGTests = GType . Object <$> jsg "SVGTests"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTextContentElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement Mozilla SVGTextContentElement documentation>
+newtype SVGTextContentElement = SVGTextContentElement { unSVGTextContentElement :: JSVal }
+
+instance PToJSVal SVGTextContentElement where
+  pToJSVal = unSVGTextContentElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextContentElement where
+  pFromJSVal = SVGTextContentElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextContentElement where
+  toJSVal = return . unSVGTextContentElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextContentElement where
+  fromJSVal v = fmap SVGTextContentElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTextContentElement where
+  makeObject = makeObject . unSVGTextContentElement
+
+class IsSVGGraphicsElement o => IsSVGTextContentElement o
+toSVGTextContentElement :: IsSVGTextContentElement o => o -> SVGTextContentElement
+toSVGTextContentElement = SVGTextContentElement . coerce
+
+instance IsSVGTextContentElement SVGTextContentElement
+instance IsSVGGraphicsElement SVGTextContentElement
+instance IsSVGElement SVGTextContentElement
+instance IsElement SVGTextContentElement
+instance IsNode SVGTextContentElement
+instance IsEventTarget SVGTextContentElement
+instance IsGObject SVGTextContentElement where
+  typeGType _ = gTypeSVGTextContentElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGTextContentElement :: JSM GType
+gTypeSVGTextContentElement = GType . Object <$> jsg "SVGTextContentElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTextElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGTextPositioningElement"
+--     * "JSDOM.SVGTextContentElement"
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextElement Mozilla SVGTextElement documentation>
+newtype SVGTextElement = SVGTextElement { unSVGTextElement :: JSVal }
+
+instance PToJSVal SVGTextElement where
+  pToJSVal = unSVGTextElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextElement where
+  pFromJSVal = SVGTextElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextElement where
+  toJSVal = return . unSVGTextElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextElement where
+  fromJSVal v = fmap SVGTextElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTextElement where
+  makeObject = makeObject . unSVGTextElement
+
+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
+  typeGType _ = gTypeSVGTextElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGTextElement :: JSM GType
+gTypeSVGTextElement = GType . Object <$> jsg "SVGTextElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTextPathElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGTextContentElement"
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement Mozilla SVGTextPathElement documentation>
+newtype SVGTextPathElement = SVGTextPathElement { unSVGTextPathElement :: JSVal }
+
+instance PToJSVal SVGTextPathElement where
+  pToJSVal = unSVGTextPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextPathElement where
+  pFromJSVal = SVGTextPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextPathElement where
+  toJSVal = return . unSVGTextPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextPathElement where
+  fromJSVal v = fmap SVGTextPathElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTextPathElement where
+  makeObject = makeObject . unSVGTextPathElement
+
+instance IsSVGTextContentElement SVGTextPathElement
+instance IsSVGGraphicsElement SVGTextPathElement
+instance IsSVGElement SVGTextPathElement
+instance IsElement SVGTextPathElement
+instance IsNode SVGTextPathElement
+instance IsEventTarget SVGTextPathElement
+instance IsGObject SVGTextPathElement where
+  typeGType _ = gTypeSVGTextPathElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGTextPathElement :: JSM GType
+gTypeSVGTextPathElement = GType . Object <$> jsg "SVGTextPathElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTextPositioningElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGTextContentElement"
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement Mozilla SVGTextPositioningElement documentation>
+newtype SVGTextPositioningElement = SVGTextPositioningElement { unSVGTextPositioningElement :: JSVal }
+
+instance PToJSVal SVGTextPositioningElement where
+  pToJSVal = unSVGTextPositioningElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextPositioningElement where
+  pFromJSVal = SVGTextPositioningElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextPositioningElement where
+  toJSVal = return . unSVGTextPositioningElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextPositioningElement where
+  fromJSVal v = fmap SVGTextPositioningElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTextPositioningElement where
+  makeObject = makeObject . unSVGTextPositioningElement
+
+class IsSVGTextContentElement o => IsSVGTextPositioningElement o
+toSVGTextPositioningElement :: IsSVGTextPositioningElement o => o -> SVGTextPositioningElement
+toSVGTextPositioningElement = SVGTextPositioningElement . coerce
+
+instance IsSVGTextPositioningElement SVGTextPositioningElement
+instance IsSVGTextContentElement SVGTextPositioningElement
+instance IsSVGGraphicsElement SVGTextPositioningElement
+instance IsSVGElement SVGTextPositioningElement
+instance IsElement SVGTextPositioningElement
+instance IsNode SVGTextPositioningElement
+instance IsEventTarget SVGTextPositioningElement
+instance IsGObject SVGTextPositioningElement where
+  typeGType _ = gTypeSVGTextPositioningElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGTextPositioningElement :: JSM GType
+gTypeSVGTextPositioningElement = GType . Object <$> jsg "SVGTextPositioningElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTitleElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTitleElement Mozilla SVGTitleElement documentation>
+newtype SVGTitleElement = SVGTitleElement { unSVGTitleElement :: JSVal }
+
+instance PToJSVal SVGTitleElement where
+  pToJSVal = unSVGTitleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTitleElement where
+  pFromJSVal = SVGTitleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTitleElement where
+  toJSVal = return . unSVGTitleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTitleElement where
+  fromJSVal v = fmap SVGTitleElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTitleElement where
+  makeObject = makeObject . unSVGTitleElement
+
+instance IsSVGElement SVGTitleElement
+instance IsElement SVGTitleElement
+instance IsNode SVGTitleElement
+instance IsEventTarget SVGTitleElement
+instance IsGObject SVGTitleElement where
+  typeGType _ = gTypeSVGTitleElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGTitleElement :: JSM GType
+gTypeSVGTitleElement = GType . Object <$> jsg "SVGTitleElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTransform".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform Mozilla SVGTransform documentation>
+newtype SVGTransform = SVGTransform { unSVGTransform :: JSVal }
+
+instance PToJSVal SVGTransform where
+  pToJSVal = unSVGTransform
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTransform where
+  pFromJSVal = SVGTransform
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTransform where
+  toJSVal = return . unSVGTransform
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTransform where
+  fromJSVal v = fmap SVGTransform <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTransform where
+  makeObject = makeObject . unSVGTransform
+
+instance IsGObject SVGTransform where
+  typeGType _ = gTypeSVGTransform
+  {-# INLINE typeGType #-}
+
+gTypeSVGTransform :: JSM GType
+gTypeSVGTransform = GType . Object <$> jsg "SVGTransform"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGTransformList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList Mozilla SVGTransformList documentation>
+newtype SVGTransformList = SVGTransformList { unSVGTransformList :: JSVal }
+
+instance PToJSVal SVGTransformList where
+  pToJSVal = unSVGTransformList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTransformList where
+  pFromJSVal = SVGTransformList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTransformList where
+  toJSVal = return . unSVGTransformList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTransformList where
+  fromJSVal v = fmap SVGTransformList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGTransformList where
+  makeObject = makeObject . unSVGTransformList
+
+instance IsGObject SVGTransformList where
+  typeGType _ = gTypeSVGTransformList
+  {-# INLINE typeGType #-}
+
+gTypeSVGTransformList :: JSM GType
+gTypeSVGTransformList = GType . Object <$> jsg "SVGTransformList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGURIReference".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference Mozilla SVGURIReference documentation>
+newtype SVGURIReference = SVGURIReference { unSVGURIReference :: JSVal }
+
+instance PToJSVal SVGURIReference where
+  pToJSVal = unSVGURIReference
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGURIReference where
+  pFromJSVal = SVGURIReference
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGURIReference where
+  toJSVal = return . unSVGURIReference
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGURIReference where
+  fromJSVal v = fmap SVGURIReference <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGURIReference where
+  makeObject = makeObject . unSVGURIReference
+
+instance IsGObject SVGURIReference where
+  typeGType _ = gTypeSVGURIReference
+  {-# INLINE typeGType #-}
+
+gTypeSVGURIReference :: JSM GType
+gTypeSVGURIReference = GType . Object <$> jsg "SVGURIReference"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGUnitTypes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGUnitTypes Mozilla SVGUnitTypes documentation>
+newtype SVGUnitTypes = SVGUnitTypes { unSVGUnitTypes :: JSVal }
+
+instance PToJSVal SVGUnitTypes where
+  pToJSVal = unSVGUnitTypes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGUnitTypes where
+  pFromJSVal = SVGUnitTypes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGUnitTypes where
+  toJSVal = return . unSVGUnitTypes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGUnitTypes where
+  fromJSVal v = fmap SVGUnitTypes <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGUnitTypes where
+  makeObject = makeObject . unSVGUnitTypes
+
+instance IsGObject SVGUnitTypes where
+  typeGType _ = gTypeSVGUnitTypes
+  {-# INLINE typeGType #-}
+
+gTypeSVGUnitTypes :: JSM GType
+gTypeSVGUnitTypes = GType . Object <$> jsg "SVGUnitTypes"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGUseElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGGraphicsElement"
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement Mozilla SVGUseElement documentation>
+newtype SVGUseElement = SVGUseElement { unSVGUseElement :: JSVal }
+
+instance PToJSVal SVGUseElement where
+  pToJSVal = unSVGUseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGUseElement where
+  pFromJSVal = SVGUseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGUseElement where
+  toJSVal = return . unSVGUseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGUseElement where
+  fromJSVal v = fmap SVGUseElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGUseElement where
+  makeObject = makeObject . unSVGUseElement
+
+instance IsSVGGraphicsElement SVGUseElement
+instance IsSVGElement SVGUseElement
+instance IsElement SVGUseElement
+instance IsNode SVGUseElement
+instance IsEventTarget SVGUseElement
+instance IsGObject SVGUseElement where
+  typeGType _ = gTypeSVGUseElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGUseElement :: JSM GType
+gTypeSVGUseElement = GType . Object <$> jsg "SVGUseElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGVKernElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGVKernElement Mozilla SVGVKernElement documentation>
+newtype SVGVKernElement = SVGVKernElement { unSVGVKernElement :: JSVal }
+
+instance PToJSVal SVGVKernElement where
+  pToJSVal = unSVGVKernElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGVKernElement where
+  pFromJSVal = SVGVKernElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGVKernElement where
+  toJSVal = return . unSVGVKernElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGVKernElement where
+  fromJSVal v = fmap SVGVKernElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGVKernElement where
+  makeObject = makeObject . unSVGVKernElement
+
+instance IsSVGElement SVGVKernElement
+instance IsElement SVGVKernElement
+instance IsNode SVGVKernElement
+instance IsEventTarget SVGVKernElement
+instance IsGObject SVGVKernElement where
+  typeGType _ = gTypeSVGVKernElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGVKernElement :: JSM GType
+gTypeSVGVKernElement = GType . Object <$> jsg "SVGVKernElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGViewElement".
+-- Base interface functions are in:
+--
+--     * "JSDOM.SVGElement"
+--     * "JSDOM.Element"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement Mozilla SVGViewElement documentation>
+newtype SVGViewElement = SVGViewElement { unSVGViewElement :: JSVal }
+
+instance PToJSVal SVGViewElement where
+  pToJSVal = unSVGViewElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGViewElement where
+  pFromJSVal = SVGViewElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGViewElement where
+  toJSVal = return . unSVGViewElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGViewElement where
+  fromJSVal v = fmap SVGViewElement <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGViewElement where
+  makeObject = makeObject . unSVGViewElement
+
+instance IsSVGElement SVGViewElement
+instance IsElement SVGViewElement
+instance IsNode SVGViewElement
+instance IsEventTarget SVGViewElement
+instance IsGObject SVGViewElement where
+  typeGType _ = gTypeSVGViewElement
+  {-# INLINE typeGType #-}
+
+gTypeSVGViewElement :: JSM GType
+gTypeSVGViewElement = GType . Object <$> jsg "SVGViewElement"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGViewSpec".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec Mozilla SVGViewSpec documentation>
+newtype SVGViewSpec = SVGViewSpec { unSVGViewSpec :: JSVal }
+
+instance PToJSVal SVGViewSpec where
+  pToJSVal = unSVGViewSpec
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGViewSpec where
+  pFromJSVal = SVGViewSpec
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGViewSpec where
+  toJSVal = return . unSVGViewSpec
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGViewSpec where
+  fromJSVal v = fmap SVGViewSpec <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGViewSpec where
+  makeObject = makeObject . unSVGViewSpec
+
+instance IsGObject SVGViewSpec where
+  typeGType _ = gTypeSVGViewSpec
+  {-# INLINE typeGType #-}
+
+gTypeSVGViewSpec :: JSM GType
+gTypeSVGViewSpec = GType . Object <$> jsg "SVGViewSpec"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGZoomAndPan".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan Mozilla SVGZoomAndPan documentation>
+newtype SVGZoomAndPan = SVGZoomAndPan { unSVGZoomAndPan :: JSVal }
+
+instance PToJSVal SVGZoomAndPan where
+  pToJSVal = unSVGZoomAndPan
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGZoomAndPan where
+  pFromJSVal = SVGZoomAndPan
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGZoomAndPan where
+  toJSVal = return . unSVGZoomAndPan
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGZoomAndPan where
+  fromJSVal v = fmap SVGZoomAndPan <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGZoomAndPan where
+  makeObject = makeObject . unSVGZoomAndPan
+
+instance IsGObject SVGZoomAndPan where
+  typeGType _ = gTypeSVGZoomAndPan
+  {-# INLINE typeGType #-}
+
+gTypeSVGZoomAndPan :: JSM GType
+gTypeSVGZoomAndPan = GType . Object <$> jsg "SVGZoomAndPan"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SVGZoomEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent Mozilla SVGZoomEvent documentation>
+newtype SVGZoomEvent = SVGZoomEvent { unSVGZoomEvent :: JSVal }
+
+instance PToJSVal SVGZoomEvent where
+  pToJSVal = unSVGZoomEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGZoomEvent where
+  pFromJSVal = SVGZoomEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGZoomEvent where
+  toJSVal = return . unSVGZoomEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGZoomEvent where
+  fromJSVal v = fmap SVGZoomEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SVGZoomEvent where
+  makeObject = makeObject . unSVGZoomEvent
+
+instance IsUIEvent SVGZoomEvent
+instance IsEvent SVGZoomEvent
+instance IsGObject SVGZoomEvent where
+  typeGType _ = gTypeSVGZoomEvent
+  {-# INLINE typeGType #-}
+
+gTypeSVGZoomEvent :: JSM GType
+gTypeSVGZoomEvent = GType . Object <$> jsg "SVGZoomEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Screen".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Screen Mozilla Screen documentation>
+newtype Screen = Screen { unScreen :: JSVal }
+
+instance PToJSVal Screen where
+  pToJSVal = unScreen
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Screen where
+  pFromJSVal = Screen
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Screen where
+  toJSVal = return . unScreen
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Screen where
+  fromJSVal v = fmap Screen <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Screen where
+  makeObject = makeObject . unScreen
+
+instance IsGObject Screen where
+  typeGType _ = gTypeScreen
+  {-# INLINE typeGType #-}
+
+gTypeScreen :: JSM GType
+gTypeScreen = GType . Object <$> jsg "Screen"
+#else
+type IsScreen o = ScreenClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ScriptProcessorNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode Mozilla ScriptProcessorNode documentation>
+newtype ScriptProcessorNode = ScriptProcessorNode { unScriptProcessorNode :: JSVal }
+
+instance PToJSVal ScriptProcessorNode where
+  pToJSVal = unScriptProcessorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProcessorNode where
+  pFromJSVal = ScriptProcessorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProcessorNode where
+  toJSVal = return . unScriptProcessorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProcessorNode where
+  fromJSVal v = fmap ScriptProcessorNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ScriptProcessorNode where
+  makeObject = makeObject . unScriptProcessorNode
+
+instance IsAudioNode ScriptProcessorNode
+instance IsEventTarget ScriptProcessorNode
+instance IsGObject ScriptProcessorNode where
+  typeGType _ = gTypeScriptProcessorNode
+  {-# INLINE typeGType #-}
+
+gTypeScriptProcessorNode :: JSM GType
+gTypeScriptProcessorNode = GType . Object <$> jsg "ScriptProcessorNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ScriptProfile".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfile Mozilla ScriptProfile documentation>
+newtype ScriptProfile = ScriptProfile { unScriptProfile :: JSVal }
+
+instance PToJSVal ScriptProfile where
+  pToJSVal = unScriptProfile
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProfile where
+  pFromJSVal = ScriptProfile
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProfile where
+  toJSVal = return . unScriptProfile
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProfile where
+  fromJSVal v = fmap ScriptProfile <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ScriptProfile where
+  makeObject = makeObject . unScriptProfile
+
+instance IsGObject ScriptProfile where
+  typeGType _ = gTypeScriptProfile
+  {-# INLINE typeGType #-}
+
+gTypeScriptProfile :: JSM GType
+gTypeScriptProfile = GType . Object <$> jsg "ScriptProfile"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ScriptProfileNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProfileNode Mozilla ScriptProfileNode documentation>
+newtype ScriptProfileNode = ScriptProfileNode { unScriptProfileNode :: JSVal }
+
+instance PToJSVal ScriptProfileNode where
+  pToJSVal = unScriptProfileNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProfileNode where
+  pFromJSVal = ScriptProfileNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProfileNode where
+  toJSVal = return . unScriptProfileNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProfileNode where
+  fromJSVal v = fmap ScriptProfileNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ScriptProfileNode where
+  makeObject = makeObject . unScriptProfileNode
+
+instance IsGObject ScriptProfileNode where
+  typeGType _ = gTypeScriptProfileNode
+  {-# INLINE typeGType #-}
+
+gTypeScriptProfileNode :: JSM GType
+gTypeScriptProfileNode = GType . Object <$> jsg "ScriptProfileNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SecurityPolicy".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicy Mozilla SecurityPolicy documentation>
+newtype SecurityPolicy = SecurityPolicy { unSecurityPolicy :: JSVal }
+
+instance PToJSVal SecurityPolicy where
+  pToJSVal = unSecurityPolicy
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SecurityPolicy where
+  pFromJSVal = SecurityPolicy
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SecurityPolicy where
+  toJSVal = return . unSecurityPolicy
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SecurityPolicy where
+  fromJSVal v = fmap SecurityPolicy <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SecurityPolicy where
+  makeObject = makeObject . unSecurityPolicy
+
+instance IsGObject SecurityPolicy where
+  typeGType _ = gTypeSecurityPolicy
+  {-# INLINE typeGType #-}
+
+gTypeSecurityPolicy :: JSM GType
+gTypeSecurityPolicy = GType . Object <$> jsg "SecurityPolicy"
+#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 "JSDOM.SecurityPolicyViolationEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent Mozilla SecurityPolicyViolationEvent documentation>
+newtype SecurityPolicyViolationEvent = SecurityPolicyViolationEvent { unSecurityPolicyViolationEvent :: JSVal }
+
+instance PToJSVal SecurityPolicyViolationEvent where
+  pToJSVal = unSecurityPolicyViolationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SecurityPolicyViolationEvent where
+  pFromJSVal = SecurityPolicyViolationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SecurityPolicyViolationEvent where
+  toJSVal = return . unSecurityPolicyViolationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SecurityPolicyViolationEvent where
+  fromJSVal v = fmap SecurityPolicyViolationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SecurityPolicyViolationEvent where
+  makeObject = makeObject . unSecurityPolicyViolationEvent
+
+instance IsEvent SecurityPolicyViolationEvent
+instance IsGObject SecurityPolicyViolationEvent where
+  typeGType _ = gTypeSecurityPolicyViolationEvent
+  {-# INLINE typeGType #-}
+
+gTypeSecurityPolicyViolationEvent :: JSM GType
+gTypeSecurityPolicyViolationEvent = GType . Object <$> jsg "SecurityPolicyViolationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Selection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Selection Mozilla Selection documentation>
+newtype Selection = Selection { unSelection :: JSVal }
+
+instance PToJSVal Selection where
+  pToJSVal = unSelection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Selection where
+  pFromJSVal = Selection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Selection where
+  toJSVal = return . unSelection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Selection where
+  fromJSVal v = fmap Selection <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Selection where
+  makeObject = makeObject . unSelection
+
+instance IsGObject Selection where
+  typeGType _ = gTypeSelection
+  {-# INLINE typeGType #-}
+
+gTypeSelection :: JSM GType
+gTypeSelection = GType . Object <$> jsg "Selection"
+#else
+type IsSelection o = SelectionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SourceBuffer".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer Mozilla SourceBuffer documentation>
+newtype SourceBuffer = SourceBuffer { unSourceBuffer :: JSVal }
+
+instance PToJSVal SourceBuffer where
+  pToJSVal = unSourceBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceBuffer where
+  pFromJSVal = SourceBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceBuffer where
+  toJSVal = return . unSourceBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceBuffer where
+  fromJSVal v = fmap SourceBuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SourceBuffer where
+  makeObject = makeObject . unSourceBuffer
+
+instance IsEventTarget SourceBuffer
+instance IsGObject SourceBuffer where
+  typeGType _ = gTypeSourceBuffer
+  {-# INLINE typeGType #-}
+
+gTypeSourceBuffer :: JSM GType
+gTypeSourceBuffer = GType . Object <$> jsg "SourceBuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SourceBufferList".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList Mozilla SourceBufferList documentation>
+newtype SourceBufferList = SourceBufferList { unSourceBufferList :: JSVal }
+
+instance PToJSVal SourceBufferList where
+  pToJSVal = unSourceBufferList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceBufferList where
+  pFromJSVal = SourceBufferList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceBufferList where
+  toJSVal = return . unSourceBufferList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceBufferList where
+  fromJSVal v = fmap SourceBufferList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SourceBufferList where
+  makeObject = makeObject . unSourceBufferList
+
+instance IsEventTarget SourceBufferList
+instance IsGObject SourceBufferList where
+  typeGType _ = gTypeSourceBufferList
+  {-# INLINE typeGType #-}
+
+gTypeSourceBufferList :: JSM GType
+gTypeSourceBufferList = GType . Object <$> jsg "SourceBufferList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SourceInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceInfo Mozilla SourceInfo documentation>
+newtype SourceInfo = SourceInfo { unSourceInfo :: JSVal }
+
+instance PToJSVal SourceInfo where
+  pToJSVal = unSourceInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceInfo where
+  pFromJSVal = SourceInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceInfo where
+  toJSVal = return . unSourceInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceInfo where
+  fromJSVal v = fmap SourceInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SourceInfo where
+  makeObject = makeObject . unSourceInfo
+
+instance IsGObject SourceInfo where
+  typeGType _ = gTypeSourceInfo
+  {-# INLINE typeGType #-}
+
+gTypeSourceInfo :: JSM GType
+gTypeSourceInfo = GType . Object <$> jsg "SourceInfo"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SpeechSynthesis".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis Mozilla SpeechSynthesis documentation>
+newtype SpeechSynthesis = SpeechSynthesis { unSpeechSynthesis :: JSVal }
+
+instance PToJSVal SpeechSynthesis where
+  pToJSVal = unSpeechSynthesis
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesis where
+  pFromJSVal = SpeechSynthesis
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesis where
+  toJSVal = return . unSpeechSynthesis
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesis where
+  fromJSVal v = fmap SpeechSynthesis <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SpeechSynthesis where
+  makeObject = makeObject . unSpeechSynthesis
+
+instance IsGObject SpeechSynthesis where
+  typeGType _ = gTypeSpeechSynthesis
+  {-# INLINE typeGType #-}
+
+gTypeSpeechSynthesis :: JSM GType
+gTypeSpeechSynthesis = GType . Object <$> jsg "SpeechSynthesis"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SpeechSynthesisEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent Mozilla SpeechSynthesisEvent documentation>
+newtype SpeechSynthesisEvent = SpeechSynthesisEvent { unSpeechSynthesisEvent :: JSVal }
+
+instance PToJSVal SpeechSynthesisEvent where
+  pToJSVal = unSpeechSynthesisEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisEvent where
+  pFromJSVal = SpeechSynthesisEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisEvent where
+  toJSVal = return . unSpeechSynthesisEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisEvent where
+  fromJSVal v = fmap SpeechSynthesisEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SpeechSynthesisEvent where
+  makeObject = makeObject . unSpeechSynthesisEvent
+
+instance IsEvent SpeechSynthesisEvent
+instance IsGObject SpeechSynthesisEvent where
+  typeGType _ = gTypeSpeechSynthesisEvent
+  {-# INLINE typeGType #-}
+
+gTypeSpeechSynthesisEvent :: JSM GType
+gTypeSpeechSynthesisEvent = GType . Object <$> jsg "SpeechSynthesisEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SpeechSynthesisUtterance".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation>
+newtype SpeechSynthesisUtterance = SpeechSynthesisUtterance { unSpeechSynthesisUtterance :: JSVal }
+
+instance PToJSVal SpeechSynthesisUtterance where
+  pToJSVal = unSpeechSynthesisUtterance
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisUtterance where
+  pFromJSVal = SpeechSynthesisUtterance
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisUtterance where
+  toJSVal = return . unSpeechSynthesisUtterance
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisUtterance where
+  fromJSVal v = fmap SpeechSynthesisUtterance <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SpeechSynthesisUtterance where
+  makeObject = makeObject . unSpeechSynthesisUtterance
+
+instance IsEventTarget SpeechSynthesisUtterance
+instance IsGObject SpeechSynthesisUtterance where
+  typeGType _ = gTypeSpeechSynthesisUtterance
+  {-# INLINE typeGType #-}
+
+gTypeSpeechSynthesisUtterance :: JSM GType
+gTypeSpeechSynthesisUtterance = GType . Object <$> jsg "SpeechSynthesisUtterance"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SpeechSynthesisVoice".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice Mozilla SpeechSynthesisVoice documentation>
+newtype SpeechSynthesisVoice = SpeechSynthesisVoice { unSpeechSynthesisVoice :: JSVal }
+
+instance PToJSVal SpeechSynthesisVoice where
+  pToJSVal = unSpeechSynthesisVoice
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisVoice where
+  pFromJSVal = SpeechSynthesisVoice
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisVoice where
+  toJSVal = return . unSpeechSynthesisVoice
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisVoice where
+  fromJSVal v = fmap SpeechSynthesisVoice <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SpeechSynthesisVoice where
+  makeObject = makeObject . unSpeechSynthesisVoice
+
+instance IsGObject SpeechSynthesisVoice where
+  typeGType _ = gTypeSpeechSynthesisVoice
+  {-# INLINE typeGType #-}
+
+gTypeSpeechSynthesisVoice :: JSM GType
+gTypeSpeechSynthesisVoice = GType . Object <$> jsg "SpeechSynthesisVoice"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Storage".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Storage Mozilla Storage documentation>
+newtype Storage = Storage { unStorage :: JSVal }
+
+instance PToJSVal Storage where
+  pToJSVal = unStorage
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Storage where
+  pFromJSVal = Storage
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Storage where
+  toJSVal = return . unStorage
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Storage where
+  fromJSVal v = fmap Storage <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Storage where
+  makeObject = makeObject . unStorage
+
+instance IsGObject Storage where
+  typeGType _ = gTypeStorage
+  {-# INLINE typeGType #-}
+
+gTypeStorage :: JSM GType
+gTypeStorage = GType . Object <$> jsg "Storage"
+#else
+type IsStorage o = StorageClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.StorageEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent Mozilla StorageEvent documentation>
+newtype StorageEvent = StorageEvent { unStorageEvent :: JSVal }
+
+instance PToJSVal StorageEvent where
+  pToJSVal = unStorageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageEvent where
+  pFromJSVal = StorageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageEvent where
+  toJSVal = return . unStorageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageEvent where
+  fromJSVal v = fmap StorageEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StorageEvent where
+  makeObject = makeObject . unStorageEvent
+
+instance IsEvent StorageEvent
+instance IsGObject StorageEvent where
+  typeGType _ = gTypeStorageEvent
+  {-# INLINE typeGType #-}
+
+gTypeStorageEvent :: JSM GType
+gTypeStorageEvent = GType . Object <$> jsg "StorageEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.StorageInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo Mozilla StorageInfo documentation>
+newtype StorageInfo = StorageInfo { unStorageInfo :: JSVal }
+
+instance PToJSVal StorageInfo where
+  pToJSVal = unStorageInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageInfo where
+  pFromJSVal = StorageInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageInfo where
+  toJSVal = return . unStorageInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageInfo where
+  fromJSVal v = fmap StorageInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StorageInfo where
+  makeObject = makeObject . unStorageInfo
+
+instance IsGObject StorageInfo where
+  typeGType _ = gTypeStorageInfo
+  {-# INLINE typeGType #-}
+
+gTypeStorageInfo :: JSM GType
+gTypeStorageInfo = GType . Object <$> jsg "StorageInfo"
+#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 "JSDOM.StorageQuota".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota Mozilla StorageQuota documentation>
+newtype StorageQuota = StorageQuota { unStorageQuota :: JSVal }
+
+instance PToJSVal StorageQuota where
+  pToJSVal = unStorageQuota
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageQuota where
+  pFromJSVal = StorageQuota
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageQuota where
+  toJSVal = return . unStorageQuota
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageQuota where
+  fromJSVal v = fmap StorageQuota <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StorageQuota where
+  makeObject = makeObject . unStorageQuota
+
+instance IsGObject StorageQuota where
+  typeGType _ = gTypeStorageQuota
+  {-# INLINE typeGType #-}
+
+gTypeStorageQuota :: JSM GType
+gTypeStorageQuota = GType . Object <$> jsg "StorageQuota"
+#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 "JSDOM.StyleMedia".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia Mozilla StyleMedia documentation>
+newtype StyleMedia = StyleMedia { unStyleMedia :: JSVal }
+
+instance PToJSVal StyleMedia where
+  pToJSVal = unStyleMedia
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleMedia where
+  pFromJSVal = StyleMedia
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleMedia where
+  toJSVal = return . unStyleMedia
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleMedia where
+  fromJSVal v = fmap StyleMedia <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StyleMedia where
+  makeObject = makeObject . unStyleMedia
+
+instance IsGObject StyleMedia where
+  typeGType _ = gTypeStyleMedia
+  {-# INLINE typeGType #-}
+
+gTypeStyleMedia :: JSM GType
+gTypeStyleMedia = GType . Object <$> jsg "StyleMedia"
+#else
+type IsStyleMedia o = StyleMediaClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.StyleSheet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet Mozilla StyleSheet documentation>
+newtype StyleSheet = StyleSheet { unStyleSheet :: JSVal }
+
+instance PToJSVal StyleSheet where
+  pToJSVal = unStyleSheet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleSheet where
+  pFromJSVal = StyleSheet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleSheet where
+  toJSVal = return . unStyleSheet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleSheet where
+  fromJSVal v = fmap StyleSheet <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StyleSheet where
+  makeObject = makeObject . unStyleSheet
+
+class IsGObject o => IsStyleSheet o
+toStyleSheet :: IsStyleSheet o => o -> StyleSheet
+toStyleSheet = StyleSheet . coerce
+
+instance IsStyleSheet StyleSheet
+instance IsGObject StyleSheet where
+  typeGType _ = gTypeStyleSheet
+  {-# INLINE typeGType #-}
+
+gTypeStyleSheet :: JSM GType
+gTypeStyleSheet = GType . Object <$> jsg "StyleSheet"
+#else
+type IsStyleSheet o = StyleSheetClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.StyleSheetList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList Mozilla StyleSheetList documentation>
+newtype StyleSheetList = StyleSheetList { unStyleSheetList :: JSVal }
+
+instance PToJSVal StyleSheetList where
+  pToJSVal = unStyleSheetList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleSheetList where
+  pFromJSVal = StyleSheetList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleSheetList where
+  toJSVal = return . unStyleSheetList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleSheetList where
+  fromJSVal v = fmap StyleSheetList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject StyleSheetList where
+  makeObject = makeObject . unStyleSheetList
+
+instance IsGObject StyleSheetList where
+  typeGType _ = gTypeStyleSheetList
+  {-# INLINE typeGType #-}
+
+gTypeStyleSheetList :: JSM GType
+gTypeStyleSheetList = GType . Object <$> jsg "StyleSheetList"
+#else
+type IsStyleSheetList o = StyleSheetListClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.SubtleCrypto".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto Mozilla WebKitSubtleCrypto documentation>
+newtype SubtleCrypto = SubtleCrypto { unSubtleCrypto :: JSVal }
+
+instance PToJSVal SubtleCrypto where
+  pToJSVal = unSubtleCrypto
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SubtleCrypto where
+  pFromJSVal = SubtleCrypto
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SubtleCrypto where
+  toJSVal = return . unSubtleCrypto
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SubtleCrypto where
+  fromJSVal v = fmap SubtleCrypto <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject SubtleCrypto where
+  makeObject = makeObject . unSubtleCrypto
+
+instance IsGObject SubtleCrypto where
+  typeGType _ = gTypeSubtleCrypto
+  {-# INLINE typeGType #-}
+
+gTypeSubtleCrypto :: JSM GType
+gTypeSubtleCrypto = GType . Object <$> jsg "WebKitSubtleCrypto"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Text".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CharacterData"
+--     * "JSDOM.Node"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation>
+newtype Text = Text { unText :: JSVal }
+
+instance PToJSVal Text where
+  pToJSVal = unText
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Text where
+  pFromJSVal = Text
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Text where
+  toJSVal = return . unText
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Text where
+  fromJSVal v = fmap Text <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Text where
+  makeObject = makeObject . unText
+
+class IsCharacterData o => IsText o
+toText :: IsText o => o -> Text
+toText = Text . coerce
+
+instance IsText Text
+instance IsCharacterData Text
+instance IsNode Text
+instance IsEventTarget Text
+instance IsGObject Text where
+  typeGType _ = gTypeText
+  {-# INLINE typeGType #-}
+
+gTypeText :: JSM GType
+gTypeText = GType . Object <$> jsg "Text"
+#else
+type IsText o = TextClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.TextEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent Mozilla TextEvent documentation>
+newtype TextEvent = TextEvent { unTextEvent :: JSVal }
+
+instance PToJSVal TextEvent where
+  pToJSVal = unTextEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextEvent where
+  pFromJSVal = TextEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextEvent where
+  toJSVal = return . unTextEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextEvent where
+  fromJSVal v = fmap TextEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextEvent where
+  makeObject = makeObject . unTextEvent
+
+instance IsUIEvent TextEvent
+instance IsEvent TextEvent
+instance IsGObject TextEvent where
+  typeGType _ = gTypeTextEvent
+  {-# INLINE typeGType #-}
+
+gTypeTextEvent :: JSM GType
+gTypeTextEvent = GType . Object <$> jsg "TextEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.TextMetrics".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics Mozilla TextMetrics documentation>
+newtype TextMetrics = TextMetrics { unTextMetrics :: JSVal }
+
+instance PToJSVal TextMetrics where
+  pToJSVal = unTextMetrics
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextMetrics where
+  pFromJSVal = TextMetrics
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextMetrics where
+  toJSVal = return . unTextMetrics
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextMetrics where
+  fromJSVal v = fmap TextMetrics <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextMetrics where
+  makeObject = makeObject . unTextMetrics
+
+instance IsGObject TextMetrics where
+  typeGType _ = gTypeTextMetrics
+  {-# INLINE typeGType #-}
+
+gTypeTextMetrics :: JSM GType
+gTypeTextMetrics = GType . Object <$> jsg "TextMetrics"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.TextTrack".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack Mozilla TextTrack documentation>
+newtype TextTrack = TextTrack { unTextTrack :: JSVal }
+
+instance PToJSVal TextTrack where
+  pToJSVal = unTextTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrack where
+  pFromJSVal = TextTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrack where
+  toJSVal = return . unTextTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrack where
+  fromJSVal v = fmap TextTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextTrack where
+  makeObject = makeObject . unTextTrack
+
+instance IsEventTarget TextTrack
+instance IsGObject TextTrack where
+  typeGType _ = gTypeTextTrack
+  {-# INLINE typeGType #-}
+
+gTypeTextTrack :: JSM GType
+gTypeTextTrack = GType . Object <$> jsg "TextTrack"
+#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 "JSDOM.TextTrackCue".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue Mozilla TextTrackCue documentation>
+newtype TextTrackCue = TextTrackCue { unTextTrackCue :: JSVal }
+
+instance PToJSVal TextTrackCue where
+  pToJSVal = unTextTrackCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackCue where
+  pFromJSVal = TextTrackCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackCue where
+  toJSVal = return . unTextTrackCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackCue where
+  fromJSVal v = fmap TextTrackCue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextTrackCue where
+  makeObject = makeObject . unTextTrackCue
+
+class IsEventTarget o => IsTextTrackCue o
+toTextTrackCue :: IsTextTrackCue o => o -> TextTrackCue
+toTextTrackCue = TextTrackCue . coerce
+
+instance IsTextTrackCue TextTrackCue
+instance IsEventTarget TextTrackCue
+instance IsGObject TextTrackCue where
+  typeGType _ = gTypeTextTrackCue
+  {-# INLINE typeGType #-}
+
+gTypeTextTrackCue :: JSM GType
+gTypeTextTrackCue = GType . Object <$> jsg "TextTrackCue"
+#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 "JSDOM.TextTrackCueList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList Mozilla TextTrackCueList documentation>
+newtype TextTrackCueList = TextTrackCueList { unTextTrackCueList :: JSVal }
+
+instance PToJSVal TextTrackCueList where
+  pToJSVal = unTextTrackCueList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackCueList where
+  pFromJSVal = TextTrackCueList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackCueList where
+  toJSVal = return . unTextTrackCueList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackCueList where
+  fromJSVal v = fmap TextTrackCueList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextTrackCueList where
+  makeObject = makeObject . unTextTrackCueList
+
+instance IsGObject TextTrackCueList where
+  typeGType _ = gTypeTextTrackCueList
+  {-# INLINE typeGType #-}
+
+gTypeTextTrackCueList :: JSM GType
+gTypeTextTrackCueList = GType . Object <$> jsg "TextTrackCueList"
+#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 "JSDOM.TextTrackList".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList Mozilla TextTrackList documentation>
+newtype TextTrackList = TextTrackList { unTextTrackList :: JSVal }
+
+instance PToJSVal TextTrackList where
+  pToJSVal = unTextTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackList where
+  pFromJSVal = TextTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackList where
+  toJSVal = return . unTextTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackList where
+  fromJSVal v = fmap TextTrackList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TextTrackList where
+  makeObject = makeObject . unTextTrackList
+
+instance IsEventTarget TextTrackList
+instance IsGObject TextTrackList where
+  typeGType _ = gTypeTextTrackList
+  {-# INLINE typeGType #-}
+
+gTypeTextTrackList :: JSM GType
+gTypeTextTrackList = GType . Object <$> jsg "TextTrackList"
+#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 "JSDOM.TimeRanges".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges Mozilla TimeRanges documentation>
+newtype TimeRanges = TimeRanges { unTimeRanges :: JSVal }
+
+instance PToJSVal TimeRanges where
+  pToJSVal = unTimeRanges
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TimeRanges where
+  pFromJSVal = TimeRanges
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TimeRanges where
+  toJSVal = return . unTimeRanges
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TimeRanges where
+  fromJSVal v = fmap TimeRanges <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TimeRanges where
+  makeObject = makeObject . unTimeRanges
+
+instance IsGObject TimeRanges where
+  typeGType _ = gTypeTimeRanges
+  {-# INLINE typeGType #-}
+
+gTypeTimeRanges :: JSM GType
+gTypeTimeRanges = GType . Object <$> jsg "TimeRanges"
+#else
+type IsTimeRanges o = TimeRangesClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Touch".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Touch Mozilla Touch documentation>
+newtype Touch = Touch { unTouch :: JSVal }
+
+instance PToJSVal Touch where
+  pToJSVal = unTouch
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Touch where
+  pFromJSVal = Touch
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Touch where
+  toJSVal = return . unTouch
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Touch where
+  fromJSVal v = fmap Touch <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Touch where
+  makeObject = makeObject . unTouch
+
+instance IsGObject Touch where
+  typeGType _ = gTypeTouch
+  {-# INLINE typeGType #-}
+
+gTypeTouch :: JSM GType
+gTypeTouch = GType . Object <$> jsg "Touch"
+#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 "JSDOM.TouchEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent Mozilla TouchEvent documentation>
+newtype TouchEvent = TouchEvent { unTouchEvent :: JSVal }
+
+instance PToJSVal TouchEvent where
+  pToJSVal = unTouchEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TouchEvent where
+  pFromJSVal = TouchEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TouchEvent where
+  toJSVal = return . unTouchEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TouchEvent where
+  fromJSVal v = fmap TouchEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TouchEvent where
+  makeObject = makeObject . unTouchEvent
+
+instance IsUIEvent TouchEvent
+instance IsEvent TouchEvent
+instance IsGObject TouchEvent where
+  typeGType _ = gTypeTouchEvent
+  {-# INLINE typeGType #-}
+
+gTypeTouchEvent :: JSM GType
+gTypeTouchEvent = GType . Object <$> jsg "TouchEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.TouchList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TouchList Mozilla TouchList documentation>
+newtype TouchList = TouchList { unTouchList :: JSVal }
+
+instance PToJSVal TouchList where
+  pToJSVal = unTouchList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TouchList where
+  pFromJSVal = TouchList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TouchList where
+  toJSVal = return . unTouchList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TouchList where
+  fromJSVal v = fmap TouchList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TouchList where
+  makeObject = makeObject . unTouchList
+
+instance IsGObject TouchList where
+  typeGType _ = gTypeTouchList
+  {-# INLINE typeGType #-}
+
+gTypeTouchList :: JSM GType
+gTypeTouchList = GType . Object <$> jsg "TouchList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.TrackEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent Mozilla TrackEvent documentation>
+newtype TrackEvent = TrackEvent { unTrackEvent :: JSVal }
+
+instance PToJSVal TrackEvent where
+  pToJSVal = unTrackEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TrackEvent where
+  pFromJSVal = TrackEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TrackEvent where
+  toJSVal = return . unTrackEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TrackEvent where
+  fromJSVal v = fmap TrackEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TrackEvent where
+  makeObject = makeObject . unTrackEvent
+
+instance IsEvent TrackEvent
+instance IsGObject TrackEvent where
+  typeGType _ = gTypeTrackEvent
+  {-# INLINE typeGType #-}
+
+gTypeTrackEvent :: JSM GType
+gTypeTrackEvent = GType . Object <$> jsg "TrackEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.TransitionEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent Mozilla TransitionEvent documentation>
+newtype TransitionEvent = TransitionEvent { unTransitionEvent :: JSVal }
+
+instance PToJSVal TransitionEvent where
+  pToJSVal = unTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TransitionEvent where
+  pFromJSVal = TransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TransitionEvent where
+  toJSVal = return . unTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TransitionEvent where
+  fromJSVal v = fmap TransitionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TransitionEvent where
+  makeObject = makeObject . unTransitionEvent
+
+instance IsEvent TransitionEvent
+instance IsGObject TransitionEvent where
+  typeGType _ = gTypeTransitionEvent
+  {-# INLINE typeGType #-}
+
+gTypeTransitionEvent :: JSM GType
+gTypeTransitionEvent = GType . Object <$> jsg "TransitionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.TreeWalker".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker Mozilla TreeWalker documentation>
+newtype TreeWalker = TreeWalker { unTreeWalker :: JSVal }
+
+instance PToJSVal TreeWalker where
+  pToJSVal = unTreeWalker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TreeWalker where
+  pFromJSVal = TreeWalker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TreeWalker where
+  toJSVal = return . unTreeWalker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TreeWalker where
+  fromJSVal v = fmap TreeWalker <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TreeWalker where
+  makeObject = makeObject . unTreeWalker
+
+instance IsGObject TreeWalker where
+  typeGType _ = gTypeTreeWalker
+  {-# INLINE typeGType #-}
+
+gTypeTreeWalker :: JSM GType
+gTypeTreeWalker = GType . Object <$> jsg "TreeWalker"
+#else
+type IsTreeWalker o = TreeWalkerClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.TypeConversions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TypeConversions Mozilla TypeConversions documentation>
+newtype TypeConversions = TypeConversions { unTypeConversions :: JSVal }
+
+instance PToJSVal TypeConversions where
+  pToJSVal = unTypeConversions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TypeConversions where
+  pFromJSVal = TypeConversions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TypeConversions where
+  toJSVal = return . unTypeConversions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TypeConversions where
+  fromJSVal v = fmap TypeConversions <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject TypeConversions where
+  makeObject = makeObject . unTypeConversions
+
+instance IsGObject TypeConversions where
+  typeGType _ = gTypeTypeConversions
+  {-# INLINE typeGType #-}
+
+gTypeTypeConversions :: JSM GType
+gTypeTypeConversions = GType . Object <$> jsg "TypeConversions"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.UIEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent Mozilla UIEvent documentation>
+newtype UIEvent = UIEvent { unUIEvent :: JSVal }
+
+instance PToJSVal UIEvent where
+  pToJSVal = unUIEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UIEvent where
+  pFromJSVal = UIEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UIEvent where
+  toJSVal = return . unUIEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UIEvent where
+  fromJSVal v = fmap UIEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject UIEvent where
+  makeObject = makeObject . unUIEvent
+
+class IsEvent o => IsUIEvent o
+toUIEvent :: IsUIEvent o => o -> UIEvent
+toUIEvent = UIEvent . coerce
+
+instance IsUIEvent UIEvent
+instance IsEvent UIEvent
+instance IsGObject UIEvent where
+  typeGType _ = gTypeUIEvent
+  {-# INLINE typeGType #-}
+
+gTypeUIEvent :: JSM GType
+gTypeUIEvent = GType . Object <$> jsg "UIEvent"
+#else
+type IsUIEvent o = UIEventClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.UIRequestEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UIRequestEvent Mozilla UIRequestEvent documentation>
+newtype UIRequestEvent = UIRequestEvent { unUIRequestEvent :: JSVal }
+
+instance PToJSVal UIRequestEvent where
+  pToJSVal = unUIRequestEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UIRequestEvent where
+  pFromJSVal = UIRequestEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UIRequestEvent where
+  toJSVal = return . unUIRequestEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UIRequestEvent where
+  fromJSVal v = fmap UIRequestEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject UIRequestEvent where
+  makeObject = makeObject . unUIRequestEvent
+
+instance IsUIEvent UIRequestEvent
+instance IsEvent UIRequestEvent
+instance IsGObject UIRequestEvent where
+  typeGType _ = gTypeUIRequestEvent
+  {-# INLINE typeGType #-}
+
+gTypeUIRequestEvent :: JSM GType
+gTypeUIRequestEvent = GType . Object <$> jsg "UIRequestEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.URL".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation>
+newtype URL = URL { unURL :: JSVal }
+
+instance PToJSVal URL where
+  pToJSVal = unURL
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal URL where
+  pFromJSVal = URL
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal URL where
+  toJSVal = return . unURL
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal URL where
+  fromJSVal v = fmap URL <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject URL where
+  makeObject = makeObject . unURL
+
+instance IsGObject URL where
+  typeGType _ = gTypeURL
+  {-# INLINE typeGType #-}
+
+gTypeURL :: JSM GType
+gTypeURL = GType . Object <$> jsg "URL"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.URLUtils".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/URLUtils Mozilla URLUtils documentation>
+newtype URLUtils = URLUtils { unURLUtils :: JSVal }
+
+instance PToJSVal URLUtils where
+  pToJSVal = unURLUtils
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal URLUtils where
+  pFromJSVal = URLUtils
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal URLUtils where
+  toJSVal = return . unURLUtils
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal URLUtils where
+  fromJSVal v = fmap URLUtils <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject URLUtils where
+  makeObject = makeObject . unURLUtils
+
+instance IsGObject URLUtils where
+  typeGType _ = gTypeURLUtils
+  {-# INLINE typeGType #-}
+
+gTypeURLUtils :: JSM GType
+gTypeURLUtils = GType . Object <$> jsg "URLUtils"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.UserMessageHandler".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler Mozilla UserMessageHandler documentation>
+newtype UserMessageHandler = UserMessageHandler { unUserMessageHandler :: JSVal }
+
+instance PToJSVal UserMessageHandler where
+  pToJSVal = unUserMessageHandler
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UserMessageHandler where
+  pFromJSVal = UserMessageHandler
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UserMessageHandler where
+  toJSVal = return . unUserMessageHandler
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UserMessageHandler where
+  fromJSVal v = fmap UserMessageHandler <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject UserMessageHandler where
+  makeObject = makeObject . unUserMessageHandler
+
+instance IsGObject UserMessageHandler where
+  typeGType _ = gTypeUserMessageHandler
+  {-# INLINE typeGType #-}
+
+gTypeUserMessageHandler :: JSM GType
+gTypeUserMessageHandler = GType . Object <$> jsg "UserMessageHandler"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.UserMessageHandlersNamespace".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandlersNamespace Mozilla UserMessageHandlersNamespace documentation>
+newtype UserMessageHandlersNamespace = UserMessageHandlersNamespace { unUserMessageHandlersNamespace :: JSVal }
+
+instance PToJSVal UserMessageHandlersNamespace where
+  pToJSVal = unUserMessageHandlersNamespace
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UserMessageHandlersNamespace where
+  pFromJSVal = UserMessageHandlersNamespace
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UserMessageHandlersNamespace where
+  toJSVal = return . unUserMessageHandlersNamespace
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UserMessageHandlersNamespace where
+  fromJSVal v = fmap UserMessageHandlersNamespace <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject UserMessageHandlersNamespace where
+  makeObject = makeObject . unUserMessageHandlersNamespace
+
+instance IsGObject UserMessageHandlersNamespace where
+  typeGType _ = gTypeUserMessageHandlersNamespace
+  {-# INLINE typeGType #-}
+
+gTypeUserMessageHandlersNamespace :: JSM GType
+gTypeUserMessageHandlersNamespace = GType . Object <$> jsg "UserMessageHandlersNamespace"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.VTTCue".
+-- Base interface functions are in:
+--
+--     * "JSDOM.TextTrackCue"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation>
+newtype VTTCue = VTTCue { unVTTCue :: JSVal }
+
+instance PToJSVal VTTCue where
+  pToJSVal = unVTTCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTCue where
+  pFromJSVal = VTTCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTCue where
+  toJSVal = return . unVTTCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTCue where
+  fromJSVal v = fmap VTTCue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VTTCue where
+  makeObject = makeObject . unVTTCue
+
+instance IsTextTrackCue VTTCue
+instance IsEventTarget VTTCue
+instance IsGObject VTTCue where
+  typeGType _ = gTypeVTTCue
+  {-# INLINE typeGType #-}
+
+gTypeVTTCue :: JSM GType
+gTypeVTTCue = GType . Object <$> jsg "VTTCue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.VTTRegion".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation>
+newtype VTTRegion = VTTRegion { unVTTRegion :: JSVal }
+
+instance PToJSVal VTTRegion where
+  pToJSVal = unVTTRegion
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTRegion where
+  pFromJSVal = VTTRegion
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTRegion where
+  toJSVal = return . unVTTRegion
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTRegion where
+  fromJSVal v = fmap VTTRegion <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VTTRegion where
+  makeObject = makeObject . unVTTRegion
+
+instance IsGObject VTTRegion where
+  typeGType _ = gTypeVTTRegion
+  {-# INLINE typeGType #-}
+
+gTypeVTTRegion :: JSM GType
+gTypeVTTRegion = GType . Object <$> jsg "VTTRegion"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.VTTRegionList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList Mozilla VTTRegionList documentation>
+newtype VTTRegionList = VTTRegionList { unVTTRegionList :: JSVal }
+
+instance PToJSVal VTTRegionList where
+  pToJSVal = unVTTRegionList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTRegionList where
+  pFromJSVal = VTTRegionList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTRegionList where
+  toJSVal = return . unVTTRegionList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTRegionList where
+  fromJSVal v = fmap VTTRegionList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VTTRegionList where
+  makeObject = makeObject . unVTTRegionList
+
+instance IsGObject VTTRegionList where
+  typeGType _ = gTypeVTTRegionList
+  {-# INLINE typeGType #-}
+
+gTypeVTTRegionList :: JSM GType
+gTypeVTTRegionList = GType . Object <$> jsg "VTTRegionList"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.ValidityState".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState Mozilla ValidityState documentation>
+newtype ValidityState = ValidityState { unValidityState :: JSVal }
+
+instance PToJSVal ValidityState where
+  pToJSVal = unValidityState
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ValidityState where
+  pFromJSVal = ValidityState
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ValidityState where
+  toJSVal = return . unValidityState
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ValidityState where
+  fromJSVal v = fmap ValidityState <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject ValidityState where
+  makeObject = makeObject . unValidityState
+
+instance IsGObject ValidityState where
+  typeGType _ = gTypeValidityState
+  {-# INLINE typeGType #-}
+
+gTypeValidityState :: JSM GType
+gTypeValidityState = GType . Object <$> jsg "ValidityState"
+#else
+type IsValidityState o = ValidityStateClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.VideoPlaybackQuality".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality Mozilla VideoPlaybackQuality documentation>
+newtype VideoPlaybackQuality = VideoPlaybackQuality { unVideoPlaybackQuality :: JSVal }
+
+instance PToJSVal VideoPlaybackQuality where
+  pToJSVal = unVideoPlaybackQuality
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoPlaybackQuality where
+  pFromJSVal = VideoPlaybackQuality
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoPlaybackQuality where
+  toJSVal = return . unVideoPlaybackQuality
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoPlaybackQuality where
+  fromJSVal v = fmap VideoPlaybackQuality <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VideoPlaybackQuality where
+  makeObject = makeObject . unVideoPlaybackQuality
+
+instance IsGObject VideoPlaybackQuality where
+  typeGType _ = gTypeVideoPlaybackQuality
+  {-# INLINE typeGType #-}
+
+gTypeVideoPlaybackQuality :: JSM GType
+gTypeVideoPlaybackQuality = GType . Object <$> jsg "VideoPlaybackQuality"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.VideoStreamTrack".
+-- Base interface functions are in:
+--
+--     * "JSDOM.MediaStreamTrack"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoStreamTrack Mozilla VideoStreamTrack documentation>
+newtype VideoStreamTrack = VideoStreamTrack { unVideoStreamTrack :: JSVal }
+
+instance PToJSVal VideoStreamTrack where
+  pToJSVal = unVideoStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoStreamTrack where
+  pFromJSVal = VideoStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoStreamTrack where
+  toJSVal = return . unVideoStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoStreamTrack where
+  fromJSVal v = fmap VideoStreamTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VideoStreamTrack where
+  makeObject = makeObject . unVideoStreamTrack
+
+instance IsMediaStreamTrack VideoStreamTrack
+instance IsEventTarget VideoStreamTrack
+instance IsGObject VideoStreamTrack where
+  typeGType _ = gTypeVideoStreamTrack
+  {-# INLINE typeGType #-}
+
+gTypeVideoStreamTrack :: JSM GType
+gTypeVideoStreamTrack = GType . Object <$> jsg "VideoStreamTrack"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.VideoTrack".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack Mozilla VideoTrack documentation>
+newtype VideoTrack = VideoTrack { unVideoTrack :: JSVal }
+
+instance PToJSVal VideoTrack where
+  pToJSVal = unVideoTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoTrack where
+  pFromJSVal = VideoTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoTrack where
+  toJSVal = return . unVideoTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoTrack where
+  fromJSVal v = fmap VideoTrack <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VideoTrack where
+  makeObject = makeObject . unVideoTrack
+
+instance IsGObject VideoTrack where
+  typeGType _ = gTypeVideoTrack
+  {-# INLINE typeGType #-}
+
+gTypeVideoTrack :: JSM GType
+gTypeVideoTrack = GType . Object <$> jsg "VideoTrack"
+#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 "JSDOM.VideoTrackList".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList Mozilla VideoTrackList documentation>
+newtype VideoTrackList = VideoTrackList { unVideoTrackList :: JSVal }
+
+instance PToJSVal VideoTrackList where
+  pToJSVal = unVideoTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoTrackList where
+  pFromJSVal = VideoTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoTrackList where
+  toJSVal = return . unVideoTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoTrackList where
+  fromJSVal v = fmap VideoTrackList <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject VideoTrackList where
+  makeObject = makeObject . unVideoTrackList
+
+instance IsEventTarget VideoTrackList
+instance IsGObject VideoTrackList where
+  typeGType _ = gTypeVideoTrackList
+  {-# INLINE typeGType #-}
+
+gTypeVideoTrackList :: JSM GType
+gTypeVideoTrackList = GType . Object <$> jsg "VideoTrackList"
+#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 "JSDOM.WaveShaperNode".
+-- Base interface functions are in:
+--
+--     * "JSDOM.AudioNode"
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode Mozilla WaveShaperNode documentation>
+newtype WaveShaperNode = WaveShaperNode { unWaveShaperNode :: JSVal }
+
+instance PToJSVal WaveShaperNode where
+  pToJSVal = unWaveShaperNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WaveShaperNode where
+  pFromJSVal = WaveShaperNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WaveShaperNode where
+  toJSVal = return . unWaveShaperNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WaveShaperNode where
+  fromJSVal v = fmap WaveShaperNode <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WaveShaperNode where
+  makeObject = makeObject . unWaveShaperNode
+
+instance IsAudioNode WaveShaperNode
+instance IsEventTarget WaveShaperNode
+instance IsGObject WaveShaperNode where
+  typeGType _ = gTypeWaveShaperNode
+  {-# INLINE typeGType #-}
+
+gTypeWaveShaperNode :: JSM GType
+gTypeWaveShaperNode = GType . Object <$> jsg "WaveShaperNode"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGL2RenderingContext".
+-- Base interface functions are in:
+--
+--     * "JSDOM.WebGLRenderingContextBase"
+--     * "JSDOM.CanvasRenderingContext"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext Mozilla WebGL2RenderingContext documentation>
+newtype WebGL2RenderingContext = WebGL2RenderingContext { unWebGL2RenderingContext :: JSVal }
+
+instance PToJSVal WebGL2RenderingContext where
+  pToJSVal = unWebGL2RenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGL2RenderingContext where
+  pFromJSVal = WebGL2RenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGL2RenderingContext where
+  toJSVal = return . unWebGL2RenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGL2RenderingContext where
+  fromJSVal v = fmap WebGL2RenderingContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGL2RenderingContext where
+  makeObject = makeObject . unWebGL2RenderingContext
+
+instance IsWebGLRenderingContextBase WebGL2RenderingContext
+instance IsCanvasRenderingContext WebGL2RenderingContext
+instance IsGObject WebGL2RenderingContext where
+  typeGType _ = gTypeWebGL2RenderingContext
+  {-# INLINE typeGType #-}
+
+gTypeWebGL2RenderingContext :: JSM GType
+gTypeWebGL2RenderingContext = GType . Object <$> jsg "WebGL2RenderingContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLActiveInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo Mozilla WebGLActiveInfo documentation>
+newtype WebGLActiveInfo = WebGLActiveInfo { unWebGLActiveInfo :: JSVal }
+
+instance PToJSVal WebGLActiveInfo where
+  pToJSVal = unWebGLActiveInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLActiveInfo where
+  pFromJSVal = WebGLActiveInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLActiveInfo where
+  toJSVal = return . unWebGLActiveInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLActiveInfo where
+  fromJSVal v = fmap WebGLActiveInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLActiveInfo where
+  makeObject = makeObject . unWebGLActiveInfo
+
+instance IsGObject WebGLActiveInfo where
+  typeGType _ = gTypeWebGLActiveInfo
+  {-# INLINE typeGType #-}
+
+gTypeWebGLActiveInfo :: JSM GType
+gTypeWebGLActiveInfo = GType . Object <$> jsg "WebGLActiveInfo"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLBuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer Mozilla WebGLBuffer documentation>
+newtype WebGLBuffer = WebGLBuffer { unWebGLBuffer :: JSVal }
+
+instance PToJSVal WebGLBuffer where
+  pToJSVal = unWebGLBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLBuffer where
+  pFromJSVal = WebGLBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLBuffer where
+  toJSVal = return . unWebGLBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLBuffer where
+  fromJSVal v = fmap WebGLBuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLBuffer where
+  makeObject = makeObject . unWebGLBuffer
+
+instance IsGObject WebGLBuffer where
+  typeGType _ = gTypeWebGLBuffer
+  {-# INLINE typeGType #-}
+
+gTypeWebGLBuffer :: JSM GType
+gTypeWebGLBuffer = GType . Object <$> jsg "WebGLBuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLCompressedTextureATC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTextureATC Mozilla WebGLCompressedTextureATC documentation>
+newtype WebGLCompressedTextureATC = WebGLCompressedTextureATC { unWebGLCompressedTextureATC :: JSVal }
+
+instance PToJSVal WebGLCompressedTextureATC where
+  pToJSVal = unWebGLCompressedTextureATC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTextureATC where
+  pFromJSVal = WebGLCompressedTextureATC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTextureATC where
+  toJSVal = return . unWebGLCompressedTextureATC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTextureATC where
+  fromJSVal v = fmap WebGLCompressedTextureATC <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLCompressedTextureATC where
+  makeObject = makeObject . unWebGLCompressedTextureATC
+
+instance IsGObject WebGLCompressedTextureATC where
+  typeGType _ = gTypeWebGLCompressedTextureATC
+  {-# INLINE typeGType #-}
+
+gTypeWebGLCompressedTextureATC :: JSM GType
+gTypeWebGLCompressedTextureATC = GType . Object <$> jsg "WebGLCompressedTextureATC"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLCompressedTexturePVRTC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTexturePVRTC Mozilla WebGLCompressedTexturePVRTC documentation>
+newtype WebGLCompressedTexturePVRTC = WebGLCompressedTexturePVRTC { unWebGLCompressedTexturePVRTC :: JSVal }
+
+instance PToJSVal WebGLCompressedTexturePVRTC where
+  pToJSVal = unWebGLCompressedTexturePVRTC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTexturePVRTC where
+  pFromJSVal = WebGLCompressedTexturePVRTC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTexturePVRTC where
+  toJSVal = return . unWebGLCompressedTexturePVRTC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTexturePVRTC where
+  fromJSVal v = fmap WebGLCompressedTexturePVRTC <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLCompressedTexturePVRTC where
+  makeObject = makeObject . unWebGLCompressedTexturePVRTC
+
+instance IsGObject WebGLCompressedTexturePVRTC where
+  typeGType _ = gTypeWebGLCompressedTexturePVRTC
+  {-# INLINE typeGType #-}
+
+gTypeWebGLCompressedTexturePVRTC :: JSM GType
+gTypeWebGLCompressedTexturePVRTC = GType . Object <$> jsg "WebGLCompressedTexturePVRTC"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLCompressedTextureS3TC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTextureS3TC Mozilla WebGLCompressedTextureS3TC documentation>
+newtype WebGLCompressedTextureS3TC = WebGLCompressedTextureS3TC { unWebGLCompressedTextureS3TC :: JSVal }
+
+instance PToJSVal WebGLCompressedTextureS3TC where
+  pToJSVal = unWebGLCompressedTextureS3TC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTextureS3TC where
+  pFromJSVal = WebGLCompressedTextureS3TC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTextureS3TC where
+  toJSVal = return . unWebGLCompressedTextureS3TC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTextureS3TC where
+  fromJSVal v = fmap WebGLCompressedTextureS3TC <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLCompressedTextureS3TC where
+  makeObject = makeObject . unWebGLCompressedTextureS3TC
+
+instance IsGObject WebGLCompressedTextureS3TC where
+  typeGType _ = gTypeWebGLCompressedTextureS3TC
+  {-# INLINE typeGType #-}
+
+gTypeWebGLCompressedTextureS3TC :: JSM GType
+gTypeWebGLCompressedTextureS3TC = GType . Object <$> jsg "WebGLCompressedTextureS3TC"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLContextAttributes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes Mozilla WebGLContextAttributes documentation>
+newtype WebGLContextAttributes = WebGLContextAttributes { unWebGLContextAttributes :: JSVal }
+
+instance PToJSVal WebGLContextAttributes where
+  pToJSVal = unWebGLContextAttributes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLContextAttributes where
+  pFromJSVal = WebGLContextAttributes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLContextAttributes where
+  toJSVal = return . unWebGLContextAttributes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLContextAttributes where
+  fromJSVal v = fmap WebGLContextAttributes <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLContextAttributes where
+  makeObject = makeObject . unWebGLContextAttributes
+
+instance IsGObject WebGLContextAttributes where
+  typeGType _ = gTypeWebGLContextAttributes
+  {-# INLINE typeGType #-}
+
+gTypeWebGLContextAttributes :: JSM GType
+gTypeWebGLContextAttributes = GType . Object <$> jsg "WebGLContextAttributes"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLContextEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent Mozilla WebGLContextEvent documentation>
+newtype WebGLContextEvent = WebGLContextEvent { unWebGLContextEvent :: JSVal }
+
+instance PToJSVal WebGLContextEvent where
+  pToJSVal = unWebGLContextEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLContextEvent where
+  pFromJSVal = WebGLContextEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLContextEvent where
+  toJSVal = return . unWebGLContextEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLContextEvent where
+  fromJSVal v = fmap WebGLContextEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLContextEvent where
+  makeObject = makeObject . unWebGLContextEvent
+
+instance IsEvent WebGLContextEvent
+instance IsGObject WebGLContextEvent where
+  typeGType _ = gTypeWebGLContextEvent
+  {-# INLINE typeGType #-}
+
+gTypeWebGLContextEvent :: JSM GType
+gTypeWebGLContextEvent = GType . Object <$> jsg "WebGLContextEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLDebugRendererInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugRendererInfo Mozilla WebGLDebugRendererInfo documentation>
+newtype WebGLDebugRendererInfo = WebGLDebugRendererInfo { unWebGLDebugRendererInfo :: JSVal }
+
+instance PToJSVal WebGLDebugRendererInfo where
+  pToJSVal = unWebGLDebugRendererInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDebugRendererInfo where
+  pFromJSVal = WebGLDebugRendererInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDebugRendererInfo where
+  toJSVal = return . unWebGLDebugRendererInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDebugRendererInfo where
+  fromJSVal v = fmap WebGLDebugRendererInfo <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLDebugRendererInfo where
+  makeObject = makeObject . unWebGLDebugRendererInfo
+
+instance IsGObject WebGLDebugRendererInfo where
+  typeGType _ = gTypeWebGLDebugRendererInfo
+  {-# INLINE typeGType #-}
+
+gTypeWebGLDebugRendererInfo :: JSM GType
+gTypeWebGLDebugRendererInfo = GType . Object <$> jsg "WebGLDebugRendererInfo"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLDebugShaders".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders Mozilla WebGLDebugShaders documentation>
+newtype WebGLDebugShaders = WebGLDebugShaders { unWebGLDebugShaders :: JSVal }
+
+instance PToJSVal WebGLDebugShaders where
+  pToJSVal = unWebGLDebugShaders
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDebugShaders where
+  pFromJSVal = WebGLDebugShaders
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDebugShaders where
+  toJSVal = return . unWebGLDebugShaders
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDebugShaders where
+  fromJSVal v = fmap WebGLDebugShaders <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLDebugShaders where
+  makeObject = makeObject . unWebGLDebugShaders
+
+instance IsGObject WebGLDebugShaders where
+  typeGType _ = gTypeWebGLDebugShaders
+  {-# INLINE typeGType #-}
+
+gTypeWebGLDebugShaders :: JSM GType
+gTypeWebGLDebugShaders = GType . Object <$> jsg "WebGLDebugShaders"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLDepthTexture".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDepthTexture Mozilla WebGLDepthTexture documentation>
+newtype WebGLDepthTexture = WebGLDepthTexture { unWebGLDepthTexture :: JSVal }
+
+instance PToJSVal WebGLDepthTexture where
+  pToJSVal = unWebGLDepthTexture
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDepthTexture where
+  pFromJSVal = WebGLDepthTexture
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDepthTexture where
+  toJSVal = return . unWebGLDepthTexture
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDepthTexture where
+  fromJSVal v = fmap WebGLDepthTexture <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLDepthTexture where
+  makeObject = makeObject . unWebGLDepthTexture
+
+instance IsGObject WebGLDepthTexture where
+  typeGType _ = gTypeWebGLDepthTexture
+  {-# INLINE typeGType #-}
+
+gTypeWebGLDepthTexture :: JSM GType
+gTypeWebGLDepthTexture = GType . Object <$> jsg "WebGLDepthTexture"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLDrawBuffers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers Mozilla WebGLDrawBuffers documentation>
+newtype WebGLDrawBuffers = WebGLDrawBuffers { unWebGLDrawBuffers :: JSVal }
+
+instance PToJSVal WebGLDrawBuffers where
+  pToJSVal = unWebGLDrawBuffers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDrawBuffers where
+  pFromJSVal = WebGLDrawBuffers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDrawBuffers where
+  toJSVal = return . unWebGLDrawBuffers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDrawBuffers where
+  fromJSVal v = fmap WebGLDrawBuffers <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLDrawBuffers where
+  makeObject = makeObject . unWebGLDrawBuffers
+
+instance IsGObject WebGLDrawBuffers where
+  typeGType _ = gTypeWebGLDrawBuffers
+  {-# INLINE typeGType #-}
+
+gTypeWebGLDrawBuffers :: JSM GType
+gTypeWebGLDrawBuffers = GType . Object <$> jsg "WebGLDrawBuffers"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLFramebuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLFramebuffer Mozilla WebGLFramebuffer documentation>
+newtype WebGLFramebuffer = WebGLFramebuffer { unWebGLFramebuffer :: JSVal }
+
+instance PToJSVal WebGLFramebuffer where
+  pToJSVal = unWebGLFramebuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLFramebuffer where
+  pFromJSVal = WebGLFramebuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLFramebuffer where
+  toJSVal = return . unWebGLFramebuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLFramebuffer where
+  fromJSVal v = fmap WebGLFramebuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLFramebuffer where
+  makeObject = makeObject . unWebGLFramebuffer
+
+instance IsGObject WebGLFramebuffer where
+  typeGType _ = gTypeWebGLFramebuffer
+  {-# INLINE typeGType #-}
+
+gTypeWebGLFramebuffer :: JSM GType
+gTypeWebGLFramebuffer = GType . Object <$> jsg "WebGLFramebuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLLoseContext".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext Mozilla WebGLLoseContext documentation>
+newtype WebGLLoseContext = WebGLLoseContext { unWebGLLoseContext :: JSVal }
+
+instance PToJSVal WebGLLoseContext where
+  pToJSVal = unWebGLLoseContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLLoseContext where
+  pFromJSVal = WebGLLoseContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLLoseContext where
+  toJSVal = return . unWebGLLoseContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLLoseContext where
+  fromJSVal v = fmap WebGLLoseContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLLoseContext where
+  makeObject = makeObject . unWebGLLoseContext
+
+instance IsGObject WebGLLoseContext where
+  typeGType _ = gTypeWebGLLoseContext
+  {-# INLINE typeGType #-}
+
+gTypeWebGLLoseContext :: JSM GType
+gTypeWebGLLoseContext = GType . Object <$> jsg "WebGLLoseContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLProgram".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLProgram Mozilla WebGLProgram documentation>
+newtype WebGLProgram = WebGLProgram { unWebGLProgram :: JSVal }
+
+instance PToJSVal WebGLProgram where
+  pToJSVal = unWebGLProgram
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLProgram where
+  pFromJSVal = WebGLProgram
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLProgram where
+  toJSVal = return . unWebGLProgram
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLProgram where
+  fromJSVal v = fmap WebGLProgram <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLProgram where
+  makeObject = makeObject . unWebGLProgram
+
+instance IsGObject WebGLProgram where
+  typeGType _ = gTypeWebGLProgram
+  {-# INLINE typeGType #-}
+
+gTypeWebGLProgram :: JSM GType
+gTypeWebGLProgram = GType . Object <$> jsg "WebGLProgram"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLQuery".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLQuery Mozilla WebGLQuery documentation>
+newtype WebGLQuery = WebGLQuery { unWebGLQuery :: JSVal }
+
+instance PToJSVal WebGLQuery where
+  pToJSVal = unWebGLQuery
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLQuery where
+  pFromJSVal = WebGLQuery
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLQuery where
+  toJSVal = return . unWebGLQuery
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLQuery where
+  fromJSVal v = fmap WebGLQuery <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLQuery where
+  makeObject = makeObject . unWebGLQuery
+
+instance IsGObject WebGLQuery where
+  typeGType _ = gTypeWebGLQuery
+  {-# INLINE typeGType #-}
+
+gTypeWebGLQuery :: JSM GType
+gTypeWebGLQuery = GType . Object <$> jsg "WebGLQuery"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLRenderbuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderbuffer Mozilla WebGLRenderbuffer documentation>
+newtype WebGLRenderbuffer = WebGLRenderbuffer { unWebGLRenderbuffer :: JSVal }
+
+instance PToJSVal WebGLRenderbuffer where
+  pToJSVal = unWebGLRenderbuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderbuffer where
+  pFromJSVal = WebGLRenderbuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderbuffer where
+  toJSVal = return . unWebGLRenderbuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderbuffer where
+  fromJSVal v = fmap WebGLRenderbuffer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLRenderbuffer where
+  makeObject = makeObject . unWebGLRenderbuffer
+
+instance IsGObject WebGLRenderbuffer where
+  typeGType _ = gTypeWebGLRenderbuffer
+  {-# INLINE typeGType #-}
+
+gTypeWebGLRenderbuffer :: JSM GType
+gTypeWebGLRenderbuffer = GType . Object <$> jsg "WebGLRenderbuffer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLRenderingContext".
+-- Base interface functions are in:
+--
+--     * "JSDOM.WebGLRenderingContextBase"
+--     * "JSDOM.CanvasRenderingContext"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext Mozilla WebGLRenderingContext documentation>
+newtype WebGLRenderingContext = WebGLRenderingContext { unWebGLRenderingContext :: JSVal }
+
+instance PToJSVal WebGLRenderingContext where
+  pToJSVal = unWebGLRenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderingContext where
+  pFromJSVal = WebGLRenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderingContext where
+  toJSVal = return . unWebGLRenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderingContext where
+  fromJSVal v = fmap WebGLRenderingContext <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLRenderingContext where
+  makeObject = makeObject . unWebGLRenderingContext
+
+instance IsWebGLRenderingContextBase WebGLRenderingContext
+instance IsCanvasRenderingContext WebGLRenderingContext
+instance IsGObject WebGLRenderingContext where
+  typeGType _ = gTypeWebGLRenderingContext
+  {-# INLINE typeGType #-}
+
+gTypeWebGLRenderingContext :: JSM GType
+gTypeWebGLRenderingContext = GType . Object <$> jsg "WebGLRenderingContext"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLRenderingContextBase".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CanvasRenderingContext"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase Mozilla WebGLRenderingContextBase documentation>
+newtype WebGLRenderingContextBase = WebGLRenderingContextBase { unWebGLRenderingContextBase :: JSVal }
+
+instance PToJSVal WebGLRenderingContextBase where
+  pToJSVal = unWebGLRenderingContextBase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderingContextBase where
+  pFromJSVal = WebGLRenderingContextBase
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderingContextBase where
+  toJSVal = return . unWebGLRenderingContextBase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderingContextBase where
+  fromJSVal v = fmap WebGLRenderingContextBase <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLRenderingContextBase where
+  makeObject = makeObject . unWebGLRenderingContextBase
+
+class IsCanvasRenderingContext o => IsWebGLRenderingContextBase o
+toWebGLRenderingContextBase :: IsWebGLRenderingContextBase o => o -> WebGLRenderingContextBase
+toWebGLRenderingContextBase = WebGLRenderingContextBase . coerce
+
+instance IsWebGLRenderingContextBase WebGLRenderingContextBase
+instance IsCanvasRenderingContext WebGLRenderingContextBase
+instance IsGObject WebGLRenderingContextBase where
+  typeGType _ = gTypeWebGLRenderingContextBase
+  {-# INLINE typeGType #-}
+
+gTypeWebGLRenderingContextBase :: JSM GType
+gTypeWebGLRenderingContextBase = GType . Object <$> jsg "WebGLRenderingContextBase"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLSampler".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLSampler Mozilla WebGLSampler documentation>
+newtype WebGLSampler = WebGLSampler { unWebGLSampler :: JSVal }
+
+instance PToJSVal WebGLSampler where
+  pToJSVal = unWebGLSampler
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLSampler where
+  pFromJSVal = WebGLSampler
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLSampler where
+  toJSVal = return . unWebGLSampler
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLSampler where
+  fromJSVal v = fmap WebGLSampler <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLSampler where
+  makeObject = makeObject . unWebGLSampler
+
+instance IsGObject WebGLSampler where
+  typeGType _ = gTypeWebGLSampler
+  {-# INLINE typeGType #-}
+
+gTypeWebGLSampler :: JSM GType
+gTypeWebGLSampler = GType . Object <$> jsg "WebGLSampler"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLShader".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShader Mozilla WebGLShader documentation>
+newtype WebGLShader = WebGLShader { unWebGLShader :: JSVal }
+
+instance PToJSVal WebGLShader where
+  pToJSVal = unWebGLShader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLShader where
+  pFromJSVal = WebGLShader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLShader where
+  toJSVal = return . unWebGLShader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLShader where
+  fromJSVal v = fmap WebGLShader <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLShader where
+  makeObject = makeObject . unWebGLShader
+
+instance IsGObject WebGLShader where
+  typeGType _ = gTypeWebGLShader
+  {-# INLINE typeGType #-}
+
+gTypeWebGLShader :: JSM GType
+gTypeWebGLShader = GType . Object <$> jsg "WebGLShader"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLShaderPrecisionFormat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat Mozilla WebGLShaderPrecisionFormat documentation>
+newtype WebGLShaderPrecisionFormat = WebGLShaderPrecisionFormat { unWebGLShaderPrecisionFormat :: JSVal }
+
+instance PToJSVal WebGLShaderPrecisionFormat where
+  pToJSVal = unWebGLShaderPrecisionFormat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLShaderPrecisionFormat where
+  pFromJSVal = WebGLShaderPrecisionFormat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLShaderPrecisionFormat where
+  toJSVal = return . unWebGLShaderPrecisionFormat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLShaderPrecisionFormat where
+  fromJSVal v = fmap WebGLShaderPrecisionFormat <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLShaderPrecisionFormat where
+  makeObject = makeObject . unWebGLShaderPrecisionFormat
+
+instance IsGObject WebGLShaderPrecisionFormat where
+  typeGType _ = gTypeWebGLShaderPrecisionFormat
+  {-# INLINE typeGType #-}
+
+gTypeWebGLShaderPrecisionFormat :: JSM GType
+gTypeWebGLShaderPrecisionFormat = GType . Object <$> jsg "WebGLShaderPrecisionFormat"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLSync".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLSync Mozilla WebGLSync documentation>
+newtype WebGLSync = WebGLSync { unWebGLSync :: JSVal }
+
+instance PToJSVal WebGLSync where
+  pToJSVal = unWebGLSync
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLSync where
+  pFromJSVal = WebGLSync
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLSync where
+  toJSVal = return . unWebGLSync
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLSync where
+  fromJSVal v = fmap WebGLSync <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLSync where
+  makeObject = makeObject . unWebGLSync
+
+instance IsGObject WebGLSync where
+  typeGType _ = gTypeWebGLSync
+  {-# INLINE typeGType #-}
+
+gTypeWebGLSync :: JSM GType
+gTypeWebGLSync = GType . Object <$> jsg "WebGLSync"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLTexture".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLTexture Mozilla WebGLTexture documentation>
+newtype WebGLTexture = WebGLTexture { unWebGLTexture :: JSVal }
+
+instance PToJSVal WebGLTexture where
+  pToJSVal = unWebGLTexture
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLTexture where
+  pFromJSVal = WebGLTexture
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLTexture where
+  toJSVal = return . unWebGLTexture
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLTexture where
+  fromJSVal v = fmap WebGLTexture <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLTexture where
+  makeObject = makeObject . unWebGLTexture
+
+instance IsGObject WebGLTexture where
+  typeGType _ = gTypeWebGLTexture
+  {-# INLINE typeGType #-}
+
+gTypeWebGLTexture :: JSM GType
+gTypeWebGLTexture = GType . Object <$> jsg "WebGLTexture"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLTransformFeedback".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLTransformFeedback Mozilla WebGLTransformFeedback documentation>
+newtype WebGLTransformFeedback = WebGLTransformFeedback { unWebGLTransformFeedback :: JSVal }
+
+instance PToJSVal WebGLTransformFeedback where
+  pToJSVal = unWebGLTransformFeedback
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLTransformFeedback where
+  pFromJSVal = WebGLTransformFeedback
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLTransformFeedback where
+  toJSVal = return . unWebGLTransformFeedback
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLTransformFeedback where
+  fromJSVal v = fmap WebGLTransformFeedback <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLTransformFeedback where
+  makeObject = makeObject . unWebGLTransformFeedback
+
+instance IsGObject WebGLTransformFeedback where
+  typeGType _ = gTypeWebGLTransformFeedback
+  {-# INLINE typeGType #-}
+
+gTypeWebGLTransformFeedback :: JSM GType
+gTypeWebGLTransformFeedback = GType . Object <$> jsg "WebGLTransformFeedback"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLUniformLocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLUniformLocation Mozilla WebGLUniformLocation documentation>
+newtype WebGLUniformLocation = WebGLUniformLocation { unWebGLUniformLocation :: JSVal }
+
+instance PToJSVal WebGLUniformLocation where
+  pToJSVal = unWebGLUniformLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLUniformLocation where
+  pFromJSVal = WebGLUniformLocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLUniformLocation where
+  toJSVal = return . unWebGLUniformLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLUniformLocation where
+  fromJSVal v = fmap WebGLUniformLocation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLUniformLocation where
+  makeObject = makeObject . unWebGLUniformLocation
+
+instance IsGObject WebGLUniformLocation where
+  typeGType _ = gTypeWebGLUniformLocation
+  {-# INLINE typeGType #-}
+
+gTypeWebGLUniformLocation :: JSM GType
+gTypeWebGLUniformLocation = GType . Object <$> jsg "WebGLUniformLocation"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLVertexArrayObject".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLVertexArrayObject Mozilla WebGLVertexArrayObject documentation>
+newtype WebGLVertexArrayObject = WebGLVertexArrayObject { unWebGLVertexArrayObject :: JSVal }
+
+instance PToJSVal WebGLVertexArrayObject where
+  pToJSVal = unWebGLVertexArrayObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLVertexArrayObject where
+  pFromJSVal = WebGLVertexArrayObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLVertexArrayObject where
+  toJSVal = return . unWebGLVertexArrayObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLVertexArrayObject where
+  fromJSVal v = fmap WebGLVertexArrayObject <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLVertexArrayObject where
+  makeObject = makeObject . unWebGLVertexArrayObject
+
+instance IsGObject WebGLVertexArrayObject where
+  typeGType _ = gTypeWebGLVertexArrayObject
+  {-# INLINE typeGType #-}
+
+gTypeWebGLVertexArrayObject :: JSM GType
+gTypeWebGLVertexArrayObject = GType . Object <$> jsg "WebGLVertexArrayObject"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebGLVertexArrayObjectOES".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLVertexArrayObjectOES Mozilla WebGLVertexArrayObjectOES documentation>
+newtype WebGLVertexArrayObjectOES = WebGLVertexArrayObjectOES { unWebGLVertexArrayObjectOES :: JSVal }
+
+instance PToJSVal WebGLVertexArrayObjectOES where
+  pToJSVal = unWebGLVertexArrayObjectOES
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLVertexArrayObjectOES where
+  pFromJSVal = WebGLVertexArrayObjectOES
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLVertexArrayObjectOES where
+  toJSVal = return . unWebGLVertexArrayObjectOES
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLVertexArrayObjectOES where
+  fromJSVal v = fmap WebGLVertexArrayObjectOES <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebGLVertexArrayObjectOES where
+  makeObject = makeObject . unWebGLVertexArrayObjectOES
+
+instance IsGObject WebGLVertexArrayObjectOES where
+  typeGType _ = gTypeWebGLVertexArrayObjectOES
+  {-# INLINE typeGType #-}
+
+gTypeWebGLVertexArrayObjectOES :: JSM GType
+gTypeWebGLVertexArrayObjectOES = GType . Object <$> jsg "WebGLVertexArrayObjectOES"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitAnimationEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent Mozilla WebKitAnimationEvent documentation>
+newtype WebKitAnimationEvent = WebKitAnimationEvent { unWebKitAnimationEvent :: JSVal }
+
+instance PToJSVal WebKitAnimationEvent where
+  pToJSVal = unWebKitAnimationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitAnimationEvent where
+  pFromJSVal = WebKitAnimationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitAnimationEvent where
+  toJSVal = return . unWebKitAnimationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitAnimationEvent where
+  fromJSVal v = fmap WebKitAnimationEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitAnimationEvent where
+  makeObject = makeObject . unWebKitAnimationEvent
+
+instance IsEvent WebKitAnimationEvent
+instance IsGObject WebKitAnimationEvent where
+  typeGType _ = gTypeWebKitAnimationEvent
+  {-# INLINE typeGType #-}
+
+gTypeWebKitAnimationEvent :: JSM GType
+gTypeWebKitAnimationEvent = GType . Object <$> jsg "WebKitAnimationEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitCSSFilterValue".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSValueList"
+--     * "JSDOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSFilterValue Mozilla WebKitCSSFilterValue documentation>
+newtype WebKitCSSFilterValue = WebKitCSSFilterValue { unWebKitCSSFilterValue :: JSVal }
+
+instance PToJSVal WebKitCSSFilterValue where
+  pToJSVal = unWebKitCSSFilterValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSFilterValue where
+  pFromJSVal = WebKitCSSFilterValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSFilterValue where
+  toJSVal = return . unWebKitCSSFilterValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSFilterValue where
+  fromJSVal v = fmap WebKitCSSFilterValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSFilterValue where
+  makeObject = makeObject . unWebKitCSSFilterValue
+
+instance IsCSSValueList WebKitCSSFilterValue
+instance IsCSSValue WebKitCSSFilterValue
+instance IsGObject WebKitCSSFilterValue where
+  typeGType _ = gTypeWebKitCSSFilterValue
+  {-# INLINE typeGType #-}
+
+gTypeWebKitCSSFilterValue :: JSM GType
+gTypeWebKitCSSFilterValue = GType . Object <$> jsg "WebKitCSSFilterValue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitCSSMatrix".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation>
+newtype WebKitCSSMatrix = WebKitCSSMatrix { unWebKitCSSMatrix :: JSVal }
+
+instance PToJSVal WebKitCSSMatrix where
+  pToJSVal = unWebKitCSSMatrix
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSMatrix where
+  pFromJSVal = WebKitCSSMatrix
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSMatrix where
+  toJSVal = return . unWebKitCSSMatrix
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSMatrix where
+  fromJSVal v = fmap WebKitCSSMatrix <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSMatrix where
+  makeObject = makeObject . unWebKitCSSMatrix
+
+instance IsGObject WebKitCSSMatrix where
+  typeGType _ = gTypeWebKitCSSMatrix
+  {-# INLINE typeGType #-}
+
+gTypeWebKitCSSMatrix :: JSM GType
+gTypeWebKitCSSMatrix = GType . Object <$> jsg "WebKitCSSMatrix"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitCSSRegionRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule Mozilla WebKitCSSRegionRule documentation>
+newtype WebKitCSSRegionRule = WebKitCSSRegionRule { unWebKitCSSRegionRule :: JSVal }
+
+instance PToJSVal WebKitCSSRegionRule where
+  pToJSVal = unWebKitCSSRegionRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSRegionRule where
+  pFromJSVal = WebKitCSSRegionRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSRegionRule where
+  toJSVal = return . unWebKitCSSRegionRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSRegionRule where
+  fromJSVal v = fmap WebKitCSSRegionRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSRegionRule where
+  makeObject = makeObject . unWebKitCSSRegionRule
+
+instance IsCSSRule WebKitCSSRegionRule
+instance IsGObject WebKitCSSRegionRule where
+  typeGType _ = gTypeWebKitCSSRegionRule
+  {-# INLINE typeGType #-}
+
+gTypeWebKitCSSRegionRule :: JSM GType
+gTypeWebKitCSSRegionRule = GType . Object <$> jsg "WebKitCSSRegionRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitCSSTransformValue".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSValueList"
+--     * "JSDOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSTransformValue Mozilla WebKitCSSTransformValue documentation>
+newtype WebKitCSSTransformValue = WebKitCSSTransformValue { unWebKitCSSTransformValue :: JSVal }
+
+instance PToJSVal WebKitCSSTransformValue where
+  pToJSVal = unWebKitCSSTransformValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSTransformValue where
+  pFromJSVal = WebKitCSSTransformValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSTransformValue where
+  toJSVal = return . unWebKitCSSTransformValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSTransformValue where
+  fromJSVal v = fmap WebKitCSSTransformValue <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSTransformValue where
+  makeObject = makeObject . unWebKitCSSTransformValue
+
+instance IsCSSValueList WebKitCSSTransformValue
+instance IsCSSValue WebKitCSSTransformValue
+instance IsGObject WebKitCSSTransformValue where
+  typeGType _ = gTypeWebKitCSSTransformValue
+  {-# INLINE typeGType #-}
+
+gTypeWebKitCSSTransformValue :: JSM GType
+gTypeWebKitCSSTransformValue = GType . Object <$> jsg "WebKitCSSTransformValue"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitCSSViewportRule".
+-- Base interface functions are in:
+--
+--     * "JSDOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule Mozilla WebKitCSSViewportRule documentation>
+newtype WebKitCSSViewportRule = WebKitCSSViewportRule { unWebKitCSSViewportRule :: JSVal }
+
+instance PToJSVal WebKitCSSViewportRule where
+  pToJSVal = unWebKitCSSViewportRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSViewportRule where
+  pFromJSVal = WebKitCSSViewportRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSViewportRule where
+  toJSVal = return . unWebKitCSSViewportRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSViewportRule where
+  fromJSVal v = fmap WebKitCSSViewportRule <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitCSSViewportRule where
+  makeObject = makeObject . unWebKitCSSViewportRule
+
+instance IsCSSRule WebKitCSSViewportRule
+instance IsGObject WebKitCSSViewportRule where
+  typeGType _ = gTypeWebKitCSSViewportRule
+  {-# INLINE typeGType #-}
+
+gTypeWebKitCSSViewportRule :: JSM GType
+gTypeWebKitCSSViewportRule = GType . Object <$> jsg "WebKitCSSViewportRule"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitNamedFlow".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow Mozilla WebKitNamedFlow documentation>
+newtype WebKitNamedFlow = WebKitNamedFlow { unWebKitNamedFlow :: JSVal }
+
+instance PToJSVal WebKitNamedFlow where
+  pToJSVal = unWebKitNamedFlow
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitNamedFlow where
+  pFromJSVal = WebKitNamedFlow
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitNamedFlow where
+  toJSVal = return . unWebKitNamedFlow
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitNamedFlow where
+  fromJSVal v = fmap WebKitNamedFlow <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitNamedFlow where
+  makeObject = makeObject . unWebKitNamedFlow
+
+instance IsEventTarget WebKitNamedFlow
+instance IsGObject WebKitNamedFlow where
+  typeGType _ = gTypeWebKitNamedFlow
+  {-# INLINE typeGType #-}
+
+gTypeWebKitNamedFlow :: JSM GType
+gTypeWebKitNamedFlow = GType . Object <$> jsg "WebKitNamedFlow"
+#else
+type IsWebKitNamedFlow o = WebKitNamedFlowClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitNamespace".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace Mozilla WebKitNamespace documentation>
+newtype WebKitNamespace = WebKitNamespace { unWebKitNamespace :: JSVal }
+
+instance PToJSVal WebKitNamespace where
+  pToJSVal = unWebKitNamespace
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitNamespace where
+  pFromJSVal = WebKitNamespace
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitNamespace where
+  toJSVal = return . unWebKitNamespace
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitNamespace where
+  fromJSVal v = fmap WebKitNamespace <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitNamespace where
+  makeObject = makeObject . unWebKitNamespace
+
+instance IsGObject WebKitNamespace where
+  typeGType _ = gTypeWebKitNamespace
+  {-# INLINE typeGType #-}
+
+gTypeWebKitNamespace :: JSM GType
+gTypeWebKitNamespace = GType . Object <$> jsg "WebKitNamespace"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitPlaybackTargetAvailabilityEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent Mozilla WebKitPlaybackTargetAvailabilityEvent documentation>
+newtype WebKitPlaybackTargetAvailabilityEvent = WebKitPlaybackTargetAvailabilityEvent { unWebKitPlaybackTargetAvailabilityEvent :: JSVal }
+
+instance PToJSVal WebKitPlaybackTargetAvailabilityEvent where
+  pToJSVal = unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitPlaybackTargetAvailabilityEvent where
+  pFromJSVal = WebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitPlaybackTargetAvailabilityEvent where
+  toJSVal = return . unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitPlaybackTargetAvailabilityEvent where
+  fromJSVal v = fmap WebKitPlaybackTargetAvailabilityEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitPlaybackTargetAvailabilityEvent where
+  makeObject = makeObject . unWebKitPlaybackTargetAvailabilityEvent
+
+instance IsEvent WebKitPlaybackTargetAvailabilityEvent
+instance IsGObject WebKitPlaybackTargetAvailabilityEvent where
+  typeGType _ = gTypeWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE typeGType #-}
+
+gTypeWebKitPlaybackTargetAvailabilityEvent :: JSM GType
+gTypeWebKitPlaybackTargetAvailabilityEvent = GType . Object <$> jsg "WebKitPlaybackTargetAvailabilityEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitPoint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation>
+newtype WebKitPoint = WebKitPoint { unWebKitPoint :: JSVal }
+
+instance PToJSVal WebKitPoint where
+  pToJSVal = unWebKitPoint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitPoint where
+  pFromJSVal = WebKitPoint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitPoint where
+  toJSVal = return . unWebKitPoint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitPoint where
+  fromJSVal v = fmap WebKitPoint <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitPoint where
+  makeObject = makeObject . unWebKitPoint
+
+instance IsGObject WebKitPoint where
+  typeGType _ = gTypeWebKitPoint
+  {-# INLINE typeGType #-}
+
+gTypeWebKitPoint :: JSM GType
+gTypeWebKitPoint = GType . Object <$> jsg "WebKitPoint"
+#else
+type IsWebKitPoint o = WebKitPointClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebKitTransitionEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent Mozilla WebKitTransitionEvent documentation>
+newtype WebKitTransitionEvent = WebKitTransitionEvent { unWebKitTransitionEvent :: JSVal }
+
+instance PToJSVal WebKitTransitionEvent where
+  pToJSVal = unWebKitTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitTransitionEvent where
+  pFromJSVal = WebKitTransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitTransitionEvent where
+  toJSVal = return . unWebKitTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitTransitionEvent where
+  fromJSVal v = fmap WebKitTransitionEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebKitTransitionEvent where
+  makeObject = makeObject . unWebKitTransitionEvent
+
+instance IsEvent WebKitTransitionEvent
+instance IsGObject WebKitTransitionEvent where
+  typeGType _ = gTypeWebKitTransitionEvent
+  {-# INLINE typeGType #-}
+
+gTypeWebKitTransitionEvent :: JSM GType
+gTypeWebKitTransitionEvent = GType . Object <$> jsg "WebKitTransitionEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WebSocket".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation>
+newtype WebSocket = WebSocket { unWebSocket :: JSVal }
+
+instance PToJSVal WebSocket where
+  pToJSVal = unWebSocket
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebSocket where
+  pFromJSVal = WebSocket
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebSocket where
+  toJSVal = return . unWebSocket
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebSocket where
+  fromJSVal v = fmap WebSocket <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WebSocket where
+  makeObject = makeObject . unWebSocket
+
+instance IsEventTarget WebSocket
+instance IsGObject WebSocket where
+  typeGType _ = gTypeWebSocket
+  {-# INLINE typeGType #-}
+
+gTypeWebSocket :: JSM GType
+gTypeWebSocket = GType . Object <$> jsg "WebSocket"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WheelEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.MouseEvent"
+--     * "JSDOM.UIEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent Mozilla WheelEvent documentation>
+newtype WheelEvent = WheelEvent { unWheelEvent :: JSVal }
+
+instance PToJSVal WheelEvent where
+  pToJSVal = unWheelEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WheelEvent where
+  pFromJSVal = WheelEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WheelEvent where
+  toJSVal = return . unWheelEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WheelEvent where
+  fromJSVal v = fmap WheelEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WheelEvent where
+  makeObject = makeObject . unWheelEvent
+
+instance IsMouseEvent WheelEvent
+instance IsUIEvent WheelEvent
+instance IsEvent WheelEvent
+instance IsGObject WheelEvent where
+  typeGType _ = gTypeWheelEvent
+  {-# INLINE typeGType #-}
+
+gTypeWheelEvent :: JSM GType
+gTypeWheelEvent = GType . Object <$> jsg "WheelEvent"
+#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 "JSDOM.Window".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Window Mozilla Window documentation>
+newtype Window = Window { unWindow :: JSVal }
+
+instance PToJSVal Window where
+  pToJSVal = unWindow
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Window where
+  pFromJSVal = Window
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Window where
+  toJSVal = return . unWindow
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Window where
+  fromJSVal v = fmap Window <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Window where
+  makeObject = makeObject . unWindow
+
+instance IsEventTarget Window
+instance IsGObject Window where
+  typeGType _ = gTypeWindow
+  {-# INLINE typeGType #-}
+
+gTypeWindow :: JSM GType
+gTypeWindow = GType . Object <$> jsg "Window"
+#else
+type IsWindow o = WindowClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WindowBase64".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64 Mozilla WindowBase64 documentation>
+newtype WindowBase64 = WindowBase64 { unWindowBase64 :: JSVal }
+
+instance PToJSVal WindowBase64 where
+  pToJSVal = unWindowBase64
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WindowBase64 where
+  pFromJSVal = WindowBase64
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WindowBase64 where
+  toJSVal = return . unWindowBase64
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WindowBase64 where
+  fromJSVal v = fmap WindowBase64 <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WindowBase64 where
+  makeObject = makeObject . unWindowBase64
+
+instance IsGObject WindowBase64 where
+  typeGType _ = gTypeWindowBase64
+  {-# INLINE typeGType #-}
+
+gTypeWindowBase64 :: JSM GType
+gTypeWindowBase64 = GType . Object <$> jsg "WindowBase64"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WindowTimers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers Mozilla WindowTimers documentation>
+newtype WindowTimers = WindowTimers { unWindowTimers :: JSVal }
+
+instance PToJSVal WindowTimers where
+  pToJSVal = unWindowTimers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WindowTimers where
+  pFromJSVal = WindowTimers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WindowTimers where
+  toJSVal = return . unWindowTimers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WindowTimers where
+  fromJSVal v = fmap WindowTimers <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WindowTimers where
+  makeObject = makeObject . unWindowTimers
+
+instance IsGObject WindowTimers where
+  typeGType _ = gTypeWindowTimers
+  {-# INLINE typeGType #-}
+
+gTypeWindowTimers :: JSM GType
+gTypeWindowTimers = GType . Object <$> jsg "WindowTimers"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.Worker".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation>
+newtype Worker = Worker { unWorker :: JSVal }
+
+instance PToJSVal Worker where
+  pToJSVal = unWorker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Worker where
+  pFromJSVal = Worker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Worker where
+  toJSVal = return . unWorker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Worker where
+  fromJSVal v = fmap Worker <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject Worker where
+  makeObject = makeObject . unWorker
+
+instance IsEventTarget Worker
+instance IsGObject Worker where
+  typeGType _ = gTypeWorker
+  {-# INLINE typeGType #-}
+
+gTypeWorker :: JSM GType
+gTypeWorker = GType . Object <$> jsg "Worker"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WorkerGlobalScope".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope Mozilla WorkerGlobalScope documentation>
+newtype WorkerGlobalScope = WorkerGlobalScope { unWorkerGlobalScope :: JSVal }
+
+instance PToJSVal WorkerGlobalScope where
+  pToJSVal = unWorkerGlobalScope
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerGlobalScope where
+  pFromJSVal = WorkerGlobalScope
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerGlobalScope where
+  toJSVal = return . unWorkerGlobalScope
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerGlobalScope where
+  fromJSVal v = fmap WorkerGlobalScope <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WorkerGlobalScope where
+  makeObject = makeObject . unWorkerGlobalScope
+
+class IsEventTarget o => IsWorkerGlobalScope o
+toWorkerGlobalScope :: IsWorkerGlobalScope o => o -> WorkerGlobalScope
+toWorkerGlobalScope = WorkerGlobalScope . coerce
+
+instance IsWorkerGlobalScope WorkerGlobalScope
+instance IsEventTarget WorkerGlobalScope
+instance IsGObject WorkerGlobalScope where
+  typeGType _ = gTypeWorkerGlobalScope
+  {-# INLINE typeGType #-}
+
+gTypeWorkerGlobalScope :: JSM GType
+gTypeWorkerGlobalScope = GType . Object <$> jsg "WorkerGlobalScope"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WorkerLocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation Mozilla WorkerLocation documentation>
+newtype WorkerLocation = WorkerLocation { unWorkerLocation :: JSVal }
+
+instance PToJSVal WorkerLocation where
+  pToJSVal = unWorkerLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerLocation where
+  pFromJSVal = WorkerLocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerLocation where
+  toJSVal = return . unWorkerLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerLocation where
+  fromJSVal v = fmap WorkerLocation <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WorkerLocation where
+  makeObject = makeObject . unWorkerLocation
+
+instance IsGObject WorkerLocation where
+  typeGType _ = gTypeWorkerLocation
+  {-# INLINE typeGType #-}
+
+gTypeWorkerLocation :: JSM GType
+gTypeWorkerLocation = GType . Object <$> jsg "WorkerLocation"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.WorkerNavigator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator Mozilla WorkerNavigator documentation>
+newtype WorkerNavigator = WorkerNavigator { unWorkerNavigator :: JSVal }
+
+instance PToJSVal WorkerNavigator where
+  pToJSVal = unWorkerNavigator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerNavigator where
+  pFromJSVal = WorkerNavigator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerNavigator where
+  toJSVal = return . unWorkerNavigator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerNavigator where
+  fromJSVal v = fmap WorkerNavigator <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject WorkerNavigator where
+  makeObject = makeObject . unWorkerNavigator
+
+instance IsGObject WorkerNavigator where
+  typeGType _ = gTypeWorkerNavigator
+  {-# INLINE typeGType #-}
+
+gTypeWorkerNavigator :: JSM GType
+gTypeWorkerNavigator = GType . Object <$> jsg "WorkerNavigator"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XMLHttpRequest".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation>
+newtype XMLHttpRequest = XMLHttpRequest { unXMLHttpRequest :: JSVal }
+
+instance PToJSVal XMLHttpRequest where
+  pToJSVal = unXMLHttpRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequest where
+  pFromJSVal = XMLHttpRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequest where
+  toJSVal = return . unXMLHttpRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequest where
+  fromJSVal v = fmap XMLHttpRequest <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XMLHttpRequest where
+  makeObject = makeObject . unXMLHttpRequest
+
+instance IsEventTarget XMLHttpRequest
+instance IsGObject XMLHttpRequest where
+  typeGType _ = gTypeXMLHttpRequest
+  {-# INLINE typeGType #-}
+
+gTypeXMLHttpRequest :: JSM GType
+gTypeXMLHttpRequest = GType . Object <$> jsg "XMLHttpRequest"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XMLHttpRequestProgressEvent".
+-- Base interface functions are in:
+--
+--     * "JSDOM.ProgressEvent"
+--     * "JSDOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent Mozilla XMLHttpRequestProgressEvent documentation>
+newtype XMLHttpRequestProgressEvent = XMLHttpRequestProgressEvent { unXMLHttpRequestProgressEvent :: JSVal }
+
+instance PToJSVal XMLHttpRequestProgressEvent where
+  pToJSVal = unXMLHttpRequestProgressEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequestProgressEvent where
+  pFromJSVal = XMLHttpRequestProgressEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequestProgressEvent where
+  toJSVal = return . unXMLHttpRequestProgressEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequestProgressEvent where
+  fromJSVal v = fmap XMLHttpRequestProgressEvent <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XMLHttpRequestProgressEvent where
+  makeObject = makeObject . unXMLHttpRequestProgressEvent
+
+instance IsProgressEvent XMLHttpRequestProgressEvent
+instance IsEvent XMLHttpRequestProgressEvent
+instance IsGObject XMLHttpRequestProgressEvent where
+  typeGType _ = gTypeXMLHttpRequestProgressEvent
+  {-# INLINE typeGType #-}
+
+gTypeXMLHttpRequestProgressEvent :: JSM GType
+gTypeXMLHttpRequestProgressEvent = GType . Object <$> jsg "XMLHttpRequestProgressEvent"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XMLHttpRequestUpload".
+-- Base interface functions are in:
+--
+--     * "JSDOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload Mozilla XMLHttpRequestUpload documentation>
+newtype XMLHttpRequestUpload = XMLHttpRequestUpload { unXMLHttpRequestUpload :: JSVal }
+
+instance PToJSVal XMLHttpRequestUpload where
+  pToJSVal = unXMLHttpRequestUpload
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequestUpload where
+  pFromJSVal = XMLHttpRequestUpload
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequestUpload where
+  toJSVal = return . unXMLHttpRequestUpload
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequestUpload where
+  fromJSVal v = fmap XMLHttpRequestUpload <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XMLHttpRequestUpload where
+  makeObject = makeObject . unXMLHttpRequestUpload
+
+instance IsEventTarget XMLHttpRequestUpload
+instance IsGObject XMLHttpRequestUpload where
+  typeGType _ = gTypeXMLHttpRequestUpload
+  {-# INLINE typeGType #-}
+
+gTypeXMLHttpRequestUpload :: JSM GType
+gTypeXMLHttpRequestUpload = GType . Object <$> jsg "XMLHttpRequestUpload"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XMLSerializer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation>
+newtype XMLSerializer = XMLSerializer { unXMLSerializer :: JSVal }
+
+instance PToJSVal XMLSerializer where
+  pToJSVal = unXMLSerializer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLSerializer where
+  pFromJSVal = XMLSerializer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLSerializer where
+  toJSVal = return . unXMLSerializer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLSerializer where
+  fromJSVal v = fmap XMLSerializer <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XMLSerializer where
+  makeObject = makeObject . unXMLSerializer
+
+instance IsGObject XMLSerializer where
+  typeGType _ = gTypeXMLSerializer
+  {-# INLINE typeGType #-}
+
+gTypeXMLSerializer :: JSM GType
+gTypeXMLSerializer = GType . Object <$> jsg "XMLSerializer"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XPathEvaluator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation>
+newtype XPathEvaluator = XPathEvaluator { unXPathEvaluator :: JSVal }
+
+instance PToJSVal XPathEvaluator where
+  pToJSVal = unXPathEvaluator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathEvaluator where
+  pFromJSVal = XPathEvaluator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathEvaluator where
+  toJSVal = return . unXPathEvaluator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathEvaluator where
+  fromJSVal v = fmap XPathEvaluator <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XPathEvaluator where
+  makeObject = makeObject . unXPathEvaluator
+
+instance IsGObject XPathEvaluator where
+  typeGType _ = gTypeXPathEvaluator
+  {-# INLINE typeGType #-}
+
+gTypeXPathEvaluator :: JSM GType
+gTypeXPathEvaluator = GType . Object <$> jsg "XPathEvaluator"
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XPathExpression".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression Mozilla XPathExpression documentation>
+newtype XPathExpression = XPathExpression { unXPathExpression :: JSVal }
+
+instance PToJSVal XPathExpression where
+  pToJSVal = unXPathExpression
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathExpression where
+  pFromJSVal = XPathExpression
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathExpression where
+  toJSVal = return . unXPathExpression
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathExpression where
+  fromJSVal v = fmap XPathExpression <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XPathExpression where
+  makeObject = makeObject . unXPathExpression
+
+instance IsGObject XPathExpression where
+  typeGType _ = gTypeXPathExpression
+  {-# INLINE typeGType #-}
+
+gTypeXPathExpression :: JSM GType
+gTypeXPathExpression = GType . Object <$> jsg "XPathExpression"
+#else
+type IsXPathExpression o = XPathExpressionClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XPathNSResolver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver Mozilla XPathNSResolver documentation>
+newtype XPathNSResolver = XPathNSResolver { unXPathNSResolver :: JSVal }
+
+instance PToJSVal XPathNSResolver where
+  pToJSVal = unXPathNSResolver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathNSResolver where
+  pFromJSVal = XPathNSResolver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathNSResolver where
+  toJSVal = return . unXPathNSResolver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathNSResolver where
+  fromJSVal v = fmap XPathNSResolver <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XPathNSResolver where
+  makeObject = makeObject . unXPathNSResolver
+
+instance IsGObject XPathNSResolver where
+  typeGType _ = gTypeXPathNSResolver
+  {-# INLINE typeGType #-}
+
+gTypeXPathNSResolver :: JSM GType
+gTypeXPathNSResolver = GType . Object <$> jsg "XPathNSResolver"
+#else
+type IsXPathNSResolver o = XPathNSResolverClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XPathResult".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult Mozilla XPathResult documentation>
+newtype XPathResult = XPathResult { unXPathResult :: JSVal }
+
+instance PToJSVal XPathResult where
+  pToJSVal = unXPathResult
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathResult where
+  pFromJSVal = XPathResult
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathResult where
+  toJSVal = return . unXPathResult
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathResult where
+  fromJSVal v = fmap XPathResult <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XPathResult where
+  makeObject = makeObject . unXPathResult
+
+instance IsGObject XPathResult where
+  typeGType _ = gTypeXPathResult
+  {-# INLINE typeGType #-}
+
+gTypeXPathResult :: JSM GType
+gTypeXPathResult = GType . Object <$> jsg "XPathResult"
+#else
+type IsXPathResult o = XPathResultClass o
+#endif
+
+
+#if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)
+-- | Functions for this inteface are in "JSDOM.XSLTProcessor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation>
+newtype XSLTProcessor = XSLTProcessor { unXSLTProcessor :: JSVal }
+
+instance PToJSVal XSLTProcessor where
+  pToJSVal = unXSLTProcessor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XSLTProcessor where
+  pFromJSVal = XSLTProcessor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XSLTProcessor where
+  toJSVal = return . unXSLTProcessor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XSLTProcessor where
+  fromJSVal v = fmap XSLTProcessor <$> maybeNullOrUndefined v
+  {-# INLINE fromJSVal #-}
+
+instance MakeObject XSLTProcessor where
+  makeObject = makeObject . unXSLTProcessor
+
+instance IsGObject XSLTProcessor where
+  typeGType _ = gTypeXSLTProcessor
+  {-# INLINE typeGType #-}
 
 gTypeXSLTProcessor :: JSM GType
 gTypeXSLTProcessor = GType . Object <$> jsg "XSLTProcessor"
